cd /news/artificial-intelligence/decomposer-decompile-symbolic-music-… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-154976] src=github.com β†— pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Decomposer: Decompile Symbolic Music to Programs

Researchers Yewon Kim, Apurva Gandhi, David Chung, Graham Neubig and Chris Donahue released Decomposer, an 8B-parameter model that decompiles symbolic music (MIDI) into executable, editable Strudel programs, detailed in arXiv paper 2607.01849. The release ships inference code with two backends β€” generate_transformers.py and generate_vllm.py β€” running on a GPU with 24GB+ VRAM and CUDA 12.4+, sampling 5 candidate programs by default at temperature 1.0 with a 4096-token generation cap. The model was mostly trained on clips under 30 seconds, so the authors recommend decompiling 15–30 second windows and filtering dense instrument selections that exceed the input limit.

read2 min views4 publishedOct 22, 2026
Decomposer: Decompile Symbolic Music to Programs
Image: Michielbdejong (auto-discovered)

πŸ“„ Paper | 🌐 Website | 🎹 Live Demo | πŸ€— Model

Decomposer decompiles symbolic music (MIDI) into executable, editable Strudel programs. This repo contains the inference code for our post-trained model.

Requires uv A GPU with 24GB+ VRAM and CUDA 12.4+ is recommended

uv sync                  # transformers backend
uv sync --extra vllm     # vLLM backend

We provide two inference backends with the same command-line interface:

  • generate_transformers.py β€” simpler setup, slower generation
  • generate_vllm.py β€” faster generation, heavier setup
Parameter Default Description
--midi_path (required) input MIDI file ( .mid )
--model haiyewon/Decomposer-Qwen3-8B HF model id or local path
--n_outputs 5 number of Strudel programs to sample
--start_sec file start start of the time window to decompile (seconds)
--duration_sec whole file length of the time window (seconds)
--instruments all comma-separated instruments to keep: GM program numbers (0–127), GM names (e.g. acoustic_bass ), ordrum
--list_instruments None print the instruments found in --midi_path and exit
--bpm from file tempo override
--meter from file beats-per-measure override
--temperature 1.0 sampling temperature
--max_new_tokens 4096 generation length cap
--output_root outputs/ directory for generation sessions
--log_prefix None session directory prefix: outputs/<log_prefix>_<midi_name>/ ; defaults to timestamp ifNone
uv run generate_transformers.py --midi_path assets/examples/1.mid --n_outputs 5

uv run generate_vllm.py --midi_path song.mid --start_sec 30 --duration_sec 15

uv run generate_transformers.py --midi_path song.mid --list_instruments

uv run generate_vllm.py --midi_path song.mid --instruments drum,acoustic_bass,4

Each run writes a session directory:

outputs/20260719_123456_song/
β”œβ”€β”€ input_repr.txt   # the serialized MIDI the model saw
β”œβ”€β”€ output_1.js      # generated Strudel programs …
β”œβ”€β”€ …
└── args.json

Paste any output_*.js into the Strudel REPL to play and edit it.

  • The model is mostly trained on clips under 30 seconds; a range of 15–30 seconds would work best.
  • Very dense selections (many notes / many instruments) can exceed the model's input limit; shorten the window or filter instruments.
  • Sampling uses temperature 1.0 (the paper's evaluation setting); we recommend sampling multiple outputs (--n_outputs 5) and picking your favorite.
@article{kim2026decomposer,
  title   = {Decomposer: Learning to Decompile Symbolic Music to Programs},
  author  = {Kim, Yewon and Gandhi, Apurva and Chung, David and Neubig, Graham and Donahue, Chris},
  journal = {arXiv preprint arXiv:2607.01849},
  year    = {2026}
}
── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @decomposer 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/decomposer-decompile…] indexed:0 read:2min 2026-10-22 Β· β€”