Virtual DJ controller on laptop keyboard

Hello, I have a question on whether midi-translator might help realise my dream of controlling DJ software (Rekordbox) from my laptop keyboard so I don’t need to buy a bulky controller.

As I understand it, Rekordbox can be mapped to midi controllers using a ‘Learn’ feature. There are many ‘positional’ controls like faders and pots so I’d assume I’d need to map keys on my laptop via some kind of ‘virtual device’ which manages their state, and then moves them up/down by some fixed amount when buttons are pressed.

For example, I might map ‘J’ and ‘M’ to change the level of the ‘Low EQ’ pot, and each key press moves the state up/down a fixed amount, or I can hold to repeat, potentially with acceleration. Pressing a modifier might change behaviour, such as doubling the delta amount or acceleration, or jumping straight to the max min value.

If you think this is viable I’ll dive in and try to learn what’s needed.



Hi and welcome to the Bome community!

Theoretically this can be done but with one caveat. Any keystrokes generated by your keyboard will NOT be suppressed when converting to MIDI so you need to make sure the incoming keystrokes don’t cause adverse side affects with the currently focused application.

In general, I would recommend a low cost small footprint MIDI controller instead.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Thanks for the tips. A cheap midi controller is definately on the list.

I’ve now got my first pot wiggling, thanks to your excellent documentation and videos on youtube. Very exciting.

1 Like

I’m close to having things set up, but stuck on one bit - it’s as though I want to be able to select different Outgoing Actions from the Rules section.

Currently, if I press and hold keys on the laptop it moves the pot at a specified rate using a time. What I’d like to do is completely change the behaviour when I press a modifier key (e.g. space bar), and make it immediately jump the pot to specified position (e.g. 64).

Here’s an example of the ‘Increase’ button (D key) on one of the EQ potentiometers:

[x] Translator 0.0: low1_inc_down
Incoming: Key down: D
Outgoing: Timer 64 times "low1inc": 50 ms (initial delay: 0 ms)

[x] Translator 0.1: low1_inc_up
Incoming: Key up: D
Outgoing: Kill timer "low1inc"

[x] Translator 0.2: low1inc
Incoming: On timer "low1inc"
  if ga>=127 then ga=127
  if ga<=0 then ga=0
Outgoing: Control Change on ch. 1 with CC#:50 (0x32) and value:ga

To implement the modifier, I was thinking about setting a global variable when the modifier key is pressed, then when the ‘D’ key is pressed, if the modifier is present it doesn’t set up the timer, but does something else. But I’m not sure that’s possible in the Translator. Any tips?

Many thanks

Actually, I’ve got an idea. I just read in the manual that all translators are evaluated in order unless Stop Processing flag is set. I wonder if I can use that to my advantage. …

Hi, first of all to stop keyboard repeat, you need to modify this behavior on your operating system. Remember the original incoming keystrokes are not suppressed by Bome MIDI translator so pressing and holding a key will repeat the key if it repeat is not disabled at the OS level.

Once key repeat is disabled, something like the attached should work. I set it so the global value of ga is 1 when the shift key is pressed and 0 when the shift key is released. The timer translators look at ga and if ga==1 then the outgoing actions are suppressed.

Key-Shift-Modifier.bmtp (1.3 KB)

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Perfect, I see exactly how that works. I think I’ve dealt with keyboard repeat, and stopped Rekordbox from responding to the keys by mapping keys to dummy functions. Just need to write out all the rules now. Thanks very much for your help.

1 Like