You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+8-4Lines changed: 8 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Contributing to flstudio-mcp
2
2
3
3
Thanks for your interest in improving flstudio-mcp. This project is a Model
4
-
Context Protocol server that lets Claude drive FL Studio 2025 — mixer, plugins,
4
+
Context Protocol server that lets an AI assistant drive FL Studio 2025 — mixer, plugins,
5
5
piano roll, routing, and project — through calibrated, safety-checked tools.
6
6
Contributions of all kinds are welcome: bug reports, fixes, new tools, docs,
7
7
and platform support.
@@ -11,6 +11,10 @@ This repository is the maintained `thunderdew-dawn/flstudio-mcp` fork of
11
11
compatibility, but contributions should follow this fork's rollback-first
12
12
safety layer, API-evidence discipline, and roadmap in `ROADMAP.md`.
13
13
14
+
## Code of Conduct
15
+
16
+
By participating in this project, you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md). Please read it to understand the expectations for behavior in our community.
17
+
14
18
## Ways to contribute
15
19
16
20
-**Report a bug** — open an issue with steps to reproduce, your FL Studio build, and the relevant Script output / server log.
@@ -35,13 +39,13 @@ You'll need the same environment as a user, plus an editable install:
35
39
- Windows 10/11 or macOS 12+, FL Studio 2025+, Python 3.12
36
40
- loopMIDI on Windows or the IAC Driver on macOS, with two ports named exactly
37
41
FLStudioMCP RX and FLStudioMCP TX
38
-
-Claude Desktop (or any MCP client) for end-to-end testing
42
+
-An MCP client (like Claude Desktop or Cursor) for end-to-end testing
39
43
40
44
Install steps: clone the repo, cd into it, run `scripts\install_windows.bat` or
41
45
`./scripts/install_macos.sh`, then `pip install -e ".[audio]"` if you'll touch
42
46
the audio analysis code. Wire the MIDI ports in FL (Options > MIDI Settings),
43
47
confirm `[FLStudioMCP] Ready` in FL's Script output, start the bridge with
44
-
`fl-studio-mcp-daemon`, then verify the link by asking Claude to call `fl_ping`.
48
+
`fl-studio-mcp-daemon`, then verify the link by asking your AI assistant to call `fl_ping`.
45
49
46
50
## Project layout
47
51
@@ -72,7 +76,7 @@ Every tool that modifies the project must route through the snapshot → write
72
76
A good report includes:
73
77
74
78
- FL Studio edition and build (e.g. Producer Edition v25.2.5 [build 5319])
75
-
- What you asked Claude to do, and what happened vs. what you expected
79
+
- What you asked the AI assistant to do, and what happened vs. what you expected
76
80
- Relevant FL Script output and server/daemon logs

13
+

13
14
14
-
*Claude diagnosing and fixing a mix in FL Studio through natural language.*
15
+
*The LLM assistant diagnosing and fixing a mix in FL Studio through natural language.*
15
16
16
17
## Overview
17
18
18
-
flstudio-mcp is a Model Context Protocol (MCP) server that lets Claude Desktopdrive FL Studio 2025 directly — the mixer, plugins, piano roll, routing, and project — from plain-language requests. Ask for a mix diagnosis, a vocal chain, a chord progression in a particular scale, or a full arrangement, and Claude carries it out through FL's scripting API and a set of calibrated, safety-checked tools.
19
+
flstudio-mcp is a Model Context Protocol (MCP) server that lets any MCP client (like Claude Desktop, ChatGPT, or Cursor) drive FL Studio 2025 directly — the mixer, plugins, piano roll, routing, and project — from plain-language requests. Ask for a mix diagnosis, a vocal chain, a chord progression in a particular scale, or a full arrangement, and the LLM assistant carries it out through FL's scripting API and a set of calibrated, safety-checked tools.
19
20
20
21
It is genre- and producer-agnostic: nothing about it assumes a particular style of music.
21
22
@@ -45,7 +46,7 @@ fl-studio-mcp-daemon :: start the bridge, keep it running
45
46
.venv/bin/fl-studio-mcp-daemon # start the bridge, keep it running
46
47
```
47
48
48
-
Wire the two loopMIDI ports in FL (Options > MIDI Settings), arm `MCP_Apply` once in the piano roll, then ask Claude in plain language:
49
+
Wire the two loopMIDI ports in FL (Options > MIDI Settings), arm `MCP_Apply` once in the piano roll, then ask the LLM assistant in plain language:
49
50
50
51
> "Scan my mix and tell me what's wrong." — "Set up a vocal chain from my plugins." — "Export this arrangement to MIDI."
51
52
@@ -71,15 +72,15 @@ Full setup is below.
71
72
-**Multi-track MIDI export** — generate a complete arrangement as a standard MIDI file to import.
72
73
-**Multi-pattern arrangement** — create, name, clone, and mark sections.
73
74
-**Note and chord writing** into the piano roll, with quantize to a grid (for new notes and existing ones).
74
-
-**Composition in any scale or mode** — Western modes, pentatonic, ragas, maqam, and beyond — through the scale composer, where Claude supplies the notes for the requested scale.
75
+
-**Composition in any scale or mode** — Western modes, pentatonic, ragas, maqam, and beyond — through the scale composer, where the LLM assistant supplies the notes for the requested scale.
75
76
76
77
### Audio analysis
77
78
- Tempo and key estimation from an audio file.
78
79
- Melody-to-MIDI transcription (CREPE pitch tracking, with a lighter fallback).
79
80
80
81
The server exposes 117 tools across the production, mixing, composition, safety,
81
82
and project-organization surface, plus 6 live resources (project, mixer,
82
-
transport, channels, patterns, status) that Claude can read directly.
83
+
transport, channels, patterns, status) that the LLM assistant can read directly.
83
84
84
85
## What sets it apart
85
86
@@ -89,7 +90,7 @@ flstudio-mcp is built as a mixing and production assistant, not only a note send
89
90
90
91
These are properties of FL Studio's scripting API, stated plainly:
91
92
92
-
-**Plugins, audio files, and rendering are UI-only.** FL's API cannot load a plugin, load an audio file, or render audio. The plugin and preset tools therefore *suggest* — you load the chosen plugin or preset, and Claude then configures it. Audio export is done manually (File > Export); Claude can analyze the rendered file afterward.
93
+
-**Plugins, audio files, and rendering are UI-only.** FL's API cannot load a plugin, load an audio file, or render audio. The plugin and preset tools therefore *suggest* — you load the chosen plugin or preset, and the LLM assistant then configures it. Audio export is done manually (File > Export); the LLM assistant can analyze the rendered file afterward.
93
94
-**Note writing is armed once per session.** A generated pyscript writes notes into the piano roll; FL exposes no API to run a pyscript, so you run "MCP_Apply" once from the piano roll's scripting menu at the start of a session.
94
95
-**Micro-tonal and gamaka-heavy music is approximated.** Scales with intervals smaller than a semitone (e.g. Arabic maqam) are rounded to the nearest semitone, and traditions built on gamaka/ornamentation (e.g. Carnatic) get the *scale framework* — the correct swaras and intervals — not gamaka or micro-tonal rendering. That's a limit of 12-tone MIDI, not of the tools.
This script will copy the controller script, create a virtual environment (`.venv`), install the server inside it, and verify that the IAC Driver ports are online. It also pre-seeds the note-bridge script (`MCP_Apply.pyscript`) inside your FL Studio user data directory.
143
144
144
145
> [!IMPORTANT]
145
-
> **macOS Accessibility Permissions**: Since the note-writing tool simulates keyboard shortcuts (`Cmd+Opt+Y`) via `pyautogui` to trigger script runs in FL Studio, the application executing the MCP server (e.g., your terminal, iTerm, Warp, or the Claude/ChatGPT Desktop client app) must be granted Accessibility permissions. Go to **System Settings > Privacy & Security > Accessibility** and ensure the app you are running is enabled.
146
+
> **macOS Accessibility Permissions**: Since the note-writing tool simulates keyboard shortcuts (`Cmd+Opt+Y`) via `pyautogui` to trigger script runs in FL Studio, the application executing the MCP server (e.g., your terminal, iTerm, Warp, or your MCP client app like Claude Desktop/ChatGPT) must be granted Accessibility permissions. Go to **System Settings > Privacy & Security > Accessibility** and ensure the app you are running is enabled.
@@ -158,11 +159,11 @@ For optional audio/melody analysis extras:
158
159
159
160
### 4. Connect to your MCP Client
160
161
161
-
#### Option A: Claude Desktop (stdio)
162
+
#### Option A: Claude Desktop, Cursor, or other stdio clients
162
163
1. Start the MIDI bridge daemon (recommended so MIDI ports are held by a stable background process):
163
164
* Windows: Run `fl-studio-mcp-daemon`
164
165
* macOS: Run `.venv/bin/fl-studio-mcp-daemon`
165
-
2. Configure Claude Desktop. Add this to your configuration file (Windows: `%APPDATA%\Claude\claude_desktop_config.json`, macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
166
+
2. Configure your client (e.g., Claude Desktop). Add this to your configuration file (Windows: `%APPDATA%\Claude\claude_desktop_config.json`, macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
166
167
```json
167
168
{
168
169
"mcpServers": {
@@ -204,7 +205,7 @@ Verify the connection by asking your AI assistant to run `fl_ping`.
204
205
|---|---|
205
206
| loopMIDI ports not found / not detected | The two ports must be named **exactly**`FLStudioMCP RX` and `FLStudioMCP TX`. Recreate them in loopMIDI and re-run the installer. |
206
207
| No `[FLStudioMCP] Ready` in FL's Script output | The controller isn't registered: set the `FLStudioMCP RX` input's **Controller type** to **FLStudioMCP** in MIDI Settings, confirm `device_FLStudioMCP.py` is in `Settings\Hardware\FLStudioMCP\`, then fully restart FL Studio. |
207
-
|Claude can't reach FL / `fl_ping` fails | Make sure the daemon is running (`fl-studio-mcp-daemon`); check the transport matches (`FLSTUDIO_MCP_TRANSPORT=tcp` uses the daemon, unset uses direct MIDI); restart Claude Desktop after editing its config. |
208
+
|The LLM assistant can't reach FL / `fl_ping` fails | Make sure the daemon is running (`fl-studio-mcp-daemon`); check the transport matches (`FLSTUDIO_MCP_TRANSPORT=tcp` uses the daemon, unset uses direct MIDI); restart your MCP client after editing its config. |
208
209
| Note-writing does nothing | Run `MCP_Apply` once from the piano roll's scripting menu this session — it arms the note bridge. |
209
210
| Audio tools error or are unavailable | Install the optional extras: `pip install -e ".[audio]"` (or `".[audio,audio-accurate]"`). |
0 commit comments