Skip to content

Commit 0b14263

Browse files
chore: release v1.0.0 (cross-platform, safety layer, documentation overhaul)
1 parent b94868d commit 0b14263

54 files changed

Lines changed: 543 additions & 249 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CODE_OF_CONDUCT.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official e-mail address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement.
63+
All complaints will be reviewed and investigated promptly and fairly.
64+
65+
All community leaders are obligated to respect the privacy and security of the
66+
reporter of any incident.
67+
68+
## Enforcement Guidelines
69+
70+
Community leaders will follow these Community Impact Guidelines in determining
71+
the consequences for any action they deem in violation of this Code of Conduct:
72+
73+
### 1. Correction
74+
75+
**Community Impact**: Use of inappropriate language or other behavior deemed
76+
unprofessional or unwelcome in the community.
77+
78+
**Consequence**: A private, written warning from community leaders, providing
79+
clarity around the nature of the violation and an explanation of why the
80+
behavior was inappropriate. A public apology may be requested.
81+
82+
### 2. Warning
83+
84+
**Community Impact**: A violation through a single incident or series of
85+
actions.
86+
87+
**Consequence**: A warning with consequences for continued behavior. No
88+
interaction with the people involved, including unsolicited interaction with
89+
those enforcing the Code of Conduct, for a specified period of time. This
90+
includes avoiding interactions in community spaces as well as external channels
91+
like social media. Violating these terms may lead to a temporary or permanent
92+
ban.
93+
94+
### 3. Temporary Ban
95+
96+
**Community Impact**: A serious violation of community standards, including
97+
sustained inappropriate behavior.
98+
99+
**Consequence**: A temporary ban from any sort of interaction or public
100+
communication with the community for a specified period of time. No public or
101+
private interaction with the people involved, including unsolicited interaction
102+
with those enforcing the Code of Conduct, is allowed during this period.
103+
Violating these terms may lead to a permanent ban.
104+
105+
### 4. Permanent Ban
106+
107+
**Community Impact**: Demonstrating a pattern of violation of community
108+
standards, including sustained inappropriate behavior, harassment of an
109+
individual, or aggression toward or disparagement of classes of individuals.
110+
111+
**Consequence**: A permanent ban from any sort of public interaction within the
112+
community.
113+
114+
## Attribution
115+
116+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
117+
version 2.1, available at
118+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
119+
120+
Community Impact Guidelines were inspired by
121+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
122+
123+
For answers to common questions about this code of conduct, see the FAQ at
124+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
125+
[https://www.contributor-covenant.org/translations][translations].
126+
127+
[homepage]: https://www.contributor-covenant.org
128+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
129+
[Mozilla CoC]: https://github.com/mozilla/diversity
130+
[FAQ]: https://www.contributor-covenant.org/faq
131+
[translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Contributing to flstudio-mcp
22

33
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,
55
piano roll, routing, and project — through calibrated, safety-checked tools.
66
Contributions of all kinds are welcome: bug reports, fixes, new tools, docs,
77
and platform support.
@@ -11,6 +11,10 @@ This repository is the maintained `thunderdew-dawn/flstudio-mcp` fork of
1111
compatibility, but contributions should follow this fork's rollback-first
1212
safety layer, API-evidence discipline, and roadmap in `ROADMAP.md`.
1313

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+
1418
## Ways to contribute
1519

1620
- **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:
3539
- Windows 10/11 or macOS 12+, FL Studio 2025+, Python 3.12
3640
- loopMIDI on Windows or the IAC Driver on macOS, with two ports named exactly
3741
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
3943

4044
Install steps: clone the repo, cd into it, run `scripts\install_windows.bat` or
4145
`./scripts/install_macos.sh`, then `pip install -e ".[audio]"` if you'll touch
4246
the audio analysis code. Wire the MIDI ports in FL (Options > MIDI Settings),
4347
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`.
4549

4650
## Project layout
4751

@@ -72,7 +76,7 @@ Every tool that modifies the project must route through the snapshot → write
7276
A good report includes:
7377

7478
- 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
7680
- Relevant FL Script output and server/daemon logs
7781
- Whether fl_ping succeeds
7882

README.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
# flstudio-mcp
22

3-
**Control FL Studio with Claude: AI mixing, composition, and mix diagnosis through natural language.**
3+
**Control FL Studio with any MCP-compatible LLM: AI mixing, composition, and mix diagnosis through natural language.**
44

55
![version](https://img.shields.io/badge/version-1.0.0-blue)
6-
![status](https://img.shields.io/badge/status-beta-yellow)
6+
![status](https://img.shields.io/badge/status-stable-green)
77
![license](https://img.shields.io/badge/license-MIT-green)
88
![python](https://img.shields.io/badge/python-3.10+-blue)
9-
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS-blue)
9+
![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat&logo=windows&logoColor=white)
10+
![macOS](https://img.shields.io/badge/macOS-000000?style=flat&logo=apple&logoColor=white)
1011
![FL Studio](https://img.shields.io/badge/FL%20Studio-2025%2B-orange)
1112

12-
![Claude diagnosing and fixing a mix in FL Studio](docs/demo.gif)
13+
![The LLM assistant diagnosing and fixing a mix in FL Studio](docs/demo.gif)
1314

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.*
1516

1617
## Overview
1718

18-
flstudio-mcp is a Model Context Protocol (MCP) server that lets Claude Desktop 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 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.
1920

2021
It is genre- and producer-agnostic: nothing about it assumes a particular style of music.
2122

@@ -45,7 +46,7 @@ fl-studio-mcp-daemon :: start the bridge, keep it running
4546
.venv/bin/fl-studio-mcp-daemon # start the bridge, keep it running
4647
```
4748

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:
4950

5051
> "Scan my mix and tell me what's wrong." — "Set up a vocal chain from my plugins." — "Export this arrangement to MIDI."
5152
@@ -71,15 +72,15 @@ Full setup is below.
7172
- **Multi-track MIDI export** — generate a complete arrangement as a standard MIDI file to import.
7273
- **Multi-pattern arrangement** — create, name, clone, and mark sections.
7374
- **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.
7576

7677
### Audio analysis
7778
- Tempo and key estimation from an audio file.
7879
- Melody-to-MIDI transcription (CREPE pitch tracking, with a lighter fallback).
7980

8081
The server exposes 117 tools across the production, mixing, composition, safety,
8182
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.
8384

8485
## What sets it apart
8586

@@ -89,7 +90,7 @@ flstudio-mcp is built as a mixing and production assistant, not only a note send
8990

9091
These are properties of FL Studio's scripting API, stated plainly:
9192

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.
9394
- **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.
9495
- **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.
9596

@@ -142,7 +143,7 @@ chmod +x scripts/install_macos.sh
142143
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.
143144

144145
> [!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.
146147
147148
For optional audio/melody analysis extras:
148149
* Windows: `pip install -e ".[audio,audio-accurate]"`
@@ -158,11 +159,11 @@ For optional audio/melody analysis extras:
158159

159160
### 4. Connect to your MCP Client
160161

161-
#### Option A: Claude Desktop (stdio)
162+
#### Option A: Claude Desktop, Cursor, or other stdio clients
162163
1. Start the MIDI bridge daemon (recommended so MIDI ports are held by a stable background process):
163164
* Windows: Run `fl-studio-mcp-daemon`
164165
* 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`):
166167
```json
167168
{
168169
"mcpServers": {
@@ -204,7 +205,7 @@ Verify the connection by asking your AI assistant to run `fl_ping`.
204205
|---|---|
205206
| 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. |
206207
| 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. |
208209
| Note-writing does nothing | Run `MCP_Apply` once from the piano roll's scripting menu this session — it arms the note bridge. |
209210
| Audio tools error or are unavailable | Install the optional extras: `pip install -e ".[audio]"` (or `".[audio,audio-accurate]"`). |
210211

ROADMAP.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ and compatibility with the safety contract.
698698
- Prefer generated reviewable script payloads over broad opaque commands.
699699

700700
Tracking the full scope — eight phases shipping the MCP server, the scale/mode
701-
composition tools, the SKILL.md, evals, and the Claude Code plugin marketplace
701+
composition tools, the SKILL.md, evals, and plugin marketplaces
702702
bundle.
703703

704704
Each phase is shippable on its own. Each ends with `python scripts/test_bridge.py`
@@ -715,7 +715,7 @@ minimum tool surface.
715715
- [x] Transport tools: ping, tempo get/set, play, stop, toggle, record,
716716
play-state, song-position get/set. **10 tools total.**
717717
- [x] `scripts/test_bridge.py` standalone harness.
718-
- [x] Install script for Windows. (macOS / Linux: not shipped — contributions welcome.)
718+
- [x] Install scripts for Windows and macOS.
719719

720720
## Phase 1 — Channel rack (~12 tools)
721721

@@ -800,7 +800,7 @@ plugins; we expose the raw FL view and let the LLM map names.
800800

801801
Genre- and producer-agnostic composition in any scale or mode: Western modes,
802802
pentatonic, the Carnatic melakarta and janya ragas, Arabic maqam, and beyond.
803-
Claude supplies the correct notes/intervals for the requested scale and writes
803+
the LLM assistant supplies the correct notes/intervals for the requested scale and writes
804804
them through the note bridge. Indian ragas are one supported family among many,
805805
not the headline.
806806

@@ -826,11 +826,8 @@ so it ships inside the wheel.
826826
- [x] `skills/flstudio-production/SKILL.md` orchestration layer with deep
827827
content in `references/`. Under 500 lines.
828828
- [x] `evals/evals.json` — 10 questions exercising the full tool surface.
829-
- [ ] `.claude-plugin/marketplace.json` so this can live in
830-
`rosasynthesiz-skills` as an installable plugin.
831-
- [x] `AGENTS.md` describing the agentic workflow for future Claude sessions
829+
- [x] `AGENTS.md` describing the agentic workflow for future AI assistant sessions
832830
working on this codebase.
833-
- [ ] Demo video and screenshots in `docs/`.
834831
- [x] GitHub Actions for linting and the standalone bridge tests (mock FL).
835832
- [x] Pin a known-working FL Studio version range in README.
836833

docs/MIXING_ROUTING_REPORT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,4 @@ No delete operations are implemented.
147147
## 8. Open housekeeping
148148
- The old heavy `_h_detect_cleanup` is now **dead code** in the controller
149149
(replaced by server-side judgement); remove on the next controller change.
150-
- New write tools require a **Claude Desktop restart** to register live.
150+
- New write tools require an **MCP client restart** to register live.

0 commit comments

Comments
 (0)