How to convert standard MIDI to MPE?

Peter Ostry's icon

I receive a 1-channel MIDI stream from an instrument and want to convert it to MPE. This should be possible with mpeconfig/mpeformat, correct?

But it does not work here. [mpeformat] outputs only one MIDI channel and it's number depends on the input number. Is mpeformat not supposed to make the channel-distribution on it's own? Are there example patches around, apart from the help file which does not cover this technique?

Roman Thilenius's icon

i knew that a new midi standard would only bring up more questions than just rolling your own using traditional channel messages & cycle.

Peter Ostry's icon

But I insist!
:-)

Background:
I already use MPE with a Roli Seaboard and an Eigenharp Pico. Now I want a possibility to switch MPE on/off from Max. I could switch the Pico remotely, but not the Roli (so far I now). I though, sending standard MIDI and doing the MPE stuff in Max would be the easiest way. Unfortunately [mpeformat] does not work as I expected. Only one channel at the output. Did not find example patches or a better description than Max offers.

Roman Thilenius's icon

documentation says 15 channels would be default. did you set argument "1" already or something like that?

there is a similar question in the forums which is unanswererd since 3 years. maybe nowbody knows or it doesnt work. :P

Peter Ostry's icon

Yes, 15 channels. Usually channel 1 is the "Master" and incoming data is distributed over channels 2-15 (new note = new channel). So you can for example pitch two notes in opposite directions or with an interval. Or hold a chord and pitchbend/aftertouch/modulate only one note.

But, well, this information must come from the instrument. Note and PB/AT need to be on the note channel. Making a channel-distributed stream out of a single input channel can only work for notes. But I cannot bind Pitchbend or Aftertouch to a certain note.

I realize that I am on the wrong way.

Source Audio's icon

MPE is not much different from strandard midi, it just
extends note messages with individual controllers,
and so has to assign individual midi channels
to notes and following controller messages.
So we are dealing here with raw midi messages,
and one can send any midi message regardles
what it is by simply sending lists to midiout.
You could also make MPE synth in Max
using non mpe externals by binding note and expression
messages together to poly voices..
http://www.rogerlinndesign.com/mpe.html
http://www.rogerlinndesign.com/implementing-mpe.html
https://rolisupport.freshdesk.com/support/solutions/articles/36000024621-max-using-blocks-with-max

I did not really understand what is meant by switching MPE on/off ?
Turning MPE mode in Roli on/off ?
I don't use any Roli device, so that's why I am asking.

Peter Ostry's icon

Ok, will have a look at poly voices. Don't know what that is yet.

Regarding your question:
Roli and Eigenharp use software to configure the input devices. They can be set to standard MIDI or MPE. Eigenharp let's me do this remotely, the Roli software not (I think).

Mhmmm ... instad of generating my own MPE on demand, it would be much easier to play always in MPE and combine the channels if I don't need them :-) Permanently high MIDI traffic my be an issue.

Source Audio's icon

With polyvoices I meant synth build in max that could respond to MPE
midi, for that one would have to use poly~.
Has nothing to do with Your problem, but just as
a possible excersise for MPE implementation.

Roman Thilenius's icon

yes, MPE is more than just distributing over channels, it is different messages. thats why they made the mpeformat object. (whos additional options for vst~ and poly~ can be quite misleading IMO)

i would leave using "real" MPE to when it is needed - when there is a hardware device on at least one side, which understands/requires it.

everything else is probably better to implement in custom max.

Peter Ostry's icon

Yes, will do so, thank you, guys.
As long as I don't get MIDI traffic jams I will leave MPE on for both input devices.