bitwig-gemini-mcp
by bedri
README.md
# Bitwig Studio Gemini Agent Bridge (MCP)
This project provides a direct integration bridge between **Gemini (via Model Context Protocol - MCP)** and **Bitwig Studio (via Open Sound Control - OSC)**. It allows an AI agent or the Gemini client to manage, control, and monitor your Bitwig Studio projects in real-time.
---
## šļø Architecture
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ā JSON-RPC ā Node.js MCP Server ā OSC / UDP ā Bitwig JS Controller ā
ā Gemini Client / IDE ā āāāāāāāāāā> ā ā āāāāāāāāāā> ā ā
ā ā <āāāāāāāāāā ā (mcp-server.js) ā <āāāāāāāāāā ā (AntigravityController)ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāā (Stdio) āāāāāāāāāāāāāāāāāāāāāāāāāāā (Ports 9000/9001) āāāāāāāāāāāāāāāāāāāāā
ā
ā Bitwig Controller API
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Bitwig Studio DAW ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā
```
The bridge consists of two main components:
1. **Node.js MCP Server**: Listens to Gemini commands over standard input/output, maps them to OSC messages, and sends them to Bitwig over UDP. It also starts a UDP receiver to get real-time status updates (playback, track volume, solo, mute) from Bitwig.
2. **Bitwig Controller Script**: A JavaScript extension loaded directly inside Bitwig Studio that opens a UDP socket (port `9000`) to receive OSC commands, executes actions natively using the Bitwig Controller API, and pushes state changes back to Node.js (port `9001`).
---
## š Project Structure
```
/home/bedri/Bitwig Studio/Projects/BitWig/
āāā package.json # Project manifest (dependencies: node-osc)
āāā package-lock.json # Package lockfile
āāā mcp-server.js # Node.js MCP server (Stdio JSON-RPC bridge)
āāā start-mcp.sh # Executable launcher script
āāā README.md # This documentation
/home/bedri/Bitwig Studio/Controller Scripts/
āāā AntigravityController.control.js # Extension script loaded by Bitwig Studio
```
---
## š Setup & Activation
The project has been automatically deployed, but here are the configuration references:
### 1. Gemini MCP Registration
The server is registered in your local Gemini Configuration file (`~/.gemini/config/mcp_config.json`) under the `bitwig-agent` key:
```json
"bitwig-agent": {
"command": "node",
"args": [
"/home/bedri/Bitwig Studio/Projects/BitWig/mcp-server.js"
]
}
```
### 2. Enable in Bitwig Studio
1. Launch **Bitwig Studio**.
2. Open the dashboard (click the Bitwig logo at the top center) and navigate to **Settings > Controllers**.
3. Click **Add Controller**.
4. Set **Vendor** to `Antigravity` and **Model** to `Gemini Controller Bridge`.
5. The extension will automatically bind, starting the UDP servers on ports `9000` (listening) and `9001` (sending).
---
## š ļø Supported Tools & Commands
Gemini is equipped with the following tools through this MCP server:
| Tool Name | Parameters | Description |
| :--- | :--- | :--- |
| `get_state` | *None* | Retrieves transport play state, BPM, arranger loop status, and list of existing tracks. |
| `play` | *None* | Starts playback in Bitwig. |
| `stop` | *None* | Stops playback. |
| `record` | *None* | Toggles arranger recording. |
| `toggle_loop` | *None* | Toggles the arranger loop. |
| `set_tempo` | `bpm` (number) | Adjusts the project tempo (e.g. `128.5`). |
| `set_track_volume`| `track_index` (int), `volume` (float 0.0 - 1.0) | Sets the volume level of a track. |
| `set_track_pan` | `track_index` (int), `pan` (float 0.0 - 1.0) | Adjusts the panning of a track (0.5 is center). |
| `set_track_mute` | `track_index` (int), `mute` (bool) | Mutes/unmutes a track. |
| `set_track_solo` | `track_index` (int), `solo` (bool) | Solos/unsolos a track. |
| `set_track_arm` | `track_index` (int), `arm` (bool) | Arms/disarms a track for recording. |
| `launch_scene` | `scene_index` (int) | Launches a scene by index. |
| `undo` | *None* | Executes native Undo. |
| `redo` | *None* | Executes native Redo. |
---
## š¬ Example Prompts
You can now command your DAW in natural language:
* *"Start playback in Bitwig"*
* *"Set the project BPM to 124"*
* *"Mute track 2 and solo track 0"*
* *"Get the current tracks list and their volumes"*
* *"Turn arranger loop on"*
* *"Undo the last action"*
---
## š Troubleshooting
### Flatpak Network Permissions
Because Bitwig is packaged as a Flatpak on your Linux system, it runs in a sandbox. If the OSC connection fails, grant Bitwig permission to share the host's loopback network interface by running the following command:
```bash
flatpak override --user --share=network com.bitwig.BitwigStudio
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues