Skip to content

v1.0.0 - #11

Merged
danigb merged 6 commits into
mainfrom
v1.0.0
May 30, 2026
Merged

danigb merged 6 commits into
mainfrom
v1.0.0

Conversation

@danigb

@danigb danigb commented May 30, 2026

Copy link
Copy Markdown
Owner

[1.0.0] - 2026-05-30

Parity-with-the-reference release. Parity with the Python
beat_this reference is now verified by a
committed golden test
(tests/python_parity.rs), not just argued by construction:
F-measure == 1.0 (standard FP32 model) and ≥ 0.99 (small model) at the ±70 ms MIR
window for both beats and downbeats.

Added

  • Golden parity test against the Python reference (tests/python_parity.rs +
    scripts/gen_golden.py), runnable on a fresh clone with the committed small model
  • "Parity with the Python reference" section in the README documenting the verification
    and the remaining known divergence

Changed

  • deduplicate_peaks keeps fractional merged-peak frame positions instead of
    rounding to an integer frame, matching the Python reference (removes a ≤10 ms
    divergence on merged adjacent peaks)
  • beat_counts now ports the reference's infer_beat_numbers: pickup-measure
    (anacrusis) beats are numbered so they lead into the first downbeat, matching the
    Python .beats/JSON count column (beat/downbeat times are unchanged)
  • The ort (ONNX Runtime) backend is now behind an off-by-default ort Cargo
    feature. The default build is pure-Rust rten only — no libonnxruntime needed.
    Build/test the ort backend (and its --runtime ort, cross-runtime parity tests, and
    op-level --profile) with --features ort.

Notes

  • Known remaining divergence: the resampler (rubato sinc vs Python soxr) differs
    sub-perceptually for inputs not already at 22050 Hz; inputs at 22050 Hz resample
    exactly. Decode precision (f32 + symphonia vs float64 + torchaudio) differs negligibly.
  • Post-processing is "minimal" only — the optional --dbn path (madmom DBN) is
    intentionally not implemented; the model is designed to be accurate without it, and
    Python's default is also "minimal", so default-vs-default output matches.
  • The "identical timestamps" claim is scoped to the two Rust backends (rten vs ort),
    verified by tests/cross_runtime.rs.

@danigb
danigb merged commit 8cb1a68 into main May 30, 2026
2 checks passed
@danigb
danigb deleted the v1.0.0 branch May 30, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant