[sdiy] Voice assignment algorithms

Rainer Buchty rainer at buchty.net
Thu Mar 25 22:26:58 CET 2010


On Thu, 25 Mar 2010, cheater cheater wrote:

> Voice assignment algorithms are so simple that there's reeeeally no 
> reason to optimize them

They are?

First of all, it might be highly unwanted that retriggering a key indeed 
reuses that very voice. Bass sounds come to my mind, where you might 
want to have a "this note is played alternatingly on two strings"-like 
effects. You might want to feed back this very property from within the 
sound (e.g. possible with ESQ1/SQ80).

So "search this note in the occupancy list and retrigger it" might 
already be undesireable.

It was already discussed that "if there's no free voice, just grab the 
one the voice pointer points to" is possibly bad. So you want to have 
some LRU strategy here which grabs the voice which is the farthest in 
the release phase -- assuming that you know that there is something like 
a master envelope, which e.g. is almost non-existant on FM synths 
without knowing what the carriers are. So either you have even more 
feedback from the sound engine or you use a release counter, assuming 
that premature reassigment hits all sounds equally bad.

That counter may want to be stretched (sostenuto) or sped up 
(staccato).

And it needs a legato mode when used with monophonic sounds.

Sure, you can get away with a most simple voice assigner; but I 
definitely see room for a more sophisticated one -- which then also 
shouldn't add too much delay.

Rainer




More information about the Synth-diy mailing list