Midi Note To CC workflow for using Midi Notes to Engage/Bypass effects and also toggle between presets within an effect

Hi Steve

I just purchased a Bome Box and am messing around with the trial of Midi Translator Pro.

I’d like to simplify my workflow for converting Midi Note messages to CC messages and have a few questions…

  • I’m using an effects unit that has 4 presets within it’s effect blocks that can be accessed via Midi CC. To access each preset of the effect you just send the unit a value of 1-4 on the same CC, with a value of 1 selecting preset 1 and 2 selecting preset 2 etc.

I’d like to toggle instantly between each preset by Midi Note to CC conversion, so that C4 selects preset 1, C#4 selects preset 2, D4 selects preset 3, Eb4 selects preset 4. Then on the next effect block on a different CC, E4 selects preset 1, F4 selects preset 2, F#4 selects preset 3 etc.

I’d like to do this for 3 effects blocks which would be an entire octave of Midi note to CC translations (ie 12 notes)

Is there a fast way to programme this so that the behaviour is an instant toggle between effects presets? I’m guessing i need to make some Note Off to CC translations in addition to the Note On to CC translations.

In addition to that, what would be the right translation to then ensure that in fact any octave of each Midi Note performs the same CC translation? So for example, i’d want not only C4 to send that CC command but also all other octaves of C (C3,C4,C1 etc).

I also have another scenario i’d like to programme where instead of toggling between presets within effects, i simply want one Midi Note to engage one effect, and another Midi Note to engage another effect etc. So far i can make this happen by making the following translations:

Midi Note On to CC (with the CC’s value at 127 to activate effect)
Midi Note Off to CC (with the CC’s value at 0 to bypass the effect)

Is there a faster way to do this all in one translation per Midi Note to avoid having to do 2 x translations per Midi Note?

I also noticed the following behavior with Midi Translator Pro. When using it between two devices via USB or Firewire, the Note to CC is instant. When using it via wifi, connected to the Bome Box with the Bome Box placed between the two devices instead of the laptop, there is a lot of latency. Am i correct in thinking that if i purchase the full version of MTP that my projects uploaded to the Bome Box will then run with zero latency as they do on my Mac?

Hi, that is quite a bit. See the attached example where I use one translator for note to CC messages as you described.

First I mask the upper bit of the incoming message (oo) and look to see if it is a note message. If I OR the upper nibble with 0xE0 and get 128 then it is a note-on or a note off so that handles both message types in one translator.

// check for note message
// this will work for note on and note off
// on any MIDI channel
rr=oo&0xe0
if rr!=128 then exit rules, skip outgoing action

Then I use the MOD operator to accept the note message on any octave .

// Make octave independent
// mod operator 
pp=pp%12

Then I determine the block number by dividing the note number by 4. I don’t use it for anything except for display purposes.

// determine block
tt=pp/4

The preset number is the note number mod 4 and I simply display the results.

// determine preset
rr=pp%4
Log "Log Preset=%rr% block=%tt%"

Now I determine the outgoing message.

// outgoing CC
uu=pp+60

My keyboard is velocity sensitive so I always make the incoming note-on value 127. My keyboard already sends 0 for off velocity

// always make note-on value 127
if qq>0 then qq=127
Log ‘CC=%uu%’


The outgoing message is a CC on MIDI CH 1  "B0".

B0 uu qq


Now as far as latency,  WiFi would usually have more latency than ethernet because of the radio protocol and other MIDI traffic competing with WiFI bandwidth.  If latency is an issue, I suggest you use ethernet.

You can change the behavior of note messages from momentary to toggle but that is a different subject and since you are already using all possible notes on the keyboard, I probably should stop here for this project.

[Note-to-CC-Workflow-Example-2024-11-15.bmtp|attachment](upload://kzAuCHxhde2M2qaiEeVZzZjvCCb.bmtp) (2.0 KB)


Steve Caldwell
Bome Customer Care
<hr><em>Also available for paid consulting services: bome@sniz.biz</em>

Thanks very much Steve, i’m using a guitar via a pitch to Midi convertor instead of a keyboard.

The preset toggle via Note to CC is the one thing i’d really like to nail. What would that require or is that what the attached file can do?

The below project file should do it.

We toggle the value of a bit when we receive a note on. Then we send the resulting value as a CC message with the same CC as the incoming note number with a value of 127 when the bit is on and 0 if the bit is off. We use a bitmap of 4 global variables each with 32 bits. We have to determine which global variable to work with since we have a total possibility of 128 notes (0-127) and a global variable only stores 32 bits (4*32=128)

We use bit shifting and other bitwise operations to toggle the bit and then at the end put it back into the global variable.

Comments are in the rules of translator 1.0 and also below:

// determine global variable
if pp>95 then rr=3
if pp<96 then rr=2
if pp<48 then rr=1
if pp<32 then rr=0


Log "Log Global variable to us is G%rr%"

// put global variable into rr
if rr==0 then uu=g0
if rr==1 then uu=g1
if rr==2 then uu=g2
if rr==3 then uu=g3

// get bitmap for the global variable
tt=pp%32

// shift bit into proper position
oo=1<<tt
// toggle bit
uu=uu^oo

// put bitmap back into proper global variable
if rr==0 then g0=uu
if rr==1 then g1=uu
if rr==2 then g2=uu
if rr==3 then g3=uu

// shift current bit into lowest position
uu=uu>>tt
// mask out othe bits
uu=uu&1

// default output value
vv=0
// if the bit is set send 127 otherwize send 0
if uu==1 then vv=127



Toggle-Notes-to-CC.bmtp (2.5 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz