Decomposer: Learning to Decompile Symbolic Music to Programs
About
Musical performance involves executing a set of high-level musical instructions, yet recovering those instructions from the performance is a challenging inverse problem. We present Decomposer, a post-training framework for symbolic music decompilation: the task of recovering executable, editable music programs from symbolic music. We instantiate the task as MIDI-to-Strudel decompilation, where the model takes symbolic MIDI as input and produces a program in Strudel, a music programming language, that reconstructs the input when executed. The task poses two challenges: Strudel is a low-resource language with little naturally paired MIDI-code data, and optimizing faithful reconstruction of MIDI alone can collapse to unreadable note-by-note transliteration. We address these challenges in two stages. First, we construct Strudel-Synth, a synthetic corpus of paired Strudel programs and rendered MIDI, and use it for supervised fine-tuning. Second, we refine the model with reinforcement learning on unpaired MIDI, optimizing rewards for both MIDI reconstruction faithfulness and code readability. Our evaluation across synthetic and real-world MIDI benchmarks shows that Decomposer achieves substantially higher MIDI reconstruction faithfulness than closed-source LLMs while producing more readable and diverse code than the heuristic converter.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Programmatic MIDI decomposition | STR-SYNTH | Onset F186 | 2 | |
| Programmatic MIDI decomposition | LMD <30s | Onset F170 | 2 | |
| Programmatic MIDI decomposition | LMD 30-60s | Onset F135 | 2 | |
| Programmatic MIDI decomposition | GigaMIDI | Onset F161 | 2 | |
| Programmatic MIDI decomposition | NES-MDB | Onset F143 | 2 | |
| Programmatic MIDI decomposition | Nottingham | Onset F176 | 2 |