NoteSep
Separate a music recording into individual note waveforms using an aligned MIDI score.
Paper · Code · Audio examples
NoteGrab estimates each note, and Adaptive Set Ownership (ASO) refines the estimates together. These weights come from our reproduced training run, with ASO trained for 30,000 steps.
Results
Default checkpoints on the public SCNS-Eval test set (3,473 notes):
| Model | Median SI-SDR (dB) ↑ |
|---|---|
| NoteGrab (pre-ASO) | 5.46 |
| NoteSep (post-ASO) | 7.48 |
Use the model
git clone https://github.com/ben2002chou/notesep.git
cd notesep
uv sync
uv run notesep download
uv run notesep separate excerpt.wav --score score.mid --output separated
uv run notesep render separated/project.json --output reconstructed.wav
The download includes separator.pt (NoteGrab) and aso.pt (ASO). The output contains one 16 kHz WAV per note, their sum, and an editable project.
Use a 1.1–12 second passage with an aligned MIDI score. See the README for longer recordings, the Python API, and the browser editor.
Training
The training instructions cover both models.
Data: NoteGrab · ASO · Evaluation and editing.
Paper checkpoints
The original paper weights remain available under the paper-table1 tag.
uv run notesep download --profile paper-table1
uv run notesep separate excerpt.wav --score score.mid --profile paper-table1 --output paper-separated