Producer Pal: MCP server running in Node for Max to control Ableton Live
I made a Max for Live device that runs an MCP server (via Node for Max) allowing AI assistants to control Ableton Live. You can generate and edit MIDI clips, manage tracks and scenes, and automate arrangement workflows through natural language.
https://producer-pal.org/
https://github.com/adamjmurray/producer-pal#readme
There's demo videos and a detailed installation guide on the website to help you get started with:
Claude Desktop
Coding agents like Gemini CLI, Codex CLI, and Claude Code
ChatGPT and claude.ai in the browser
Local LLMs with LM Studio (experimental - models are still catching up to the cloud options, but improving)
Any other MCP-compatible tool (Cline, Cursor, etc.)
Open source and free to use. Gemini CLI has a generous free tier if you want to try without subscriptions. I'm planning to add a built-in chat UI for non-command-line users a little later.
Anthropic had a "Built with Claude" contest over the summer and Producer Pal got an honorable mention. Claude Code was a godsend. I'm a software engineer, but I wouldn't have had time for all the R&D on my own. It let me focus on ideas and iterate quickly without getting bogged down in implementation details.
Happy to answer questions about the technical details. The bridge between Node for Max and the v8 object (for Live API access) required some creative solutions.
Demos at this YouTube playlist (the first few are quite old, so check out the later ones in the playlist):
Hi Adam, I am also working on Ableton AI agent. Thank you for sharing this! Especially the node to V8 bridge is very interesting to me, as I have struggled with making node logic connect to Live API in the past.
Looks great ! When I try to load the ".amxd" file after cloning the repo Max crashes. Its the latest version and fully authorised.
Hey Michael,
Thanks for giving it a try. If you grabbed the .amxd directly out of the repo, it won't work by itself because it needs other files (JavaScript) that need to be built.
Please try installing a released build by following instructions at https://producer-pal.org/installation
(or, to build from source from the repo, you'd need Node.js installed, run npm install, and then npm build before using the .amxd, but I recommend trying a released version)
However, even if you drag the "un-built" .amxd from the repo directly into Live, it shouldn't crash. I just tried that and it's fine for me. I test on macOS 26 Tahoe and Windows 11 with Ableton Live 12 (12.3 and 12.4).
I know it works for a lot of other people, and I use it nearly every day. I've had one other person reach out that it immediately crashed Live instantly ever time they drag the .amxd into Live. We compared machine specs and Live versions, and the only difference was they were on Windows 10. So I booted up an old computer to try to reproduce and it works fine for me on Windows 10 too. We never did track down what was causing the crash, and the person eventually gave up and moved on.
Maybe you're running into a bug in Ableton or Max, or some kind of edge case I somehow never encounter myself. If I could pinpoint the problem I'd do my best to fix it, but it's impossible for me to debug crash reports without being able to reproduce it (which I can't), or get some diagnostic info. If you're up for helping me diagnose, you can follow up with me using one of the support channels listed at https://producer-pal.org/support (or just respond here).
If you have any kind of OS-level error dialog popping up with crash details, we could start with that, and share your machine specs and Live version. And maybe the Ableton crash log has something useful in it.
Thanks ! Now I'm using the proper release it runs fine in Ableton and I can open it OK in Max as well. No crashes ! 😀
Is the node script using the published Max for Live API ? Last time I looked at this I found it quite limited but may have misunderstood what its capable of, especially with Node involved.
Great to hear!
"Is the node script using the published Max for Live API ? Last time I looked at this I found it quite limited but may have misunderstood what its capable of, especially with Node involved."
Nope! You still cannot use the Max for Live API with Node.js.
My big breakthrough is I came up with a strategy for patching a Node for Max object to a v8 object, where you can call the Max API. They basically make JSON API requests to each other via patch cables. It wasn't completely straightforward because there's a max length for Max messages, so I have to chunk up the JSON into separate Max messages and re-assemble them on the other side.
I've been thinking about blogging about this technique, and even releasing a Max for Live device template that can make an easy starting point for anyone else who wants to do this.
Side note: someone asked for this to not be completely AI-oriented so Producer Pal also has a REST API, which can be used to e.g. deterministically script Ableton and maybe even build alternative UIs for it (given the limitations of the Live API)
Sounds great ! 👍 I just had some fun with it setting up a Progressive House style synth sound with Wavetable. At one point DeepSeek v4 says "The mod matrix slots aren't exposed via the API — that's a limitation.". This is where in my project I switch to using Apple Accessibility Layer which can access all the controls, or failing that reverting to an AI vision model and mouse and keyboard control. I sent you an email about this.
Very interesting about the Accessibility Layer! I have considered "GUI-layer" control, but did not want to deal with the (I assume) thorny problems with cross-platform compatibility.
Semi-related, for automatic end-to-end testing and LLM efficacy evaluations, I use Apple Script to automate opening Live sets and dismiss the "Save unsaved changes" dialog if it appears. The Apple Script approach is fragile and I didn't pursue Windows support because this functionality is purely for development purposes (for now).
Anyway, happy to discuss more. I will follow up with you via email.
Regarding: "The mod matrix slots aren't exposed via the API — that's a limitation.".
I have exposed a lot of the Live API functionality, but in many cases there are device specific features with behavior not exposed by the general purpose DeviceParameter functionality, which Producer Pal supports.
For example, it looks like there's some options for deeper control of Wavetable: https://docs.cycling74.com/apiref/lom/wavetabledevice/#add_parameter_to_modulation_matrix
To keep the scope of the project under control, I decided not to support device-specific functionality so far.
To be clear: some of this is not Live API limitations. It may be a Producer Pal limitation. I have plans to provide direct access to the full Live API, probably soon.
Update: I'm going to ship full "raw" Live API support soon, probably in v1.4.8