M4L Device producing MPE for Ableton Sampler Instrument

Dana Batali's icon

Hey all, looking for help on the question of producing MPE from my M4L device for consumption by Ableton 12's purportedly MPE-supporting instrument, Sampler.

Trivial setup: create a new M4L MIDI device, copy the example network from mpeformat object's help. into a blank device. Now add the device into an Ableton MIDI track: mydevice -> MIDI Monitor -> Sampler (any preset).

The problem: pressing the mpeformat example buttons produces two notes with independent control over volume and aftertouch. Examination of the Midi Monitor in Flow mode shows that the CC data is "normalized" to use the global MIDI channel. IE: it preserves the channel for note on/off but resets the channel on the volume and aftertouch CCs. I spent time with ChatGPT and Gemini and this problem/feature of MIDI normalization appears to be well known? It appears that there exist longstanding inference rules in Ableton to discriminate legit MPE sources from bogus ones. One might imagine that mpeformat would embody the secret sauce, but unless I'm missing something it does not.

With Ableton 12's built-in MPE instruments the priority of this issue increases, I think.

Anyone have pointers or suggestions? Thanks!

Dana Batali's icon

One additional datapoint: I replaced Sampler in my patch with Vital and get the same result, so the inference rule seems independent of whether the instrument is VST3 or internal. Perhaps it has something to do with the MIDI input device? My ROLI is non-functional at the moment so I don't have an MPE device available. That said, the goal here is to generate MPE from a M4L device. If the inference rule has something to do with a real device, I wonder if there's some magic identifier or SYSEX sequence that identifies a MIDI source as MPE aware (again I thought that might be the point of mpeformat). I see that there is an MPE checkbox in Ableton's MIDI input setup and if this is the driving control for Ableton's behavior, then the fact that no M4L devices appear in that list means I can't check the box for my device.

Finally, i also see that there is a thing called a MIDI Tool. It's possible that this is the solution to my problem so I'll be exploring that avenue presently.

Mathieu Chamagne's icon

Hi

Make sure your device is mpe friendly : (by default it is not..)

add a live.thisdevice into your M4L device, and in its inspector enable "Patch supports MPE"

Dana Batali's icon

Hey Mathieu - this is a big step in the right direction! Thanks mucho! Interestingly these settings aren't present when I edit my device via Max but they are present within Ableton.

I'm still not seeing what I expect from MIDI Monitor so if you have any other pointers they would be most appreciated. For example, I'm emitting note-on/off sequences for the same note, say 60. I'm assigning a new channel on each use but Midi-Monitor appears to remap these in a "sticky" fashion. Ie: it appears to disregard my channel request which makes me wonder how my ensuing pitch-bends could be expected to bind to the correct note. Underlying it all it my shaky understanding of Ableton's role in MIDI normalization. I'll dig deeper into the MIDI Monitor device to see what I can infer.

Thanks again!

tyler mazaika's icon

A couple thoughts from my experience with this:

1) Make sure you're using the MIDI Monitor version which supports MPE. If you don't, it'll downgrade your MIDI into single-channel.

2) Don't expect any particular channel number you assign in M4L to be the same the next time it arrives at a device (including a MIDI monitor). Ableton remaps note-channel assignments with their own logic. They will still keep the associated CC/pitch bend data with that note, however, it just won't be on the same channel your device assigned it.

3) I never found mpeformat helpful, and instead just sent out via [midiformat] objects with different channel assignments.