This is a 4 deck script mapping for the Pioneer DDJ-400 controller for Mixxx.
This is based on the existing 2-deck script mapping, but modified to allow toggling between controlling decks 3 and 4 like the Pioneer DDJ-SB3.
- Toggle decks by pressing
BEATSYNC +SHIFT
. Channel1 can be toggled to control Channel3; Channel2 can be toggled to control Channel4. - Toggling decks will switch all deck controlls (ie, pitch, play, pads, etc.) to the new deck.
- Channel faders, headphone cueing, EQ, filters, trim, track loading, and VU meter will also be switched.
- Channel faders, EQ, filters, and trim use softTakeover to avoid large jumps in values when switching decks and using those controls.
- An solidly illumniated
BEATSYNC
button means the alternate deck is currently being controlled (ie, deck 1 is controlling deck 3, etc.)
- Cycle tempo range (previous mapped to
BEATSYNC +SHIFT
) is no longer mapped since this is how decks are toggled. Otherwise, everything else should work like the official mapping. - Long pressing of
BEATSYNC
will still enablesync
for the active deck; however, it will not turn on theBEATSYNC
light. When theBEATSYNC
light is on, that indicates the alternate deck is being controlled (ie, decks 3 and 4). - Using a controller intended for 2 decks to operate a 4 can take some getting used to. This might best be used to only control the decks while using an external 4 channel mixer (which is what I plan to do with this eventually).
- Download
Pioneer-DDJ-400-4decks-script.js
andPioneer-DDJ-400-4decks.midi.xml
files. - Place them in your User Controller Mapping Folder
- Open Mixxx, go to Preferences > Controllers and select
Pioneer DDJ-400 4 Decks
from theLoad Mapping
drop down. (it will probably be at the top of the list with a wrench icon next to it).
- Secondary pad modes (keyboard, pad FX1, pad FX2, and key shift ) are still not implemented with this. These would normally be activated by the pad mode button +SHIFT. Doing so will make the button begin flashing, but will not do anything.
pfl +SHIFT
(channel cue +SHIFT) is mapped to two things: 1) togglequantize
and 2)bpm_tap
. This was part of the existing mapping and seems fine.bpm_tap
appears to take at least 3 taps over a short time in order to take affect so it's unlikely to be activated when just toggleing thequantize
.- MSB/LSB based on: https://github.com/mixxxdj/mixxx/blob/main/src/controllers/midi/midicontroller.cpp#L316-L336
- Use BEAT SYNC + Shift to toggle decks
- Revent to original RELOOP/EXIT + Shift in XML
- Init Cue lights when toggling decks
- Init Play lights when toggling decks
- Update track loading control for decks 3 and 4
- Implement CUE/LOOP CALL
- Configure BEAT LOOP pads
- Configure BEAT JUMP pads (see also Beatjump output for pads 7&8)
- Update headphone cue controls to operate on decks 3 and 4
- Fix init play button light
- Update fader controls to operate on decks 3 and 4
- Consider how to set faders 3 and 4 on init
- Update the EQ controls to operate on decks 3 and 4
- Update trim controls to operate on decks 3 and 4
- Update filter controls to operate on decks 3 and 4
- Use softTakeover for EQ, trim, filter and volume faders
- See if anything needs to be done with SAMPLER pads
- Investigate pad buttons + shift mappings
- Update shutdown to flip off the beat sync light, loop pads, hot cue pads
- Clean up XML (delete commented out outputs)
- Clean up JS
- Update code comments as needed
- Configure VU meter
- Update README with instructions
- Move LEVEL/DEPTH + SHIFT customization to a branch (beatFxLevelDepthRotate)
- Post in Controller mappings forum for feedback
- Update
forums
XML node with link - Figure out something to do with BEAT FX for channels 3 and 4