And it actually looks like a very simple "Pd Vanilla like" object, we could use the same idea and structure and call it [mpein], and we'd also need a [mpeout] counterpart.
yup, this is really really simple. I couldn't compile, but there's a binary to test and at first I could see how a simple vanilla abstraction could handle it, BUT... there's one problem, note off velocity (aka release velocity)! Apparently release velocity is a thing for MPE and we only have note on messages with note on velocities (where a 0 note on velocity is interpreted as a note off).
Other than in MPE, release velocity is not a real thing that controllers actually use. I actually don't know of any modern one that has it and is a proper MIDI keyboard controller, this only happened back in the 80s or so... but it seems to have been revived for MPE!
So if working with abstractions is what we want for MPE management, we'd need at least an object in Pd to give us a note off message, otherwise we have to go crazier by making a much more complicated abstraction listening to [midiin].
Maybe a 'release' or 'off'' flag to [notein] could do it? In which case it only outputs note off messages with the release velocity instead of note on! It'd do the trick and not even a new object would be necessary.
Or we work on a [mpein] object for vanilla that works with note on and note off messages and if people need note off velocities outside the MPE, they can tweak this object to get it.
I'm about to create a first external for ELSE that parses raw MIDI input such as from [midiin] to MPE messages in a similar same way as the [mpe] external works for now.
Cheers.