[sdiy] Polyphonic voice allocation algorithm

cs80 at therogoffs.com cs80 at therogoffs.com
Tue Jun 24 02:04:26 CEST 2014

As the responses have shown, there is no standard algorithm.  I like the e-µ / Oberheim since you could choose different modes depending on what style of playing you used.  Most keyboards I’ve seen didn’t have any stealing - it you ran out of voices, hitting more keys did nothing.  The Kurzweil K-250 (and descendants) had complicated algorithms to check the volume of decaying notes to figure out which to steal.

Here’s the spec for the Yamaha KAS used in the CS80/60/50:  https://dl.dropboxusercontent.com/u/9224623/KAS_theory.tif


On Jun 23, 2014, at 1:57 PM, rburnett at richieburnett.co.uk wrote:

> Hi guys and girls,
> Does anyone have a link or document that gives a good explanation for a basic polyphonic voice allocation algorithm.  I'm not after anything fancy, just the sort of process that goes on inside a basic mono-timbral polysynth like Roland's Juno series.
> I know some basic terminology like "voice stealing" and "round robin fashion" but I'm trying to avoid sitting down and going through the thought process of coming up with my own voice allocation algorithm from scratch!  Life is too short to spend time re-inventing the wheel when this algorithm has been used for decades and must surely be documented somewhere?
> I know synths like the Juno 106 had two different poly voice allocation modes on offer.  One of them assigns repetitive same notes to new voices in round-robin fashion so that their release phases can overlap, and the other mode plays the repeating same notes by just retriggering the same module.  What I'm really looking for is something like a flowchart, or text description of how the voice allocation decisions are performed.
> I appreciate that things can get complicated when notes can arrive from local keyboard vs over MIDI, and things like Sustain messages, and multi-timbral setups are considered.  However, I'd like to keep it simple at the moment so that I can just play about with some synthesis options.

More information about the Synth-diy mailing list