Best way to process a sysex patch dump?

Hi, I’m just starting a project where a sysex patch dump will be initiated from a synth and I want to use MT PRO to process that and construct a number of NRPN parameters and values which will be forwarded on to a controller, to initialise its encoders at the correct values for that patch.

There are about 50 values to process.

I also need it to go back the other way and convert NRPN parameters to sysex, sent on to the synth to change the patch parameters.

Are there any any general rules, or best practice about how to configure MT’s translators for something like this to reduce unnecessary processing load, or timing lag?

For example, is it better to have many translators each extracting and converting one parameter?
Or one translator, with many rules, doing all the parameters?

Thanks for any guidance on this.

Hi and welcome to the Bome community!

In general it is best to process sysex patterns that include 10 or less variables. This is because MT Pro has 10 “local” variables, and in using them the patterns of one translator will not interfere with the patterns of another translator. In contrast, if you use more than 10 variables, they will have to be global variables and one translator’s input pattern using a given global variable may interfere with another translator’s input pattern if the translators are using the same global variables as part of the input pattern. Care would need to be taken to ensure each translator is using different global variables as part of the input pattern.

Since translators can happen in parallel, it is usually best practice to have multiple translators handle different parts of a given input pattern.

MT Pro usually is better in translating shorter SysEx strings for this reason and a separate pattern would need to be used to trigger each incoming event.

The input pattern would consist of either actual hex values or variables (placeholders) within the incoming string to represent things that will change.

I hope this helps!

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Thank you Steve, that does help.

The patterns I’m working with have 60 - 100 values in them.

The part I’m not too sure about is how to have different translators working with different parts of the pattern.

As I understand from your reply to my other post, to match the input pattern the length must be the same. No problem with that.

However, the input will have different values in most positions.

For the pattern to match, how do you change the values that you don’t want to be factored into the match? Can you simply replace them with the same variable?

So if these are two inputs
F0 24 30 1 54 53 57 45 4C 30 45 F7
F0 24 30 2 40 61 53 22 4C 25 41 F7

Could a pattern that matches both be this?
F0 24 30 pp pp pp pp pp pp pp pp F7

The pattern would match for both input streams, however the value of pp would be unknown since it is used multiple times.

However if you did this

F0 24 30 pp pp pp pp pp pp pp qq F7

then you could extract and use the value of qq

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Aha, I see a path forward!
Thanks Steve, much appreciated.

1 Like

Would a global variable be a good candidate for setting the midi channel across a project, or is that asking for trouble?

I don’t fancy having to go digging around in a large number of patterns trying to find hard coded channel values.