Push encoder as preset selector?

Hey there!

I have a simple push encoder that can transmit any CC with a value of 0-127 when rotated and any CC with either 127/0 when pushed on/off.

Basically I want to use my encoder to “browse” up to 128 presets via scrolling (my hardware controller has a nice display for this) but only actually load that preset once the encoder is pushed as a button.

In other words, can MTP remember most current message received for a given CC and then transmit that message upon receipt of a different, specified message?

Thank you!

Hi and welcome back.

Yes, however the question is whether your application or receiving controller waits until the encoder is pushed before it accepts the value. For instance, if he display shows while twisting the controller without changing presets. I f the twist message is only recognized at the receiving end as a scroll message ant the push button message is seen as an execute message it should work. What do you have on the receiving end here?

Steve Caldwell
Bome Customer Care

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

Hi Steve,

The hardware produces different CCs for twisting (CCxx) and pushing (CCyy). Neither of these is actually recognized by the software; a third CC should produce the desired preset change (CCzz).

I think the steps should be:

  1. CCxx with value 0-127 is selected
  2. CCyy is then received which triggers the script in MTP
  3. CCzz with value 0-127 (last value received for CCxx in step 1) is transmitted to the software from MTP’s virtual port.

Alternatively, I could block CCxx coming directly from the controller, so perhaps a CCzz is not necessary, and I would re-learn the software to then respond to CCxx coming from MTP’s virtual port.

I’m not sure what you mean by “scroll” and “execute” messages. Could you please elaborate?


You can try this, however I’m not sure how you will be able to tell the current value of the CC number before pushing. Maybe your controller has a value indicator.

The first translator stores the current value of CC16 when you turn the encoder. It stores it in the global variable “ga”. It does not send any value.

The second translator sends the stored value to the target application when you push the encoder (CC 17 with value of 127). The output of this is CC 25 with the current value of ga.

You will need to assign the alias “My Controller” to that of your input device and the output alias “Application” to that of your target device or application.

You will be prompted for this when you open the project file. After that you can get to the alias assignment screen in the MIDI menu.

I hope this helps.

CC-Twist-and-push.bmtp (1.3 KB)

Steve Caldwell
Bome Customer Care

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