Using Jog Wheel to Zoom In and out with Keystrokes

Hi Steve,
I’m finally getting things to work (with your support), but things don’t behave quite as I expected.
I now do NOT set up my controller with BMT as midi port in and everything still works fine, as long as I still have BOME running, and I can control everything in logic from my platform M+ control surface. When I do set it up in logic, things go haywire (lights start flashing on surface/conflicts of commands etc) because controller assignments are automatically sent to logic (on every start up) and I then have to go in and physically delete them all.
So, just one last question (…): I have a jog wheel on my control surface that I want to set as a zoom in and out, in both horizontal and vertical ways. I have two buttons above the jog wheel that I want to use as switches to select whether the jog wheel zooms horizontal or vertical.
How would I set up the buttons as switches to do this?

Many thanks,
Nick

What MIDI does the Up/Down Button send when you press and release it?
What MIDI does the Left/Right Button send when you press and release it?
What MIDI is sent when you turn the Jog Wheel Clockwise?
What MIDI is sent when you turn the Jog Wheel Counter Clockwise?

Steve Caldwell
Bome Customer Care


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

Hi Steve,

Current MIDI settings below:

What MIDI does the Up/Down Button send when you press and release it?
90 6F 7F
90 6F 00

What MIDI does the Left/Right Button send when you press and release it?
90 6E 7F
90 6E 00

What MIDI is sent when you turn the Jog Wheel Clockwise?
B8 3C 01

What MIDI is sent when you turn the Jog Wheel Counter Clockwise?
B8 3C 41

Many thanks,
Nick

Hi Nick,

Try this.
Pressing Zoom Up/Down and then moving the jog wheel will send keystrokes Num+ and Num0
Pressing Zoom Left/Right will send keystrokes + and -

The global variable ga determine which pair of translators are executed and the Jog wheel defines it further.

I put a 20ms delay on all keystrokes to avoid sending keystrokes too fast.

Jog-Zoom-2021-04-28.bmtp (1.9 KB)

Steve Caldwell
Bome Customer Care


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

Brilliant - this is nearly there Steve…

It didn’t work at first so I changed the outgoing of up/down/left/right to ‘Text’ and assigned ‘Command(up)’ Command(down) etc to fit with keystrokes of Logic.

It now works, but… I want the first two translators ‘set zoom’ to act as switches. I currently need to hold these buttons down to make the zoom work. Can I assign them as on/off switches?

Also, it’s not very smooth - I’ll try and mess with the delay as that might be affecting it?

Thanks Steve
Nick

Hi,
Try the below.

I have 2 translators that block note-off messages for the direction buttons so the last button pressed should always be active.

I added a watchdog time and a global variable, gb as a “busy” flag. We force a wait of 20 ms before recognizing any new zoom movement as set byt the Zoom Watchdog delay.

You can play with the delay of translator 0.6 to adjust it to your liking. The keystrokes go out immediately (no delay) if the timer is not busy. (gb=0).

Jog-Zoom-2021-04-28a.bmtp (2.9 KB)

Steve Caldwell
Bome Customer Care


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

Note, since this was a different request, I also moved it to a new topic.

Steve Caldwell
Bome Customer Care


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

This works! Thanks Steve.
Finally getting to use my control surface the way I wanted to after 6 months - just need to get the zoom movement a little smoother and I’m there.
Fantastic program you have here. I’ll remain pretty flummoxed by the programming language used, and would be great to see a basic version of this with basic functions that are a bit easier for a non-IT type person like me to program. I don’t know if that would be possible, or there’s a demand for it, but I’d certainly buy it!
I’m sure I’ll be asking for more help soon, but big thanks for all your fantastic support so far!
Nick

Hi,
In the last version of Zoom control, if the zoom timer was busy, we would ignore knob twist which means it may not be as smooth as you like.

In this version, we handle things a bit differenty.

  1. I use preset changes to change from Up/Down and Left/Right. When one preset is enabled it disables the other preset.
  2. I calculate the movement count needed in the global variable ga. A positive value means up or right movement and a negative value down or left movement depending on the preset selected.
  3. I set a timer for the timing between keystrokes with global variable gb.
  4. Turning the knob left or right will simply add or subtract from the value of ga and start a repeating timer “Zoom”
  5. The Zoom repeating timer increments or decrements the value of ga (depending on direction) and kills itself when it reaches 0.
  6. The Zoom repeating timer sends keystrokes depending on which preset is selected and the direction based on the value of ga
  7. I created an Init preset to set and document global variables used in the project.
  8. The Control Preset Controls the Timer and selects whether you use Up/Down or Left Right/Preset
  9. The other presets simply send keystrokes at the rate set for the Zoom timer. Also enabling a preset results in a translator to disable the other preset ensuring only one of the two are enable.

I used the global variable zz for a debug flag for testing and Log Commands when debug is on (which will be a new feature of upcoming release of MT Pro. Right now the function is only enabled in Beta release.

Jog-Zoom-2021-04-29.bmtp (3.4 KB)

I think you will find the action of the jog wheel much smoother here. You will need to tweak the value of gb (time between keystrokes) and the translators that actually produce the keystrokes.

If you want to integrate with your existing project, you might want to use different global variables than ga and gb.

Steve Caldwell
Bome Customer Care


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

This is way better - thank you!
I finally have a fully functional control surface.
Much appreciated Steve :slightly_smiling_face:

Good, I’m happy to help!

Steve Caldwell
Bome Customer Care


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