Using Rotary Knobs on a QWERTY Keyboard as MIDI CC

Hi everyone,

I am new to this forum so I apologize if I am posting this on the wrong topic/page.

I’ve been searching for a solution to this for days and sort of got it to work, but I still need some help.

My hardware (see attached screenshot):
I have a mechanical keyboard with 3 knobs. Each knob can be turned and clicked. The knobs can be programmed to do almost anything. By default, they control the volume of my computer.

What I want to do:
I’d like to be able to assign these 3 knobs as MIDI CCs in my DAW (Cubase). A few ideas/uses for this: the knobs can be used to control the gain for each track, write automation, etc.

My current workaround:
I installed a program called loopMIDI and created a new MIDI port for my keyboard. I then installed another app called MIDIberry and selected my keyboard as the input, and a generic ‘Microsoft GS Wavetable Synth’ as the output. I came across an AutoHotKey script on one of the Cubase forums that sort of accomplishes this, and the knobs are sending out MIDI signals. However, it still acts like a switch. For example, if I twist the knob left, it only gets assigned a certain value. If I twist it to the right, it recognizes this as another key and assigns a separate value. However, I want to be able to control it like a volume knob so that it produces a range of values from 0 to 127, like any other MIDI CC. If you look at the screenshot of MIDIberry, you’ll see that the knob only produces one CC with one value when turned right, and another CC with a separate value when turned left. I’d like it so that when I turn the knob, only one CC is activated within a range of 0 to 127 (just like adjusting the volume instead of having the volume stick to one fixed value every time).

Any help would be greatly appreciated! I’ve experimented with loopMIDI, MIDIberry, AutoHotKey…and now I’m trying my luck with Bome. Hopefully this works!


Hi and welcome to the Bome community!

I’m not sure what your knobs put out but if you change the incoming keystroke on translator 0.0 to whatever is sent for right turn of the knob and 0.1 to whatever is sent for left turn of the knob, this will send CC 21 with an increasing (for right turn) and decreasing (for left turn) value. The rules make sure the the value doesn’t go above 127 or below 0.

The original incoming keystroke is not suppressed so it is best if you set the knobs to send out keys that are not otherwise recognized by your operating system.

key-to-cc-2024-07-08.bmtp (1.1 KB)

Steve Caldwell
Bome Customer Care


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

Hi Steve,

Thanks for the warm welcome and the fast reply. I’ve tried using the script you sent and Bome seems to be receiving the keystrokes and outputting as MIDI. However, when I open Midi berry it doesn’t recognize any outgoing MIDI messages. And when I try assigning the knob as a MIDI CC in Cubase, nothing happens now.

I’m not sure what I’m doing wrong…

Check the incoming port on MIDIBerry and make sure it is the same as the outgoing port on Bome MIDI Translator Virtual Port 1 (BMT 1).

Edit: Actually you don’t need MIDIBerry if you are sending to a synth. Just set the output of Bome MIDI Translator Pro to send to your synth.

Steve Caldwell
Bome Customer Care


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

Hi Steve,

I recorded a video explaining the situation. I’ve tried what you suggested but it still isn’t working. I forgot to mention in the video that I deleted the F11 shortcut assigned/recognized in Cubase (which is set to open the VST window).

Here is the link to the video: Keystroke to MIDI CC Video.mp4 - Google Drive

Edit: I made some progress and got it to work partially. Except now it doesn’t change the value when I keep twisting the knob to the right or left. I made a new video: Keystroke to MIDI CC Video 2.mp4 - Google Drive

Thanks

Hi,

First in Cubase you need to select BMT 1 for input.

You must make sure that no other application is using BMT 1 as Windows does not allow multiple applications to access the same MIDI port.

Then make sure that you plugin Routing is for BMT 1 as well. I my case I’m not using Kontakt but using a pluging called DB-33. You will need to do this for Kontakt.

The output of Bome MIDI Translator Pro should also be BMT 1 in my case I use an Alias that is pointed to that port.
Internally to Bome MIDI Translator Pro here is the long name.

image

Do not use any MIDI routes in the Bome MIDI Translator Pro router.

Now hopefully you can program your knob to send a different keystoke for right and left turn. I use F19 for right (up) and F17 for left (down). If you use the same for both up and down you will not change the CC value because it will move up one and then back down since that is what the translators are set to do.

You should then be able to use MIDI learn.

image

Use the project file I sent you to get a fresh start.

Since you are using Kontakt and not the Microsoft Synth you should deselect it. Again it is important that no other MIDI application is looking at BMT 1.

Good luck.

Steve Caldwell
Bome Customer Care


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

It’s working!! :grinning:

After following your instructions the only thing left to do that made it work was assigning the knobs to a keystroke from F13 or higher. I’ve got a new issue though (see attached video):

Any thoughts on how I can adjust the speed of the knob and keep each knob separate so as not to interfere with the positions and values of the other knobs?

Edit: I figured out the knobs interfering with other knobs issue. I made sure each knob had a different rule and value (ga for knob 1, gb for knob 2, gc for knob 3). Now I can use each knob independently. However, I still can’t figure out the speed issue. Perhaps there is a parameter in each rule that I can change to be twice as fast?

Hi,

Each knob will need their own global variable in rules.

I suggest you use the global variable ‘gb’ for knob 2 and ‘gc’ for knob 3. Otherwise, they are sharing the same global variable (ga) and that is the value they all will use to determine where the knob is.

Steve Caldwell
Bome Customer Care


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

Hi Steve,

I’ve fixed the knobs so that each one has a different variable. Is there any way to make it so that when I turn the knobs, the corresponding virtual knob on the screen turns faster? I’m assuming that when I currently turn each knob, it cycles from 0-127 one number at a time (0, 1, 2, 3, 4, 5, etc. until it reaches 127). There should be a way so that it skips a number, thereby making it twice as fast (0, 2, 4, 6, etc. until it reaches 127). Unless there is another way to do this…

Yes, in rules for example it says

ga=ga+1

change it to ga=ga+2

and where it says

ga=ga-1

change to

ga=ga-2

Steve Caldwell
Bome Customer Care


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

That did the trick! Thanks so much for all your help with everything!

1 Like

Hi Steve,

Is there a way to make it so that the knobs work only when Cubase is open? I’d like to assign them to do other functions when I have another software open and not Cubase.

Well the project file would convert the keystroke to any application that is open and has MIDI in port opened with the same input of Bome MIDI Translator Pro output. If Cubase isn’t open, then the keystrokes would still come through to any application that has current focus since Bome MIDI Translator Pro does not suppress the original keystroke.

Steve Caldwell
Bome Customer Care


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