Mixer Integration

This section describes a couple of packet types that support the tight interaction between DJM mixers and CDJs, specifically the “Fader Start” feature that can start and stop playback in response to movements of channel faders and the cross-fader, and the “Channels on Air” feature that allows players to change the color with which their platter is illuminated depending on whether their output is currently audible in the mix.

Fader Start

Thanks to @ErikMinekus we know that we can cause players to start or stop playing by sending a packet like the one shown below to port 50001 of the players, with appropriate command values for C1 through C4 telling that player what to do. A command value of 00 tells the corresponding player to start playing if it isn’t already, as long as it is positioned at the current cue point. The command 01 tells that player to stop playing and return to the cue point, and the value 02 tells the player to stay in its current state. (It also seems to work to broadcast the packet on port 50001, which makes sense, since it can be interpreted individually by each player, so a single packet can be used to affect the states of all four players if desired.)

0123456789abcdef5173707431576d4a4f4c020010Device Name (padded with 00)012000DlenrC1C2C3C4
Fader start packet.

Since this packet uses subtype 00, the length sent in lenr has the value 0004, reflecting the four bytes which follow it.

The XDJ-XZ does not support fader start, and its built-in decks do not respond to the command even if they are sent from another program.

Channels on Air

Thanks to @jan2000 we know how the mixer reports which channels are currently on-air, and we can simulate this feature ourselves when there is no DJM (or XDJ-XZ) on the network. (If there is a DJM or XDJ-XZ present, it will quickly reassert its own on-air state for all the channels.)

The mixer broadcasts a packet like the one shown below to port 50001, with appropriate flag values for F1 through F4 telling each player whether its channel is on-air. A flag value of 00 tells the corresponding player it is off the air (silenced, either due to the cross fader, channel fader, or input source switch for that channel), while 01 means the player’s channel is on the air.

0123456789abcdef5173707431576d4a4f4c030010Device Name (padded with 00)012000DlenrF1F2F3F40000000000
On Air flags packet.

Since this packet uses subtype 00, the length sent in lenr has the value 0009, reflecting the nine bytes which follow it.

Six Channel Version

The advent of the CDJ-3000 and DJM-V10 introduced the possibility of having devices on up to six channels. To support that, the mixer sends a larger variant of the packet, with two new flag values, F5 and F6 (thanks to @AhnHEL for the packet captures which revealed these details):

0123456789abcdef5173707431576d4a4f4c030010Device Name (padded with 00)012003DlenrF1F2F3F40000000000F5F600300000000000
On Air flags packet (six channels).

This packet uses a new subtype 03 for some reason (perhaps to identify it), and the length sent in lenr has the value 0011, reflecting the seventeen bytes which follow it.