SysEx and MIDI channels // Logic in Rules

Hello, I just ordered the Bome Box and already fiddle around with the possibilities.

I like to split my keyboard into three zones, and at the push of a button (any controller), I want the Bome Box to setup Bank, Program and Volume of three different voices to be played on the three MIDI channels 6, 7 and 8, just like this:

B5 00 00 C5 20 B5 07 3F
B6 00 10 C6 19 B6 07 3F
B7 00 00 C7 00 B7 07 7F

Would you perform this task with raw MIDI (like in this example) or would you rather set up 9 translators to do the job? (First question).

Now when I’m playing, in order to be routed to the correct MIDI channel I inserted the rules

if pp<=49 then rr=5
if pp> 49 AND pp<=64 then rr=6
if pp> 64 AND pp<=100 then rr=7

But this gives me a syntax error because of the AND’s. How can I do this without having the boolean rules available? (Second question)

Assume that I have solved this problem.

Now I want to turn off the sustain pedal whenever it is pressed, but only on one of the three channels. (e.g., I want that my Rhodes played with my right hand sustains while the pedal is pressed, but not the Slap Bass that I play with my left hand.) Assume that I have stored the channel in my local variable rr, I’d like to send something like this:

Brr 40 00

But this produces a syntax error as well. How can I do this? (Third question).

I found the solution to the second question:

if pp<=49 then rr=5
if pp<=49 then exit rules, execute Outgoing Action
if pp<=64 then rr=6
if pp<=64 then exit rules, execute Outgoing Action
if pp<=100 then rr=7

Hope that this is correct.

Yes, that is one way to do it. While you work figuring it out. I wrote it slightly differently in case you wanted to do other processing based on the value of rr. I put the normal AND logic in comments. I also added some ‘log messages’ so that you could test if it is working.

if pp<=49 then rr=5

//if pp> 49 AND pp<=64 then rr=6
if pp<=49 then skip next rule
if pp<=64 then rr=6

//if pp> 64 AND pp<=100 then rr=7
if pp<=64 then skip next rule
if pp<=100 then rr=7

if pp>100 then rr=8

if rr==5 then Log "pp<=49 pp=%pp% rr=%rr%"
if rr==6 then Log "pp>49 and <=64 pp=%pp% rr=%rr%"
if rr==7 then Log "pp>64 and <=100 pp=%pp% rr=%rr%"
if rr==8 then Log "pp>100 pp=%pp% rr=%rr%"


I’m hoping that at some point in the future MT Pro will handle complex boolean logic as written in the commented versions. I think this is on the enhancement list.

As far as number of translators. I’m usually a fan of less translators and more rules as change rules in 1 translator is usually simpler than going through and changing multiple translators. Note that there is technically a difference between SysEX (which always starts with F0 and ends with F7) and Raw Midi (which can be a combination of MIDI messages as you have written. It is all handled as raw MIDI output though (as you did). With that said, you can ‘parameterize’ the output in rule if you don’t want the values hard coded.

// Set volume MIDI CH 6
pp=0x3f
// set volume MIDI CH 7
qq=0x3c
// set volume MIDI CH 8
rr=0x45

Output:
B5 00 00 C5 20 B5 07 pp
B6 00 10 C6 19 B6 07 qq
B7 00 00 C7 00 B7 07 rr

Incoming : Control change 64 on any MIDI ch set to oo any value set to qq
Rules:
// only do sustain on MIDI CH 8
if oo!=7 then exit rules, skip outgoing action
Outgoing:   Control change 64 on channel oo with value qq

Steve Caldwell
Bome Customer Care


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

Thank you, Steve, for your answers, especially the last one, a solution I didn’t see.

And yes, it’s not SysEx, the title is not correct, it should read ‘Raw MIDI and MIDI channels // Logic in Rules’.

However I will need SysEx later on in order to select the Leslie for the draw bar organ on my Ketron SD2.

Yes, we can either pass through any SysEX message if we use MID thru through routing. If you want only certain SysEX to go through, we can set up input patters for those, manipulate with rules if needed and them send out the modified raw MIDI.

Steve Caldwell
Bome Customer Care


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