Pioneer DDJ-SX Controller Mapping

Here is the new, reworked, feature added and reviewed (guidelines) Pioneer DDJ-SX Mapping…for those who can test it! Please give me feedback!
See for the functional details.
Pioneer (22.8 KB)

Tell me about it. :slight_smile: I have been working on my mapping for a year now and still find things to change.

You may as well open the pull request now. I probably won’t have time to review it immediately as I am trying to finish up some big pull requests and review other mappings. The changes to the scripting engine that were holding up the changes to Components’ EffectUnit object were just merged, so I’ll finish those changes soon. Taking a really quick look at your script, I see that the effects knobs on the DDJ-SX use 14-bit MIDI. I’ll have to rework how the Pot objects in Components work to accommodate that. I don’t have any controllers that use 14-bit MIDI, so I’ll need help testing if it actually works. In the meantime, only mapping the MSB should work.

If you don’t have much time, don’t worry about it. Hopefully all the changes I was referring to before will be merged real soon.


I just purchased a DDJ-SX controller. I only use Linux and attempted to run Serato in a WIn10 Vm via Mint 18. Followed all guides to modifying FW, drivers etc, but am still getting malformed output.

I’d be happy to run your mappings and provide feedback as requested - especially as we’re in the Open Source community. As I make progress - shall I report back in this thread, PM you or create new POST. I appreciate your work and just want to know how I can help, having just purchased this controller, and get the feedback you asked for.



Note that the most recent mapping posted requires using a prerelease version of Mixxx 2.1. For now you need to use it with the Deere skin to see what is going on with the effects controls.

What do you mean by getting malformed output? Can you explain the malformation? Under MacOS the controller response and the sound output is great. Under Windows 10 I experienced additional delays concerning control and response and sometimes sound interruptions (buffer underrun) with the same settings as under MacOS.

I think it’s good if you report your experiences back here in this thread.

By the way: As far as I have seen, the mapping will work for the DDJ-SX2, too (except the colored PAD lights).

A complete mapping for this controller has been merged for Mixxx 2.1. You can use it now with a prerelease build. Refer to the wiki for details about how it is mapped. It uses the new effects and looping Controls in Mixxx 2.1, so it will not work with Mixxx 2.0.

Hi! Fantastic to discover this work being done on the DDJ-SX controller, can’t wait to try Mixxx with it (on my Linux laptop)!

I see that only the LTS versions are supported in these builds - unfortunately I’m on 17.04. When is 2.1 expected to go live?

In the meantime, the first posted script will work (in 2.0), right? (I’m not in my studio yet, can’t test)

I wish I had an answer for that… but if the build server isn’t making builds for your distro, you can compile from source.

As far as I know, yes, but 2.0 didn’t have all the features this controller is designed for, so it couldn’t be completely mapped to 2.0.

I think so…as I posted the script I already switched to the 2.1 prerelease builds to develop this mapping. But I think all of the features, implemented in that early state of the posted script, should work in 2.0.

Thanks for the replies, @DJMaxergy and @Be.!

I actually found that I had a second partition with Ubuntu 16.04 on my workstation so I fired it up and tried 2.1 yesterday with my DDJ-SX, and it worked fabulously!
The only minor detail I took note of during testing is that I expected the browser knob to give a preview of the track in the headset when I pressed it down. It feels so intuitive to do so, I think I must have used another controller with such a functionality earlier. But that’s minor, I’ll fully get used to use the “preload” button instead.

Other than that, smooth as silk! Thank you very very much for this work, DJMaxergy. If there’s any way I can assist or contribute please tell.

I’ll try to compile it on 17.04 later, Be. Thanks!

I would like to fix some minor bugs in this mapping. Can I create a new pull request for that or how can I commit the changes?

Yeah, please make a new pull request.

I’m a DDJ SX2 owner. I’m used to use it under Serato on a macbook pro. I tried it yesterday on a linux machine running Mixxx and I am definitely amazed !!! Almost everithing I have tested works like a charm. Even the Led Pad are supported properly :slight_smile:
I say “almost” because for now only effects are not working at all. Have you got any feedback on this issue ?
Anyway, thanks for your great work !!

DJ Tonio Siwo

Great, thank you for reporting! We’ve been wondering if this works with the DDJ-SX2. Perhaps we should rename the mapping to indicate that it works with the SX2. I think taking advantage of the different LED colors on the pads with the SX2 would require some small changes to the mapping though.

What version of Mixxx are you using? The effects will not work with Mixxx 2.0, you need to use Mixxx 2.1 for those.

Nice to hear that! Thank you for reporting!
At the moment I’m doing a few minor bug fixes. If you notice anything please let me know.
The effect section of the controller will only work for Mixxx 2.1!

Concerning the pad leds I have the necessary midi addressing and know what I would have to change to make the pad led colors work. But I think this (Pioneer DDJ-SX2) should be a separate mapping even if most functions are the same. The DDJ-SX2 has additional buttons concerning the Flip-Features of Serato which could be mapped to some function of Mixxx.
If someone can test it I could provide a separate mapping for the DDJ-SX2 as well.


I have a DDJ-SX3, and input wise it almost works out. The biggest change (not extra input, but a real change) is the FX assing buttons. It only has 2 buttons per fx, and those are used for 4 decks (so shifted and unshifted).
Aside from that, there are some minor changes, like the sync button, key lock, up down, sync reset.

I don’t know what’s the best way to handle this. For now I copied the layout from mixxx 2.2, s/DDJSX/DDJSX3/ and try to work from there. Most of it is the same, and the renaming of DDJSX into DDJSX3 that’s referenced on almost every line doesn’t feel like good coding to me.
I don’t know how javascript namespaces work, I come from a Lua/Smalltalk world, and the key there is to have a local object, that you refer to, or you refer to self, and a higher level script will export it into a global namespace if needed. Refering to self or a local object in Lua is a lot faster than refering to a global object.
But that’s not the point now… The point is, that except for some fx changes I did, the files are still not diff-able, despite being almost identical.

Thanks anyway for the mapping, and the controller script also looks very well written, so it will not be that hard to change.

If the JS differences are small, it may be a good idea to undo the renaming of DDJSX to DDJSX3, factor out a common JS file for all 3 versions of the DDJSX, then put code specific to version 1 and 2 in one new file and code specific to version 3 in another new file. The new JS files will need to be listed in the respective XML files for each controller.

That’s about my idea. But I think I need to substitude most of the PioneerDDJSX3? references by just this, and have some tiny overrides here and there.
I will look into that. But first I want to play with mixxx for a while :slight_smile:.

Does anyone have a solid DDJ-SX3 mapping, then? Coming back to MIXXX after a few years on Serato.