Documentation for AI-controlled generative music production — enabling Brian Eno-style autonomous composition where you set up rules, walk away, and return when something interesting happens.
"I want to create some rules and go in the other room whilst Logic generates pieces. I'll either come back later or hear something I like and go to observe or bookmark the piece." — The Eno workflow
This repo documents how to achieve this using Claude + MCP (Model Context Protocol) servers to control DAWs programmatically.
| DAW | API Quality | MCP Server Available | Recommendation |
|---|---|---|---|
| Bitwig Studio | ⭐⭐⭐⭐⭐ Excellent | ✅ WigAI | Best choice — fully documented Java API, active community |
| Ableton Live | ⭐⭐⭐⭐ Good | ✅ ableton-mcp, ableton-copilot-mcp | Solid support via Max for Live |
| Logic Pro | ⭐⭐ Poor | No real API — use macos-ui-automation-mcp as fallback |
- Open Controller Extension API — Fully documented, Java-based
- Built-in debugging console — Makes script development fast
- Official extensions are open source — Can adapt existing code
- Active community — Lots of resources and examples
Repository: https://github.com/fabb/WigAI
Capabilities:
- Transport control (play, stop, record, tempo)
- Track management (volume, pan, mute, solo)
- Device parameter manipulation
- Project information retrieval
- Clip triggering
Setup:
- Install the WigAI controller extension in Bitwig
- Activate it in Bitwig's controller settings
- MCP server runs at
http://localhost:61169/mcp - Configure Claude Desktop to connect to this endpoint
- Bitwig Controller Extensions (Official)
- Bitwig Extension Hub — Community resources, API tricks
- Controller Scripting Tutorial — Getting started with Java API
- Keith McMillen Scripting Series — Excellent walkthrough
Bitwig has good OSC support via:
- DrivenByMoss — Comprehensive controller scripts including OSC
- Open Stage Control for Bitwig
ableton-mcp (by ahujasid)
- Repository: https://github.com/ahujasid/ableton-mcp
- Two-way socket-based communication
- Track manipulation, instrument/effect selection, clip creation, session control
ableton-copilot-mcp (by xiaolaa2)
- Repository: https://github.com/xiaolaa2/ableton-copilot-mcp
- More comprehensive — includes Arrangement View, MIDI editing, audio recording
- Built on ableton-js
Ableton exposes control via:
- Max for Live devices
- Remote Scripts (Python)
- The MCP servers bridge these to Claude
Apple has historically refused to provide a proper external API for Logic Pro. The scripting options are:
- Scripter — JavaScript for MIDI processing, but runs inside Logic, not external control
- AppleScript — Very limited dictionary, mostly UI scripting workarounds
- OSC — Only predefined controls, can't add custom ones
Repository: https://github.com/mb-dev/macos-ui-automation-mcp
This MCP server uses macOS Accessibility APIs to control any native Mac app, including Logic Pro.
How it works:
- Queries the Accessibility Tree (same thing VoiceOver uses)
- Translates UI elements to JSON that Claude can parse
- Can click buttons, type text, send key commands
Capabilities with Logic:
- Start/stop transport
- Trigger key commands (markers, record, etc.)
- Interact with any visible UI element
- Navigate menus
Limitations:
- Slower than native API integration
- Dependent on UI layout (may break with Logic updates)
- Less granular control than Bitwig/Ableton MCP servers
If you must use Logic, leverage its internal tools:
- Scripter MIDI Plugin — JavaScript-based MIDI generation/transformation
- Scripter API Overview
- Can implement probability-based note selection, Markov chains, cellular automata
- Session Players — AI-powered backing musicians (newer feature)
- Live Loops — For experimental/generative approaches
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude + MCP │────▶│ DAW (Bitwig) │────▶│ Audio Output │
│ (controls) │ │ (generates) │ │ (to ears) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────┐
│ You │
│(listens)│
└─────────┘
│
"that's interesting"
│
▼
┌───────────────┐
│ Tell Claude │
│ to bookmark │
└───────────────┘
-
Design your generative system in Bitwig
- Probability-based MIDI generators
- Modular patches with randomization
- Polymetric/polyrhythmic loops
-
Set up Claude with WigAI MCP
- Claude can start/stop, adjust parameters
- Define rules: "every 5 minutes, slightly adjust tempo" or "if track 3 volume drops below X, raise it"
-
Let it run
- Go make tea, work on something else
- Listen passively
-
Intervene when inspired
- Tell Claude to drop a marker
- Adjust parameters
- Capture the moment
- Listen to audio — Claude has no real-time audio input
- Make aesthetic judgments — That's your job
- Detect "interesting" moments — Would need a separate audio analysis component
For fully autonomous "detect interesting moments," you'd need:
- A separate process monitoring audio output
- Heuristics for "interesting" (harmonic tension, dynamic change, novel patterns)
- Signal to Claude when triggered
This is possible but out of scope for basic setup.
- Install Bitwig Studio
- Clone WigAI
- Install the controller extension in Bitwig
- Configure Claude Desktop with MCP endpoint
http://localhost:61169/mcp - Test basic commands (play, stop, get project info)
- Install macos-ui-automation-mcp
- Grant Accessibility permissions
- Configure Claude Desktop with the MCP server
- Test UI automation with Logic open
- Install ableton-mcp or ableton-copilot-mcp
- Follow repo-specific setup instructions
- Configure Claude Desktop
- Bitwig Controller Extensions
- Bitwig Extension Hub
- Logic Pro Scripter API
- Logic Pro OSC Message Paths
- Brian Eno's generative music philosophy
- Oblique Strategies
MIT — use this however you like.