Rules problem - JOG move

For a better control on davinci resolve timeline, I want two speed on jog encoder (I use Arturia Beatstep for control).
I have 2 translate rules:
for slow movement (velocity = 65) only one keystroke “>” outgoing
For fast movement (velocity >65) two keystroke “>>” outgoing.

On midi capture, hh is my velocity variable.

For slow movement (forward) the rules is:
if hh<64 then exit rules, skip Outgoing Action
if hh==65 then exit rules, execute Outgoing Action

For fast movement (forward) the rules is:
if hh<64 then exit rules, skip Outgoing Action
if hh>65 then exit rules, execute Outgoing Action

The slow rules works great, but the fast rules always execute outgoing action, also with hh lower than 65

Hi, and welcome to the forum.

It is a bit hard to tell from your posting as it looks like you have it right. However maybe you have key repeat set on outgoing action so you are sending repeating keystrokes of > which look to Davinci resolve as >> . If you can, you might try and figure out if you can have completely different shortcut for fast.
If this doesn’t help, please post your project file and I will have a closer look there.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thanks for your fast reply.
Double keystroke is not a problem for Davinci resolve. I have also tried to set outgoing action to other keystroke (press Q) but the problem still there.

Here a test file:

test jog rules.bmtp (996 Bytes)

Hi,

For fast you want this rule
// 66 and higher
if hh<=65 the exit rules, skip outgoing action

For slow you want this rule
// only 65

if hh!=65 then exit rules, skip outgoing action

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Using “!=65” works but there is a problem: in this way you can’t made two more similar rules for rewind and fast rewind.

I want this rules:
hh==65 slow forward
hh>65 fast forward
hh==63 slow rewind
hh<63 fast rewind

Sure you can, assuming you are using different keystrokes, just add additional translators for each other action you want.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

No, you can’t.
JOG encoder send:
“65” for slow forward
“>65” for fast forward
“63” for slow rewind
“<63” for fast rewind

Here my preset for forward and rewind, but don’t works.
Rules for slow forward and rewind works fine.
Rules for fast don’t works because don’t skip action when rules don’t match.

test jog rules for right left.bmtp (1.6 KB)

Try this. You will likely need to adjust outgoing keystroke.

test jog rules-sjc-.bmtp (1.8 KB)

// SLOW Right
if hh!=65 then exit rules, skip Outgoing Action
// Fast Right
if hh<=65 then exit rules, skip Outgoing Action
// Slow Left
if hh!=63 then exit rules, skip Outgoing Action
// Fast Left
if hh>=63 then exit rules, skip Outgoing Action

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Very good thanks. Now works.
What exactly does the “! =” function filter ?

!= Not equal to

Set zz=0 in the first translator. I had it set for debug purposes only and used the new Log feature of 1.8.5 which is still in beta.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi, the encoder JOG wheel on Beatstep not works very well (I’ve tried all three settings relative1 relative2 relative3 and three acceleration). On slow (forward) rotations the output is 65, but to reach 66 or 67 it is necessary to spin very very fast.
Do you think it is possible to achieve smooth motion based only on pulses (> 64 forward or <64 backward) using a timer and a response curve based on counting pulses over time ?

You can try, however I think it will depend on what rate your application can accept keystrokes.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi,
I tried to do something but i don’t know how to count the number of pulses during the timer and send more or less pulses depending on the jog speed. Can you help me ?
Thanks
jog test.bmtp (2.0 KB)

Try this.
I’m assuming that you have encoder type where 0x3F and less is left turn and 0x41 and more is right turn.

We use the global variable ga to determine if the timer is busy.
We use the global variable gb to determine the direction (-1 for left and +1 for right)
We use the global variable gc as a counter to determine amount of keystrokes.

If you turn slowly (gb=1 or gb=-1) then gc is set to 1 so the timer only fires once.
If you turn fast (gb<-1 or gb>1) then we apply a multiplier of 2 (to the first translator)
I currently have the repeat timer of 10ms in the first translator. Adjust that and the multiplier as necessary until you get the desired result.

Only either the second or third translator will send keystrokes depending on the direction of the knob. When the counter reaches 0, then the busy flag will be reset. We use the busy flag so that we don’t continually try and send more keystrokes while the timer is operating.

Keystroke-timer-2021-01-08.bmtp (1.9 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thanks ! Exactly what I has had need. Works great and very smooth. I have set multiplier x8 and repeat delay only 2 ms.

correcting a typo for future references :slight_smile:

Thanks for the correction!