DDJ-SB3 Deck 3/4

Hello Everyone!

I’ve done some controller mapping/scipting on my Pioneer DDJ-SB3, based on the DDJ-SB2 script. I would say, that 90% of the controls works now as intended (except for some pad controls), but I have no idea how to enable Deck 3 and 4.
As far as my knowledge goes (which is not that much), the controller should send the Deck play,cue etc. signals on Midi Channel 3 and 4 when the Deck button is pressed, but I wasn’t able to get any signal from channel 3 and 4. In Serato Lite, the Deck buttons are working as intended (so I can use Deck 3 and 4 inside the software), and they light up. But when Serato is not running, it doesn’t even light up when I press them. The buttons themselves are functioning, I checked it with --mididebug, and Shift+Deck4 enables AutoDJ.

hello !
same pb impossible to enable deck 3 & 4 ( C & D)
i try to found it with another controller
if you have some news :slight_smile: post it :slight_smile:

I don’t know if it is the case with DDJ-SB3, but some controllers do no have physical changes for decks 3&4, but instead it is simulated in software. If that is the case, decks 3 and 4 would send signals for decks 1 and 2, and the software (the mapping in this case) needs to simulate the change and light the leds accordingly.

Also, I had a controller that allowed to disable decks 3 / 4, or to send them as decks 1 / 2. This was done from the driver control panel.
It might not be related, but it could be that the controller needs a specific message to tell it to allow decks 3 / 4.

I don’t have any Pioneer controller, so I can’t help.

How did you determine this? Did you watch the incoming MIDI signals when running Mixxx with the --controllerDebug command line argument? If the controller does change the MIDI channel for decks 3 and 4, you’ll need to duplicate all the mappings in the XML file for decks 1 & 2 for decks 3 & 4. (We’re working towards removing the need for the XML file, but for now copy & paste then find & replace will have to do.)

I checked it with both --controllerdebug and --mididebug, and not a single midi message was on channel 3 or 4. The official Midi mapping pdf file from the Pioneer support site says that its capable of 4 channel mode. The Deck 3/4 buttons doesn’t even light up when I send Midi messages to them,so my guess is that it needs a special one to enable them. I was curious and sent a couple of Midi signals to the controller, and some of them triggered functions that I was unable to do in the first place. It needs some further investigations.

Pioneer’s MIDI documentation says it uses MIDI channels 3 & 4 for decks 3 & 4. As a guess, maybe the computer needs to send the same MIDI message that the controller sends when the deck toggle button is pressed to get the controller firmware to switch modes. You’d probably need to do that anyway to keep the LED for the deck toggle button lit. If that doesn’t work, you can do the deck switching in JS even if the MIDI channels stay with just 1 & 2.

Hey butyokkapitany, could you share your work-in-progress mapping so that others can try it out? I also have a DDJ-SB3 and would like to try MIXXX with it.

I’d really like that as well! I just got one for my birthday but don’t really like that i can only use it in Windows sofar…

Any update on your map for the SB3? Would love to have it even if it’s still WIP.

Hopping into this thread since I’m also working on the mapping for the SB3, hope that’s ok! I’m not new to software, but I am new to Mixxx mappings and DJing.

What I’ve observed: the mapping is very similar to the SB2 mapping that already exists. To get started, I just copied the SB2.js and .xml files from Mixxx into my local settings /Controllers/ folder, renamed to SB2, and find-and-replaced SB2->SB3. That got a LOT of things working! Things that definitely don’t work:

  • Deck 3/4, which I guess posters up-thread are correct about re: “need to echo back the noteon from the deck button over MIDI OUT.”
  • Slip on either deck (seems like it SHOULD work as far as the XML is concerned, but… doesn’t?)
  • The shift states on the FX1/FX1 “1,2,3” buttons, which look like they should influence looping? But even when I press them, they just toggle the fx units?
  • The transport controls below the pads (back-to-start, rewind, ffwd)
  • The autoloop/ in/out buttons (looks like on SB2, these were on the hotpads; SB2 has “AUTOLOOP” and “1/2” / “2x” buttons?

It’s possible that some of this stuff works, but I don’t know Mixxx well enough to use it? It’s also possible I’m missing stuff since, as I said, I’m new here and on some level just satisfied that I can make cool vinyl scratching noises! :smiley:

Any thoughts on how to attack this? I’m happy to hack on it but I’ve got a bit of a chicken/egg problem since I also mostly don’t know what it’s SUPPOSED to do. I feel like if I had one good example I could probably duplicate it to fix a bunch of these but I’m missing a big picture on how the Pioneer business works…

[Edit]: Attaching progress so far. This is 100% derived from the SB2 mapping, so … no intention to rip anyone off or claim anyone else’s work as mine, just sharing so that other people don’t have to manually make the edits I describe to catch up with where I’m at.[/edit]
Pioneer-DDJ-SB3-scripts.js (44.6 KB)
Pioneer-DDJ-SB3-scripts.js (44.6 KB)

has anyone completed mapping the SB3? im having trouble with looping.

Hey all, Any updates on the outstanding issues for the SB3?



I am also interested in getting the SB3 into the Mixxx. I’ve done a few gigs using the SB2 mappings on the SB3, so it’s functional for me.

I went ahead and set up a Github repo for the mapping files, hoping to maybe get all of us working together instead of separately: github.com/Dancephy/Mixxx-Pioneer-DDJ-SB3. Hopefully we can centralize our efforts there. The files committed at this time are the same as the SB2 ones with the namespaces changed, as was mentioned earlier.

I started looking at the issue with the 3/4 decks and it seems the mapping is treating the deck 3 and 4 buttons as SHIFT instead of a separate button. I just started looking last night so haven’t found an answer yet. If anyone has made any progress or wants to add a PR, that would be great.

On a related note, I tried creating an account on the wiki and was unable (it called me a spammer). I was trying to follow the process and start the SB3 page on the wiki. In the meantime I am going to update the readme there as if it were the wiki page but if anyone know how to get a wiki account, let me know.

First post, so apologies if I did something wrong. I tried follow the guidelines.

Thank you for working on this. As noted on the wiki, please fork the mixxxdj/mixxx repository and add the mapping files to the res/controllers folder so you can make a pull request to include it in Mixxx later.

Note that the code for the DDJ-SB2 mapping is a bit of a mess. It started from the DDJ-SB mapping which predates the Components library. I was visiting a friend who happened to have a DDJ-SB2 and modified some parts of it to use the Components library, but I only had a few hours so I didn’t have time to finish that.

Could you take a screenshot of the error message you get when trying to register for the wiki?

Thanks for the feedback. It is starting to make sense now where things are vs where they should be with this mapping.

I managed to create a login just now as I was trying to create a screenshot, so all good on that side.

I wanted to say that after going through this mapping file and seeing what’s involved, I have to say the folks here are a committed group. Wow. Congrats.

Thank you for doing this, Javier! I feel like I should plug in my SB3 and try to make some progress, now that there’s a github up. I’d like to get the transport controls (bottom set of pads) going at least for decks 1/2…

Part of the problem is that I’m indecisive about how to map a bunch of things, because I don’t actually use Mixxx at a very sophisticated level, but I’ll see if I can help!

THANK YOU for describing the relative age of the SB2 mapping, and pointing me to Components. That got me to the right page in the Wiki – I have been struggling to wrap my head around all the complexity in Mixxx and figure out best practices, and this seems immensely helpful. I’m actively avoiding thinking about work today, and developing some piece of a modern DDJ-SB3 mapping might be the ticket…

Ok, newbie question: I’m looking at applying some of what’s in the midi-components documentation to a fork of Javier’s repo, but the documentation seems to be written with the idea of a MIDI device that always outputs the same noteon/noteoff for each physical button no matter which deck layer is active. From reading the docs, the SB3 keeps track of whether or not the deck3/deck4 button is active, and actually sends different noteon/noteoff values. This is my first controller so I’m not sure how unusual that is, and the “right” way to map that – part of me wonders if I shouldn’t just map both the “deck 1” and “deck 3” notes to a “leftDeck” object, then let Mixxx sort it out based on the state of the deck selection switch, but I’m not 100% sure.

About the controller sending different noteon/off codes when using the extra decks, it depends from controller to controller. What is more usual is that buttons keep the codes, and use a different midi channel to differentiate, so probably that’s why that documentation assumes it.
If your controller really changes the codes, then you will need to define different decks on your script instead of reusing the same and “switching” it.

Okay guys. Sorry for my late response, but finally I am able to report back with something cool. I was able to make some changes to the scripts and mappings, and with that, I think that the controller is now in a “usable” state, most of the stuff is working, but there is a lot to do to put it in a fully supported state. I was able to use the controller on some gigs, and I even streamed one mix on my Twitch channel.

So what DOES NOT WORK with this mapping/script:

  • No Deck 3/4
  • No Shift+ Hot Cue/Fx Fade/Pad Scratch
  • No Hot Cue 5-8
  • No Manual Loop In-Loop Out
  • FX Fade kinda works, but its basically useless anyways
  • Pad Scratch is the same thing
    What DOES work now:
  • Auto Loop: it works like in Serato, pressing the button creates a loop, halve/double buttons increase/decrease the size of the loop, pressing the Auto Loop button again exits the loop. Shift + Auto Loop jumps back at the last activated loop area.
  • Shift + Vinyl enables Slip mode
  • Master Cue button enables the Master mix into the headphone. Note: when you start Mixxx, make sure that light is OFF to work correctly, otherwise the Master mix is gonna be sent when the light is OFF, and that can be confusing.
  • Every other stuff (FX, Browsing, Sync, Key Lock, Auto DJ) is unchanged and does fully work. Please refer to the DDJ-SB2 Wiki to how to use those
  • The Master Level knob only controls the controller’s RCA output level, and the Headphone knob does the same with the Headphone Jack

As I said, there is a lot to do to make it fully functional, but I honestly think, that it is perfectly usable now for a 2 Deck setup. For the installation, please refer to https://www.mixxx.org/wiki/doku.php/controller_mapping_file_locations.
Hope you have fun!
DDJ-SB3.midi.xml (181 KB)
Pioneer-DDJ-SB3-scripts.js (45.5 KB)

Hi Guys.

I finally got to work Deck 3/4. I’m also fixed some pad controls:

  1. hot cues are working,
  2. beat-jump working
  3. sampler is, but the lights needs some fix, (i will do it later)

Loop section buttons are working too.

checkout: github.com/guilherme-otran/Mixx … er-DDJ-SB3

also, expect more updates in this repo, there is more things i’m planning to fix and make work better.

1 Like