Help Needed - Decoding Engine DJ Hotcue Format (quickCues BLOB)

Hi everyone,

I’m working on a C# application that reads the Engine DJ database (m.db) to display track information and hotcues. I’ve successfully retrieved all tracks with their MP3 tags (title, artist, album, BPM, etc.), but I’m stuck trying to decode the hotcue positions from the quickCues BLOB in the PerformanceData table.

What I’ve discovered so far:

The BLOB structure (after ZLIB decompression) appears to be:

- 8 bytes: Header (uint64, always 8)
- For each hotcue with a label:
  - 1 byte: Label length
  - N bytes: Label text (e.g., "Cue 1")
  - 1 byte: Flag (0x41)
  - 11 bytes: Unknown data (position + color + ?)
- For empty hotcues:
  - 1 byte: 0x00 (no label)
  - 8 bytes: -1.0 (double)
- Footer data

The problem:

I tested with a track that has 2 hotcues:

  • CUE1 at 00:03 (3 seconds)

  • CUE2 at 00:32 (32 seconds)

After the 0x41 flag, the data bytes are:

  • CUE1: 03 68 BA BF 0B 76 74 FF F4 D3 38

  • CUE2: 36 02 CA CE 54 0F 4A FF EF 81 30

The first byte works perfectly for CUE1 (0x03 = 3 seconds ✓), but fails for CUE2 (0x36 = 54 decimal, not 32 ✗).

What I’ve tried:

  • Interpreting bytes as uint16, uint32, uint64, float, double

  • Different byte offsets and combinations

  • Sample rate conversions (44.1kHz, 48kHz)

  • Reading position from different sections of the BLOB

None of the standard interpretations give correct values for both hotcues.

Questions:

  1. Has the hotcue format changed in recent Engine DJ versions?

  2. Is there additional encoding or a lookup table I’m missing?

  3. Could different hotcues use different storage formats?

  4. Does anyone have documentation or source code for parsing the current format?

I found this 2021 documentation, but it doesn’t seem to match the current format (mentions double position + ARGB color, but the byte count doesn’t align).

Additional info:

  • Engine DJ version: [user should specify]

  • Database file: m.db from Database2 folder

  • Track duration: 3:33 (213 seconds)

Any help would be greatly appreciated! If someone from the Denon/Engine DJ team could share the current format specification, that would be amazing.

Thanks in advance!

This is an SQL database, right?

So why not use it instead of messing around with the binary data yourself?

Yes - the database format has changed significantly since 2021 -

each time the lead digit in the firmware version number changes, the database structure changed.

blobs for waveform changed significantly- especially as the blob for waveform is no longer created in advance and stored anymore, instead, it’s created on-the-fly at time of track load

Hi, Maybe this can help ?

I has the latest v2 Engine Dj Database format description

Hope this can help …