MPE: MIDI Polyphonic Expression

There have been a few discussions about MPE: MIDI Polyphonic Expression which are spread across different Discourse topics so I thought it might be a good idea to bring them together here. (@jofemodo could you move the relevant messages from Zynth club topic to here?)

MPE is a mechanism to allow expressive control of MIDI instruments using a MIDI channel per note then allowing any MIDI CC to affect just that note. It round-robins the channels dynamically hence MIDI 1.0 allows maximum 16 note polyphony (16 MIDI channels available) on a single MIDI connection. (There may be ways to expand this by bonding MIDI connections but it could prove challenging to play expressively suing more than 16 simultaneous notes.)

One idea for MPE is to allow (new) physical interaction with electronic musical instruments, e.g. the LinnStrument allows control similar to a guitarist where you have access to 8 rows of notes (like strings) divided into semitones (or whatever) with background colours giving some registration guidance and ability to perform multiple dimensions of control; X/Y/Z axis.

Zynthian does not currently have specific MPE compatibility but may provide some MPE compatible configurations, e.g. Surge in Stage mode. It may be beneficial to add specific MPE configuration which might allow better interfacing and playability.


Great! I’m happy to see this topic as i just ordered my xmas gift, a Roli Blocks :star_struck:
and i hope to add MPE support as soon as i can start experimenting with it. My proposal is to add a new type of “MPE layer” that would ask for the number of channels of polyphony. It would work for most of engines, except:

  • setbfree
  • Aeolus
  • Pianoteq

It would use the already existing Master Channel for receiving the common MIDI CC messages and will resend them to the MPE channels. You could create a single MPE layer, but i don’t think this is a major limitation.

I would love to ear your opinions and suggestions …



Dammit, I wish I had the time to join you all in this one, as this is a topic I have quite a lot of experience in, also programming custom layers on Roli products.

If there is a conversation on this topic happening elsewere in the forum, I would be delighted to be pointed in such direction.

I commented a while back in this post about MPE and roli, and this one about the midi router , but I have yet to think of a proper solution to the problem.

Indeed if vital brings a MPE synth that runs well on zynthian it might be really interesting to get the conversation on this topic a bit more developed into Issues and Feature requests

I am starting to play around with Surge which is in the LV2 synths. Just need to load up some MPE specific patches like Roger Linn (MPE) from the desktop version of Surge. I have a few Roli Blocks and Zynthian v4.0 to muck around with … experience thus far is that the Blocks plug and play but with differing results depending on the currently active Layer. I setup the Zynthian with a ZynSubAdd and Surge layer with both Roli Blocks and Korg nanoKeys Studio.

ZynSubAdd has 1 note polyphony, pressing more notes cuts off notes and has varied unpredictable effects and changes the filter cuttoff value when played with Roli Block in MPE mode. Works normally with Korg nanoKey Studio.

Surge behaves as you would expect with Roli Blocks in MPE and Korg nanoKey Studio.

So I guess that means MPE might just work out of the box if the Synth engine supports it … I think this is obviously going to depend a lot on every individual set up as I think MPE just round robins MIDI channels depending on polyphony (or the number of Riban’s fingers and toes which ever is lesser).

Some more investigation to be done when we get some specific MPE patch for Surge sorted out.

Yeah, that’s exactly my setup and my problem, please keep us up to what you can achieve.

As i mentioned somewhere else, having an option for midi channel selecction that says “MPE” and let’s you choose a device exclusively and disconnects it from the rest (this would make it work in multi-timbral mode)

I think this might be really hard based on the midi router’s inability to be “hand wired”, but i think it’s not a bad solution

This is the MPE full specification

Some expressive instruments available now or in the near future:

Actually - look here for a fuller list.

I hope to contribute to the MPE discussion when my Osmose arrives. Hopefully this year…

Yeah, i’m waiting on mine as well, kinda concerned with the lack of any updates the last month.

I’m using the Linnstrument 128 if anyone needs a tester :smile:


Love to hear a :face_with_monocle:

Thanks for getting everything together in one spot!

I hope now that @jofemodo has a roli block we can delve into this deeper.

Also I am working on a custom layout for roli block lightpad that allows for editing settings with midi or on the device itself, like i did with the Freeboard “firmware” a while ago.

I still have to put the overlay (I’m too lazy) but if you (or anyone around here) got a seaboard block I am willing to use that as an excuse and finally polish that Readme and code. It is useable tho, as it is.


I have one Roli Lumi right now, and two more on the way for a total of 72 keys. Won’t really get to see the full abilities of the keyboard though until late January when Roli push the next firmware that adds 4D. So right now I’m only able to get the benefits of polyphonic aftertouch, which to be honest is brilliant.

As far as connecting the one I do have to the Zynthian, I’ve really only used it with Linux Sampler so far as that’s my main onboard synth when it comes to the Zynthian’s I have. Connectivity is simply plug and play. The Zynthian sees it as a midi controller without any fuss.



I’m also very interested on MPE layers. Especially for Pure Data (a layer like the mod layer, with all channels in/out) and Surge.

To be more precise, I’m working on a digital orchestra project. We planned to setup all the things this month. For this purpose, we have some MPE interfaces, like seaboard, linnstrument, soundplane, continuumini, etc.

But I’m also creating kind of « fake MPE interfaces » by aggregating several monophonic interfaces (like Aerophones) with iConnectivity midi interfaces. In this setup, all the instruments (around 25) are in the midi network and goes to 10 headless raspberries (so, one raspi for 1 to 4 instruments, each one a specific midi channel, excepting real MPE interfaces).

And there’s also a conductor that is going to control all the raspi with program changes, specific and global panic, off, etc. (probably via an ipad and mobmuplat). So the wonderful work that you did with Zynthian (we already own a Zynthian V2 kit) seems perfect for that.

For all this, we are going to use Pure Data to precisely filter, scale and map the data (mostly thanks to the pure mapping library which is really powerful).

So, the possibility to have multi midi channels in/out in Pure Data (and Surge) should be really great for us :wink: And of course I’m on for testing if it’s necessary ^^

@Pastitas I’m interested on your custom layout for lightpad as we have four of them (especially for automatically changing settings by MIDI via presets embedded in Pure Data). I also had to test the freeboard blocks firmware in this sens.

Lots of work in perspective for this new year :slight_smile:

1 Like

I have a Linnstrument 128, a ContinuuMini, a Roli Seaboard Block and a Sensel Morph. I confess to being a bit MPE-obsessed. :slight_smile:

They indeed are the most expressive electronic instruments I ever laid my hands on, easily rivaling acoustic instruments.

1 Like

Another very cool MPE controller you might want to check out (and it’s locally built !)

and the new cheaper version

1 Like

Roger Linn has zynthian on a list of MPE capable synths, however I find no hits in “MPE” search of wiki. This is of special interest to me, I have a v4.6 kit and two weeks ago my 2019 Osmose order arrived. I won’t waste my feeble words, here is the best explanation of why MPE is an equal or greater keyboard innovation than the forte-action introduction circa 1700:

In short, the wiggle is the least of it. The primary vertical keyboard axis behaves like a dial, not a switch, velocity sensitive and very high resolution in both directions. No other classical keyboard comes close to the control you have over voices alone and polyphonically. Play a STAB chorale, you feel the choir breathing. I did not anticipate this, and it’s not possible to grasp without some time on such a keyboard. Bach was unimpressed with the forte at first. Osmose is only the first MPE “keyboard” there will be many more. “New” instruments, like the Roli, Linnstrument, Continuum, tend to niche, for better or worse.

The Aeolus configured for MPE would be wonderful. Obviously it is not historically consistent, but I very much doubt any 18th century organist would reject the new expression for that reason, given the opportunity. Innovation was constant in Organ development, with wide variety in all periods, as was tradition. I revere both.

Osmose comes with a fantastic physical modeling synth, but it’s not fast to learn. Could anyone bring me up to speed on MPE in Zynthian as of spring 2023?

Thanks so much :slight_smile:


Ok, two things.

  1. Roger Linn is aware of Zynthian, WAT?

  2. Zynthian is a loose federation of synth plugins. Only a small set of them support MPE, I’m aware of two, Surge and ZynAddSubFx. Although MPE could be added to other plugins like Aeolus you’d need to go and petition the upstream developer.


The Linnstrument is open source and I believe Arduino based, in case you want to see how some MPE stuff works-[is generated].

Here is the link to GitHub page:


@ Baggypanys and Tunagenes Thank You!
The flavor of Surge in Zynthian does MPE? And ZynAddSubFx? I’m trying to think how to configure X, Y and Z…
Maybe I need to use another rig to make presets then bring them in…what linux flavors should I consider these days, and could anyone tell me the versions of Surge and ZynAddSub… I should load for compatablity with latest Zynthian (I have 4.6 kit) Thanks so much.

I have old laptops lying around I could re-deploy…

Linn is a big fan of Surge XT right now: