SendSX - How much is the built-in delay after each Sys Ex F7?

As you probably know, after bulk data F7 is received, time is expected/allowed for the receiving instrument to burn it’s data to flash or whatever at the end of the “packet”. SendSX seems to follow this convention, at least a little. For each of the transmit speeds, is it documented somewhere what the Delay-After-F7 time is (in milliseconds)??

Speed: 313 bytes/s = 0.41 KB/s (1/7.5x)   Delay-After-F7 = ?
Speed: 418 bytes/s = 0.41 KB/s (1/7.5x)   Delay-After-F7 = ?
Speed: 23381 bytes/s = 22.83 KB/s (7.5x)   Delay-After-F7 = ?

This is similar to the question asked here:

Note that MIDIOX (cough, cough) allows for this to be set, so that would also be nice, but even just knowing is better than testing over and over again to see where the failures occur.

Hi and welcome to the forum!

Bome MIDI Translator does not introduce any delay in outgoing SysEx messages generated. You can add a delay after each message if you would like.

For SysEX messages that come in and go out MIDI thru route, there is no delay introduced either. We just pass through the message at the maximum speed allowed by the transport the we are sending.

BomeBox is the same although if sending to the MIDI DIN port, of course it will be slower due to the data rate of MIDI DIN.

There is a request to control this for future releases and it is on the development roadmap but we do not have a time estimate for getting this done. With MIDI coming in and out through various ports asynchronously, a lot of things can happen in parallel with Bome MIDI Translator so the logic to handle such a thing is quite complex.

We will note that another person is interested in this as a feature.

If you want to send System Excusive messages at a reduced rate, Bome SendSX can do this. You need to be running Windows, however.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Hi Steve,

Thanks for the reply. I am using SendSX.

The Options -> Settings -> Throttling information is incomplete. We are given an overall bytes-per-second, but we don’t know how it comes about. I am assuming that there is some per-byte fixed delay (for each slider position) and probably there is another delay added whenever SendSX encounters an End-Of-Exclusive F7 (for each slider position). This is the value I am looking for (for each slider position). When SendSX hits an F7 how long is the delay before the next F0?

The reason I believe this is built into SendSX (but not documented for us) is without it, SendSX would not work very well to download Sys Ex files. On many instruments, a packet F0 …data… F7 is received and then that data is burned to flash. Burning flash takes time and many CPUs need interrupts off for this, so incoming Sys Ex data would be lost. People would have complained because Send SX failed them. I’m trying to come up with some numbers for a product and for recommendations to users of it.

Sorry to be so long winded!

Yes, I don’t thing SendSX creates a delay after each F7. I merely slows down the entire data rate.

MT Pro sends at the full data rate but if you have fairly short SysEX, then you can certainly put a pause after sending each one with an delay outgoing action but in either case, I don’t think this is what you are looking for. From what I understand, you want to take an incoming stream with multiple F7 and put a delay after each F7. I think the best you could probably do is capture the entire SysEX (with All F7’s) then copy and paste into a text file and then send them one by one to the target application. I think there may be a different application that does this out there. Maybe SysEX librarian?


Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Hi @grant-5719, the Windows MIDI API’s don’t (really) allow sending byte-per-byte. So SendSX can only achieve an average send speed. Here is how SendSX sends MIDI data:

  1. Generally, every line in the MIDI OUT section is sent as one chunk (no matter if it terminates with F7 or not). This chunk is passed to the Windows MIDI subsystem, which uses the respective MIDI driver to send it off as fast as the MIDI transport allows.
  2. If the setting Split long messages is checked, any line longer than 128 bytes is split in chunks of maximum length of 128 bytes. We’ve observed that this helps with some MIDI drivers or devices (but others choke on this…).
  3. After sending a chunk, and throttling is enabled in the settings, SendSX waits appropriately to achieve the selected average data rate. This wait time is dynamic.

As you see, there is no fixed wait time after an F7. If you (only) want to wait after F7, every line in the MIDI OUT area should contain exactly one Sys Ex message and end with F7. The longer the line (and the slower the send speed), the longer the wait time after F7. In theory, you could force byte-by-byte sending by inserting a new line after every byte of your Sys Ex message (I know that’s not what you want). Not sure how the MIDI drivers will behave there.

For completeness: throttling is not applied to MIDI THRU. Only for sending the MIDI data in the MIDI OUT text area.

I hope this answers your question!

1 Like

Thank you. With this information, especially point #3, I can work backward and estimate the time. I have access to a USB analyzer so I can go that route if absolutely necessary (it is not at my geographic location). Appreciate the help!