Loading Tracks

When loading a track, the host has to send a sequence of complex packets to the CDJ. These contain not only the usual track metadata such as artist, track title, etc. but also DJ related metadata such as Hotcues (including their color), the tracks BPM, its waveform and more. This page will describe how exactly this is achieved via the CDJs HID protocol:

String encoding

Unless specified otherwise, all strings are encoded in UTF-16LE and terminated with a null byte (or rather two 00 bytes since the string is encoded in UTF-16)

Track title

0123456789abcdef0022ILTrack title0010i+00

Artist

0123456789abcdef0023ILArtist0010i+00

Album

0123456789abcdef0024ILAlbum0010i+00

BPM

The BPM is serialized as a string as given in centi-BPM (so multiply the BPM value by 100 before serializing)

This only sets the average bpm metadata shown in the track details (when clicking the INFO button of the CDJ over the top of the screen). This has nothing to do with the the BPM displayed in the waveform view.
0123456789abcdef0025ILBPM0010i+00

Key

0123456789abcdef0041Key00000000000000000000100000000000000000000000000000000020000000000000000000000000000000003000000000000000000000000000000000

The While it’s certainly possible to send more than five Bytes for the key, The CDJ truncates it automatically after the fifth so prevent overflowing the screen. Contrary to the other packet types such as Artist or Tracktitle, the CDJ only accepts ASCII-encoded strings in this packet.

Genre

0123456789abcdef0042ILGenre0010i+00

Composer

0123456789abcdef0043ILComposer0010i+00

Lyricist

0123456789abcdef0044ILLyricist0010i+00