MPE zones - implementations?


The MPE spec 1.0 includes two zones. The Lower Zone uses channel 1 as a master for messages that apply to all channels in the zone. The Upper Zone uses channel 16 as a master. Per section 2.1.1 the member channels are 2 up for the Lower Zone and 15 down for the Upper Zone. So basically this seems to be a codification of what controllers usually call split.

Does any software support this yet? I haven’t seen a Zone property in the MPE soft synths I’ve played around with, though it might be hidden if it doesn’t detect zones in use on the controller.

There’s a link on this page to download the spec (requires free membership):



Some MPE soft synths support a channel range setting, as well as a setting for the global channel. While this isn’t explicit zone support it does allow you to achieve the same thing.



Zones were an area that changed a couple of times during the draft phase, and at one point were getting pretty complicated (allowing any number zones) … so I think the feature was left out , to let the dust settle. However, I was pleased to see when the standard was published they reverted to the original, much simple 2 zone limit - so perhaps that will help.

but there is a bit of confusion in roles here:
really zones are only needed to be understood by the controller, and things that are multitimbral e.g. multitimbral hardware, daws, multi-timbral vsts - it makes no sense for that complication to be passed down to most single timbral sound generators…
i.e. a daw could convert the upper zone, into a single zone lower zone for a VST except in the case that its multi-timbral.

perhaps when we get MIDI-CI some of these things can be cleared up properly.
as this zone ‘split’ is really just a hack around not being able to address a midi device properly, and being limited to 16 channels.



If the controller supports this, then any MPE compatible synth could be used when using the right host and two instances of this synth (or in general - one per zone). E.g. with GigPerformer you can split the MIDI stream by channel and remap e.g. channel 16 back to 1 for the second zone (in case the synth doesn’t expect global events on channel 16). Presets for the “synth combo” wouldn’t be stored in the synth then but in the host (most live compatible hosts allow preset changes with program change events etc.).



I nearly always play my Eigenharp with a split. Currently I’m using two virtual midi ports out from EigenD into MainStage, but I can think of some situations where it would make more sense to just transpose one zone so that there are no overlapping midi note numbers. I.e. both zones sharing the same midi channels just as if playing without a split.

Iirc this was my plan for a MEC -> PureData setup on a Raspberry PI. That way some PD patches could be bi-timbral, others not (by transposing the «wrong» zone back), without any changes needed in MEC.