Pioneer DDJ-400

Anybody got a mapping for the new Pioneer DDJ-400

Great controller and it comes with Rekordbox as well… It’s a shame though it doesn’t work very well with Rekordbox :frowning:


I’m working on a midi preset for Mixxx.
it should be in a alpha state in a couple of weeks I think.

When it’s ready I’ll hope there a some testers around for some feedback.


do you published it ( github ) ?

Not yet. I will do that after implementing the Output Section.

Here is my current Version for testing / feedback.
KEY SHIFT MODE - a “permanent” pitch (comes next)
Output (Lights) not implemented yet (comes after keyshfit)
BEAT FX (the Whole Element)
BROWSE +SHIFT - Waveform Zoom
*Channelfader +SHIFT - Fader start
*SHIFT Crossfader +SHIFT - Fader start
*PAD FX Mode 1&2 with shift - how to set more than 3 Effects in UI?

  • = is there an equivalent in MIxxx?

Also I need to cleanup everything, optimize the JS and check the Dev-Guidelines again,
Feedback is very welcome!
DDJ-400_script.js (5.73 KB)
DDJ-400_MIDI_1.midi.xml (103 KB)


many thanks. I can help for further implementations !!

At the moment I have just modified the jog resolution to 800 ( as read by a midi monitor for a revolution ). And for the pitch bend, I’m not sure but I’ve just soften the thing with a divider ( 0.3 )


you just have to adapt the ddj-sb2 no ?

here is the files adapted to work on.

I was just searching how they made for the jogwheel…
DDJ-400-scripts.js (41.1 KB)
DDJ-400.midi.xml (176 KB)

IMHO the SB2 Implementation is too much Javascript for my taste. The Author seemed to avoid the XML as much as possible.
In my approach the most controls can be edited using the midi wizard without knowing/using Javascript at all.
Also I wanted to learn how to implement this myself :slight_smile:

I’ve reviewed the SB2 Implementation. There are many mappings that arn’t compatible with the DDJ400 Functions besides that the SB2 has 4 Decks.
Eg. there is no Bank-Mode in DDJ400. Pioneer Mapped a KeyShift function on this mode. Sure you can map the Bank mode to this but my approach is to implement the original Functions as good as possible.

here is the midi message list. … 9E3D14B8EB

This is the one I used to implement the functions (the controls in the XML File are in that order).
Also I used the User Manual and Hardware Layout to match the described functionality

* Mixer Section (Faders, EQ, Filter, Gain, Cue)
* Browsing and loading
* Jogwheels, Scratching, Bending
* cycle Temporange
* Beat Sync
* Beat Loop Mode
* Sampler Mode

            * Keyboard Mode (check pitch value)
            * Keyshift Mode (check pitch value) 

            * Loop Section (initial support for loop in, out, reloop/exit, loop double + halve)
            * PAD FX (without shift slots)
            * Hot Cue Mode (in/4Beat Loop not implementred yet)
            * Beat Jump Mode (increse, decrease Beat count not implemented yet)
        Not implemented yet:
            * Effect Section (Left, right, fx select, level/depth)
            * Output (lights)

        Version 0.1 - 13.05.2019:
            * added Keyboard mode (temporary shifting key by halftones - implemnted by pitch)
            * changed function Shift + PAD in Sampler Mode 
                - while playing Sample stops play and jump to start 
                - while not playing load selected track into PAD
            * added Keyshift Mode (Sampler +Shift)
            * added BROWSE +Shift - Waveform zoom +/-

DDJ-400_script.js (6.49 KB)
DDJ-400_MIDI_1.midi.xml (112 KB)

that is perfect man ! I was working by my side. But you’re likely more skilled !

Thank you very much.
I’m going to publish version 0.2 today
I just completed the Beatjump mode which needs a test.
The Hot Cue Mode and Loop Section comes next.

great. I’ve spotted some errors. I’m interested about giving ideas for this new mapping.

Sure you can put you Ideas here.
Here is the version I promised yesterday

i published it on github: <- always laltest <- always laltest

Issue Bugs on Github or send a PM.

Version 0.2 - 15.05.2019:
* added Beatjump Beatcount manipulation increase (pad 8 + shift), decrease (pad 7 +shift)
* fixed a bug in beatloop with 1/4 and 1/2 Beat loops
* fixed a bug in BEAT SYNC + Shift (cycle tempo range)
* added support for saving and playing loops on Hot Cue Pads
* added support for loop in + out adjust (while looping press and hold in or out + jog wheel to adjust the loop poit position)
* fixed a bug in Tempo Range switch (Beat Sync + shift)

Version 0.3 - 18.05.2019:
* added Effect Section funtions
- Beat FX left and right selects the Effect Slot in FX3
- Shift + Beat FX On/Off disables all Effect Slots

* Mixer Section (Faders, EQ, Filter, Gain, Cue)
* Browsing and loading + Waveform zoom (shift)
* Jogwheels, Scratching, Bending
* cycle Temporange
* Beat Sync
* Beat Loop Mode
* Sampler Mode

            * Keyboard Mode (check pitch value)
            * Keyshift Mode (check pitch value)
            * Beatjump mode
            * Hot Cue Mode (including loops)
            * Loop Section: Loop in / Out + Adjust, Call, Double, Half
            * Effect Section (Beat FX left + Right - select the Effect Slot (not Effect BPM))

            * PAD FX (only slots A-H, Q-P) <- these are more than enough normally 
        Not working/implemented:
            * Channel & Crossfader Start
            * Output (lights)

Please consider publishing a pull request for inclusion in 2.3.0. If the mapping is bundled as a preset and documented in the wiki this will get users started much more easily.

Use Jan’s PR for the DJ-505 as a perfect example on how to proceed: Mark the PR as work-in-progress [WiP] until the basic functionality works and you consider it ready to be merged. The PR is a good place to collect first feedback and for discussions.

That is what I wanted to do after I implemented the LEDs/Output.
The Wikipage comes afterwards.

Thank you for providing a PR example.

I also made a mapping for the DDJ400 (but appear to be a little late :unamused: ):


Channel level meter (not set to master)
Beat FX (minus the duration of the effect [left right buttons])
Jogwheels (scratching, search, etc.)
Mixer section
LEDs (except for blinking LED behviour)
Everything else not listed in “Not Working section”

Note: Deck 1 - will have loop in unlit when a loop-in point is set (was there to test blinking of LEDs)

Kind-of Working:

Library browser (click and shift click work) but it has to be used with Beat FX left and right buttons to either browse tracks or to browse the library categories
Deck CUE buttons are unlit on track load (Pioneer CUE mode seems wrong in mixxx - CUE is unlit during playback - I changed the callback function to keep the CUE lit during playback but on a track load it remains unlit)

Not Working:

Long press buttons i.e. loop in (long press) == 4 beat loop
Memory cue buttons (seems to be rekordbox specific)
Beat sync
Shift behavior for load buttons
Release FX
Channel start
Crossfader start


Loop-in/Loop-out flashing once set

Performance Pads:

Beat-loop (page 1 is mapped out)
Everything else (except for Hot-Cues)

Script file has left over comments of me trying to implement working LEDs
DDJ-400_MIDI_1.midi.js (22.1 KB)
DDJ-400_MIDI_1.midi.xml (47.4 KB)

the résolution for scratch is in fact 720

Hi, I implemented this ~2 weeks ago including LEDs. Checkout my github
I think one could use that. I also tried to stick to Rekordbox default as possible.

Thanks for the information. How do you know this by the way?