Panning pre-synthesis?

Thomas Saunter's icon

Hi,

I'm working on a max patch for a Sonification system. I would like to implement panning to the system where each note trigger is panned from left to right before routing to synthesis. I can't use a simple frequency panner "post fader" as the octave changes depending on light values.

Does anyone have an elegant solution?

Thanks in advance

Max Patch
Copy patch and select New From Clipboard in Max.

Source Audio's icon

If you upload something like poly~ that contains subpatchers,

it won't work without uploading them as well.

Anyway, where should that panning take place ?

You have only 1 mono output in the patch.

that bunch of objects inside does not give a hint.

If I can guess something, then maybe to use stereo poly~ subpatchers to set pan position

depending on note numbers.

Thomas Saunter's icon

Hey Source Audio,

Apologies I thought copy compressed included the sub patchers. They should all be below now.

Yeah correct right now it's purely in mono. I can't think of a good solution where these note triggers;

can be routed so they are panned left to right.

Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.

Thomas Saunter's icon

If possible it would be great to pan other than note number but on trigger position. I'll try note number and see if that get's the desired effect.

Source Audio's icon

You need to set pan inside of poly subpatcher.

only that way individual sounds can get out differently.

you have few strange things in that main patcher.

for example you send a list to note $1

which passes only single value ?

look in here.

I replaced that many sel 0 1 2 etc with zl.lookup or embeded coll

keeps GUI much smaller and so easier to look at.

now to pan, what do you want to use to generate pan position ?

and shoud it be different for 3 poly R G B, which receive same notes ?

Source Audio's icon

here is one option, randomly pan when note gets in.

Roman Thilenius's icon

the simplest way to trigger something from another message but before it... is.... ''' drumroll ''' the [trigger] object.

for example [t l 77] could be used to set CC #5 to 77 before a note-on event.

Thomas Saunter's icon

Hi Source,

Sorry for the delay, yeah there's a few things left over from old experimentation such as the note $1 I should clean up. The set message was left over from an old section where I was using monophonic midi notes and is now the velocity or max amplitude of the ADSR.

Thanks for pointing out the siders are log - I changed them from regular sliders and didn't check. I also see the max value is not 127 either.

I'll try the Coll and see if that still works.

What I was looking for was for the position of the selects to mimic the pan position so the lower notes to the left and the higher ones to the right. But maybe with Roman's trigger idea I could set this up in each of the poly sub patches using the int output as the position.

I'll give this a try. Thank you :)

Thomas Saunter's icon

Hey guys,

Thanks for the help. I got the pan working now and tried to clean up the patch a little bit. Do you haven any experience with poly~ not being polyphonic?

Since I added the receives for pan and velocity I've lost polyphony and can't understand why.

Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.
Max Patch
Copy patch and select New From Clipboard in Max.

Source Audio's icon

As first, if you send pan like that, all poly subpathers will get the same value.

you need to address individual poly instance using note or target messages.

you seem to need more instances then notes.

15 notes 32 voices.

so target messages won't do.

when you decide how to create pan value, pack it together

with note message and unpack in subpatch.

you can see how note and pan value get routed in the subpatch.

P.S.

you mention velocity.

Same principle, note, velocity, pan

make a list of 3 values and

use note $1 $2 $3 message

in poly subpatch unjoin 3 values

to form freq , adsr or volume value, pan value

pack triggers output when leftmost inlet changes value,

means note will pick other 2 values

unjoin is better then unpack because one does not need to declare message type.

Thomas Saunter's icon

Amazing thanks for your help - I have it all working now :)

P.s. I wanted the pan values to be the same for each poly as I'm blending between the poly object to create different timbres based on colour values.