Control the timing of MIDI output

Hey all,
do I have a MIDI timing problem? Depending on how I send the exact same MIDI raw data string, I’m getting different results on my target midi soundbox:

Sent directly without translating from Bitstream 3x MIDI controller

1599644 - MIDI IN [BomeBox: BomeBox DIN]: B1 00 43
1599644 - MIDI OUT [BomeBox: BomeBox DIN]: B1 00 43
1599644 - MIDI IN [BomeBox: BomeBox DIN]: C1 00
1599644 - MIDI OUT [BomeBox: BomeBox DIN]: C1 00
1599646 - MIDI IN [BomeBox: BomeBox DIN]: F0 26 7B 0B 00 01 01 F7
1599646 - MIDI OUT [BomeBox: BomeBox DIN]: F0 26 7B 0B 00 01 01 F7
1599647 - MIDI IN [BomeBox: BomeBox DIN]: B1 5D 7F
1599647 - MIDI OUT [BomeBox: BomeBox DIN]: B1 5D 7F
1599648 - MIDI IN [BomeBox: BomeBox DIN]: B1 1E 40
1599648 - MIDI OUT [BomeBox: BomeBox DIN]: B1 1E 40

Sent from another device and translated
1756387 - MIDI IN [BomeBox: W-FADER]: F0 42 40 00 01 04 00 5F 4F 01 F7
1756387 - RULE 1.0:3 assignment: (gb=67) = 67
1756387 - RULE 1.0:5 assignment: (gc=1) = 1
1756387 - RULE 1.0:6 expression: (gd=176|gc) = 177
1756387 - RULE 1.0:7 expression: (gp=192|gc) = 193
1756387 - RULE 1.0:9 assignment: (ty=1) = 1
1756387 - RULE 1.0:11 assignment: (tz=127) = 127
1756387 - RULE 1.0:13 assignment: (td=63) = 63
(Outgoing as programmed:
gd 00 43 gp 00
F0 26 7B 0B 00 gc ty 7F
gd 5D tz
gd 1E 40)
1756388 - MIDI OUT [BomeBox: BomeBox DIN]: B1 00 43 C1 00 F0 26 7B 0B 00 01 01 7F B1 5D 7F B1 1E 40

When sent direcly, the soundbox goes into the organ drawbars mode and sets Leslie to LOW.
When sent via the translator, all is the same but the Leslie is not engaged.

If that’s the problem then do I have to make several translators and give any string an appropriate delay?

What is counted by the timestamp anyway? Milliseconds?

Best, Alex

First of all, the timestamp actually counts milliseconds.

In the meantime I have tried to send the MIDI sequence with delays although I was pretty sure that this is not likely the solution. And in fact it changed nothing.

So I’m facing the fact that the exact same sequence sent by the Bitstream 3x with all presets deactivated works and the calculated sequence sent out by the translator doesn’t work.

I was also able to determine that the SysEx portion of the string causes the problem: It is simply ignored in the latter case while in the former it has the desired effect .

Is it possible that the log MIDI OUT shows something that’s actually not sent out? This is the only conclusion that I can make at the moment.

Hi, when it comes to SysEx messages if you have a MIDI through path then they should always work and with no delay. However, to pass a SysEX message through a translator, the incoming action needs to have the correct SysEX pattern to process it. Generally it means the same length if the incoming message with possibly a few variables. imbedded.

For example something like this:

F0 42 40 00 01 04 00 5F 4F 01 F7

will be processed with a pattern like this

F0 42 40 00 01 04 00 5F pp 01 F7

Because the pattern manages, however it will not trigger anything if the byte length is one byte longer or shorter than the incoming pattern. In the above example pp could be any value but the rest of the pattern needs to be exact.

Now in the log options for Incoming, nothing will show if it doesn’t match the pattern, however MIDI IN will still show. Same for Outgoing vs MIDI OUT.

A MIDI through path will always show MIDI and MIDI IN whether there is a match or not. On output it will either be from the processing of the translator (if the pattern matches) or the processing of the through path (if the pattern does not match)

I didn’t evaluate the log you sent but for know with these tidbits of information, it might help you in the right direction.

Steve Caldwell
Bome Customer Care


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

Thank you, Steve. I could not figure it out yet.

Here is what I do, with all logs:

I’m beginning with the part that translates, then I’ll send the same sequence as MIDI through.
I’m activating just one preset:

49031937 - Activated preset 1: Drawbar Organ

Pressing a key on My-Fader that generates a SysEx message to be detected and translated:

49034320 - MIDI IN [BomeBox: W-FADER]: F0 42 40 00 01 04 00 5F 4F 01 F7
49034320 - IN 1.0 MIDI 11 bytes: F0 42 40 00 01 04 00 5F 4F 01 F7

At this point the log does not tell me whether the incoming SysEx string has been successfully matched against the string in the incoming action.

Now some global and local variables are set (not important):

49034320 - RULE 1.0:3 assignment: (gb=67) = 67
49034320 - RULE 1.0:5 assignment: (gc=1) = 1
49034320 - RULE 1.0:6 expression: (gd=176|gc) = 177
49034320 - RULE 1.0:7 expression: (gp=192|gc) = 193
49034320 - RULE 1.0:9 assignment: (ge=1) = 1
49034320 - RULE 1.0:11 assignment: (tz=127) = 127
49034320 - RULE 1.0:13 assignment: (td=63) = 63

The translator apparently sends out the required string:

49034320 - MIDI OUT [BomeBox: BomeBox DIN]: B1 00 43 C1 00 F0 26 7B 0B 00 01 01 7F B1 15 7F B1 5D 7F
49034320 - OUT 1.0 MIDI 19 bytes: B1 00 43 C1 00 F0 26 7B 0B 00 01 01 7F B1 15 7F B1 5D 7F

I’m checking now if the leslie is engaged by pressing a key and listening (note on followed by note off):

49037754 - MIDI IN [BomeBox: Piano de Voyage]: 91 3C 45
49037754 - IN 1.1 Note On on ch. 2 set “rr” to ch. with any note and “pp” to note=60 with any velocity and “vv” to velocity=69
49037754 - MIDI OUT [BomeBox: BomeBox DIN]: 91 3C 45
49037754 - OUT 1.1 Note On on ch.“gc”=1 (ch.2) with note:pp=60 and velocity:vv=69
49038353 - MIDI IN [BomeBox: Piano de Voyage]: 81 3C 00
49038353 - IN 1.2 Note Off on ch. 2 set “rr” to ch. with any note and “pp” to note=60 with any velocity and “vv” to velocity=0
49038353 - MIDI OUT [BomeBox: BomeBox DIN]: 81 3C 00
49038353 - OUT 1.2 Note Off on ch.“gc”=1 (ch.2) with note:pp=60 and velocity:vv=0

I can hear that the drawbar organ has been selected by that sequence, but unfortunately not the leslie, which should be engaged by the SysEx part of the string.

Now I’ll send the same string directly from the Bitstream 3x controller (My-Bitstream: MIDI DIN), and the preset is deactivated so that the bytes can pass through.

49049369 - Deactivated preset 1: Drawbar Organ

Upon pressing the appropriate button on the Bitstream 3x, the same bytes as the bold ones above are sent out:

49058951 - MIDI IN [BomeBox: BomeBox DIN]: B1 00 43
49058951 - MIDI OUT [BomeBox: BomeBox DIN]: B1 00 43
49058951 - MIDI IN [BomeBox: BomeBox DIN]: C1 00
49058951 - MIDI OUT [BomeBox: BomeBox DIN]: C1 00
49058954 - MIDI IN [BomeBox: BomeBox DIN]: F0 26 7B 0B 00 01 01 F7
49058954 - MIDI OUT [BomeBox: BomeBox DIN]: F0 26 7B 0B 00 01 01 F7
49058956 - MIDI IN [BomeBox: BomeBox DIN]: B1 15 7F
49058956 - MIDI OUT [BomeBox: BomeBox DIN]: B1 15 7F
49058956 - MIDI IN [BomeBox: BomeBox DIN]: B1 5D 7F
49058956 - MIDI OUT [BomeBox: BomeBox DIN]: B1 5D 7F

All these strings together constitute the same message as the bytes above with the translator.
Pressing middle C again …

49061559 - MIDI IN [BomeBox: Piano de Voyage]: 91 3C 49
49061559 - MIDI OUT [BomeBox: BomeBox DIN]: 91 3C 49
49063741 - MIDI IN [BomeBox: Piano de Voyage]: 81 3C 00
49063741 - MIDI OUT [BomeBox: BomeBox DIN]: 81 3C 00

… reveals that the Leslie is engaged now and that not only the controller messages did go through, but also the SysEx message.

As I said earlier, I have tested to send the messages one by none with delays, and I have also changed the order of the messages, but both measures had no effect.

Here’s my project:

Split Keyboard - Drawbar Organ V1.bmtp (10.7 KB)

Strange.

Do you have a project file running on BomeBox while you are testing this with MT Pro? Maybe the project file on BomeBox is messing things up so make sure there is no project file loaded.

Also on BomeBox, please go to the MIDI routing section and make sure all routing is turned off since you are using Remote Direct MIDI ports.

Steve Caldwell
Bome Customer Care


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

Edit, I’m not convinced the BomeBox routing is an issue as with the same incoming MIDI message it should work either way. I’ll look into this further a bit later today.

Steve Caldwell
Bome Customer Care


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

Thank you.
No, I have no project running on the BomeBox.
But I will test if I have the same problem when I’m using the project from the Box.

The only thing I see different is with the preset activated, you are sending SysEX last then followed by the controls where when preset deactivated you are sending the SysEX first. Maybe that is the issue.

9055792 - Activated preset 1: Drawbar Organ
9061546 - 1.0:15 SysEx Converted
9061546 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B1 00 43 C1 00 B1 15 7F B1 5D 7F F0 26 7B 0B 00 01 01 7F
9061546 - OUT  1.0  MIDI 19 bytes: B1 00 43 C1 00 B1 15 7F B1 5D 7F F0 26 7B 0B 00 01 01 7F
9069525 - Deactivated preset 1: Drawbar Organ
9083845 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: F0 26 7B 0B 00 01 01 7F
9083845 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B1 00 43
9083845 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: C1 00
9083845 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B1 15 7F
9083845 - MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B1 5D 7F

Steve Caldwell
Bome Customer Care


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

I don’t know how that happened. Anyway, I have already checked different orders.

Tomorrow, I will check with simple examples whether SysEx is sent at all, and if yes under what circumstances it fails.

By the way, I have tried the project with the BomeBox, same result.

I’ve tested different SysEx strings for my Ketron SD2 sound expander, for instance the global transposer (F0 26 7B 07 00 value F7), and none of them have any effect when sent from the translator or the BomeBox. If I send SysEx from my Bitstream 3x through the translator with no preset enabled, however, they are recognized.

I have also changed the incoming action, where I now do not test for a SysEx string but for a simple controller.

Unfortunately I have no other equipment that recognizes SysEx MIDI to test with.

Now I have the strong feeling that SysEx from the translator when processing takes place is just ignored in any case.

I’ll do some further testing today. I suspect the issue is something simple that I’m overlooking. Could you also check what version of BomeNetwork and BomeBox Firmware you are using to make sure they are the latest. I forgot whether I’ve asked you this or not in the past.

Steve Caldwell
Bome Customer Care


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

Hi, In the translator, change your SysEX output from:

F0 26 7B 0B 00 01 01 7F

to

F0 26 7B 0B 00 01 01 F7

That should fix it.

Steve Caldwell
Bome Customer Care


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

OMG this is ridiculous. I’m so sorry.

It works now, thank you so much,

Alex

Yes, I’m amazed that I missed it too but I knew it must be something really simple. I’m glad it is working now!

Steve Caldwell
Bome Customer Care


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