Loading Tracks and Settings

Rekordbox provides a few mechanisms by which linked players can be remotely managed. This section explores the packets used.

Loading Tracks

When running rekordbox, you can tell a player to load a track from the collection by dragging the track onto the player icon. This is implemented by a command that tells the player to load the track, and that command can be used to cause any player to load a track which is available somewhere on the network (whether in the rekordbox collection, or in a media slot on another player).

To do that, send a packet like the one shown below to port 50002 on the player that you want to cause to load the track, with appropriate values for D (the device number you are posing as), Dr (the device from which the track should be loaded), Sr (the slot from which the track should be loaded), Tr (the type of the track), and rekordbox (the track ID). These are the same values used in CDJ status packets.

0123456789abcdef5173707431576d4a4f4c190010Device Name (padded with 00)012000DlenrD000000DrSrTr00rekordbox300000003200000000000000000000000040D0d000000000000000000000000000000500000000000000000
Load Track command packet.

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

at byte 40 (destination_device, zero-based) reflects the player number on which the track is supposed to be loaded. Unlike most device numbers in the protcol, this value numbers the players starting with 0 (for player number D this has the value D - 1). So for instance when loading a track on player 1, will be 00. Sending this seems not to be required, as the player will load the track even if this byte does not have the correct value.

Assuming the track can be loaded, the player will respond with a packet whose type indicator (at byte 0a) has the value 1a to acknowledge the command, and will load the specified track.

Unfortunately, although the XDJ-XZ is able to load tracks from a rekordbox collection when rekordbox tells it to, it does not seem to be able to be remotely instructed to load tracks from its own USBs, or from other players. The packets that rekordbox sends to achieve this are slightly different from the one shown above, in that byte 20 has the value 01 rather than 02, and byte 4b has the value 32 rather than 00. But even sending packets constructed exactly like that will not cause the XDJ-XZ to load a track, unless they are coming from rekordbox, and specifying a track from its own collection.

Loading Settings

When rekordbox is linked to a player you can also tell it to apply the My Settings configuration to that player immediately by navigating to Preferences  CDJ & Devices  My Settings and scrolling down to find the section “Remote Settings using Pro DJ Link”. When you send the settings, a 116-byte packet like the one shown below is sent to port 50002 on the target player.

0123456789abcdef5173707431576d4a4f4c340010Device Name (padded with 00)0220DDslenr1234567800000003OADBlQACL30L01BjrIjrSF010101BdsLelSyncAPMQbvAhcChc004000Ln0000TimeJogACMTRtPM0000VSAJDBpbBjl500000000000000000000000000000000060000000000000000000000000000000007000000000
Load Settings command packet.

This is unusual for a port 50002 packet in that byte 1f immediately following the name has the value 02 rather than the 01 we usually see, and there is no subtype byte following it. Instead, we follow that with D (the device number we are posing as), and Ds (the device we are sending this packet to, in order to apply the settings). lenr has the value 0050, reflecting the number of bytes which follow it.

The value OAD at byte 2c controls the player’s On Air Display feature. The value 80 turns it off, and 81 turns it on.

The value Bl at byte 2d controls the brightness of the player’s LCD screen. Legal values range from 81 (the least bright) to 85 (maximum brightness).

The value Q at byte 2e controls the player’s Quantize mode. The value 80 turns it off, and 81 turns it on.

The value ACL at byte 2f controls the player’s Auto Cue Level, with the following meanings:

Table 1. Auto Cue Level values.
Value Meaning

80

-36 dB

81

-42 dB

82

-48 dB

83

-54 dB

84

-60 dB

85

-66 dB

86

-72 dB

87

-78 dB

88

Memory

The value L at byte 30 sets the Language used in the player interface, with the following meanings:

Table 2. Language values.
Value Meaning

81

English

82

French

83

German

84

Italian

85

Dutch

86

Spanish

87

Russian

88

Korean

89

Simplified Chinese

8a

Traditional Chinese

8b

Japanese

8c

Portuguese

8d

Swedish

8e

Czech

8f

Magyar

90

Danish

91

Greek

92

Turkish

The value Bjr at byte 32 controls the brightness of the player’s jog ring. The value 80 turns off jog ring illumination, 81 illuminates it dimly, and 82 illuminates it brightly.

The value Ijr at byte 33 controls the Jog Ring Indicator feature of the player (I beleve this causes it to flash when a track is nearing the end). The value 80 turns the indicator off, and 81 turns it on.

The value SF at byte 34 controls the player’s Slip Flashing feature. The value 80 turns it off, and 81 turns it on.

The value Bds at byte 38 controls the the brightness of the player’s disc slot illumination. The value 80 turns it off, and 81 illuminates it dimly, and 82 illuminates it brightly.

The value Lel at byte 39 controls the player’s Eject/Load Lock feature. The value 80 unlocks it, and 81 locks it.

The value Sync at byte 3a controls the player’s Sync feature. The value 80 turns it off, and 81 turns it on.

The value APM at byte 3b controls the player’s Auto Play Mode. The value 80 activates auto play (continue), and 81 chooses Single Play.

The value Qbv at byte 3c controls beat value used when Quantize is in effect. The value 80 quantizes at the full beat level, 81 quantizes at half beats, 82 at quarter beats, and 83 at eighth beats.

The value Ahc at byte 3d controls the player’s Hot Cue Auto Load feature. The value 80 turns it off, 81 turns it on, and 82 allows the rekordbox track-level setting to control whether the hot cues should be loaded when loading the track.

The value Chc at byte 3e controls the player’s Hot Cue Color feature. The value 80 turns it off, and 81 turns it on.

The value Ln at byte 41 controls the player’s Needle Lock feature. The value 80 unlocks it, and 81 locks it.

The value Time at byte 44 controls the Time Mode displayed on the player. The value 80 displays Elapsed time, while 81 displays Remaining time.

The value Jog at byte 45 controls the player Jog Mode. The value 80 selects CDJ mode, while 81 selects Vinyl mode.

The value AC at byte 46 controls the player’s Auto Cue feature. The value 80 turns it off, and 81 turns it on.

The value MT at byte 47 controls the player’s Master Tempo feature. The value 80 turns it off, and 81 turns it on.

The value Rt at byte 48 controls the player’s Tempo Range. The value 80 selects ±6, 81 selects ±10, 82 selects ±16, and 83 selects Wide.

The value PM at byte 49 controls the player’s Phase Meter type. The value 80 selects type 1, and 81 selects type 2.

The value VSA at byte 4c controls the player’s Vinyl Speed Adjust feature. The value 80 selects Touch & Release, 81 selects Touch, and 82 selects Release.

The value JD at byte 4d controls the player’s Jog Display mode. The value 80 selects Auto, 81 selects Info, 82 selects Simple, and 83 selects Artwork.

The value Bpb at byte 4e controls the brightness of the player’s performance pads/buttons. Legal values range from 81 (the least bright) to 84 (maximum brightness).

The value Bjl at byte 4f controls the brightness of the player’s jog wheel LCD screen. Legal values range from 81 (the least bright) to 85 (maximum brightness).

The My Settings preferences page in rekordbox also has a Mixer section, with a variety of options in it. However, changing these had no effect on the packet that rekordbox sent, and did not seem to have eny effect on the mixer section of my XDJ-XZ, either. My best guess is that these settings might simply not be controllable remotely from rekordbox yet. If anyone can find evidence otherwise, please open an issue, or get in touch on Beat Link Trigger’s Gitter channel to share what you have discovered.