Integrate loaded-track DJ metadata - #8
Open
djdefi wants to merge 10 commits into
Open
Conversation
Move mixer ownership and semantic control state out of MixScreen into a long-lived DjSession with a bounded command queue and cached snapshot. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Parse JAYDMETA/1 sidecars from SD with streaming CRC and record validation, expose concrete lookup records, and add converter-backed malformed fixture checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep empty-deck effect commands authoritative and defer Speed activation until a track is loaded. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep a successfully reloaded generation in verifying state after rebuild failure, and run the host regression checks through the existing CMake/CTest build. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep DjSession effect state authoritative for empty decks and defer Speed attachment until a channel is successfully loaded. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compare fractional cue, loop, grid, and phrase times exactly on ESP32 without fixed-width multiplication overflow, and reject the same invalid timelines in the converter. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bind bounded JAYDMETA sidecars to DjSession deck loads, publish compact metadata snapshots, invalidate associations with library generations, and gate index rebuild work on playback state. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the last verified card/index identity when a gated reload cannot allocate its index, and only refresh or invalidate deck metadata after a verified identity or proven card change. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.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.
This wires the reviewed
JAYDMETA/1reader intoDjSessionand the index-v2 library lifecycle. Sidecars remain optional: missing, corrupt, unsupported, stale, or ambiguous metadata never blocks ordinary indexed AAC browsing or playback.The integration keeps metadata association atomic with deck loads, publishes only compact copied snapshot fields plus semantic read-only accessors, invalidates associations on verified library identity changes, and prevents recursive index work while load/play/record activity is active. It does not add sync, quantize, seeking, loops, UI, or browser behavior, and it does not depend on JayD-Library CircuitMess#21.
Prerequisites and merge order
4ad5108ff1acc309ebc96d91d61d8cb24637f07eand MixScreen: load decks one at a time, stop blocking on both files CircuitMess/JayD-Firmware#42.307ba95ad9632d009b45f57ae821c59a53cfe617). This PR is stacked on Persist SongList index across opens #5.ada60009a9abf06252ccfcd68cfb4ad482f59378and review fix8c0ae10acbb2e28a8ba303c29ac64a57763b8f52.Dependency commit traceability
f5ade3d74d5e1541d145e9b14dcefa72ff9b0399->7588cc1; follow-ups41b1df3->c0a28bd, final74c98d39a5872bc154fac72b628924911201f2e2->6cdc72cfaa9a2fd0cc957cf9ecb834c42295fc5ea91a3e5->f17d7aa;6102f90->2808d3b4e967e2->68d25a8; final68577ee2b1201e09a9f52519ab411e07eda1967c->5ea7fc8307ba95ad9632d009b45f57ae821c59a53cfe617->74f72e1Each source/local pair has the same stable patch ID.
Behavior
/library.jydmduring SD/library initialization without making it a playback prerequisite.absent,valid,stale,corrupt, orunsupported, provenance/confidence, source rate/frame duration, BPM/key/rating, and cue/grid/downbeat/phrase capabilities and counts.openChannel()enqueue is the logical swap point; hot-swaps replace both association and path together.Verifying/manual-rebuild policy remains bounded.Validation
python3 -m unittest -v tools/jayd-library/test_jayd_library.py: 13 passedpython3 tools/jayd-library/firmware_reader_self_check.py: passed, including malformed and fractional-duration boundary fixtures4ad5108: passedada6000: +76 bytes flash, +0 bytes static RAM5b36e506: +19,568 bytes flash, +40 bytes static RAM