Hi, we are looking at this but one thing I noticed is that the script might need some re-organization into various presets. For instance, you may want to put the first 26 translators under a separate preset and at the preset level set the default input ports. That way if your configuration changes, you would just need to make one input device change at the preset level instead of 26 input device changes at the translator level.
Also, I noticed they all have the same rule (if li==1 then exit rules, skip outgoing action). Of course this will work but these translators will always be checking for input. It may be better to have a translator to enable the preset at project open and then when you set li to 1 to disable the entire preset. This would be more efficient as then MT Pro would not look at these incoming trigger actions. I’ve made this tweak as an example but in general if you can organize presets by device or function, it make it easier to review and maintain the code.
I would also break out the timers into different presets by either device or function.
Also, it would be good practice to document all of your global variables under a single translator so you can refer back to them later to ensure you are not re-using global variables for multiple functions.
I usually create an “INIT” preset and then a translator under that to document the global variables and their use. I usually also create an Init timer and use that to trigger anything that needs to happen when the project is opened.
I did this in the attached example.
I haven’t yet found any glaring issues but my guess if anything it would be either a timer issue or misdirected MIDI messages.
Also keep in mind that if you skip an outgoing action within a translator, the message will still “pass through” to any default routes. So if you don’t want a given incoming message to pass through, you need to either need to put a translator at the end of the chain with swallow set and no outgoing action, or at the last translator for a given output, put stop processing. I prefer the former.
As an example if Orbit sends any 3 byte MIDI message, it will pass through to the default routes if skipping outgoing action with rules. So you may in fact be getting much more MIDI output than you expect.
I hope this helps!
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz