Improve beat acquisition and genre accuracy behind expanded corpus - #90
Merged
Conversation
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.
Summary
Closes #77.
This improves the Rust beat estimator's acquisition speed and genre coverage while preserving its blank-when-unsure contract.
Measured result
The final harness processes all 534 seconds in about 1.9 seconds (roughly 280x realtime on the validation machine). Every approved profile passes, including breakbeat/jungle, swung/2-step, sparse/minimal percussion, delayed rhythmic intros, opposed tempo changes, and the legacy beatless controls.
Implementation
rustfft6.4.1 is pinned directly rather than used transitively.AnchorGate, phase-anchor input, IPC/store state, engine callback, reset ordering, and downstream fallback contracts remain unchanged.There are no prompt-, filename-, or genre-specific production branches.
Corpus and review checkpoints
The commit history deliberately preserves the measurement-first workflow:
The committed corpus contains 20 stereo PCM16 / 48 kHz WAVs (97.8 MiB): ten immutable legacy fixtures, six new genre fixtures, two short-intro scenarios, and two opposed tempo-change scenarios. Missing fixtures, LFS pointer files, hash drift, invalid WAV contracts, incomplete coverage, unapproved targets, or metric regressions fail explicitly.
Reproduce it with:
Validation
just checkgit lfs fsck: passgit lfs pull+ frontend build + verifier + approved corpus test: passmrt2_smallsession on MacBook Pro Speakers at 48 kHz:Documentation
docs/spike-beat-detection-issue-77.md— unchanged baseline, target derivation, candidate matrix, and final per-clip resultsdocs/adr/0035-dual-envelope-beat-detection-with-fast-change-invalidation.md— selected architecture and tradeoffsdocs/issue-77-hardware-checklist.md— native and owner listening evidence.plans/issue-77-beat-estimator-acquisition-and-genre-accuracy.md— completed plan and retrospective