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.)
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.
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):
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.