How does the Poly Steal Message Work?
Hi All,
I get the idea of voice stealing, but I'm getting some clicky clacks in my patch that happen when poly~ wants another voice. I would be interested to know if this is my mistake (probably) or something to do with poly~.
How does poly~ steal the note? Is there a quick fade out or just an abrupt stop? Could voice stealing account for clicks?
Can't find any threads or specifics in the docs about this.
Hoping to be enlightened :)
do you get clicks with voice stealing off?
try setting the poly~ with an initial value of more voices than you need.
it seems that declaring enough voices upon instantiation of the poly~ fixes some clicking.
for example, if you haven't declared enough voices, all voices are busy, and more polyphony is needed, it seems poly with either make a new voice (will create a click in my experience!) or you if stealing is enabled, to keep the number of voices constant, it will highjack the last used instance... but also get a click...
i think the workaround is to set the initial number of voices higher instead of stealing.
hope that makes sense.
dan
No clicks with stealing off, will try the workaround and report back
OK tried 16 voices with steal on then going down to 1. There is a click but it doesn't seem to be *that* bad, it does seem to be inconsistent, and at lower frequencies it's probably got something to do with the phase of the waveform.
It's not unusable, but think I'll try and roll my own with target messages and thispoly~ voice reporting
i ended up going the same route. IMO poly~ is good for much more than advertised!
Yes, I was not pleased with the voice stealing algorithm either, so as I had made it before, I made a version in Max, but it wasn't as simple as I had hoped. The first version optimizes voice assignment when voices are turned off in irregular patterns, and is here:
I put it in toolbox, but there was very little interest in it. So when I made an improved version for Godel, I did not make a standalone version of the object as a demo. but you can find the allocator inside this design here:
which actually contains two allocators, one to store the notes for the arpeggiator, and one to optimize their poly~ assignment, with a voice tag array to deallocate notes from real-time play and the arpggiator separately.
The Godel version uses zl reg rather than coll for the voice data, so it is fully re-entrant.
Ernest -
Very nice, lots of interesting work in your synth, esp. regarding routing. I have gone through a similar saga with routing OSC within my poly~'s. Thanks for sharing and showing off that great documentation.
Dan
Hello Ernest.
Old post.
I am very curious to see your voice assignment optimization when voices are turned off in irregular patterns.
But the links seem down...
its expanded and improved at