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
视窗
- 安装并运行loopMIDI
https://www.tobias-erichsen.de/software/loopmidi.html
- 删除所有现有端口
- 创建名为的端口
fm8
macOS
- 打开音频MIDI设置
- 窗口→ 显示MIDI工作室
- 双击IAC驱动程序
- 启用“设备联机”
- 创建名为的端口
fm8
配置FM8
- 将MIDI输入设置为
fm8通过单击关闭/打开端口,更改为打开 - 转到主选项卡并加载包含的MCP.f8c文件
- 右键单击所有关闭的运算符以启用它们
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服务器” } }
- 重新启动任何LLM
- 在工作区设置中启用MCP服务器
- 使用
@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
许可证
麻省理工学院
