Interesting questions. Let’s take a look.
if „input a“, then „output x“ and „output y“. and if „input a“ was last input, but did not happen for a defined time, then „output z“
====
If input a then output x and output y:
—
Incoming: Any note-on on MIDI channel 1 note 24 velocity 15
Rules:
// in this case we will output two MIDI messages via raw MIDI
// note x and note y at velocity 127. We could have also just had two translators
// With the same incoming condition and each outputing a single note
// Our outgoing message will be note-on CH 1 notes 18 and 19 at velicities 127 (7F) each
// note for raw MIDI we use hexadecimal output always 18 decimail is 12 hex and 19 decimal is 13 hex
Outgoing:
Raw MIDI 90 12 7F 90 13 7F
// Again if you dont single translator or raw MIDI output, just put two translators with the same
// incoming message and have the first one output
Outgoing : Note-On MIDI CH 1 Note 18 Velocity 127
Outgoing : Note-On MIDI CH 1 Note 19 Velocity 127
=====
If input a was last input, but did not happen for a defined period of time, then output x
—
First we need a translator to capture input and store it as last input into a global variable.
In this example we will take any note-on message and store it in ga. We then use a timer
to determine whether to send output z. For input ,say we want note 24 in this example.
We will will output note 50 if the last note was 24 and more than 1 second has passed
Incoming: Note-On Any note store note to pp any velocity, MIDI CH 1
Rules:
ga=pp
Outgoing: One shot timer “Last Note Timer” delay 1000ms (1 second)
Incoming: Timer “Last Note timer”
Rules:
if ga!=24 then exit rules, skip outgoing action
Outgoing: Note-On MIDI CH1 Note 40 Velocity 127
============
if „input a“, then output b“, but if „output b“ happened in the last 50ms, then „dońt output b“
Name: Input A Set Output B
Incoming Note On MIDI CH1 Note 15 velocity 127
// look to see if it has been sent
pp=gb
if pp==2 then gb=0
if pp==2 then exit rules, skip outgoing action
// set flag that says output B is pending
gb=1
Outgoing: One shot Timer Output B Delay 50ms
Name : Output B timer
Incoming : Timer “Output B”
// Mark it sent
gb=2
Outgoing: Note On MIDI CH 1 Note 25 velocity 127
In the above example, the first translator looks to see if it has already been sent (gb=2)
and aborts the timer if sent, otherwise starts the timer at 50ms so output will happen
We reset gb back to 0 to re-arm it for the next iteration. We set gb to 1 to show that it is pending.
I did this all on paper so not tested but it should be pretty close.
I think I might do it a bit different but need to think on it some more.
Upon start of turning a knob
1) Go to fixed position X-Y (location of the knob on the screen)
2) Left Click Down
3) Look at direction knob is turning and Move (drag) mouse accordingly
4) After timeout (motion stopped) left click up.
Of course you would have to consistenlty move the knob before timeout occurs otherwise the process repeats.
I think I provided a solution to some about this the other day. Was it you? In either case, just take a look and you should find the project file there.
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz