Sending MPE Messages from VST3

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(...) and juce::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!

Solved, VST context menu in Ableton → Enable MPE Mode

I’m guessing the MIDI messages for changing zones are largely unused with DAWs as they have their own menus for this?