Ok, I received my cheap MPE aware controller from keith mcmillen, it doesn't do much, but I was able to have some basic tests.

This one doesn't let me configure "zones" as I see it, cause it's too simple, and I kinda expected that.

It does send a proper 'Note Off' message, but it doesn't handle any release velocity, just gives me '0', and Pd's [notein] object actually responds to this message, or any release velocity message, but always outputs zeroes (and I did document this in the documentation branch now).

So. it seems quite simple indeed to work with vanilla objects to make a Pd patch. Maybe not bother then with a specific object.

Most people won't use MPE in the first place and most of those who do maybe will not need anything too fancy, like setting and handling separate zones. This is where someone out there should stop me and tell me otherwise.

I'll keep looking into it but I don't have a better controller with full blast MPE support to go any further... and maybe an external here is the case.

For those controllers that use MPE with a release velocity, my take is then to just add proper Note Off support for [notein] and [noteoff]. I already have a PR that works for it and we're discussing it on github.

I'm thinking of adding an example to the documentation on how to handle MPE soon.

cheers



Em sex., 27 de out. de 2023 às 13:20, Alexandre Torres Porres <porres@gmail.com> escreveu:
Awesome. My external is definitely working fine, but it's simple and maybe sensel morph uses more stuff, so you gotta tell me and explain what you need. This is what I was hoping asking around about this, someone with a particular need. 

I took that external as a base and out of all midi messages possible, it listens to note on, note off, CC #74 (commonly used for moving through the 'y' axis), channel pressure and pitch bend  (commonly used for moving through the 'x' axis), but I know the [mpeparse] in MAX listens to ALL Midi messages possible, even polyphonic aftertouch, which doesn't seem to make sense to me, since using MPE for channel pressure is basically the same as using polyphonic aftertouch, and polyphonic aftertouch is already much better anyway!

The reason I guess that MPE came up is that, besides pressure, these more fancy new and modern controllers do care about a bidimensional axis (x, y), and then it makes sense to group them all in the same idea and use pressure (as a 'z' dimension) instead of polyphonic aftertouch.

I see some fancy new controllers are also using note off and part of all this, which is something I really find cool and too bad it kinda got lost to oblivion for the most part.

And there are also other messages, like program change, other control numbers you can use and whatever, not sure if sensel uses any of that.

I can expand my external so it listens to all messages and so be it. So far it just does the same as the original one I had a look at.

Now, besides all that, which you could even use regular simple vanilla objects (excluding 'note off'), MPE can also define different 'zones', and the starting channel for each zone. This is where it's still tricky to me. I have no idea yet how to deal with it in an external, and it seems obvious to me that you can't do that in Vanilla. And my original request to add MPE support into Vanilla would require also managing this bit. 

Anyway, this is what I can make of all this for now. We can also talk in private so you can explain me the full features of sensel morph, what you need, and what I need to do so you can test it.

and btw, thanks to github actions, you can download linux externals from current master, see if you can get and load 'else/mpe.in' here https://github.com/porres/pd-else/actions/runs/6659549237

cheers

Em sex., 27 de out. de 2023 às 11:46, James Correa <jcorrea.mus@gmail.com> escreveu:
Hi Alexandre, I have a MPE controller, sensel morph. I can test your external if you compile it to linux. I don't use Mac anymore.

On Thu, 26 Oct 2023, 19:24 Alexandre Torres Porres, <porres@gmail.com> wrote:
I’m not even sure if the cheap gear I bought allows much editing actually:) let’s see

On Thu, 26 Oct 2023 at 19:21 Alexandre Torres Porres <porres@gmail.com> wrote:
Why is that? I need to get my hands on an actual controller before I feel like reading in that much depth. I won’t try to code things if I can’t test them. For now I have the simple parsing object that does the same thing as that external I reffered to, which was something I could test.



On Thu, 26 Oct 2023 at 18:43 José de Abreu <abreubacelar@gmail.com> wrote:
You can also read the mpe specs, i have a feeling you want to somehow reverse engineer it... and maybe you don't need to...

https://www.midi.org/midi-articles/midi-polyphonic-expression-mpe

i am sending the pdf on this e-mail too

Em qui., 26 de out. de 2023 às 17:51, Alexandre Torres Porres <porres@gmail.com> escreveu:
Ok, I wrote something similar to that [mpe] external (btw, there's a small bug in how it handles pitch bend)

this one takes raw midi input, such as from [midiin], and gives you something you can connect directly to a [clone] object, so you can route inside it the most commonly supported mpe messages, note off, note on, aftertouch, CC 74 (aka slide) and pitch bend (aka 'glide'?).


will work more on this when my new controller arrives.

cheers

Em qui., 26 de out. de 2023 às 15:36, Alexandre Torres Porres <porres@gmail.com> escreveu:
Em qui., 26 de out. de 2023 às 13:36, Alexandre Torres Porres <porres@gmail.com> escreveu:
People use MPE to control virtual synth plugins
 
this could be of interest for christoph's [vstplugin~] external then, just realized it.
_______________________________________________

Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list