Skip to content

dbserver: match rekordbox's Display Song Info rows - #92

Merged
vynulldev merged 1 commit into
mainfrom
conformance-display-songinfo
Oct 16, 2026
Merged

vynulldev merged 1 commit into
mainfrom
conformance-display-songinfo

Conversation

@vynulldev

@vynulldev vynulldev commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

What & why

link-spec's Display Song Info suites (rekordbox 7.2.19) showed our TRACK INFO rows (0x2002) diverging from rekordbox's in layout and content.

  • Layout: the sixteen rows follow rekordbox's order (bitrate and year before label) and its argument-0 flags (1 on the category rows, 0 on Date Added and Comment). The colour row's type is 0x13 + the colour ID, as in the COLOUR menu (0x14 = Pink), where it was fixed at 0x13.
  • Title row: now an ordinary track row (key ID, BPM and the rest in the extended fields), whose second column the render request picks: an eight-argument render with gate 1 shows its override column, or its column argument when the override is 0; shorter renders and gate 0 show the plain title. The CDJ-2000NXS2's TRACK INFO uses a six-argument render, so it gets the plain title as before. Delivery Info's title row composes the same way.
  • String limits: 127 UTF-16 units for the title and category names, 255 for Comment and Date Added, as rekordbox cuts them.
  • Date Added: this is rekordbox's StockDate. The dump read DateCreated, which is often empty, so imported tracks showed their import date. DateCreated is now kept separately, and smart playlist rules on dateCreated test it while stockDate rules test Date Added, as rekordbox's do.

Tests cover the row layout, the render-time title column, the string limits and the two date fields.

Conformance against rekordbox 7.2.19: 72 more cases match exactly and none stop matching (2,581 to 2,653 of 4,250). The populated case now matches in every ordinary Display suite, 20 of 21 render variants match, and pagination matches fully. Not covered: rekordbox's model-specific behaviour for XDJ all-in-one requesters (no reply for XDJ-XZ/AZ/1000MK2, a moved Comment row for the XDJ-RX3), which depends on the requester's status packets that the conformance server doesn't receive; and string fixtures that need custom colour names or verbatim malformed dates.

Hardware testing

  • Tested on: CDJ-2000NXS2

Checklist

  • go build ./..., go vet ./..., and go test ./... pass
  • gofmt -l . is clean
  • New source files carry an SPDX header (GPL-3.0-or-later)
  • Tested on real hardware (deck + firmware noted above), or this change doesn't affect deck behaviour
  • I agree my contribution is licensed under the project's GPLv3

link-spec's Display Song Info suites (rekordbox 7.2.19) showed our TRACK INFO rows diverging in layout and content.

- The sixteen rows follow rekordbox's order (bitrate and year before label) and its argument-0 flags (1 on the category rows, 0 on Date Added and Comment). The colour row's type is 0x13 + the colour ID, as in the COLOUR menu, where it was fixed at 0x13.
- The title row is an ordinary track row (key ID, BPM and the rest in the extended fields) whose second column the render request picks: an eight-argument render with gate 1 shows its override column, or its column argument when the override is 0; shorter renders and gate 0 show the plain title, which is what CDJ-2000NXS2 TRACK INFO requests. Delivery Info's title row composes the same way.
- Strings are cut to rekordbox's limits: 127 UTF-16 units for the title and category names, 255 for Comment and Date Added.
- Date Added is rekordbox's StockDate; the dump read DateCreated, which is often empty, so imports showed the import date. DateCreated is kept separately, and smart playlist rules on dateCreated test it, as rekordbox's do, while stockDate rules test Date Added.

Tests cover the row layout, the render-time title column, the string limits and the two date fields.
@vynulldev
vynulldev marked this pull request as ready for review October 16, 2026 17:34
@vynulldev
vynulldev merged commit 6141291 into main Oct 16, 2026
1 check passed
@vynulldev
vynulldev deleted the conformance-display-songinfo branch October 16, 2026 17:34
@vynulldev vynulldev added the bug Something isn't working label Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant