MIDI Translator: Order of Operations

Greetings,

My setup is getting more complicated. I'm sure I will improve on this as time goes on. I digress.

1 - I am going to do more using MIDI Program Changes to activate certain Presets. And then run the translators in said Presets. I believe the manual says Bome is event driven. Is an event 'always' required to cause Bome to process something?

2 - What is the order of operations?

-event happens

-run first preset with checkmark

-run translators in preset with checkmarks

-run remaining events with checkmarks

-run translators in preset(s) with checkmarks

Whether or not an action occurs depends on the content of the translator(s)?

3 - Can/how do I control the order in which things happen in Bome.

4 - When do I start worrying about latency. I realize that's a broad question. I just want to know what type/quantity of activities are most likely to add latency. Perhaps I am worrying about nothing.

5 - If latency is an issue, am I better off having Bome open a different project file as opposed to creating a large number of presets?

 

Thanks,

Graham

 

Hi Graham,

There is an excellent flowchart of how things work in the user manual on page 79. Hit F1 or Help Menu to open up the PDF File or see the attached diagram which is an excerpt from the manual.

With that said, timers might be a bit different as you can schedule when they fire. Yes, everything requires and event to happen whether it is just opening a project, an incoming MIDI message or keystroke, a preset change, a timer or whatever.

There are some things that can happen concurrently (in parallel) for performance reasons but care is taken to serialize events that would commonly cause issue if processing in parallel.

I personally have not run into latency issues unless, timers are in play and actually purposely introduce latency.

In general, the flow is top down, first preset, first translator until it gets to the end. You can interrupt the flow at any time with the "Stop Processing" flag of a given translator at which point the flow again starts at the top (except timers).

The processing as shown in the diagram is extremely fast and I've never really had to worry if a translator is in the first or last position on the list (except when using stop processing as discussed earlier.

One thing to be aware of is that you generally should limit translators that change a global variable to ensure multiple translators do not change the same global variable at the same time. Sometimes, it is best just to have one translator in charge of changing a given global variable. At other times, introducing a small delay between them solves the issue. There are no "locks" on changing global variables.

All of this is covered in more detail in the user manual (again F1 or Help from within Bome MIDI Translator Pro).

Another thing is that MIDI Thru processing (static MIDI routing) is handled last. All translators are given the opportunity to “Swallow” the original incoming MIDI message although the translator DOES have to execute it’s outgoing action for swallow to work.

Steve Caldwell
Bome Customer Care


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

I’ve added this post to the advanced mappings index: