拼凑物
告诉你的合成器你想要什么
适用于合成器的LLM友好MIDI控制平面。自然语言→ 通过MCP(模型上下文协议)进行声音设计。
为什么存在补丁
补丁工作最初是一个个人的副项目。
我拥有一些硬件合成器,但我不会经常使用它们。每次我在休息后拿出一个,我都必须重新加载一个完全不同的心理模型:不同的布局、不同的调制方案、不同的参数名称。即使我大致知道我想要什么样的声音,到达那里也可能需要比预期更长的时间。
Patchwork背后的想法很简单:
与其记住合成器是如何工作的,不如描述你想要什么,让系统让你进入球场。
比如:
- “柔软的进化垫”
- “更深、更有力的低音”
- “运动更多,亮度更低”
补丁使用模型上下文协议(MCP)作为LLM和真实硬件之间的控制层。该模型根据音乐意图进行推理,而特定于合成器的驱动程序将该意图转换为确定性MIDI(CC、NRPN、SysEx)消息。
这不是声音设计知识的替代品,也不是完美无瑕的。它不会完美地重现著名的补丁或保证特定的结果。它的优点是减少摩擦——靠得足够近,你可以开始玩和调整,而不是翻阅手册。
修补工作有意专注于:
- 意图驱动控制
- 的确定性行为
- 真正的硬件集成
- 对MIDI细节进行清晰的抽象
它没有 生成音频、自主表演或尝试“为你制作音乐”
特性
- 8个MCP工具:完整的合成控制,包括预设检查和调制路由
- 多合成支持:Arturia MicroFreak和Roland SE-02的司机
- 高级参数控制:NRPN支持兼容合成器上的14位精度
- 全调制矩阵:完整的mod路由控制(MicroFreak:5个源×7个目的地)
- SysEx预设读数:转储并检查硬件预设(MicroFreak:4个存储体中的512个插槽)
- 动态资源:作为MCP资源公开的Synth功能(参数映射、MIDI参考)
- 类型安全:具有严格验证的完整TypeScript实现
- 硬件优先:直接MIDI通信,无需DAW
安装
npm install -g mcp-patchwork
# or clone and build locally:
git clone https://github.com/truthanb/mcp-patchwork
cd patchwork
npm install
npm run buildMCP配置
在MCP客户端的设置文件中配置服务器:
克劳德桌面版
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"patchwork": {
"command": "npx",
"args": ["-y", "mcp-patchwork"]
}
}
}或者,如果在本地安装:
{
"mcpServers": {
"patchwork": {
"command": "node",
"args": ["dist/mcp/server.js"],
"cwd": "/path/to/patchwork"
}
}
}VS代码(副本)
编辑 ~/Library/Application Support/Code/User/mcp.json (macOS)或 %APPDATA%\Code\User\mcp.json (Windows):
{
"mcpServers": {
"patchwork": {
"command": "npx",
"args": ["-y", "mcp-patchwork"]
}
}
}其他MCP客户端
任何兼容MCP的客户端都可以使用stdio传输进行连接:
{
"command": "npx",
"args": ["-y", "mcp-patchwork"]
}配置后,重新启动MCP客户端。连接MicroFreak后,拼接工具应自动出现。
快速开始
通过MIDI连接合成器,并使用自然语言通过任何MCP客户端进行控制:
"Create a warm bass sound with slow filter modulation"
"Make a plucky lead with fast decay"
"Set up a pad with LFO on the filter"或者直接使用工具:
// List connected synths
await list_synths(); // Returns available MicroFreak and/or SE-02
// Create a kick drum on MicroFreak
await init(); // Reset to clean state
await set_synth_feature("oscillatorType", "Modal");
await set_param("env.amp.decay", 0.15);
await set_param("filter.cutoff", 0.3);
await set_modulation("Envelope", "Pitch", -0.35);
await set_modulation("Envelope", "Cutoff", 0.5);
// Create a bass on SE-02
await set_param("osc1.waveform", 0.0); // Sawtooth
await set_param("filter.cutoff", 0.3);
await set_param("filter.resonance", 0.6);
await set_param("env.amp.decay", 0.4);支持的硬件
Arturia MicroFreak
- 类型:带模拟滤波器的数字混合合成器
- 振荡器:22种振荡器类型(波表、物理建模、模态、颗粒等)
- 调制:5个来源×7个目的地=35个mod矩阵路由
- 预设:4个存储体中有512个插槽(完全支持SysEx读/写)
- 控制:MIDI CC+14位NRPN,用于平滑调制量
- 特别功能:循环包络、混响模式、压力灵敏度
罗兰SE-02
- 类型:精品模拟单合成(SH-101传承)
- 振荡器:3个真正的模拟振荡器,具有多种波形
- 过滤器:4极模拟低通滤波器
- 调制:交叉调制、带延迟的LFO、综合路由
- 控制:所有参数的MIDI CC
- 特别功能:内置延迟、子振荡器、噪声发生器、振荡器同步
可扩展性
这 SynthAdapter 界面允许添加新的合成器。每位司机提供:
- 参数映射(标准化0.0-1.0值到硬件MIDI)
- Synth特定功能(振荡器类型、滤波器模式等)
- 能力描述(可用参数、调制路由)
- 可选SysEx协议实现(预设转储/加载)
MCP工具
| 工具 | 用途 | MicroFreak | SE-02 |
|---|---|---|---|
list_synths | 列出连接的合成器及其功能 | ✅ | ✅ |
describe_synth | 获取详细功能(振荡器、参数、模矩阵) | ✅ | ✅ |
set_param | 设置归一化参数(0.0-1.0) | ✅ | ✅ |
set_synth_feature | 设置振荡器/滤波器类型和模式 | ✅ | ✅ |
set_modulation | 路由mod源→ 目的地(-1.0到1.0) | ✅ | ⚠️ |
init | 将合成器重置为基线(零模组,中性封套) | ✅ | ✅ |
load_preset | 从插槽加载预设(MicroFreak为1-512) | ✅ | ⚠️ |
dump_preset | 通过SysEx读取完整的预设数据 | ✅ | ⚠️ |
传说: ✅ 完全支持|⚠️ 有限/不适用|❌ 不支持
备注:
- SE-02调制SE-02具有通过专用CC控制的固定调制路由,而不是灵活的调制矩阵
- SE-02预设:SE-02支持128个预设的程序更改,但不支持与MicroFreak相同的SysEx预设转储
MCP资源
| 资源 | 描述 |
|---|---|
synth:///params | 带有描述和提示的JSON参数映射 |
synth:///midi-reference | 完整的MIDI CC/NRPN参考示例 |
测试
npm test # 20 tests: CC/NRPN conversion, normalization, clamping建筑
拼凑物 =MCP服务器+合成适配器抽象+硬件MIDI
- MCP层 (
src/mcp/):8个工具+2个资源,stdio传输 - 合成抽象 (
src/synth/):通用参数接口,驱动程序-抽象API - MIDI层 (
src/midi/):CC+NRPN+SysEx消息构建、硬件端口管理 - 驾驶员 (
src/drivers/):
- MicroFreak (microfreak/):22种振荡器类型,全模矩阵(5×7),NRPN参数映射,SysEx预设协议 - SE-02 (se02/):模拟架构建模、全面的CC映射、振荡器同步、交叉调制
添加新驱动程序
要添加对新合成器的支持:
- 实施
SynthAdapter接口在src/drivers/yoursynth/driver.ts - 定义参数映射(规范参数→ 硬件MIDI CC/NRPN)
- 指定合成器的特定功能(振荡器类型、滤波器模式等)
- 可选地实现SysEx协议以进行预设转储/加载
- 在中注册驾驶员
src/synth/manager.ts
看 MicroFreak驱动程序 和 SE-02驱动器 以供参考实施。
状态
- ✅ MCP工具套件(8个工具,2个资源)
- ✅ 支持全功能的MicroFreak驱动程序
- ✅ SE-02驱动器,具有全面的参数控制
- ✅ MicroFreak的SysEx预设读数(4个存储体512个预设)
- ✅ SysEx响应的MIDI输入处理
- ✅ 使用Zod验证进行类型安全参数处理
- ✅ 热插拔合成检测
- ✅ 多合成器支持(可以同时连接多个合成器)
出版
要将新版本发布到npm:
npm run build
npm test
npm version patch # or minor/major
npm publish文档
将军
- 架构概述 -系统设计和组件交互
