Repository navigation
fix(mix): show the speeds a ridden pitch fader went between - #327
Merged
Merged
Conversation
bnb
previously approved these changes
Oct 30, 2026
# Conflicts: # apps/locallibrary/TODO.md
botandbang
enabled auto-merge
October 30, 2026 20:15
Coverage Report for apps/web
File Coverage
SizeCompared with main. KiB are 1,024 bytes.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bnb
approved these changes
Oct 30, 2026
Contributor
Author
|
Closing and reopening so CI reruns with the destinations test fix (#344) now on main. Branch unchanged. |
auto-merge was automatically disabled
October 31, 2026 00:29
Pull request was closed
botandbang
enabled auto-merge
October 31, 2026 00:30
auto-merge was automatically disabled
October 31, 2026 01:01
Pull request was closed
botandbang
enabled auto-merge
October 31, 2026 01:01
Rust coverageFrom run 641. Both are held to the thresholds in .cargo/config.toml.
|
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 and why
Riding the pitch fader from +0% to +4% during a track gave one speed everywhere a mix is shown. The track stays in one chain, because each 4 s slice drifts well within a chain's 0.75 s tolerance of the last, and the chain's one line averaged both speeds. In a test the play read +0.0%: the averaged slope was 2% off the speed searched, so the matcher fell back to that speed. Its presence curve was traced at the average, which neither half played at, and it dipped to 0.18.
This takes option a from triage, which is a provisional choice that hasn't been confirmed: split a chain's fit where its speed changes. The other options were (b) report the range of speeds searched, quantised, and (c) keep one averaged speed and document it. Undoing it means removing
lines/split/Bendin the matcher and thespeed_rangefield.Added in loclib-mixid:
splittries two lines meeting at a knot, searched on a 0.5 s grid at least 24 s from either end. It keeps them when their speeds differ by 0.3% (RIDE) or more, each is within 2% of the speeds its slices voted for, and the Bayesian information criterion prefers them (k = 2 against 4). It recurses on each side. Strays are dropped relative to the bend, so the end of a short second speed isn't cut off.Found::speed_range()gives the slowest and fastest measured lines.Changed in loclib-mixid:
Found.fitshas a line per speed.tempois weighted by votes and line length, so a play at one speed is unchanged.tracelistens near each line's own speed.least_squares,drop_strays,edgesandchain_pairsare pulled out offitto share with the new code.Added in locallibrary and the website:
Play.speed_rangeand the export'sspeedRange. Both are optional, so the export keeps version 2, and the RPC contract is regenerated.Not included: the player's playhead and the tempo charts still follow one speed per play, since
Playcarries the range and not the lines.Fixes LOC-122
How it was tested
Identifierwith WAVs, and a test per surface: the report page, the export (hegel), the tracklist, the TUI and the website's helper and schema.RIDEremoved alone, the export, the report page field, the TUI's fastest speed, and the website schema field.cargo fmt -- --check, andcargo clippy -p loclib-mixid -p locallibrary -p locallibrary-cli --all-targets -- -D warnings.cargo nextest run: loclib-mixid 75/75, locallibrary's mix, sets, mixes and sessions tests 106/106, and locallibrary-cli's mix, TUI mix, rpc and mix command tests 138/138 (the_contract_in_docs_is_currentincluded).pnpm check,pnpm lint,oxfmt --checkandpnpm test(800 pass).test:storybookandtest:build, and screenshots.Checklist
apps/locallibrary/CHANGELOG.mdhas a line under Unreleased, if people using it will noticedocs/and--helpstill say what the code does (apps/locallibrary/docs/rpc/too, for a sidecar change)