Filtering midi (but using part of them)

Hi
I have a problem with filtering out some midi events
Idea is when I press Main(1-4) divisions on my Roland arranger I want to change sections in Onsong, but do nothing when press other buttons sending similar but longer messages

Roland sends:
Main1: BF 00 7A CF 00
.etc
STOP: FA BF 00 7A CF 00
change performance: F0 41 10 00 00 54 12 18 00 23 44 01 01 11 07 0D 00 01 12 47 F7 BF 00 7A CF 00
after timer Onsong receives: 9D 71 7F to changes section

1: MIDI IN [Roland Arranger]: BF 00 7A
2: MIDI IN [Roland Arranger]: CF 00

changing verse in Onsong:

[x] Preset 8: BK NAVIGATION
Default MIDI IN ports: PC<-BK
[x] Translator 8.0: Main 1 > ONSONG
Options: swallow
Incoming: MIDI BF 00 7A CF 00
Outgoing: One-shot timer “Main1”: 0 ms delay

[x] Translator 13.39: VERSE NEXT 1 BK Main1
Incoming: On timer “Main1”
Outgoing: MIDI 9D 71 7F, to port PC->ONSONG

1: MIDI OUT [Onsong]: 9D 71 7F

and… it works perfect

but unfotunatelly Roland also sends BF 00 7A CF 00 when pressing STOP
1: MIDI IN [Roland Arranger]: FA
2: MIDI IN [Roland Arranger]: BF 00 7A
3: MIDI IN [Roland Arranger]: CF 00
and I succesfully filtered STOP with

[x] Preset 7: BK FILTER (1)

[x] Translator 7.0: BK filter FA Main 1
Options: stop,swallow
Incoming: MIDI FA BF 00 7A, on port PC<-BK
Outgoing: (none)

But I can’t filter it when changing performance preset
49: MIDI IN [Roland Arranger]: F0 41 10 00 00 54 12 18 00 23 44 01 01 11 07 0D 00 01 12 47 F7
50: MIDI IN [Roland Arranger]: BF 00 7A
51: MIDI IN [Roland Arranger]: CF 00

[x] Preset 6: BK FILTER

[x] Translator 6.0: BK filter F7 Main 1
Options: stop,swallow
Incoming: MIDI F7 BF 00 7A CF 00, on port PC<-BK
Outgoing: (none)

I’m not using any routing between Roland and Onsong

I hope it sounds logical
I can’t find what I do wrong, thanks for any solutions

Hi and welcome to the Bome Forum.

I believe something like the attached will work. If you want it for all performance changes, then you can use variables as the pattern in the SysEX message. I already did this for the Roland Checksum using the local variable qq.

When the performance change SysEX is received, I set the global variable ga to 1
The other two translators look at the value of ga and only execute (filter) the message if ga=1, otherwise the default MIDI path allows the message to go through. Otherwise the incoming MIDI message is swallowed.

When completing the program change message I set ga back to zero allowing normal processing again through the default MIDI path.

Suppress-Bank-and-PC after Performance Change.bmtp (1.5 KB)

Steve Caldwell
Bome Customer Care


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

Thank you for the quick reply. In the coming days I will try to replace the variables in sysex as you wrote and indicate a wider filtering range.
Thanks
Marcin K.

Glad to help!

When changing the preset in Roland I found a fixed sequence
F0 …, I set it to kd = 0.
and when switching Main1

if kd == 1 then exit rules, execute Outgoing Action
if kd == 0 then Goto “a01”

Label “a01”
kd = 1
exit rules, skip Outgoing Action

Everything works beautifully and it also gave me a lot of new ideas on how to use global variables - for example, I based my entire database of presets (750) for each song.
Thanks a lot
Marcin K.

Great, looks like you are up and running then!

Steve Caldwell
Bome Customer Care


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