Early in the development of Rekordbox DJ, Pioneer added MIDI mapping (in the 4.0.6 update). Almost every function in the software was MIDI mappable, except for jogwheel control, shift layers, VU meters and a handful of others which were kept exclusively for Pioneer’s own DDJ controllers. In today’s article, we take a closer look at one method for using any MIDI controller’s jogwheels in Rekordbox DJ.
Full credit for this concept goes to our friends at Hispasonic, specifically Teo Tormo, who first wrote an article explaining this method here (Spanish-only) last Friday.
Get Any MIDI Jogwheels Working In Rekordbox
Right now in Pioneer DJ’s premiere DJ software, you’re able to MIDI-map almost any controller to any functionality in the software with a few interesting exceptions. You can even save your own mappings (if you do this, consider uploading them to our MIDI Mapping repository for others to check out!). This is mainly aimed at mapping secondary controllers and giving Rekordbox a shot before you head out and buy a certified device to lift some crippling mapping limitations.
The steps for this “hack” (really just more a renaming and remapping) are fairly simple:
- Change the name of your MIDI controller to one that Pioneer DJ thinks should have jogwheel control
- Change the MIDI messages of your jogwheel to match what a Pioneer controller would send
- Complete your mapping as you would normally
What You’ll Need
- Any DJ controller that sends MIDI and has jogwheels (obviously Pioneer-brand DDJ controllers already send jogwheel info to Rekordbox, so this doesn’t really apply). Technically you can map these to any non-stepped encoder but we all appreciate a properly sized jog.
- A copy of Rekordbox DJ (the free trial should work)
- A copy of Bome’s MIDI Translator Pro (€59 – although the trial will work in 20 minute sessions) – this might not be necessary if you have a class-compliant newer device (see below)
- A hexidecimal converter tool
Operating System note: these instructions are for Mac – we’ve asked our own mapping experts to also check it out on Windows to see if it’s possible there as well.
Step 1: Choose An Official Mapping To Emulate
The most basic way that software looks for a MIDI device is by checking the names of all connected devices. With Rekordbox, it looks for a few “official” drivers – these are the only ones allowed to control the decks with jogwheels. The way to tell which controllers are official is by right-clicking the Rekordbox app, hitting “Show package contents”, go to Contents > Resources, and then looking for any .csv files in that folder (if you feel like using one of Pioneer’s maps as a template then you are already in the right folder).
This is how you choose what to rename your MIDI controller – any of the titles of the files in here (without the .midi.csv extensions) are the names of officially mapped controllers in the app.
Step 2: Make Rekordbox DJ See A DDJ Controller
The most common four channel DJ controller for Rekordbox is the DDJ-SX, and Teo notes in his own testing that the best results he’s seen have been from using that controller name (we haven’t tried any others yet). In this hack, he uses a virtual MIDI device (OS X’s built-in IAC driver works fine). Since there is no advanced RGB feedback on the DDJ-SX this also ensures you get a somewhat useable color scheme rather than a rainbow fest on your pads (remember you can’t specify output velocity yet but you might be able to work around it by remapping those via Bome’s if you feel like tinkering further)
- Open the Audio MIDI Setup app in your Applications > Utilities folder.
- Go to Window > Show MIDI Studio (or CMD-2)
- Double click the IAC Driver device
- Change the Device Name to PIONEER DDJ-SX
- Double click the item under “Ports” and delete the text from it so it’s a blank entry (screenshot above)
Open up Rekordbox and switch into the PERFORMANCE tab. If you did this step right, there will be an alert at the bottom that looks like the screenshot below
Is Your MIDI Controller Editable + Class Compliant?
Before step three, it’s worth noting that if you have a newer controller that’s “class-compliant” and has a way to edit the MIDI messages it sends out (like NI’s Controller Editor), you may be able to take a shortcut and simply rename your controller and skip past using MIDI Translator Pro.
How can you tell if your controller is class-compliant? Here’s a few hints:
- It won’t have any drivers to install under macOS/OS X
- It works with iOS apps (and probably advertised as such)
- Try Googling it – ie “Kontrol S4 MK2” + “class-compliant” – to find out
- Older controllers (like the Kontrol S4 MK1) are not class-compliant but there are a few exceptions such as the VCI-400
We haven’t verified this shortcut yet, but you should be able to eliminate any MIDI Translator work if you have a class-compliant controller. Instead of a virtual device, change the device’s name in MIDI Studio and open the controller’s editor to change the MIDI notes it is sending out to match the DDJ-SX. If you can verify this works before we can, let us know in the comments!
Step 3: Translate Controller MIDI Output To Match What Rekordbox Expects
Here’s where it gets a bit complex: to get your jogwheels working in Rekordbox, you need to exactly match the MIDI input that Rekordbox expects to be seeing from the DDJ-SX. Because the mapping options for jogwheels don’t exist in the software, you essentially have to tell MIDI Translator Pro to change what your controller says into what Rekordbox wants to hear.
Go back to where you found those controller mappings in Step 1 and open up the DDJ-SX one. You’ll see a few commands relating the jogwheel that aren’t mappable – specifically JogScratch and JogTouch. See the screenshot below:
- The first three columns define what the control in question is/does
- JogTouch is used you press down on a jogwheel, JogScratch is when you press down and rotate the jog, and JogPitchBend is when you spin/nudge the outside of the jog without pressing down on it.
- The fourth column is a hexadecimal code that says how it is mapped
- If the hex code has a prefix of B, it is a CC message. If it has a prefix of 9, it’s a Note On message. To translate the note in question, convert the other three numbers from Hexadecimal to Decimal and it give you a note. For instance, B022 is a CC message on 34
- The other columns refer to which channel controls each deck – so using the same message on a different channel will control a different deck in the software.
- CC messages can react to values between 0 and 127 – but thanks to Teo’s investigation, we know a bit more about how JogScratch behaves:
“The jogs of the Pioneer DDJ-SX controller – found via trial and error – only respond to values between 70 and 83 when turned clockwise – in the forward direction – and between 58 and 45 when turned in the opposite direction. The value that is sent depends on the speed at which the jog is rotated. It is quite likely that the jogs of your controller send messages using other ranges, so you might have to convert the messages of your jogs into different ones with MIDI Translator Pro.”
Create A New Project In MIDI Translator Pro
Start up the Bomes MIDI Translator software and begin a new project. Here’s the steps for success to get this script underway:
- Set the MIDI ports for the project (via the MIDI icon in the top right) in from your MIDI controller and out to the virtual PIONEER DDJ-SX device (screenshot above)
- Open the Log Window (button to the right of MIDI icon) and turn on Incoming and Outgoing to see what values your jogwheel sends
- Different controllers will have different values they send for their jogwheels – here’s what Teo found worked for his test VCI-100 controller (we’ll add our notes here in a few hours after additional testing):
[For the] Vestax VCI-100 controller […], the values when moving [the jog] forward are between 65 and 78, and when moving back between 63 and 50.
[I could either] enter 26 command lines in MTP (13 for forward, and 13 for backwards) for each jogwheel, and convert each value of the same message, or enter a single line with a very simple script that translates the values. I will try to explain the steps with MTP using as an example what we know from the VCI-100:
- Click Add Translator. Under Incoming choose the following options: MIDI Message, Control Change, CC 16, Channel 1 and in value write pp. What we have written in value is the variable we’ll be working with.
- Now we add the following script that converts the values under Rules, it’s very simple:
If pp> 64 then qq = pp + 5
If pp <64 then qq = pp-5
- That script simply takes the value of the variable pp – which is the value transmitted by CC 16 and adds 5 in case it is greater than 64 or subtracts 5 if it is smaller, the value is in the variable qq.
- In Outgoing, choose the following options: MIDI Message, Control Change, CC 34 and in value type qq.
- Repeat the above process to add another translator for the right jog using the corresponding values. This controller sends a different CC for that jogwheel, but the DDJ-SX should receive the same CC, 34, just on a different channel (this applies to most modern DJ controllers).
Now we need to add JogTouch, which is used by Rekordbox to detect if we are touching the top of the jog. Note in the activity window the MIDI messages sent by your controller when you touch or press the top jog, in the case of the VCI-100 is a Note On and Note Off message of note 46 and note 48. Why two Notes? Very simple, both Note On messages are sent by touching the jog, but Note Off messages are sent differently; The first when you stop touching the jog and the second when you stop playing the jog and also the jog is completely still. This enables software to properly implement backspins and so it moves the song until the jogs comes to a full stop; This does not happen on all jogs, some use the same note and only send the Note Off when the jog is stopped and is not touched.
We’ll use the Note On message of 46 and the Note Off of 48 as noted before, so we added two translators to MTP:
- For Note On, select Incoming MIDI Message, Channel 1, Note 46, value 127 [or whatever your controller sends]. In Outgoing choose MIDI Message, Channel 1, Note 54 and value 127.
- For Note Off, choose Incoming MIDI Message, Channel 1, Note 48, value 0 [or whatever your controller sends]. In Outgoing, choose MIDI Message, Channel 1, Note 54 and value 1.
Author’s Note: After spending some time messing with this, I got it working. I tested it a Kontrol S4 MK1 and it worked successfully. Let us know in the comments if you also have success or if there are issues.
Final Step: Map Everything Else Normally
If you jump back into Rekordbox DJ, and open up the MIDI mapping panel, you can quickly delete ALL of the commands under the DDJ-SX and start from scratch under your own controller. The jogwheel controls you’ve mapped won’t be affected as they are hardcoded into the software.
You can instead map all the functions using the ADD button, choosing a command, and tapping LEARN, and then moving the control you want to map on your controller. It takes a few minutes, but it is relatively intuitive.
Teo notes in his original article that you also should map the jogwheel pitchbend during this step:
Usually jogs send different messages if you turn them with or without touching the top of the jog, fortunately we don’t need to resort to MIDI Translator Pro for this since Rekordbox allows you to assign Pitchbend functionality via MIDI to the outer ring’ Note On messages – different MIDI button messages – when you moved forward or backward. On the deck tab – with your controller selected, not with the “virtual” DDJ-SX – add inputs for Pitchbend Up and Pitchbend Down and assign each input to the forward and backward movement of your jogwheels respectively.
Is This Legal / Does It Break Rekordbox DJ?
Based on our own testing here, this method doesn’t inhibit Rekordbox DJ from working fine. In Teo Tormo’s article, he points out that since there’s no modification to Rekordbox whatsoever, it does not seem to break the EULA in any way. It’s really less of a hack and more of a workaround than anything.
However, this doesn’t mean it’s a reliable way to play out in the long run. We wouldn’t be surprised to see Pioneer try to close this workaround in a future update. Really what Pioneer DJ should do, if they want mass adoption of the software, is open up the jogwheel MIDI mapping and allow all controllers to be MIDI mapped in it so everyone using CDJs/XDJs don’t have to deal with multiple libraries or conversion tools. We wouldn’t be surprised if certain apps start surfacing that automate part of the software, just like it happened before during Traktor’s Remix Deck Hack era.
On a final note, RekordboxDJ already thinks you have certified hardware connected so you should -in theory- be able to map VU meters or UI decks focus and any other previously locked functionality. If you open one of Pioneer’s mapping files you’ll see these noted as “RO” in the options field