another jigsaw piece for understanding the Yamaha CS synth magic
J.D.McEachin
jdm at synthcom.com
Fri Oct 20 21:10:01 CEST 2000
At 02:10 PM 10/19/00 +0200, Christian Hofmann wrote:
>could it be that the CSes use some kind of least-recently-used algorithm?
<cloking device off>
That's what the JP6 does in Poly1 mode. I duplicated it by keeping a rotating FIFO list of voices as they are turned off. For example, play 1-2-3-4, release 4-3-2-1, the next chord will assign 4-3-2-1. That preserves the release of each note for as long as possible. (Thinking about how to implement this in TTL makes me realize that it's been 15 years since I've had to do any complex logic design - CPUs have spoiled me. ;)
In contrast, Poly2 mode always assigns 1-2-3-4, i.e. the lowest voice# which is unassigned is used first.
On a related note - most analog polysynths assign voices on a "first note played, first note assigned" basis, and if you play more notes than voices, the later notes don't get played. I added a "Voice Steal" mode, where if you play more notes than you have voices, it will assign the voices to the last notes played, BUT, if you release the last notes played before the first notes played, it REASSIGNS the voices to the first notes IN THE SUSTAIN PORTION OF THEIR CYCLE. Similar to how solo mode works on most synths, only you get the attack portion on the new notes. And it's a supermode to Poly1 & Poly2, so it doesn't affect the ORDER in which voices are assigned.
This is really handy for playing chords - if you take care to play the upper note(s) before your root notes, then you can preserve the root of the chord while fading back & forth between a diminished & augmented, or base and an octave transpose, or whatever. It sounds better in implementation than by description.
JDM
More information about the Synth-diy
mailing list