STRUM — Spectral Transcription & Rhythm Understanding Model
End-to-end pipeline that turns a song (.wav / .mp3 / .ogg) into a fully
playable Clone Hero / YARG chart package: drums, guitar, bass, vocals (with
lyrics), and keys.
Held-out test set (from 3,299 human-authored Pro Drum charts):
Component
Metric
Score
Drums onset detection (V14)
Frame F1
93.9%
Drums lane classification (6-ensemble)
Per-onset F1
85.2%
End-to-end vs ground-truth Clone Hero / YARG charts on an in-envelope
benchmark of 29 songs sampled from a 3,299-song held-out pool. Songs were
pre-screened with a single audio-feature gate (median Demucs htdemucs_6s
drum-stem RMS ≥ 0.018, 1 s windows at 22050 Hz mono). Eval is Expert
difficulty, ±100 ms tolerance, with a per-song global offset search
(±200 ms / 10 ms steps).
Instrument
F1
Precision
Recall
Drums
83.8%
82.4%
85.4%
Guitar
65.1%
74.5%
57.8%
Bass
69.4%
65.8%
73.4%
Vocals
53.9%
63.2%
47.0%
See the source repo's benchmark_results.json for per-song breakdown and
scripts/eval_benchmark.py for the harness.
Usage
The checkpoints are loaded by the STRUM pipeline scripts. Clone the repo and
download the checkpoints into checkpoints/ preserving the layout:
bash
1git clone https://github.com/opria123/strum
2cd strum
3python -m venv .venv &&source .venv/bin/activate
4pip install -e .56# Pull weights from the Hub7huggingface-cli download opria123/strum --local-dir checkpoints/ \8 --local-dir-use-symlinks False
910# Run the full pipeline on a folder of audio files11python scripts/batch_pipeline.py /path/to/songs /path/to/charts
The pipeline expects this layout (mirrors the drums/ and guitar/
subfolders here, just under checkpoints/):
A small reorganisation script scripts/sync_from_hf.sh in the source repo
handles the drums/ → flat-checkpoints/ mapping.
License
MIT. See the source repository for full attribution of the underlying
training data (Clone Hero / YARG community charters) and dependencies
(Demucs v4, librosa, OpenAI Whisper, Spotify Basic Pitch).