Sorry for the long description! But this one takes some serious explaining.
MPE synths have intelligence to apply expression on a per-voice basis. The MPE protocol sends MIDI CC values on different channels along with information about which note the expression applies to. Non-MPE synths don’t have the ability to sort all this out, so one must turn off MPE mode to work with them. But, then then all that nice expression capability is lost.
This script can put some of that expression back to use by collapsing (Multiplexing) the multi-channel midi CC and pitch bend stream into a single channel that apps can use. No, they CAN’T use it per-voice, but at least they can receive a single stream of MIDI CC and/or pitch bend in response to movements on the controller’s keys (or other control surfaces).
You an choose to filter out select parts of the controller output, change the output channel of each part (Note, mpe/CC, and pitch bend), and also change the CC’s that MPE (cc 74) and Pitch-Bend output.
▫️NOTE CONTROL: Tap the first pad to mute or allow notes. This can be useful if you just want to use your controller for expression while not triggering notes. Use the Note Chan knob to set the output channel for notes. The selected channel is displayed on the pad.
▫️MPE CONTROL: Tap the MPE Control pad or turn the MPE mode knob to cycle through BLOCK, MUX, and PASS THRU modes. BLOCK will prevent any cc 74 values on all channels from passing through. You can use this to quickly turn off MPE data from a MPE controller. PASS THRU makes the script leave all cc74 data alone on all channels. This could be used to keep MPE while blocking pitch bend and/or notes. MUX turns on the rest of the MPE multiplexing ability of the script.
▫️CC CHAN: Sets the output channel for the multiplexed stream. MPE’s multiple channels will be collapsed into this channel. Only effective in MPE MUX mode.
▫️CC74>CC#: Allows you to remap from MPE’s normal CC74 output to another CC of choice. Only effective in MPE MUX mode.
▫️USE TOUCH/PICKUP/RESET: Some MPE modes send an initial value depending on where you touch a control then slide up or down from there. Others start at zero or a minimum value.
▪️With USE TOUCH the initial value sent by the controller is used with no modification.
▪️With PICKUP, the last value sent is saved, and no values are sent until the movement passes through the last value (the “pickup point”). So, if you let go of all controllers when the value was 74, touching below the point that sends 74 won’t send anything until you move past that point. If you move downward rather than upward to 74, then nothing will be sent.
▪️With RESET, when all notes are released, the value is reset to START VAL (see below) and travels from there.
▫️START VAL & END VAL: These controls can limit range of cc values that will be sent. START VAL influences the control above as described.
▫️PB CONTROL: Tap the Pitch Bend pad or turn the PB MODE knob to cycle through BLOCK, MUX, and PASS THRU modes. BLOCK will prevent any pitch-bend messages. This is handy if you want to send vertical motion controls, but not pitch bend. PASS THRU does what it says. MUX (Multiplex) reduces the multi-channel MPE output to a single channel pitch bend stream.
▫️PB>##: In its default PB>PB setting this control passes pitch bend through normally, but you can choose to remap the pitch bend messages to a particular CC number. If remapped, 14bit pitch bend messages are reduced to 7bit cc values. This control is only effective in PB MUX mode.
▫️PB CH.#: In PB MUX mode you can choose which channel to send the output to.
▫️The XY pad gives a relative idication of the values being sent. Moving it by hand does nothing.
Credit for this script idea goes to @Gavinski from the Audiobus Forum. 👍😎👏