Hello all,
I have a MIDI plugin that attempts to emit MPE note + pitch bend for polyphonic microtonal playback. Currently each note and corresponding pitch bend is sent to an open MIDI channel (using lower zone, with 2-15 as member channels). With Ableton’s MIDI Monitor ‘effect’ I am able to verify that each note on has a corresponding pitch bend sent on the same channel, but the ‘MPE’ view on the MIDI monitor shows each note with centered pitch bend, no matter the pitch bend value I send. This also holds true when sending to Ableton’s MPE enabled Analog synth, the pitch bends use the global pitch bend value of +/-2 instead of the MPE value of +/-48.
The details:
AudioProcessor::supportsMPE()
is overridden to return true.- In AudioProcessor::processBlock:
midi_buffer.addEvents(juce::MPEMessages::setLowerZone(15), 0, -1, 0);
(I’ve tried this outside of processBlock as well, to not spam it) - Using
juce::MidiMessage::noteOn(...)
andjuce::MidiMessage::pitchWheel(...)
to create note on and pitch bend messages. - Testing on Windows 11, Ableton11, VST3, JUCE 8
Is there maybe some MIDI message I am missing or order of operations that is incorrect?
One other question: When is the appropriate time to send the MPE zone messages? In any modern DAW a synth can be swapped out and would need the zone information sent again?
Any help or debug suggestions welcome, thanks!