Question about MPE channel usage

Hi, I was considering buying the Striso but have a question about channel usage in MPE. If I play several detached/staccato notes, will it cycle thru the channels or play them all on the same channel?

I believe the MPE spec is such that it will play the same channel, as long as the notes do not overlap. Which channel it starts on is determined by the device, and will either go from the bottom or the top +/- 1 channel. A device may cycle through different channels and should function fine in your example, but I don’t believe that is the behavior of any MPE device. I could be wrong though :slight_smile:

I don’t know how the Striso does this, @pierstitus ?

for the MPE spec… this is basically all about ‘voice allocation’
MPE standard (afaik) doesn’t specify the behaviour, its up to the controller (and synth) to decide how it wants to handle.

the optimal approach is to cycle thru channels, picking the channel that was used the longest time ago.

why? release tails on sounds!
a controller has no idea what sound is being played, so its doesn’t know if that sound has a long tail, or its plucky… the fact you play staccato, does not mean that the sound will be staccato - thats a pure synth/sound design decision - not in the realm of the controller.
so, it needs to leave the sound to ‘ring out’ for as long as possible…

so to do that, you use the channel, that had the note released the longest time ago, thus ensuring you do not cut any tail (within the confines of polyphony count)

this will not numerically be +/- channel, since it all depends on gates …
a typical implementation might keep a ‘free channel list’ in the controller, adding freshly freed voices to one end, and remove from the other.

some might have additional logic to handle legato notes.

this is optimal, since it means you don’t rely on the synth to do anything special… so if you’re going to implement a strategy, its safe/most compatible.

however, I’d point out many MPE synths will ‘re-voice’ the channels anyway, so then it becomes all a bit f a moot point, since they will follow basically the same strategy :slight_smile:


I know some have particular ideas about using MPE channels to hit a particular voice e.g. if we take eurorack/modular , you might prefer to be more in control of how channel → voice as the voices might be different… , but thats not really part of mpe - you’re starting to get into the realm of multi-timbral then.
(and as I mentioned above, many synths will re-voice anyway, it doesn’t often matter what the controller does)

Its an interesting area, the forerunner to MPE , was actually being used for midi guitar (decades before mpe!), and was very similar… and there we can see a channel = a string, so you might program different strings with different characteristics. so some what similar from MPE.

and… I think thats why MPE does not specify voice allocation strategy (or didnt, it could well be in newer specs) - you can create your own strategies depending upon your needs.
e.g. imagine an mpe grid controller , when each row = a midi channel, we’d get a very guitar like instrument then, where you can pitchbend one string, and the strings sound could be modified in tone etc.

if you are into coding, this is a fun area to experiment with…

3 Likes

Interesting. I was also thinking of the release tail issue, since I like to use PM synths like Plasmonic or Kaivo. One of the Ipad apps I use for MPE (Velocity KB) has an option for channel per note, which cycles thru each channel sequentially, but I wasn’t sure if there was a standard way that hardware MPE controllers work.

In the Striso board a note takes the channel least recently used, and does reuse its last channel if its not used by another note in the meantime.

1 Like

For the Haken Continuum, the editor provides a choice of voice allocation algorithms:

Of course, max polyphony determines the possible number of channels that voices will be allocated to before a channel needs to be re-used.

Different synths may expect a particular allocation strategy, and of course typically have a max polyphony that they can handle (a monosynth is the degenerate case with a max polyphony of 1).

1 Like

yeah, as I said there are a few strategies, but the ‘oldest first’ is the most widely used/generally useful.
(they also cope with max polyphony very well, and of course, MPE can actually send the poly count)

others are largely used when you want to ‘kind of’ manually allocate order note played to a particular voice, as not all voices are the same - this is find in modular environment.

however as I mentioned really this is a little irrelevant for MPE (midi).
since most synths engines will do their own voice allocation… so even if you do a specialised mapping (aka anything other than LRU), there is a very good chance the synth will change it to LRU anyway :wink:

so in practice, this mainly applies to :
a) instruments with built in synths (like striso/continuum)

b) you write your own synth engines
this is what I like to do… so I like to have a really simple mapping where I always use the lowest (available) midi channel… its not great for polyphony (cuts tails) ,
but usually im using for eurorack, so Im only using a few voices, but like to say first note played goes to voice 1, second voice 2 etc… lots of musical possibilities with this :slight_smile: