Mix MPE & Classic Midi

Hey everyone!

So we all know MPE is amazing and everything should use it – with that said, people do not.

In looking at the MPE controls – I’ve noticed there’s obviously a lot of overlap with classic Midi vs MPE – to the point where I’m aiming to create an MPE synthesizer, which also easily support all of the classic Midi at the same time.

Pressure in MPE / Aftertouch in Standard
Slide in MPE / Mod Wheel in Standard
Pitch in MPE / Pitch Wheel in Standard
Strike in MPE / Velocity in Standard

however I’m having a bit of trouble understanding the zones concept in MPE, and I’m also not sure if others have used this approach and if it makes sense?

What I’m thinking to do is run the synth in MPE, but capture all the note events and mix them with a separate state which was processed with the standard synthesizer?

Anyone have some recommendations for getting a nice uniform experience for MPE & Non-MPE users?


What I did is, internally convert everything to MIDI 2.0
The reason is that in MIDI 2.0, MPE can be represented cleanly as a simple 1-channel MIDI stream, and so can MIDI 1.0 (the main difference is that the MPE source will end up with some per-note controllers, while the MIDI 1.0 source will not).

The main benefit for me was that parsing MIDI 2.0 is simpler and easier than either MIDI 1.0 or MPE.
This is because MIDI 1.0 uses many multi-part messages (e.g. RPNs, which involve like 4 separate MIDI messages that you have to combine into one value). Whereas with MIDI 2.0 an RPN is ONE simple message.

It’s working well for me anyhow. I’ve replaced some very convoluted MIDI 1.0 parsing with much simpler MIDI 2.0 parsing code.

Regarding zones. They are the MPE equivalent of channels. except you can have at most 2 of them. The idea being you could do say a keyboard split with one patch on the upper half of your keyboard, and another on the lower.