[sdiy] MIDI Polyphonic Expression (MPE) specification

rsdio at audiobanshee.com rsdio at audiobanshee.com
Sun May 6 19:08:50 CEST 2018

On May 6, 2018, at 2:17 AM, Tom Wiltshire <tom at electricdruid.net> wrote:
> Some of you will have seen this already, but for those that haven’t, the MMA have agreed a spec for polyphonic expression:
> I’ve read through it, and while I won’t claim to have understood every single bit first time, I got the distinct impression it’s a bit of a kludge - forcing extra features into a system that really wasn’t designed for them. The plan is to give each note it’s own MIDI channel, until you run out of channels, at which point you start having multiple notes on each channel. 

I’m an opinionated old man, so I’ll try to start with the facts before inevitably getting to my opinions.

Since 1983, MIDI has supported "polyphonic expression" using what is called Mode 3. The mode numbers are just shorthand for each particular combination of Omni and Mono/Poly control switches. Mode 3 is selected by sending an Omni Off message and a Mono On message. The Mono message includes the number of voices, which can be handy for those older analog synths with fewer than 16 voices, since it technically makes it clear that the other channels are unused by that particular synth. Since the Mono On message is a Channel Message, its channel number is the first channel for the group, called the Basic Channel. There is also a Global Controller channel, which is the channel number right before the Mono On message. Each channel is completely independent, in that you can send separate Program Changes to each voice - this is the Multi-Timbral mode. There are also independent Pitch Bend, Channel Aftertouch, and Polyphonic Aftertouch for each channel.

A couple of special cases. If Mono On is set to Basic Channel 1, then the Global Controller channel number is Channel 16. If Mode 3 needs all 16 voices, then the voice count in the Mono On message is set to 0, which is really just the number you get when a 4-bit value rolls over from the maximum value of 15 (0xF) to 16. A voice count of 0 is also a magic wildcard that says, “give me all of the voices that the receiving synth has,” so it might be fewer than 16 depending upon the hardware. When using all 16 channels, any channel can be the first, but it’s rather moot since all channels are used, except for the fact that the Global Controller channel will depend on the Basic Channel in the Mono On message. With 16 voices, there would technically be one channel that is both a voice channel and a Global Channel, which might be a bit awkward.

Note that some manufacturers took Mode 3 a bit further, and actually included two related modes in their synth operating systems. One option strictly followed the “Mono” aspect of Mode 3 and was monophonic, while a second variation simply ignored the specification with regard to the mono aspect and literally allowed multiple notes per channel. Keep in mind that MIDI is just a series of messages, and nothing really prevents several Note On messages from occurring per channel. I recall that Ensoniq made extensive use of this polyphonic extension to Mode 3.

What does all of this mean?

It means that we were able to demonstrate the Madrona Labs Soundplane in 2011 with full ten-note polyphonic expression on an unmodified Oberheim Matrix-12 that was designed in 1983. This was several years before MPE was first drafted. Each touch was assigned its own MIDI channel, with independent Pitch Bend, expression Control Change, and Channel Pressure directed to an individual voice on the Matrix-12. There were even two voices left over for the keyboard. The Matrix-12 doesn’t even need to use the official Mode 3 scheme because all of this can be set up manually using the powerful operating system in that product. Whether that setup requirement is a feature or a shortcoming depends upon your point of view. I personally like having the ability to call up a complex configuration with a single button press.

Opinion: MPE is not a kludge, because MIDI already supported this. At worst, you could say that MPE is moot or unnecessary, but I think kludge is definitely inaccurate because MIDI officially supported polyphonic expression since day one - there is no “ill-assorted collection of parts.” I would say that MPE is more of a non-sequitur than a kludge.

If anything, Mode 3 is something that has had a troubled history. The rumor is that Dave Smith had some seriously cool features lined up for the next Sequential Circuits products, and he didn’t want to give away the plans exactly. This rumor claims that the description of Mode 3 is slightly crippled or obscured so that it could be an official part of the specification without directly allowing competitors to copy the features. I don’t quite buy that story, but I must admit that my copy of the MIDI Specification is from 1990, not 1983. What’s certain is that a lot of people don’t know about Mode 3, and it seems that “kids these days” are *completely* unaware of it. When I say “kids,” I’m including major software developers and modern synth and controller hardware manufacturers.

On May 6, 2018, at 5:28 AM, Michael Zacherl <sdiy-mz01 at blauwurf.info> wrote:
> On 6 May 2018, at 11:17, Tom Wiltshire <tom at electricdruid.net> wrote:
>> The plan is to give each note it’s own MIDI channel, until you run out of channels, at which point you start having multiple notes on each channel. 
> So after sixteen notes it starts over with channel one adding a second note to it and continues with channel two and so on?
> What Problem are they trying to solve?

That is the question of the year (or the past few years): What Problem is MPE trying to solve?

Thank you for that quote. :-)

If you read the purpose statement, MPE claims to take the monophonic Mode 3 that was already available and expand it to be polyphonic. In my opinion, they fail at that goal completely. The most surprising thing is that sending Polyphonic Aftertouch is not allowed. So, they picked the one message that would actually allow more than one note of expression per channel and made it illegal, in contradiction with the existing specifications. The remaining messages that were monophonic are still monophonic in the sense of expression, if not just the notes.

Another thing that MPE does is reduce options. Mode 3 allows any MIDI Channel to be the basic channel, but MPE requires one specific master channel while allowing only one additional master channel as an option that manufacturers do not need to support.

A second claim in MPE is to make as few changes to classic MIDI as possible. Here, again, MPE fails. The concept of the Global Controller channel is needlessly changed to a new, similar concept of the Master Channel. While the Global Controller channel is the channel right before the Basic Channel of Mode 3, the Master Channel in MPE *is* the Basic Channel, and the first Member Channel is one channel above that. I see no reason why firmware developers for hardware synths (or even software synths) should now have to implement two different schemes for selecting the global control channel.

So, not only was classic MIDI changed by making polyphonic aftertouch illegal on Member Channels, but the whole concept of global controls was changed arbitrarily. This bugs me because embedded processors have limited memory for code, and silly exceptions to long-standing conventions require more code to adapt to the changes and include support for both variations on the same concepts.

All things considered, MPE is a stripped down version of Mode 3 features that were already available, but reduced to the point that manufacturers can have some sort of guarantee of interoperability. There should be less confusion about which options are supported and which are not, because so many options have been removed completely or reduced to a single value (it’s not really a “choice” if there is no second option). This should make it easier on users as well as manufacturers. In some cases, though, MPE includes some sloppy changes that were technically needless.

Granted, MIDI requires each receiver to have a Basic Channel that can only be set via hardware controls or System Exclusive messages. This makes sense because if it weren’t hard-wired like that then all synths would respond to the same messages and there’d be no way to separate them. MPE makes the assumption that the whole MIDI bus is dedicated to only one or two devices, and thus does away with the concept of a Basic Channel that the user has to understand how to set before sending any MIDI messages. In some sense, MPE dumbs down MIDI to the point where it may actually end up being more popular.

> m. (not into MIDI that much)

I’m sorry to hear that you’re not into MIDI, because there are many very interesting things that can be done with MIDI if you put the time into learning its capabilities. I’m a huge fan of the 14-bit controls. That said, I still understand the advantages of Gate and CV. I simply use each one where it’s most appropriate, or both together in the situations where that’s useful.

Brian Willoughby

More information about the Synth-diy mailing list