I've tried to use the "Stop processing after executing this translator" option before, but given up because I can't figure out how to use it effectively.
I get the general idea, and can block subsequent translators from executing once the "stop" translator is executed. But what I'm trying to do is to stop only the translators in the preset that contains the "stop" translator, and then go on to allow other translators to execute. I'm trying to do this because there are many translators in this preset. I'd otherwise have to put a set of conditionals in each of the translators I'm trying to block... which would be time consuming and clumsy.
Is there a way to achieve selective blocking using this technique?
I have to say, it's been a stumbling block for me every time I've tried to use it because I'd find that mysteriously, some translators buried somewhere that I had forgotten about ceased to execute, and I couldn't figure it out (yeah...I figured it out eventually)
As you found, Stop Processing after this translator completely stops all subsequent translators from executing for all following presets and translators. At this point, MT Pro, goes back to the first translator in your project again. You cannot stop blocking for within just a given preset. You can, however enable and disable subsequent presets to stop every translator within it not to execute.
I guess one thing you could do is to disable all presets you don’t want to execute triggering a timer in the stop processing translator. The timer would then be used for a set of always enabled incoming translators that disable the presets you don’t want to execute. You would of course need to put a similar timer and translators to reenable them at the beginning of the translator chain.
1st Translator : Incoming (whatever trigger something that will Always trigger though) – Output Trigger Timer “Enable Presets” You might just put a delayed timer just before Translator X to ensure this triggers after so many milliseconds always.
Translator : Incoming timer “Enable Presets” – Outgoing Enable Preset A
Translator : Incoming timer “Enable Presets” – Outgoing Enable Preset D
Translator : Incoming timer “Disable Presets” – Outgoing Disable Preset A
Translator : Incoming timer “Disable Presets” – Outgoing Disable Preset D
Translator X – Whatever Incoming – Outgoing Timer “Disable Presets” – Stop Processing
Other presets and translators below here but anything disabled will not execute.
I hope this helps. Are you having performance issues that you are trying to solve by using stop processing?
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
That would work. In fact i do this with MIDIBuddy to get a similar result.
In this case, I’m trying to prevent certain AKAI APC Mini pads from launching new clips in Ableton Live. I have 24 clips per track. I want one pad per track reserved for a totally different function, and don’t want the pad to launch a clip at all. There’s no problem in getting the a pad to do the function I want. The problem is stopping it from launching its clip.
Maybe if you showed me your project file and the translators you want to prevent, I could help you better. The solution I put together might be more complex than what you really need.
sure… that would be great. I’ll try to point out the relevant presets so you don’t have to dig through the entire project to find what you need to see. I’ll send it to you in a few minutes.
Looking at your project file. I think I would stay with my original recommendation. I sent you mail back to that effect.
Looking at it again, I think it would be better to define a “suppress” flag as a global variable for the notes you don’t want processed in the downstream translators. You can set up rules to use more than one note to set the suppress flag.
For instance say you want to suppress notes 2,5, 8, 23 and 28. For illustration purposes you would set global variable “l0” as your suppress flag ( I can’t see where you track your used global variables).
Then the rules below would set the flag if any of the notes are above are pressed
// 2,5, 8, 23 and 28
if pp==2 the lo=1
if pp==5 then lo=1
if pp==8 then lo=1
if pp==23 the lo==1
if pp==28 the lo==1
Then in later translators you just put the rule at the beginning.
if lo==1 then exit rules, skip outgoing actions.
I would be more maintainable I think than my previous suggestion
If you are running out of global variables you could always bitmap a single variable for up to 32 flags
In the below examples, ga is the global variable I’m using for a bitmap
Setting a bit
pp=1<<xx - where xx is bit number to set
Clearing a bit
pp=1<<xx — where xx is bit number to clear
Testing a bit
pp=ga>>xx -- xx is bit number to test
pp will be the state of the bit – either 1 or 0
Looks like you are using global variable l0 in 240.0. You should pick something you are not using elsewhere.
I like the solution of disabling presets i don’t want to be executed when I press the “special” key, then use the “special” key for it’s special purpose and then, to re-enable the presets. It’s pretty clean, and it’s simple to implement.
thanks very much for the insight.
By the way…. I think the it would be useful to prevent only some presets from executing when invoking the “Stop processing” feature, as we discussed above. Maybe it could be a new feature?
Maybe you could go to the support page and submit this as a feature request there. Just use the “Report a Bug” and when entering it, indicate it is a future feature request.
In the meantime, if I come up with another way, I will let you know.