I've been spending the last month reverse engineering Ableton Live 12 on Windows. Not the scripting API, not Max for Live, the actual application. The C++ code, the internal objects, the resource packages, everything.
At this point I have injected a DLL that runs inside Live's process with access to the app singleton, internal functions, the full object hierarchy, and vtable calls. I can call the same functions Ableton's own code calls. I also decoded the .alp resource packages: the GUI layouts (GUI.alp), the graphics(Graphics.alp) , and the language files (Languages.alp) .
To give you an idea of what this means in practice, here's what's working right now:
- I can call any internal function, the same ones Live uses to create views, look up slots, toggle visibility, build the second window
- I dumped the entire UI tree, 16000 nodes, every named panel, button, splitter, meter in the app
- I can read and write to internal objects at runtime: flags, properties, state
- The .alp files give me the XML that defines every view layout, every skin graphic, and every localized string. I can modify these or add new ones
I'm curious what you guys would actually want out of something like this. Not just UI stuff, anything. What has Ableton refused to implement that drives you insane? What's broken? What's missing? What would make Live actually perfect for your workflow?
Some areas I know are reachable: UI layout and panels, transport and playback behavior, view management, the slot/content system, toolbar and controls, localization. Probably more once I dig further into the vtables.
Anything goes. So what's the one thing you'd fix or add to Live if you could?
Small progress update.
Got a custom overlay rendering directly inside Live's window showing real-time stats like sample rate, buffer size, thread count, and audio engine ticks. Also injected a custom TEST button into Live's own toolbar. All running from inside the process. More to come.
