reset all poly~ instances at once ?

R_Gol's icon

Hi,
I made an m4l instrument using poly~
for some reason once in a while I'm having stuck notes so the poly will not stop producing sound until I will open the device, unfreeze it and reset the poly manually by rewrite the name of the poly~ instance.

Is there any way to reset all poly~ at once like you can do with "reset" message to a gen~ ?

Thanks!

Source Audio's icon

There are many ways to reset or init or anything else the entire poly.
But I can't tell you what, whithout seeing what you use.
What is voice mamagement ?
Using target or note messages ?
And in first place you should fix stuck notes, must be some kind of mistake
in voice targeting management

R_Gol's icon

Its a little bit complicated. I'm using the midi value to extract a frequency out of a scala file then I send this frequency together with the velocity message to the poly~ using prepend midinote message.

So instead of passing a midinote message with midi value for pitch and midi value for velocity I'm passing a message with a frequency and a velocity value.
Then inside the poly~ patch the frequency go to the oscillator and the velocity is translated to db and to amp .
so because my stuck note are not in midinote but rather already in frequency I cannot send the note value with velocity 0 to release the stuck note.



Source Audio's icon

It sounds too complicated for me...
How do you normally manage voicing ?
I mean is there voice stealing active, is there adsr involved,
voice muting ?
There is one simple way, insert r KILLALL into poly subpatch
to mute it, and send s KILLALL message to zero output of all instances.
that would at least mute output.
Can't tell you any better, as the voice management remains a mistery

R_Gol's icon

I'm using voice muting..
I will try the method with the killall message. I could not find it in the refernce of poly~. strange..

Edit: this "killall" method working great! thanks!


Source Audio's icon

this is just a simple message s/r name, you could have named it
whatever else, just without spaces.
When sent all poly instances in all max patches or live devices will get turned off.
P.S. - it is my mistake not to have stated clearly that I meant you send a zero
using the send - receive, not the killall as a message...
I don't yet understand why would you get hanging notes ...
Would you mind trying a simple patch using 4 voices in the way you describe it ?

Trysinth.zip
application/zip 2.70 KB

It is as basic as could be, adsr takes care to switch voice off

R_Gol's icon

Thanks for you explanation and patch!
It seems as same way I'm using my patch and yet here no stuck notes.


after checking when my stuck notes occur I discover that its happening only when I holds some notes and change to a different scl files so what actual happening is that a different frequency is send while still old frequency is held. If I got it right, I am guessing this is what cause the stuck notes.


Source Audio's icon

A good point.
I guess scl are supercollider transposition maps or something similar.
Could you somehow try to link change of scl file to
turn currently held notes off ?
You can't use flush or midiflush with floats,
so maybe only option is to kill all voices...
Or ... is it possible that only Note ON messages switch to new scl
scale map, and allready held notes continue with previous one
till released ?
Just an idea in case that changing scl while some notes still sound
is important.

R_Gol's icon

yep. fush is not an option but I will try those ideas out!
much appreciate your help

Roman Thilenius's icon


i am not too fond of this approach. when a patch doesnt work right, then fix it, not add a reset function.

Source Audio's icon

Me neither, but midi CC#s all notes off, all sounds off etc
were invented because of need to solve panic no matter was caused hanging notes.
Back to the patch itself, I seem to remember seeing that
in some other thread, don't remember which.
Fix could be a very simple one,
instead of translating midi notes to frequency in the main patch,
one could send plain notes to poly instances and grab corresponding
frequency from the coll, or whatever is used to store the lists.

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

That would allow changing scales no matter if notes are held or not