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:
-
Has the hotcue format changed in recent Engine DJ versions?
-
Is there additional encoding or a lookup table I’m missing?
-
Could different hotcues use different storage formats?
-
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!