Michael10
2017-02-19 20:51:19
Hi,
I am new to this product. I have an organ pedalboard that frequently creates double-triggered notes. I need to create an event, triggered by a note-on, that briefly disables all incoming MIDI messages from the pedalboard. Looking through some old forums, I found this, but can't understand how to implement it:
Translator 1: Passthrough
Incoming Message: pp qq rr
Rules: if g0==1 then exit rules, skip outgoing action
Outgoing Message: pp qq rr
Translator 2: Lockout Timer
Incoming Message: pp qq rr
Rules: if g0==1 then exit rules, skip outgoing action
g0=1
Outgoing Message: Lock Out Timer, 10ms delay
Translator 3: Timer
Incoming Message: Lock Out Timer
Rules: g0=0
Outgoing Message: none
The first timer translator I understand how to create, using the Raw MIDI/ System Exclusive mode of the MIDI message.
For the second translator, I don't understand where to enter that outgoing message. It doesn't seem to be a Raw message, and I don't know how to create that information using "Timer." The same goes for the third translator.
Also, I would like it to only apply to channel 3. If possible, if it would only apply the lock out timer to the pitch just played, that would ideal, but not absolutely necessary.
Lastly, how do I have the translators take effect before routing the signal to a virtual MIDI port?
Thanks so much,
Michael
Steve
2017-02-20 00:19:41
Hi Michael,
The first translator just passes through any messages if not locked out.
The second translator just takes the same message and sets a lockout timer. If any other messages com in within 10ms then the first timer will ignore the message. It is looking at the global variable g0 to do this. It fires off the lockout time but does not send anything.
The third translator turns off the lockout set in the second. Setting g0 back to zero which effectively enables the first passthrough translator again.
If you only want the lockout timer to happen on channel 3 then do something like this:
Translator 1: Passthrough
Incoming Message: pp qq rr
Rules:
ss=pp&2
if ss!=2 then skip rules, execute outgoing action
if g0==1 then exit rules, skip outgoing action
Outgoing Message: pp qq rr
Translator 2: Lockout Timer
Incoming Message: pp qq rr
Rules:
ss=pp&2
if ss!=2 then exit rules, skip outgoing action
if g0==1 then exit rules, skip outgoing action
g0=1
Outgoing Message: Lock Out Timer, 10ms delay
As for your last question. You need to set swallow on any actions that you don’t want passed through to the default ports.
Good luck.
Michael
2017-02-20 01:41:33
comment
Thanks so much, Steve. How do I put that outgoing message in? Should I be in Raw mode, or something else? I’m not sure what type of message it is.
Steve
2017-02-20 03:18:57
You don’t need to add an outgoing message. Here is an example.
The first translator will always pass any 3 variable message if either the lockout time is not engaged on channel 3 or the message comes through on a different channel.
In this case I added a variable for the target channel and made the lockout timer longer (100ms)
Attachments:
Michael
2017-02-20 15:57:56
comment
Thanks for all your help, this is a great solution!