'complex' poly~ challenge

brendan mccloskey's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Hi all and Happy New Year
I've built a little polyphonic nylon-string model in Max, and have recently added vibrato functionality (for added expressivity) using the old FM trick of modulating the fundamental frequency with an LFO cycle~. However, as the patch is polyphonic, I can't restrict the vibrato to one specific note - once vibrato is engaged, all pitches oscillate. Without preempting solutions I think the mute message might be in there somewhere?

AlexHarker's icon

Can't really be sure what your question is from what you've posted- also you haven't posted your poly subpatch.

However, if the problem is to do with which instances of the poly are responding, you'll most likely need to look at the target message to poly. As your patch looks now I'd guess that only the last played note responds to the vibrato (as you send a target message to do note selection and all subsequent messages will only target that instance - so perhaps you are wanting all notes to respond (send target 0 before you send a vibrato value to solve this)). However, the next time the instance is used (as I currently read your patch) - it'll probably keep the old vibrato value - other than that it's hard to know exactly what to advise without knowing exactly what:

a - you want to acheive
b - is happening at the moment

or without knowing the contents of the poly subpatch.

Also you may need to look at reseting the vibrato for each instance when a new note is played (if you want only one note to vibrato at a time).

Maybe that's of some help

Alex

the_man361's icon

one thing - slightly off topic...

youve made a lowpass patch using tapin/tapout to try to delay by a sample, i thought the minimum delay time for tapin/out was the signal vector size? you might find that this does not do what it should, possibly consider using delay~ instead, where you can specify the number of samples to delay as an argument.

brendan mccloskey's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Sorry, here's the subSynth3 subpatch; of course you're quite right about the vector size limitation, thanks;
the functionality at the moment is this: triggered notes sustain, and when vibrato is engaged it effects all sustaining pitches as well as the last note triggered; what i wish to achieve is the ability to target only the last note triggered, regardless of other sustaining notes; as i'm using random note triggers it's not too clear what the current functionality is; perhaps i should setup midi kybd input to better test it - thanks for all the help so far

AlexHarker's icon

That'll be your *global* send and receive then.....

Also you need to reset vib to zero on a new not on.

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

Here's my 5 sec fix - see if it works for you:

Alex

Tj Shredder's icon

You should definitely look into the midinote message to poly~. You dont need a poly (without ~) to do your voice allocation. You have to set the busystate of your voice inside the poly~ to make it work. In the examples section you should find examples which explain it better...

Stefan

brendan mccloskey's icon

Alex: thanks, the solution is perfect; my problem is i keep refining a patch and adding functionality, until i run into a problem - must stop doing this.

Stefan: yes, i did wonder about using poly and poly~ together, but couldn't get the voice allocation to work without it. Ultimately, i'll be using Arduino and Processing to trigger notes/velocities etc, so I don't know if midinote is applicable, but I will look at the examples

Thanks all

Brendan