{"slug": "decomposer-decompile-symbolic-music-to-programs", "title": "Decomposer: Decompile Symbolic Music to Programs", "summary": "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.", "body_md": "[📄 Paper](https://arxiv.org/abs/2607.01849) |\n[🌐 Website](https://yewon-kim.com/decomposer) |\n[🎹 Live Demo](https://huggingface.co/spaces/haiyewon/decomposer-demo) |\n[🤗 Model](https://huggingface.co/haiyewon/Decomposer-Qwen3-8B)\n\n**Decomposer** decompiles symbolic music (MIDI) into executable, editable\n[Strudel](https://strudel.cc) programs. This repo contains the inference code for\nour post-trained model.\n\nRequires [uv](https://docs.astral.sh/uv/)\nA GPU with 24GB+ VRAM and CUDA 12.4+ is recommended\n\n```\nuv sync                  # transformers backend\nuv sync --extra vllm     # vLLM backend\n```\n\nWe provide two inference backends with the same command-line interface:\n\n- `generate_transformers.py` — simpler setup, slower generation\n- `generate_vllm.py` — faster generation, heavier setup\n\n| Parameter | Default | Description | \n|---|---|---|\n| `--midi_path` | (required) | input MIDI file ( `.mid` ) | \n| `--model` | `haiyewon/Decomposer-Qwen3-8B` | HF model id or local path | \n| `--n_outputs` | `5` | number of Strudel programs to sample | \n| `--start_sec` | file start | start of the time window to decompile (seconds) | \n| `--duration_sec` | whole file | length of the time window (seconds) | \n| `--instruments` | all | comma-separated instruments to keep: GM program numbers (0–127), GM names (e.g. `acoustic_bass` ), or`drum` | \n| `--list_instruments` | `None` | print the instruments found in `--midi_path` and exit | \n| `--bpm` | from file | tempo override | \n| `--meter` | from file | beats-per-measure override | \n| `--temperature` | `1.0` | sampling temperature | \n| `--max_new_tokens` | `4096` | generation length cap | \n| `--output_root` | `outputs/` | directory for generation sessions | \n| `--log_prefix` | `None` | session directory prefix: `outputs/<log_prefix>_<midi_name>/` ; defaults to timestamp if`None` | \n\n```\n# decompile a whole MIDI, sampling 5 candidate programs\nuv run generate_transformers.py --midi_path assets/examples/1.mid --n_outputs 5\n\n# decompile a specific 15-second window of your own MIDI\nuv run generate_vllm.py --midi_path song.mid --start_sec 30 --duration_sec 15\n\n# see which instruments a file contains\nuv run generate_transformers.py --midi_path song.mid --list_instruments\n\n# decompile only selected instruments (GM names, program numbers, or 'drum')\nuv run generate_vllm.py --midi_path song.mid --instruments drum,acoustic_bass,4\n```\n\nEach run writes a session directory:\n\n```\noutputs/20260719_123456_song/\n├── input_repr.txt   # the serialized MIDI the model saw\n├── output_1.js      # generated Strudel programs …\n├── …\n└── args.json\n```\n\nPaste any `output_*.js` into the [Strudel REPL](https://strudel.cc) to play and\nedit it.\n\n- The model is mostly trained on clips under 30 seconds; a range of 15–30 seconds would work best.\n- Very dense selections (many notes / many instruments) can exceed the model's input limit; shorten the window or filter instruments.\n- Sampling uses temperature 1.0 (the paper's evaluation setting); we recommend sampling multiple outputs (--n_outputs 5) and picking your favorite.\n\n```\n@article{kim2026decomposer,\n  title   = {Decomposer: Learning to Decompile Symbolic Music to Programs},\n  author  = {Kim, Yewon and Gandhi, Apurva and Chung, David and Neubig, Graham and Donahue, Chris},\n  journal = {arXiv preprint arXiv:2607.01849},\n  year    = {2026}\n}\n```\n\n", "url": "https://wpnews.pro/news/decomposer-decompile-symbolic-music-to-programs", "canonical_source": "https://github.com/elianakim/Decomposer", "published_at": "2026-10-22 01:23:22+00:00", "updated_at": "2026-10-22 01:41:35.376332+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "ai-research", "ai-tools", "generative-ai"], "entities": ["Decomposer", "Yewon Kim", "Apurva Gandhi", "David Chung", "Graham Neubig", "Chris Donahue", "Strudel", "Decomposer-Qwen3-8B"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/decomposer-decompile-symbolic-music-to-programs", "markdown": "https://wpnews.pro/news/decomposer-decompile-symbolic-music-to-programs.md", "text": "https://wpnews.pro/news/decomposer-decompile-symbolic-music-to-programs.txt", "jsonld": "https://wpnews.pro/news/decomposer-decompile-symbolic-music-to-programs.jsonld"}}