Lucas WintherandClaude Opus 5.5 e5773e0c33 perf(dsp): cache the resample kernel when outputs land on input samples
2:1 decimation (44.1k -> 22.05k, used to render the warped MIDI for the
alignment page) recomputed 65 windowed-sinc taps per output sample: ~17 s
for a 4.7 min stereo render. Outputs at integer input positions now reuse
one tap table; arithmetic is identical, so results are bit-identical.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 14:38:36 +01:00
2026-10-30 05:43:50 +01:00

STSheets synthetic benchmark

A harness that measures guitar-tab transcription quality without any real recordings. It generates original songs in four tiers (t1a to t1d, from solo guitar up to a full band with a second guitar part), writes them as Guitar Pro files, renders audio with a bundled SoundFont, then runs the pipeline (Demucs source separation, Basic Pitch transcription, tempo and beat detection, tab fingering) and scores the result against the known truth. A song passes when merged-guitar pitch F1 is at least 0.85. Oracle modes feed ground truth to later stages so errors can be attributed to a single stage.

Prerequisites

  • Bun
  • ffmpeg (and ffprobe) on PATH

Commands

bun install
bun run fetch-models                  # downloads the ONNX models into models/
bun test                              # one test is skipped unless the Demucs drum measurement is enabled by env
bun run bench gen --tiers t1a,t1b,t1c,t1d --seeds 1-5
bun run bench run --tiers t1a,t1b,t1c,t1d --seeds 1-5 \
  --modes full,oracle-stems,oracle-tempo,oracle-notes --run-id baseline-2026-10-30

On-disk layout

  • data/<tier>/<seed>/ holds song.json, truth.gp, mix.wav, mix.mp3 and stems/. Git-ignored.
  • runs/<run-id>/<tier>/<seed>/<mode>/ holds notes.json, out.gp and score.json. Git-ignored.
  • results/<run-id>.md and .json are the committed reports.

Results

The baseline is in results/baseline-2026-10-30.md (tier summaries plus a per-song appendix) with the raw numbers in the matching .json.

Known caveats

  • Vocals are rendered with a GM "Voice Oohs" patch, not real singing, so vocal numbers are indicative only.
  • Drums use a heuristic baseline transcriber.
  • oracle-stems mode feeds the true per-track stems, which reveals the track count and roles, so part-split F1 under oracle-stems (and the oracle modes built on it) is not meaningful.
  • The SONiVOX guitar is partly routed to Demucs' piano stem, a synthetic-timbre gap that lowers full-mode guitar scores.
  • Fingering (string agreement) is informational, not pass/fail.

Reference songs (alignment)

Team-supplied real recordings and Guitar Pro-exported MIDI live in the git-ignored reference/ directory (never committed). Register a song with bun run align add <audio> <midi> --id <id> [--title <t>] [--capo "<track name>=9"]; this writes reference/songs.json and guesses a scoring role per MIDI track (unmapped tracks are null).

S
Description
No description provided
Readme
1 MiB
Languages
TypeScript 98.5%
HTML 0.8%
CSS 0.7%