Feedback Loop Killer-Repeat Preventer

makerprofaze

2009-12-22 08:02:20

Hello, all. My first post, though I've been a classic user for some time.

I'm sending a bank change from my host's modular section, which in turn is looped back to MT, which triggers a macro that types in a numeric bank change (mouse location/clicks+key entry) to the arrange area of the host, but, once it is typed in and entered, it (accordingly) fires the bank changer in the modular area, and the feedback/repeat loop ensues. The problem is my host doesn't respond to bank changes in the arrange/inspector area, so I'm using macros. It might work if I wasn't using MT (1.6) as a Thru (to multiply my Oxy8 knobsX4), but that's necessity. I also have a loopback for program change linked to Pg Up and Pg Dn buttons.

I think I just need help with rules to discern not to do a repeat bank change if the bank is identical to the last one sent, but I have trouble writing these. If this has been answered before just point where, as 'Feedback' seemed to deal with lots of other stuff, and 'repeat' is broad also.

I do have a work around, which is to disconnect the modular bank change input from the arrange bank change output, though this means I will only be able to use the (graphically better) modular bank change.

Thanks in advance for any assistance. Who knows, this may be simple?

makerprofaze

2009-12-22 09:42:21

I've finished for the night... I tried my setup with the arranger bank change disconnected from the graphic modular bank change, and it messed up the sync completely. The host kicks out bnk/prg when a track is selected, which is how this all started in a sense, to keep my hardware synced to what track is selected. So, the goal I figure is a ruling that will exit if the incoming variable is equal to the last variable, and pass it to the outgoing if it's different. I am so bad at this math.

Attigo

2009-12-23 19:26:39

Hi makerprofaze

I'm not sure I understand what you are trying to do, but I think I know what you need help with...

You will just need to have seperate Translators for each incoming bank change (from your controller I presume) and set a variable so MT 'knows' which bank you have selected.

For example you could use 'ga' as your 'global' variable. When you receive your bank change message (in MT), just set that variable to the number of that bank, and when you receive the message back from your host (also separate Translators) you just need to skip that with rules (if you are on the same bank). Like this:

if ga=1 then exit rules, ignore outgoing action.

This will stop bank 1 being selected if it is already selected.

I hope this helps...

Scott

makerprofaze

2009-12-24 01:48:23

Thanks for the reply.
Simplified- Incoming - variable input (B0 00 gl -Bank); Outgoing - execute (keystrokes); -which unavoidably causes "duplicate" variable input (Bank) to be sent to incoming again. I'm thinking now that a timer is the answer.
Before I first posted I tried [B0 00 gl] in one preset (Bank Reader), then presets for each bank number, with each having it's own B0 00 gm variable reader. [Bank 1 rule- if gm = gl exit outgoing]...... That didn't work - gm/gl would cancel each other out. I also tried [if gm != gl execute outgoing] to no avail.
As far as the timer... What happens is the outgoing causes the incoming to be retriggered re-arriving at the incoming, so perhaps a timer will pause any action long enough for the outgoing to be sent and the macro to execute before MT accepts another Bank incoming. I've never used timers.


- - I've actually come to a solution by adding a delay at the end of the macros in the macro app (QuickMacros) which is presently working.