Skip to content

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 →

Free tool · runs in your browser Ableton MIDI Remote Scripts Generator Turn your MIDI controller into a Live 11 & 12 script — no install, nothing leaves your machine. Open ↗


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.

STARTYour first scriptIdea to scriptLEARNArchitectureLifecycleComponents & modesMIDI message flowv2 vs v3LOOK UPLOM mapGlossaryCookbookDebuggingREFERENCEFull API, 9 to 12

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

  1. extract_api.py reads .py / .pyc and emits one JSON per module (classes, methods, argument names, attributes), never decompiling a statement body.
  2. dump_runtime_api.py runs inside Live to capture the C Live module (the LOM, richly documented by Ableton) and ground-truth signatures with default values.
  3. gen_docs.py + render_runtime.py render the JSON into the per-version API Reference; build_nav.py assembles the navigation.
  4. diff_runtime.py compares 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: