AI音乐制作服务

连接Claude和FL Studio的MCP服务器,用于AI辅助音乐制作。

  • by kaupau
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kaupau/flai-mcp

使用说明

flai mcp

MCP服务器,将克劳德连接到FL工作室,用于人工智能辅助音乐制作。

状态: 阿尔法——功能核心,积极开发。欢迎捐款。

Claude Code / Claude Desktop / Cursor
        │  MCP (stdio)
        ▼
  flai-mcp server (Python)
        │
  Virtual MIDI (SysEx)
  (IAC Driver / loopMIDI)
        │
  device_flai.py
  (MIDI controller script
   running inside FL Studio)

它能做什么

类别 功能
运输 播放、停止、录制、获得/设定节奏、寻求突破/击败
混音器 获取/设置任何曲目的音量、平移、静音、独奏、名称、颜色
通道机架 获取/设置音量、摇摄、音高、名称、静音、混音器路由
模式 列出、重命名、重新着色、克隆、在模式之间导航
备注 通过步进音序器API将音符写入具有音高、速度和时间的模式
插件 列出参数、获取/设置值、循环预设
安排 添加/列出时间线标记,获取播放头位置
播放列表 播放列表曲目的名称和颜色

示例提示

“在模式1中写一个四人落地踢腿模式”

“在FLEX低音频道的模式5中添加a小调的滚动低音线”

“将混音器轨道2上的踢腿音量调低3dB,并用力摇高帽子”

“将通道4的截止设置为60%,共振设置为25%”

为Intro、Buildup、Drop、Breakdown和Outro添加排列标记

已知限制

  • 播放列表剪辑位置 -FL Studio的脚本API不公开任何在排列时间线上放置模式剪辑的功能。这是来自Image-Line的API缺口,而不是flai-mcp限制。图案必须手动排列。 (API审核)
  • 笔记书写使用步序器 --注释是通过以下方式编写的 setGridBit + setStepParameterByIndex。这适用于1/16音符量化的鼓和旋律模式。通过shift参数支持子步计时,但它不如Piano Roll灵活。
  • Piano Roll脚本无法在macOS上进行文件I/O --FL Studio的嵌入式Python open() 在macOS上已损坏,因此基于文件的钢琴滚桥无法工作。步进排序器方法是当前的解决方法。
  • 温度设置 --需要FL Studio 21+。对于旧版本,请使用FL Studio UI。

设置

1.虚拟MIDI端口

macOS(IAC驱动程序-内置,免费)

  1. 打开 音频MIDI设置 (聚光灯→ “音频MIDI设置”)
  2. 窗口→ 显示MIDI工作室
  3. 双击 IAC驾驶员 → check 设备已联机
  4. 添加两个端口: FLAI In 和 FLAI Out

Windows(loopMIDI-免费)

  1. 安装 loopMIDI
  2. 创建两个端口: FLAI In 和 FLAI Out

2.安装flai-mcp

# Clone
git clone https://github.com/kaupau/flai-mcp.git
cd flai-mcp

# Create venv and install (requires Python 3.11+)
uv venv --python 3.11 .venv
uv pip install -e .

# Or with pip
python -m venv .venv
source .venv/bin/activate
pip install -e .

3.安装FL Studio桥接脚本

python scripts/install_fl_bridge.py

或手动复制 fl_bridge/device_flai.py 致:

  • macOS: ~/Documents/Image-Line/FL Studio/Settings/Hardware/FLAI/device_flai.py
  • 窗户: %USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLAI\device_flai.py

4.配置FL Studio

  1. 开放式FL工作室
  2. 选项→ MIDI设置
  3. 输入部分:
    • 选择 IAC Driver FLAI In (或 FLAI In 在Windows上)
    • 集 控制器类型 到 福莱
    • 集 港口 到 1
    • 点击 启用
  4. 输出部分:
    • 选择 IAC Driver FLAI Out (或 FLAI Out 在Windows上)
    • 集 港口 到 1
    • 点击 启用

验证它是否正常工作:打开 View → 脚本输出 --您应该看到:

[FLAI] MCP Bridge initialized. Ready.
[FLAI] Input port: IAC Driver FLAI In

5.配置您的AI客户端

克劳德代码 --添加到 ~/.claude/settings.json:

{
  "mcpServers": {
    "flai": {
      "command": "/path/to/flai-mcp/.venv/bin/flai-mcp",
      "args": ["--midi-in", "IAC Driver FLAI In", "--midi-out", "IAC Driver FLAI Out"]
    }
  }
}

光标 --添加到 ~/.cursor/mcp.json (格式相同)。

克劳德桌面 --添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "flai": {
      "command": "/path/to/flai-mcp/.venv/bin/flai-mcp",
      "args": ["--midi-in", "IAC Driver FLAI In", "--midi-out", "IAC Driver FLAI Out"]
    }
  }
}

6.验证

# List available MIDI ports
flai-mcp --list-ports

# Run with debug logging
flai-mcp --log-level DEBUG

建筑

src/flai_mcp/
├── server.py               — MCP server assembly
├── __main__.py             — CLI entry point (flai-mcp)
├── bridges/
│   └── midi_bridge.py      — async SysEx ↔ asyncio bridge via mido
├── protocol/
│   ├── commands.py         — command/status enums
│   └── encoding.py         — SysEx ↔ JSON serialization
└── tools/
    ├── transport.py        — play/stop/tempo/position
    ├── mixer.py            — mixer track controls
    ├── channels.py         — channel rack controls
    ├── patterns.py         — pattern management
    ├── piano_roll.py       — note writing (step sequencer API)
    ├── plugins.py          — plugin parameters & presets
    └── arrangement.py      — timeline markers

fl_bridge/
└── device_flai.py          — FL Studio MIDI Controller Script

协议

命令是带有JSON有效载荷的SysEx消息:

Request:  [0xF0, 0x7D, CMD_ID, REQ_ID, <ascii-json>, 0xF7]
Response: [0xF0, 0x7D, 0x70,   REQ_ID, STATUS, <ascii-json>, 0xF7]
  • 0x7D --SysEx制造商ID保留用于非商业/教育用途
  • JSON使用 ensure_ascii=True 因此,所有有效载荷字节都是0x00–0x7F(SysEx安全)
  • 响应由以下内容匹配 REQ_ID (0–127,旋转计数器)

如何写笔记

FL Studio的MIDI控制器脚本API没有公开钢琴卷音符编辑。这 flpianoroll 该模块仅在Piano Roll Scripts中工作,该脚本在macOS上在单独的Python上下文中运行,文件I/O中断。

flai mcp通过 步进定序器API:

  • channels.setGridBit(channel, step, on/off) --启用/禁用步骤
  • channels.setStepParameterByIndex(channel, pattern, step, param, value) --设置每一步的音高、速度、摇摄和计时

这为每个音符提供了对音高(参数0)、速度(参数1)、摇摄(参数4)和微定时(参数7)的控制。

发展

git clone https://github.com/kaupau/flai-mcp.git
cd flai-mcp
uv venv --python 3.11 .venv
uv pip install -e ".[dev]"

# Run protocol tests (no FL Studio needed)
pytest

# Check ports
flai-mcp --list-ports

添加新工具

  1. 将命令ID添加到 src/flai_mcp/protocol/commands.py
  2. 在中添加处理程序 fl_bridge/device_flai.py → _HANDLERS 调度表
  3. 在中添加MCP工具 src/flai_mcp/tools/*.py
  4. 重新安装FL Studio脚本: python scripts/install_fl_bridge.py

贡献

欢迎投稿!一些需要工作的领域:

  • [ ] 钢琴滚音符书写 --找到一种使用方法 flpianoroll.score.addNote() 以编程方式(来自的子流程IPC方法 音乐副驾驶 很有希望)
  • [ ] 播放列表剪辑位置 --大堂图像线 playlist.addClip() API,或探索 .flp 通过以下方式操作文件 PyFLP
  • [ ] Windows测试 --loopMIDI设置、路径处理
  • [ ] 自动化剪辑 --创建和操作自动化
  • [ ] 更好的节奏控制 — mixer.setCurrentTempo() 并非所有版本都存在
  • [ ] 音频渲染 -如果API允许,则支持导出/反弹

许可证

麻省理工学院