Hi, I have some questions about MPESynthesizer. I’m working on a plug-in based on the SinewaveSynth example code but using “MPESynthesizer” instead of “Synthesizer”. (Also, I’ve modified the code so ‘level’ is set to 0.5f instead of responding to afttertouch.) I don’t have any sort of MPE controller to test it with and I’m not sure exactly what behaviour to expect from a standard MIDI keyboard but I’m puzzled by the results I’m getting:
If I call
synth.enableLegacyMode(), my plug-in responds to MIDI notes but controller and pitch bend messages only affect the most recently-played note. Shouldn’t legacyMode emulate standard controller and pitch bend behaviour?
If I don’t call synth.enableLegacyMode(), it doesn’t respond to MIDI note information on any channel.
If I try adding a zone like:
MPEZone zone (1, 15);
I get a working synth but it doesn’t respond on channel 1 - I thought response to notes on the base channel was supposed to work as in the normal MIDI spec? On the other channels, it works but only applies controllers and pitch bend on the most recently-played note, the same as the legacy mode - again, that seems wrong.
Are the results I’m getting expected, or am I doing something wrong? If the former, how am I supposed to make a synth which works in both ‘normal’ MIDI mode and MPE mode?`