I'm finally trying to get a hold of what the deal is with MIDI Polyphonic Expression, which is hard because I have no modern controller that uses it. So one question is does anyone know of a nice free open source software that can format, send and receive MPE so I can test some things?
Now, only external I found in the wild was https://github.com/pure-data/pure-data/issues/2117 and I'm trying to check it to see how things work.
And now for the real subject. I know Pd can get MPE data from raw midi and even specialized objects like [ctlin], but that doesn't seem to me like the "real deal", even though I'm aware my knowledge is limited. I am thinking about a new external for ELSE, but it really looks like Vanilla should handle this. My point and idea is that Pd should better deal with it natively, whatever that actually means, I cannot put things in details yet... for reference, what I can say is that MAX has mpeparse and mpeformat objects, and I figure that Pd should also have something like that, by the way, I also opened an issue on github, see https://github.com/pure-data/pure-data/issues/2117
what do you peple say?
cheers
Use another instance of Pd :)
On 10/25/23 23:43, Alexandre Torres Porres wrote:
I'm finally trying to get a hold of what the deal is with MIDI Polyphonic Expression, which is hard because I have no modern controller that uses it. So one question is does anyone know of a nice free open source software that can format, send and receive MPE so I can test some things?
Now, only external I found in the wild was https://github.com/pure-data/pure-data/issues/2117 https://urldefense.com/v3/__https://github.com/pure-data/pure-data/issues/2117__;!!Mih3wA!A8bJjPI9BgeXtnabP92vhFFobFt-zlghD1Ddy02SilyrawGh_T1YHxvWYAq8DnY3Uk_a6ffTFg$ and I'm trying to check it to see how things work.
And now for the real subject. I know Pd can get MPE data from raw midi and even specialized objects like [ctlin], but that doesn't seem to me like the "real deal", even though I'm aware my knowledge is limited. I am thinking about a new external for ELSE, but it really looks like Vanilla should handle this. My point and idea is that Pd should better deal with it natively, whatever that actually means, I cannot put things in details yet... for reference, what I can say is that MAX has mpeparse and mpeformat objects, and I figure that Pd should also have something like that, by the way, I also opened an issue on github, see https://github.com/pure-data/pure-data/issues/2117 https://urldefense.com/v3/__https://github.com/pure-data/pure-data/issues/2117__;!!Mih3wA!A8bJjPI9BgeXtnabP92vhFFobFt-zlghD1Ddy02SilyrawGh_T1YHxvWYAq8DnY3Uk_a6ffTFg$
what do you peple say?
cheers
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-list__;!...
I'm getting a cheap (but not so much for brazilians) mpe controller by keith mcmillen, let's dig in :)
I made progress and found that Live, for instance, is able to edit and send MPE data and I was better checking things in MAX, which never ceases to amaze me with the creepy feature bloated objects and unnecessary complexity and I'm trying to pick up on what's important.
People use MPE to control virtual synth plugins and it's nice then for PlugData to support this in a neat way, so I'm gonna offer it a solution with ELSE.
In the Pd world, we need something like [poly] to drive a [clone] object and send the MPE control data to the corresponding active voice. I'm still not sure how it works, but it seems that Pd people are happy enough in just using existing MIDI objects with some minor tweaks and routing...
MAX has a special object to get MPE data inside instances loaded in [poly~] (their version of [clone], per se), I didn't even want to look at that but I did. It seems it needs a [midiin] connected to a [mpeparse] connected to [poly~] and inside [poly~] you have [polymidiin] connected to a [midiparse]... pheeew, that's insane! No wonder I practically gave up on Cyclone :)
On the other hand, MAX does support any minor detail of MPE implementation. In a sense, I can look at it in the same way as OSC. Pd Vanilla has a very simple solution that can be good for most cases, but for a full blast support you need externals. Maybe MPE could be a bit like that. I'm yet to see if a simple handling of MIDI data without a specialized object is ok and then I can also just document it as such in the help file of MIDI. If I can see that a simple object is a better option, I'll propose it. It's still early for me to say, but something tells me we DO need an object.
And I can think of a more complex solution for an external in ELSE/PlugData.
Now, only external I found in the wild was https://github.com/pure-data/pure-data/issues/2117 <
https://urldefense.com/v3/__https://github.com/pure-data/pure-data/issues/21...
and I'm trying to check it to see how things work.
oops, I had sent the wrong link, I was referring to this https://github.com/DanielRudrich/pd_mpe
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.
Cheers
Em qui., 26 de out. de 2023 às 13:36, Alexandre Torres Porres < porres@gmail.com> escreveu:
oops, I had sent the wrong link, I was referring to this https://github.com/DanielRudrich/pd_mpe
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.
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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.
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
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'?).
https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m...
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
Y'all can look at the current master now on github and check my documentation updates that got merged.
I did include a subpatch for MPE into midi-help.pd that you can look at and send some feedback, find screenshot below as well
cheers
[image: Screen Shot 2024-03-14 at 18.30.14.png]
Em qui., 2 de nov. de 2023 às 22:55, Alexandre Torres Porres < porres@gmail.com> escreveu:
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'?). > > > https://github.com/porres/pd-else/blob/master/Code_source/Compiled/control/m... > > 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