feat(gp): import dead notes and bends (GP import fidelity) - #51
Conversation
Two fidelity gaps in the GP importer, each representable in the canonical model but currently dropped: - NoteType::Dead notes carry a real (string, fret) but are skipped to loss; they should import as a positioned note bearing NoteMark::DeadNote. - effect.bend is never mapped; it should surface as a Bend TechniqueSpan (ADR-0018, Guitar Pro is source-of-truth).
Two representable GP techniques were discarded to loss; both now map onto the canonical model (ADR-0018): - NoteType::Dead -> a positioned note carrying NoteMark::DeadNote (keeps the muted hit's string/fret instead of skipping it). - effect.bend -> a Bend TechniqueSpan. The module loss note is updated: dead notes are no longer a loss.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughIn ChangesGP Importer: dead note and bend span handling
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
What
GP import fidelity (S3, ADR-0018): two techniques the importer used to discard to
LossReportnow map onto the canonical model.NoteType::Dead(a muted "X") → a positioned note carryingNoteMark::DeadNote(keeps its string/fret instead of being skipped).effect.bend→ aBendTechniqueSpan(was never mapped at all).Why
S3 made Guitar Pro a first-class input, but dead notes and bends — both representable in the canonical model — were dropped, losing real musical content from imported tabs.
TDD
Honest red → green in history:
test(gp)—dead_note_imports_as_dead_marked_note,gp_bend_emits_explicit_span(red, failing for the right reason)feat(gp)— implementation + the module loss note updated (dead notes are no longer a loss)Checks
cargo test -p griff-coregreen (incl. the two newgptests; 26 in the module)cargo clippy -p griff-core --lib -- -D warningsclean;gp.rsisrustfmt-cleanhttps://claude.ai/code/session_01TTUbGjzD8ysnVnCJnZJE95
Generated by Claude Code
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Tests