Repository navigation
fix(chord): stop ringing chords in fast runs scoring as EARLY misses - #76
Closed
mattromano wants to merge 1 commit into
Closed
mattromano wants to merge 1 commit into
mattromano wants to merge 1 commit into
Conversation
In a fast run of one chord shape the next chord is already sounding when its window opens, and three spots booked that as an EARLY miss: - engine verifier: the chord took the detect time of the first member listed. It now takes the member detected closest to the chart time. - engine verifier: a chord verified as its window opened could be stamped just before the early hit edge by the lagging pushed playhead. Stamps within 100 ms of the window now count as on time. - scoreChord path: one EARLY strummed frame locked the chord in as a miss. It no longer does; a later frame can still hit, and checkMisses() retires the chord as before if none does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: mattromano <42412983+mattromano@users.noreply.github.com>
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 46 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (4)
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. Comment |
This was referenced Oct 10, 2026
Author
|
Consolidated into #84 (commits kept, rebased onto main, plus the review fixes). |
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.
What
Closes #75 (related: #15)
In a fast run of one chord shape, the next chord is already sounding when its window opens. Three spots booked that as an EARLY miss:
_ndFinalizeChordVerdictused the detect time of the first member listed. It now uses the member detected closest to the chart time, so a string still ringing from the previous chord can't decide the timing of a chord the other strings landed on time._ND_ENGINE_STAMP_SLACK_S(100 ms) is now counted as on time (clamped to the hit edge) instead of EARLY by poll jitter. A stamp further out is still EARLY, and there's a test for that.isHitframe whose judgment is EARLY no longer records a counted miss. Itcontinues like the existing non-hit branch, so a later frame in the window can still hit, andcheckMisses()retires the chord as before if none does. It deliberately doesn't stash the frame in_chordLastResult: an early ring there would set the voicing rescue'svoicingTto an EARLY time and stop the rescue from working.I found these while reading per-judgment logs from fast power-chord songs on the desktop build.
Version bumped 1.32.0 → 1.33.0 in
plugin.json,package.jsonand_ND_VERSION. This collides with #72 and the other open note_detect PRs, which bump to the same version. Whichever merges later needs a one-line re-bump. This change doesn't touch #72's tuning work. It does share_ndFinalizeChordVerdictwith the richer-judgment-events PR, so expect a small textual conflict there.Tests
test/fast_chord_runs.test.js(4 tests, all through the real detector in the vm harness):timingError: -20npm test: 357/357 pass.node --check screen.jsis OK, andfeedBack-plugin-spec/tools/validate.pyreportsok.tools/regression.jsneeds local recordings, which aren't available here, so it wasn't run. The browser change only affects frames that were already booking a miss, and the engine changes only move stamps that were EARLY.Checklist
version_sync.test.jsgreen)git commit -s)🤖 Generated with Claude Code