I know findVoiceToSteal in MPESynthesiser handles voice assignment when you’ve run out of voices. But what about when all your voices are free? What handles the voice assignment then?
In MPE, I have channel 2-15 as my MIDI input channels. I’d like each channel to be directly assigned to a voice.
eg.
Channel 2 => Voice 1
Channel 3 => Voice 2
Channel 4 => Voice 3
etc.
I can get it to reassign notes based on existing channel data in findVoiceToSteal easily enough like this:
if (noteToStealVoiceFor.isValid())
for (auto* voice : usableVoices)
if voice->getCurrentlyPlayingNote().midiChannel == noteToStealVoiceFor.midiChannel)
return voice;
But how do I get the voices to be assigned based on channel on their first usage or when a note isn’t playing?
Thanks.