Toggle Keyboard Splits and Channel Remaps

Hi Bome Community,

I would like to toggle (via cc’s) keyboard splits and remapping channels on two keyboards and also one CC midi controller.

  1. Remapping keyboard, Channel 7 to channels 8 and 9 (toggle, with CC 103 and 104 on channel

  2. Splitting keyboard, Channel 8, to channel 4, for notes 64 and below (using CC 105 channel 12). (Alternatively, it also could be useful to have a definable split point via pressing a key— but I wouldn’t want that to be automatically called up upon entering split mode (only upon pressing a CC to activate the ‘change split point’ function— CC 108).

  3. Remapping keyboard channel 8 to channels 10 and 11 (CC 106 and 107 chn 12), while also keeping option to split lower section to channel 4 regardless of which channel I have remapped channel 8 to.

  4. Toggling MIDI controller that only sends CC’s between different channels. (channel 11, to chn 8 or 9 using CC’s 109, 110)

I figured I would give specific CC’s in case someone felt called to write the program out, but I can also write it myself with guidance.

Thank you so much for any insight/ guidance!


Well I’ll give a few examples. See the attached project file.

I use the global variable ga to determine the toggle state of channel mapping for incoming on MIDI channel 7/

I use the global variable gb to determine if we are in split set mode or normal mode.

I use the global variable gc for the split point.

For the control message translators, I set the ‘Stop Processing’ option so that once triggered the other translators do not do anything.

The ‘Remap’ preset remaps all incoming MIDI on channel 7 to either channel 8 or 9 depending on the state of ga. I can do this with 2 translators, one for incoming two byte message and the other for incoming 3 byte messages. They both use similar rules and look at the incoming MIDI channel and the with bitwise masking, I can re-combine the status byte with the outgoing MIDI channel to create a new status byte (local variable oo)

Here are the rules with oo being the incoming status byte. These are in the ‘Remap’ preset in both translators.

// get MIDI channel into uu 0x0f
// get Status nibble into tt 0xf0

// is it channel 7 (Zero based)
if uu!=6 then exit rules, skip Outgoing Action
// check if toggle is set to 9
// default to 8
if ga==0 then ss=7
// otherwise MIDI CH 9
if ga==1 then ss=8

// combine status byte with new MIDI Channel

For keyboard split, I toggle gb to determine if in split set mode or normal mode. In split set mode the next incoming keystroke is set to the split point and it then automatically takes you back out of split set mode for normal processing of notes only. Here are the rules. This translator is in Prest 2 "Split).

// Look for note-on or off
if rr!=128 then exit rules, skip Outgoing Action
// Look for MIDI CH 8
if rr!=7 then exit rules, skip Outgoing Action
// Are we setting the split point
if gb==1 then Goto "Set Split"

Label "Process note"
// Split point in gc
// send to channel 4 if below split point
if pp<gc then tt=3
Goto "Done"

Label "Set Split"
// get note number
Log "Split point set to %gc%"
// turn off set split
Log "Split Set  Function Off"

exit rules, skip Outgoing Action

Label "Done"

I also set up some housekeeping translators in the ‘Control and Init’ preset to set global variables on project start (and document them).

I hope this gets you started.

Channel-Remap-and-Split-Demo.bmtp (3.7 KB)

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Steve— thank you so much! I should be able to construct what I need from here :slight_smile:

@SteveC This is working really well! A couple of questions:

  1. How would I copy and modify the channel remap toggle for another MIDI controller (ie toggling channel 3 to 4)? I need another variable besides ‘ga’, right?— but I’m not sure what variables are appropriate to use…

  2. Is there a way to toggle the split function on and off (in addition to being able to switch the split point— which is working fantastically!)?

Thanks so much!

Yes, there are many global variables I generally start with ga-gz and g0-g9. If you press F1 while in MT Pro, you will get a manual that describe all of the available global variables and local variables and the differences for which they are used.

Yes, toggle yet another global variable and in rules of translator 2.0 you can set up different processing or maybe just a ‘goto’ that jumps over all of the other rules if you want to turn split off depending on the state of the variable. You can set another translator up to toggle the state of the global variable.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:
1 Like