FM8合成器控制服务

通过MIDI和模型上下文协议控制Native Instruments FM8合成器的AI驱动服务,适用于音乐制作和声音设计。

  • by thesigma1receptor
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 thesigma1receptor/fm8MCP

使用说明

FM8 MCP服务器

AI通过MIDI和模型上下文协议控制Native Instruments FM8合成器。

这有什么作用

允许Claude Desktop(或其他MCP客户端)通过虚拟MIDI端口发送MIDI CC消息来控制FM8合成器。

需求

  • Node.js 18+
  • 原生仪器FM8
  • 虚拟MIDI端口软件:
    • 视窗: loopMIDI
    • macOS:IAC驱动程序(内置)

快速开始

克隆https://github.com/thesigma1receptor/fm8MCP.git cd fm8MCP npm安装 npm 运行构建

设置虚拟MIDI

视窗

  1. 安装并运行loopMIDI https://www.tobias-erichsen.de/software/loopmidi.html
  2. 删除所有现有端口
  3. 创建名为的端口 fm8

macOS

  1. 打开音频MIDI设置
  2. 窗口→ 显示MIDI工作室
  3. 双击IAC驱动程序
  4. 启用“设备联机”
  5. 创建名为的端口 fm8

配置FM8

  1. 将MIDI输入设置为 fm8 通过单击关闭/打开端口,更改为打开
  2. 转到主选项卡并加载包含的MCP.f8c文件
  3. 右键单击所有关闭的运算符以启用它们

Claude桌面设置

编辑您的Claude配置文件:

视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

包含在回购中,或通过以下方式修改您的回购:

{ “mcpServers”:{ “fm8”:{ “command”:“node”, “args”:[ “C:/path/to/fm8-mcp-server/dist/server.js”, “--transport=stdio”, “--midi端口名称=fm8”, “--通道=1” ] } } }

重新启动Claude Desktop,您就准备好了!

任何LLM设置

需求:奥拉玛与 llama3.1 或 qwen2.5:4b 最小

编辑: %APPDATA%\anythingllm-desktop\storage\plugins\anythingllm_mcp_servers.json

包含在回购中,或通过以下方式修改您的回购:

{ “fm8”:{ “名称”:“FM8控制”, “command”:“node C:/path/to/fm8-mcp-server/dist/server.js”, “args”:[“--transport=stdio”,“--midi端口名=fm8”,“--通道=1”], “env”:{}, “cwd”:“C:/path/to/fm8-mcp服务器” } }

  1. 重新启动任何LLM
  2. 在工作区设置中启用MCP服务器
  3. 使用 @agent 在聊天中访问工具

你能控制什么

FM8矩阵(CC 0-62)

所有运营商到运营商的调制路线(A→B, B→C、 等等)

操作员输出(CC 63-70)

操作员到输出水平(A→出去,B→外出等)

频率比(CC 72-77)

每个运算符的调和/不调和关系

看 mappings.json 完整的CC参考。

克劳德提示示例

  • “创建调频铃声”
  • “将操作员A设置为将B调节到75%”
  • “生成纯正弦波”
  • “路线操作员C以满容量输出”
  • “显示所有可用的FM8控件”

如果你想让克劳德自由尝试:

-“比率从0到64:1不等,127等于64,请随时查看调频合成技术。有8个运算符,A-F是纯正弦波,X是噪声振荡器,Z是滤波器。让我们看看你能想出什么!”

让它成为你自己的!

如果你想添加任何功能,即更多的midi-cc,使用独立的fm8,打开midi-learn,我用touchosc制作了大约80个控件和映射。查看mappings.json并添加以cc#78开头的start。

还有一些方法可以通过mcp提供claude记忆和更好的指令。因此,他有可能学会如何发出复杂的声音。

小贴士

这也适用于副驾驶的VSCode。

启动服务器: node C:\fm8MCP\dist\server.js --transport=stdio --midi-port-name=fm8 --channel=1

代理的示例命令:

node -e "const easymidi = require('easymidi'); const out = new easymidi.Output('fm8'); console.log('⚡ Creating neuro bass...'); out.send('cc', {controller: 0, value: 95, channel: 0}); setTimeout(() => out.send('cc', {controller: 1, value: 110, channel: 0}), 20); setTimeout(() => out.send('cc', {controller: 8, value: 105, channel: 0}), 40); setTimeout(() => out.send('cc', {controller: 9, value: 90, channel: 0}), 60); setTimeout(() => out.send('cc', {controller: 17, value: 100, channel: 0}), 80); setTimeout(() => out.send('cc', {controller: 63, value: 127, channel: 0}), 100); setTimeout(() => out.send('cc', {controller: 64, value: 110, channel: 0}), 120); setTimeout(() => { console.log('🎵 Neuro bass loaded! Play low notes (C1-C2)'); process.exit(0); }, 400);"

故障排除

无MIDI信号

  • loopMIDI/IAC正在运行吗?
  • FM8输入设置为 fm8 港口?
  • MIDI通道匹配(默认值:1)?

服务器无法启动

  • 跑 npm run build 第一
  • 检查节点版本: node --version

克劳德找不到

  • 在配置中使用绝对路径
  • 即使在Windows上也可以使用正斜杠
  • 配置更改后重新启动Claude

许可证

麻省理工学院