Author Topic: "proper" MPE support for preenfm3  (Read 16804 times)

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
"proper" MPE support for preenfm3
« on: April 05, 2021, 11:26:13 AM »
it would be great to have more proper MPE support on preenfm3.

what would be needed?

an instrument can be set to MPE which would enable the following (ideally):

receives midi on selected channels (2-(x<=16).

receives pitchbend on those channels which affects only the notes that sounded on that channel. usually the pitchbend for this "note pitchbend" is set to 48 semitones, but 12 24 and 36 is also possible.

i think that is all.

this would greatly reduce the setup time for MPE instruments and would allow us MPE-peoples to use the limiter etc. properly.

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #1 on: April 05, 2021, 01:08:31 PM »
it would be great to have more proper MPE support on preenfm3.

I agree, i'm thinking for a while about something simple in the UI and simple in the code that would turn an instrument to MPE mode.
Maybe i could limit MPE to instrument 1.

I think the "Mixer>Global>Global midi channel" could be removed as its goal was to add minimal MPE support.

Then could add something like "Mixer>Global>Inst1 mode" with "normal/MPE" option.

If MPE is enabled,
. "Mixer>Midi>Channel" of instrument 1 would be disabled and would maybe display "MPE"
. Channel 1 would always be the global message channel
. Channel 2-X : would be for instrument1 voices, with 'X' depending of the number of voices defined in "Mixer>Voices"
. Would be the user responsibility not to overlap MPE channels with instrument 2-6 midi channels.

Pitchbend would be still have to be definied in the modulation matrix, it would need a way to allows 48 semitones pitchbend.

Would definitely make MPE easier and increase the polyphonie to 15 MPE voices.




lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #2 on: April 05, 2021, 02:59:35 PM »
That would be absolutely awesome!

There is also cc74 (per channel) for timbre if you wanna go fancy.

Also aftertouch becomes poly in MPE as well (since pressure is per voice,i.e. note)

Some controllers also send a release velocity, that could be a matrix source.

Keep in mind that with MPE you have a voice pitchbend and a global on channel one, so you need two different matrix sources for that. Maybe MPE-Bend could be added with support for up to 48 semitones

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #3 on: April 05, 2021, 03:04:46 PM »
Global midi channel was still useful to me, to switch patches on all instruments via a single program change, but it is an edge case I guess

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #4 on: April 05, 2021, 03:14:42 PM »
Yep I've changed my mind and will keep Global midi.

I think i found  the information i needed.
https://support.roli.com/support/solutions/articles/36000027933-what-is-mpe-
Only Lower zone will be supported.

The matrix is already per voice as it contains voices specific params (velocity, notes, poly aftertouch, LFO with key on sync etc...)
CC74 already exists.. don't think i'll need 2 sources for pitch bend. If it's received on channel 1 it will be the global one.
Will see...


« Last Edit: April 07, 2021, 09:15:33 AM by Xavier »

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #5 on: April 05, 2021, 03:19:37 PM »
I'm wondering how/whether the following features can work in MPE mode :
. arpegiator
. glide
. Unison / Mono play mode

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #6 on: April 05, 2021, 03:20:21 PM »
Nice!

But how do you discern the two ranges?

I.e. global bend is set to 12 semitones, to bend chords up and down and voice bend is set to 48 semitones to allow gliding of individual notes...

Voice bend is more often used as a way to play legato glides in a polyphonic context. (Actually one of the reasons MPE was developed)

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #7 on: April 05, 2021, 03:22:43 PM »
I think voice bend replaces glide in MPE, so no need for that. Also mono makes no sense with MPE i guess.

Arp i am not sure, haven't used it on the preenfm3. What prevents it from working on MPE?

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #8 on: April 05, 2021, 03:26:59 PM »
Unison would still be nice, but poly unison... So not sure that works...
Maybe look at vital Synths code (GitHub) he seems to have found a really clever (read CPU friendly) unison mode that could be implemented polyphonically

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #9 on: April 05, 2021, 11:11:41 PM »
I think i have something ready to be tested to get feedback v107 beta 1
https://drive.google.com/file/d/1gHB-Uwz2uUZ538p_qn9P1pFJMwGaIXZl/view?usp=sharing

Edited beta 2 : https://drive.google.com/file/d/1f6-MYm4T89KhmynH3VSSJTLv1ynFhcLl/view?usp=sharing

Code is pushed in v107 branch :
https://github.com/Ixox/preenfm3/commits/v107

For MPE set Mixer>Global>MPE Inst1 to "On".
Instrument 1 will then be a MPE instrument.

Channel 1 : global channel
Channel 2 - X : voices depending on number of voices. See Mixer>Midi>Channel to confirm
If MPE Channels are in red in Mixer>Midi>Channel, it's because play mode is not set to poly.

Then All CC can be sent to channel 1.
Voices channel (2->X) will then process midi CC#74, pitch bend, after touch, note on, note off.

I added 2 matrix sources (please tell me if you have better 5 chars names), they are near the end of the matrix source list before usCC#.
. pbMPE : pitch bend global for MPE global channel
. atMPE : after touch global  for MPE global channel
. 74MPE : midi CC74 (this one is not new but i renamed it).

I increased the matrix multiplier maximum to 24.0 (24.0 tones = 48 semitones)
PitchBend for voices is the legacy "PitBe" source.
For pitchbend, use "O*Fh" as destination which means : O* = All operator and  Fh = Frequency harmonic).
The multipler is the number of tone (not semitone).
So basically you may want the following lines :
. PitBe     24.0      O*Fh <= pitch bend per voice
. pbMPE   2.0      O*Fh <= global pitch bend
. 74MPE    5.0     IM* <= to increase modulation on sliding (if sliding is linked to midi CC#74)

I made my tests with "KB-1" keyboard on my ipad, and having my 5 fingers sliding around on the ipad gave good results :)

Let me know all your remarks



« Last Edit: April 06, 2021, 10:20:09 PM by Xavier »

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #10 on: April 06, 2021, 06:52:29 PM »
Next update for future beta 2  ;)

Legacy matrix sources (PitBe, AftTo) will be the global pitchbend and after touch (channel 1) in MPE mode.
New matrix sources renamed to "PB MPE" and "AT MPE" They will be the pitchbend and after touch per voice in MPE mode.

CC#74 will only be per voice in MPE mode.

Fix the problem where pitchbend per voice is per semitone so limited to 24 semitone. It will be per tone and limited to 24 tones.
« Last Edit: April 06, 2021, 06:58:36 PM by Xavier »

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #11 on: April 06, 2021, 10:19:34 PM »

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #12 on: April 08, 2021, 07:24:24 AM »
Thanks Xavier for all your work. I will be able to check it out this weekend...

lokki

  • Sr. Member
  • ****
  • Posts: 383
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #13 on: April 09, 2021, 05:22:43 PM »
i tested it briefly and it works very well, this is great and makes creating sounds for MPE controllers so much easier!

a couple of remarks:

-i would suggest to put AT MPE PB MPE and CC#74 together, since they all belong mainly to MPE, seems strange to have random in between in the menu.

-i am not sure we even need a distinction between AT MPE and non MPE AT, are there any controllers that have both? like general aftertouch and poly aftertouch on the voices? maybe you can make them one, so some patches will "work" out of the box.

-the midi channel showing in the instrument tab is a bit confusing, if i set an instrument to 4 voices i get 1-5, but of course i only have 4 voices, shouldn't it read 2-5? 1 is always reserved for general modulation.

lastly it would be killer to have unison available, but i know that in its current implementation this is not possible (since it requires mono sounds and you use additional voices to do the unison fx)

Xavier

  • Administrator
  • Hero Member
  • *
  • Posts: 2259
    • View Profile
Re: "proper" MPE support for preenfm3
« Reply #14 on: April 09, 2021, 10:07:33 PM »
i tested it briefly and it works very well, this is great and makes creating sounds for MPE controllers so much easier!

Nice... thanks.

-i would suggest to put AT MPE PB MPE and CC#74 together, since they all belong mainly to MPE, seems strange to have random in between in the menu.

Agreed

-i am not sure we even need a distinction between AT MPE and non MPE AT, are there any controllers that have both? like general aftertouch and poly aftertouch on the voices? maybe you can make them one, so some patches will "work" out of the box.

I was thinking the same thing but i found that :
"Messages that can be sent as Zone Level and Note Level are the following:
Channel Pressure: Control Change for the second dimension also called Press. Channel Pressure information must be combined if received at both message levels.
"
Here : https://docs.juce.com/master/tutorial_mpe_zones.html
Juce belonged to Roli so i assume they know what they're talking about.

-the midi channel showing in the instrument tab is a bit confusing, if i set an instrument to 4 voices i get 1-5, but of course i only have 4 voices, shouldn't it read 2-5? 1 is always reserved for general modulation.

I thought about that too. But if i don't include 1 it seems it's free for other instrument.
Could be "1+2-5" but takes space.

lastly it would be killer to have unison available, but i know that in its current implementation this is not possible (since it requires mono sounds and you use additional voices to do the unison fx)

Maybe in a further future.

Out of curiosity, what MPE controller do you use ?