MSF: Main Controllers and MPE

Official support for: meldaproduction.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Main Controllers Info wrote:MPE
MPE switch makes the associated MIDI controller MPE compatible meaning that it will recognize different values for each MIDI channel and that can be exploited using per-voice modulation. Use this option ONLY for custom MPE controllers, which have further per-voice controllers available.
MPE uses one or two Master Channels (affecting all voices, I think). What Master channel is assumed in MSF, 01, 16, or both? If it is the last one, where do we specify the channel split?

Also, the default Main Controllers are CC#01, 02 and 11, that is 3 of the MPE-defined CCs. Is that to allow users of non-MPE keyboards to have some sort of (single note) MPE functionality?
DarkStar, ... Interesting, if true
Inspired by ...

Post

Oh boy ... where to start?

With MPE a controller may have two groups of channels (but mostly one will do, giving fifteen channels of per-note data and one master channel). I don't believe the spec dictates which channel is to be the masteer (could be wrong on that point though). Unless you are writing the OS for an MPE MIDI controller or software that receives MPE data, you do not have to worry about these low-level details.

The master channel carries all the non-per-note data, like most of the CCs. CC74 and aftertouch are per-note, so they go on the same channels as the note-on/off data. Per-note aftertouch, which was defined in the original MIDI spec but nobody implemented, is now put on the shelf in reserve for some future purpose. In MPE, channel aftertouch effectively becomes per-note aftertouch.

I'm not at my DAW, but I think the MC assignment window has a checkbox where the user tells MSF if the MIDI controller being associated with the MC is MPE compliant. If not, that associated MIDI controller should still have an effect, but it will be for all active notes (and will be sent on the master channel). At least that's the way I think it's supposed to work. :?

I believe the only per-note modulation available for a non-MPE keyboard is velocity (ignoring the possibility of per-note aftertouch).

Post

That's what I was asking - how does this work, in MSF?

Another thought experiment ....

Let's say I have an MPE keyboard (I do not know why the info includes the adjective "custom"). I load a Device, map the 3 defaults MCs (#02, #02 and #11) to various parameters (or Multiparameters), enable MPE for them and play a chord with appropriate hand movements.

Into MSF comes a stream of MIDI notes and CC messages, on three different channels. Those on the first channel go to the first instance of the Generator, that is, Voice #1. Those on the other channels go to separate instances, that is, Voices #2 and #3. So far, so good, I hope.

As I understand the MPE Spec, there must be at least 1 Master Channel (and it is indeed. channel #01 or #16). What does MSF do with MIDI messages on those channels? In my example, they (notes and CCs) should go to all three instances of the Generator. So MSF has to know what the Master Channel is.

Now, let's say I define another MC, map it to another parameter, assign, say CC #80 and enable it for MPE. Will that then also be handled as the "standard" MPE CC numbers?

------------------------------------
Having worked through that maybe the summary, for Main Controllers mapped to parameters in the Generator, is:
(a) MPE-enabled MCs make use of the MIDI channel of the incoming MIDI messages to map the control to the appropriate voice (that is, a Generator instance).
(b) MPE-enabled MCs with messages on the Master Channel would control all voices (that is all Generator instances)
(c) non-MPE MCs would control all voices (that is all Generator instances) as the MIDI channel is ignored.
DarkStar, ... Interesting, if true
Inspired by ...

Post

OK; forget the above. From an experiment, it looks like MSF does not (yet?) support any Master Channels.

I created a 3 note MIDI clip:
-- the red note and its ModWheel events are on MIDI channel 01,
-- the blue note and its ModWheel events are on MIDI channel 02,
-- the green note and its ModWheel events are on MIDI channel 03.

Image

And in MSF, I mapped the first MC to the ModWheel and to an Oscillator's Pitch / Semitones.

When I played the MIDI I observed the audio from the three notes in an Analyser.

Image

-- they are at fixed frequencies to start with,
-- the blue (channel #02) CC events move the C3 note only,
-- the green (channel #03) CC events move the C$ note only,
-- the red (channel #01) CC events move the C2 note only,

If channel #01 were treated as a Master Channel by MSF, then its CC events would affect all three notes. And I tried with Channel #16 and got the same results
DarkStar, ... Interesting, if true
Inspired by ...

Post

And, just for completeness, I turned off MPE in the Main Controllers window, and, as expected, all 3 sets of CC messages affected all three notes (voices):

Image
DarkStar, ... Interesting, if true
Inspired by ...

Post

DarkStar wrote: Tue Oct 22, 2019 2:42 pm I created a 3 note MIDI clip:
-- the red note and its ModWheel events are on MIDI channel 01,
-- the blue note and its ModWheel events are on MIDI channel 02,
-- the green note and its ModWheel events are on MIDI channel 03.
It sounds to me like you are trying to fake MPE on a conventional controller. Maybe that will work, but the master channel (which I think you determined will definitely be MIDI ch 1) should have no note events. The note events should go no ch 2 thru ch 4, should they not?

Also, it's been quite a long time since I studied the MIDI MPE spec. But I think the keyboard controller has to send some kind of MPE initialization info to the receiver. Could that be the source of the behavior you're expecting but not seeing?

Post

I do not know - it could need initialization. All I am trying to do is understand how MSF handles MPE (and yes, you are right, I am faking it here).

Maybe someone with an MPE keyboard will chime in. Or Vojtech will shed some light on what aspects of MPR are supported by MSF.
DarkStar, ... Interesting, if true
Inspired by ...

Post

I didn't really read all this, but as for the main question it doesn't really matter. The plugin receives data on various channels and must decide whether a controller should affect all channels or just the one. Timbre, pitchbend and pressure are assumed to be per-channel (hence pervoice) and the rest of them not. Main controllers are assumed to affect all channels unless "MPE" is enabled.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

... let me rephrase the main (no pun intended) question:

As I understand it, a MPE-keyboard can have a Master Channel set (01 or 16 or both, if the keyboard is split). Let's say the keyboard player selects 01. Then notes, PitchBends and CCs will be sent on channels 02-15, a different channel for each note. MSF will use these as per-voice events. So far, so good.

But, If the player send PitchBends or (the MPE-specified) CCs on the Master Channel, those events, should, if I understand correctly, be applied to all current notes. Does MSF support this functionality? (My experiments suggest no.)
DarkStar, ... Interesting, if true
Inspired by ...

Post

Aaaaha, then no, it isn't supported, but to be honest, I have no idea why that would be used at all, and I don't think there's any MPE controller, that does that. It would kind of conflict the whole purpose of MPE.
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

I'm working only from the theory, but Master Channels are in the MPE Spec. From:
https://support.roli.com/support/soluti ... at-is-mpe-
One channel (usually Channel 1) is used for global messages – data such as preset changes and pedal positions are transmitted on this channel to apply to all notes equally. The global channel is set by the "MPE Zone." When the MPE Zone is the Lower Zone, Channel 1 is used for global messages. When the MPE Zone is Upper Zone is, Channel 16 is used for global messages.

The remaining channels (usually Channels 2–16) are used to transmit notes and expressive data – including note-on velocity, pitch bend, channel pressure (aftertouch), CC74 (brightness), and note-off (release) velocity – on a note-per-channel basis. The expressive data will only apply to the note which is on the same channel.
And the MPE Spec is on a link at the bototm of the page.

Maybe a MeldaProduction / MPE-keyboard user could chip in?
DarkStar, ... Interesting, if true
Inspired by ...

Post

DarkStar wrote: Sun Nov 03, 2019 1:30 pm But, If the player send PitchBends or (the MPE-specified) CCs on the Master Channel, those events, should, if I understand correctly, be applied to all current notes.
But the player (I assume by "player" you mean MIDI controller KB) would/should not do that in the first place (disclaimer - I don't actually have an MPE KB around to test this with). The idea, as I understand it, is that with MPE we now have two types of MIDI events: per note and per channel. Mod wheel is per-channel, so mod wheel events travel and channel 1. The per-note events should never be sent on channel 1, and if they are sent, I would expect any MPE-enabled synth to just ignore them in most cases.

Post Reply

Return to “MeldaProduction”