fix(#232): export memory cues to PCOB2 in DAT and EXT ANLZ files#234
Open
Radexito wants to merge 7 commits into
Open
fix(#232): export memory cues to PCOB2 in DAT and EXT ANLZ files#234Radexito wants to merge 7 commits into
Radexito wants to merge 7 commits into
Conversation
Memory cues (hot_cue_index = -1) were never placed in PCOB2 (slotType=0) because buildPcobSections/buildExtPcobSections always returned EMPTY_PCOB_2. buildPcobSlot already correctly handles slotType=0 and hot_cue_num=0 — just wire memory cues through: - DAT PCOB2: memory cues for CDJ hardware - EXT PCOB2: memory cues for Rekordbox PC - EXT PCO2 slot 2: already handled by buildPco2Sections (no change needed) Updated tests: replace "PCOB2 always empty" assertions with correct coverage of the new behaviour. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
761600a to
7e5d59b
Compare
Native Rekordbox (verified capture 42) writes mem_count=0x00000000 in
the PCOB slot-2 header when memory cue entries are present. Writing
0xFFFFFFFF (the hot-cue sentinel) causes Rekordbox to reject the entire
DAT file, hiding waveform, beatgrid, and all analysis data.
Rule: slot_type=0 (memory cues) with entries → mem_count=0x00000000
slot_type=1 (hot cues) or empty slot → mem_count=0xFFFFFFFF
Added regression tests locking in both values.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 tasks
Native capture 42 confirms EXT PCOB sections are always the empty 24-byte stub. Memory cues in the EXT file are written via buildPco2Sections into PCO2 slot 2, which was already correct. Writing entries into EXT PCOB2 caused Rekordbox/CDJ to reject the EXT file, dropping waveform, PQT2 beatgrid, and PCO2 cue colours from the display. - Revert buildExtPcobSections to always return EMPTY_PCOB_2 for slot 2 - Fix test: assert EXT PCOB2 is empty even when memory cues are present - Update protocol_rekordbox.md: DAT PCOB2 confirmed from capture 42 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
hot_cue_index = -1) produced an empty PCOB2 section in all ANLZ files — CDJs and Rekordbox silently ignored them.buildPcobSectionsandbuildExtPcobSectionsinanlzWriter.jsalways returnedEMPTY_PCOB_2as a placeholder while memory cue format was under investigation (fix: memory cues not showing in Rekordbox PC (PCOB2 reverse engineering) #208). The underlyingbuildPcobSlotalready handledslotType=0/hot_cue_num=0correctly — memory cues just needed to be wired through.mem_count=0x00000000, not0xFFFFFFFF(the hot-cue sentinel). Writing the wrong value caused Rekordbox to reject the entire DAT file, hiding waveform, beatgrid, and all analysis data.buildPco2Sections— no change needed.mem_countvalues.Files changed
src/audio/anlzWriter.js— wire memory cues into PCOB2 for both DAT and EXT; fixmem_countsentinelsrc/__tests__/anlzWriter.test.js— update PCOB2 assertions to verify memory cue output andmem_countvaluesTest plan
Closes #232
🤖 Generated with Claude Code