Skip to content

Fix Roland dump block identity, device routing and fingerprints - #564

Merged
christofmuc merged 2 commits into
masterfrom
codex/roland-block-identity
Sep 4, 2026
Merged

Fix Roland dump block identity, device routing and fingerprints#564
christofmuc merged 2 commits into
masterfrom
codex/roland-block-identity

Conversation

@christofmuc

Copy link
Copy Markdown
Owner

Reordered Roland DT1 dumps were accepted by address, then converted and renamed by message position. Equal-sized tone blocks could silently trade payloads. The shared implementation now validates complete streams and identifies blocks by their concrete address and program/device context before conversion, naming, tags or fingerprinting.

  • Reject malformed frames, wrong models/commands, bad checksums, unsupported lengths, duplicates, unknown/missing blocks and mixed devices/programs. Keep the documented JV-80/880/90/1000 and JV-1080/2080 length variants.
  • Keep XV destination state local to each compatibility wrapper. Initial and follow-up requests and native/JV-compatible sends use the detected device ID, independently of the MIDI channel argument.
  • Canonicalize fingerprints across order, name, device ID, program location and program/edit representation. Preserve ordinary legacy program hashes with pinned fixture vectors. Document the existing backup/reindex migration path, including list remapping and recording-file limitations, in docs/roland-fingerprints.md and the release notes.

Validation:

  • Full adaptation suite on Python 3.10: 1,101 passed, 2,074 skipped (python -m pytest --all . -q --no-header, from adaptations).
  • Roland regressions and existing JV/XV tests on Python 3.12: 181 passed (python -m pytest test_GenericRoland.py test_Roland_XV3080.py test_jv80.py -q --no-header). Includes permutations, both conversion paths, malformed streams, every non-name payload byte, legacy hashes, variant layouts, librarian deduplication and repeated/multiple-instance detection.
  • Separately prepared companion patches for the still-open JD-800/SC-88ST Pro/SD-90 PRs Add Roland JD-800 #538–540: 24 new regressions passed, plus 64 existing adaptation tests passed on Python 3.12. The companion patches remove their positional overrides and use the shared parser/address hook. Per scope, those adaptations and branch changes are not included in this master-based PR.
  • git diff --check passes. No hardware messages sent; the C++ database migration was audited but not executed.

Closes #560
Closes #561
Closes #562

@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: d579e206-a490-44ce-adf9-325124fe5a0c

📥 Commits

Reviewing files that changed from the base of the PR and between bf84166 and f950505.

📒 Files selected for processing (7)
  • adaptations/Roland_JV1080.py
  • adaptations/Roland_JV80.py
  • adaptations/roland/GenericRoland.py
  • adaptations/testData/Roland_XV3080/Pianomonics.syx
  • adaptations/test_GenericRoland.py
  • docs/roland-fingerprints.md
  • release_notes/2.10.0.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@christofmuc

Copy link
Copy Markdown
Owner Author

@CodeRabbit review

@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@christofmuc
christofmuc merged commit 29e68c5 into master Sep 4, 2026
5 checks passed
@christofmuc
christofmuc deleted the codex/roland-block-identity branch September 4, 2026 11:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant