feat: import Guitar Pro tapping as a tapped note (#75) - #90
Conversation
Failing test for mapping Guitar Pro's beat-level tapping (BeatEffects slap_effect == Tapping) onto NoteMark::Tap for every note struck in the beat. NoteMark::Tap already exists; append_beat does not set it yet, so the assertion fails until the green step. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TTUbGjzD8ysnVnCJnZJE95
`append_beat` now reads the beat-level `BeatEffects::slap_effect` and, when it is `Tapping`, marks every note struck in the beat with `NoteMark::Tap` — resolved at the beat level like the dead-note flag, since tapping is not a per-note effect. Slapping and popping (bass techniques) have no griff mark and are left unmapped. Tapping now flows into `derive_techniques`' free-form `techniques` list as "tap" (names-only — like accent/ghost; the passage-level `TappingPassage` tag is dominance-based and is deliberately not derived per-occurrence). Finishes #75's missing-technique-parsing asks alongside let-ring. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TTUbGjzD8ysnVnCJnZJE95
|
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 Beat Tapping → NoteMark::Tap
Estimated code review effort🎯 2 (Simple) | ⏱️ ~5 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@codex brooo |
|
Summary
Testing
|
Imports Guitar Pro's two-hand tapping as
NoteMark::Tap, finishing #75's missing-technique-parsing asks (alongside let-ring; pull-off was re-scoped — it needs pitch-direction inference, not a field map).What
BeatEffects::slap_effect == Tapping), not a note effect — soappend_beatresolves it once per beat and marks every note struck in the beat withNoteMark::Tap, exactly mirroring the existing dead-note flag (map_gp_note_marksonly sees per-note effects, so it stays out of it).techniqueslist as"tap"— names-only, like accent/ghost. The passage-levelTappingPassagetag is dominance-based and is deliberately not derived per-occurrence (technique.rs), so there's no newSwancoreTagand noSCHEMA_VERSIONchange.NoteMark::Tapalready existed in the model but no importer set it — this wires it up.TDD
red (
52191a6) → green (495031e).Verification
tapping_beat_marks_every_note_as_tappedtest (builds a tappedBeat, asserts the imported note bearsNoteMark::Tap) + full workspace suite greencargo clippy --workspace --all-targets -- -D warningscleancargo fmt --all --checkclean🤖 Generated with Claude Code
https://claude.ai/code/session_01TTUbGjzD8ysnVnCJnZJE95
Generated by Claude Code
Summary by CodeRabbit
New Features
Tests