Ableton Live MIDI Remote Scripts, Unofficial Docs¶
A project by Structure Void, Julien Bayle. Training, consulting, development & research around Ableton Live, Max, Max for Live and generative / interactive systems, from Marseille. More about Structure Void →
The MIDI Remote Scripts are the Python brain of every Ableton control surface: they map
hardware to Live, observe the Live Object Model and push feedback back
to the device. Everyone documents the LOM; almost nobody documents the framework ,
_Framework, ableton.v2, ableton.v3, that the scripts are built on. That gap is what
this project fills.
MIDI Remote Scripts sources on GitHub: Live 11 ↗ · Live 12 ↗
New here? Start with What it's for: why a Remote Script, and what you can actually do with one.
Where to start¶
Four ways in, depending on what you need. Start by writing a script, learn how a control surface really works, look things up, or dive into the full reference.
A bit of history¶
Back in 2012 I decompiled Ableton's MIDI Remote Scripts and put the sources out in the open , at the time they were a black box. Once they were readable, a whole scene grew on top: custom controller scripts, remixes of the factory scripts, mapping tools, and a fair number of apps and products that simply wouldn't have existed otherwise. More than a decade later the source repositories are still some of the most-visited corners of my world, so it felt right to finally give them what they always lacked: real documentation, not just a source dump. That's what this is, unofficial, open-source, and built on everyone who poked at these scripts over the years.
Why this exists (the technical bit)¶
Up to Live 10 (Python 2) and Live 11 (Python 3.7) the scripts could be decompiled to readable source. Live 12 ships a newer Python (3.11): zero-cost exception tables and the adaptive interpreter broke every decompiler, so clean full decompilation is no longer possible. But documentation doesn't need the source, only the API surface, which the bytecode preserves intact. See Architecture.
How the docs are built¶
extract_api.pyreads.py/.pycand emits one JSON per module (classes, methods, argument names, attributes), never decompiling a statement body.dump_runtime_api.pyruns inside Live to capture the CLivemodule (the LOM, richly documented by Ableton) and ground-truth signatures with default values.gen_docs.py+render_runtime.pyrender the JSON into the per-version API Reference;build_nav.pyassembles the navigation.diff_runtime.pycompares Live 11 ↔ 12 to drive the What changed in the LOM page.
About the guides¶
The conceptual guides are written from analysis of the framework, not from official Ableton material. They aim to be accurate, but this is a living, community document: corrections and pull requests are very welcome. Class names in particular can shift between framework generations, always cross-check against the reference for the version you target.
Unofficial and not affiliated with Ableton. This site documents the public API surface and ships no decompiled source code.
Not into Python?¶
Not into Python? The same Live Object Model is reachable from Max for Live, visually, with no scripts at all. It is often the faster route for devices, instruments and generative tools. If you go that way, these are the references I wrote on it:

