合成实验室mcp
人工智能驱动的合成实验室 --创作歌曲,生成Pure Data和VCV Rack补丁,映射MIDI控制器,并通过Claude控制现场合成器。
 ](https://www.npmjs.com/package/synthlab-mcp-server)   
______________________________________________________________________
这是什么?
一 MCP(模型上下文协议) 服务器将Claude变成一个完整的综合工作站。10个工具+1个提示,741个测试,除了MCP SDK+Zod之外,没有运行时依赖关系。
纯数据 --根据流派描述创作完整歌曲,解析 .pd 将文件转换为键入的AST,根据规格生成补丁,分析信号流,模板11个仪器,组装具有模块间布线的多模块机架,实时发送OSC/FUDI。
VCV机架 --生成 .vcv 模块+电缆规范中的补丁文件,以及从C++源代码中自动抓取的19个插件(约600个模块)的注册表。
midi控制器 --自动将硬件控制(Korg nanoKONTROL2、Arturia MicroFreak、Roland TR-8S)映射到机架参数,具有绝对、相对和触发模式。
*用鼓、贝斯和琶音创作一首黑暗的电子舞曲——使用K2控制器* → 完成 .pd 带时钟、音序器、合成器、混音器、混响和MIDI映射的机架*用时钟、音序器、声合成器、混响器和混音器创建一个机架——将它们连接在一起* → 个人 .pd 文件+在纯数据中打开的组合机架*“使用VCO创建VCV机架补丁→ VCF → VCA → 音频接口2“* → .vcv 在VCV Rack 2.x中加载的文件______________________________________________________________________
建筑
+--------------------------------------------------------------------+
| Claude / AI Client |
+----------------------------+---------------------------------------+
| MCP (stdio)
+----------------------------v---------------------------------------+
| synthlab-mcp-server |
| |
| 10 MCP Tools + 1 Prompt |
| +------------------+ +------------------+ +------------------+ |
| | parse_patch | | generate_patch | | analyze_patch | |
| | validate_patch | | create_template | | create_rack | |
| | send_message | | list_vcv_modules | | generate_vcv | |
| | compose_patch | | | | | |
| +--------+---------+ +--------+---------+ +--------+---------+ |
| | | | |
| +--------v---------------------v----------------------v---------+ |
| | Pd Core Engine | |
| | Parser (.pd→AST) | Serializer (AST→.pd) | Validator | |
| | Object Registry (~100 Pd-vanilla objects) | |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| | Template Engine (11 templates) | |
| | synth | seq | drums | reverb | mixer | clock | bridge | |
| | chaos | maths | turing-machine | granular | |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| | Rack Builder + Wiring + MIDI Controllers | |
| | throw~/catch~ (audio) | send/receive (control) | |
| | K2 (abs+rel+trigger) | MicroFreak (output) | TR-8S (bidir) | |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| | Song Composer (genre → wired rack) | |
| | 9 genres | 7 moods | 8 roles | 10 scales | auto-wiring | |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| | VCV Rack Generator | |
| | 19-plugin registry (~600 modules) from C++ source scraping | |
| | Fuzzy port/param resolution | HP positioning | Cable wiring | |
| +---------------------------------------------------------------+ |
| |
| +---------------------------------------------------------------+ |
| | Network Layer (zero external deps) | |
| | OSC encoder (binary) | FUDI formatter (text) | |
| | UDP sender (dgram) | TCP sender (net) | |
| +---------------------------------------------------------------+ |
+--------------------------------------------------------------------+
| |
OSC (UDP) / FUDI (TCP) .vcv file output
| |
+-------v-------+ +--------v--------+
| Pure Data | | VCV Rack 2.x |
| (running) | | |
+---------------+ +-----------------+______________________________________________________________________
特性
解析器——来自的完整AST .pd 文件
将纯数据的基于文本的格式解析为类型化的抽象语法树,支持:
- 对象、消息、数字框、符号原子、注释
- 嵌套子面板(递归画布堆栈)
- 所有连接类型(信号和控制)
- 转义分号、多行语句
- 往返保真度(解析->序列化->解析=相同结构)
补丁生成器——从JSON规范到有效 .pd
{
"title": "Simple Sine",
"nodes": [
{ "name": "osc~", "args": [440] },
{ "name": "*~", "args": [0.1] },
{ "name": "dac~" }
],
"connections": [
{ "from": 0, "to": 1 },
{ "from": 1, "to": 2 },
{ "from": 1, "to": 2, "inlet": 1 }
]
}产生a .pd 在Pure Data 0.54+中干净打开的文件。
对象注册表
包含约95个Pd香草对象的分类数据库,涵盖数学、MIDI、时间、音频、控制、数据、GUI和子匹配类别。每个条目都包括入口/出口计数(对以下对象提供可变计数支持 select, pack, trigger)、别名和信号类型分类。
补丁验证器——结构完整性检查
检测9类问题:断开连接、重复连接、未知对象、孤立对象、空子补丁、缺少DSP接收器。
模板引擎——11个参数化仪器
模块化两层系统: 模块 (振荡器、滤波器、VCA、包络、延迟、混响)组成 模板 通过 compose() 具有自动索引偏移功能。
| 模板 | Eurorack模拟 | 关键参数 |
|---|---|---|
synth | 振荡器+滤波器+VCA | waveform, filter, envelope, frequency, cutoff, amplitude |
sequencer | 步进序列器 | steps, bpm, notes, midiChannel, velocity |
drum-machine | 模拟鼓(3层) | voices (bd/sn/hh/cp), tune, decay, tone,按音量 |
reverb | 弹簧/板混响 | variant (施罗德/简单), roomSize, damping, wetDry |
mixer | 混音器模块 | channels (1-16),每通道静音门 |
clock | 主时钟 | bpm, divisions (例如\[1,2,4,8\]) |
chaos | 混沌/随机CV | outputs (1-3), speed, r (逻辑图参数) |
maths | 函数生成器 | channels (1-2), rise, fall, cycle, outputRange |
turing-machine | 图灵机 | length, probability, range, offset |
granular | 颗粒取样器 | grains, grainSize, pitch, position, freeze, wetDry |
bridge | 网络接收机 | protocol (osc/fudi), port, routes |
机架构建器——Eurorack式模块组件
生成个人 .pd 每个模块的文件数+一个组合 _rack.pd 所有模块并排放置。
模块间接线 通过Pd总线对象连接模块:
- 音频 (信号速率):
throw~/catch~ - 控制 (消息速率):
send/receive
{
"modules": [
{ "template": "clock", "params": { "bpm": 140 }, "id": "clock" },
{ "template": "sequencer", "params": { "steps": 8 }, "id": "seq" },
{ "template": "synth", "params": { "waveform": "saw" }, "id": "synth" },
{ "template": "reverb", "id": "reverb" },
{ "template": "mixer", "params": { "channels": 2 }, "id": "mixer" }
],
"wiring": [
{ "from": "clock", "output": "beat_div1", "to": "seq", "input": "clock_in" },
{ "from": "seq", "output": "note", "to": "synth", "input": "note" },
{ "from": "synth", "output": "audio", "to": "reverb", "input": "audio_in" },
{ "from": "reverb", "output": "audio", "to": "mixer", "input": "ch1" }
]
}布线系统处理连接重定向(无需删除节点)、自时钟模块的时钟同步、音频扇出和表名重复数据删除。
MIDI控制器系统——硬件集成
自动将硬件控制映射到机架参数。产生 _controller.pd (MIDI路由)和 _k2_config.json (LED反馈)。
三种设备配置文件:
| 设备 | 控制 | 方向 | 功能 |
|---|---|---|---|
| Korg nanoKONTROL2 | 34(推子、电位器、按钮) | 输入 | 绝对、相对(编码器)、触发/切换 |
| Arturia MicroFreak | 21个参数 | 仅输出 | 用于显示同步的CC输出 |
| 罗兰TR-8S | 51个参数 | 双向 | 发送+接收,LED反馈 |
自动映射器阶段:
- 自定义映射(用户指定)
- 振幅控制→ 推子
- 频率/滤波器控制→ pots
- 剩余控制→ 相对编码器
- 传输/切换控制→ 按钮
{
"modules": [
{ "template": "synth", "params": { "waveform": "saw" }, "id": "synth" },
{ "template": "mixer", "id": "mixer" }
],
"controller": {
"device": "k2",
"mappings": [
{ "control": "fader_0", "module": "synth", "parameter": "amplitude" }
]
}
}歌曲作曲家——流派驱动的机架生成
高级创意界面:按流派、情绪、节奏、键和乐器描述歌曲——获得一个完整的带MIDI控制器集成的有线Pd机架。
9流派 使用精心策划的预设:
| 类型 | 默认节奏 | 默认情绪 | 默认乐器 |
|---|---|---|---|
ambient | 70 | 轻盈 | 垫子,质感 |
techno | 130 | 深色 | 鼓、贝斯、铅 |
house | 124 | 充满活力 | 鼓、贝斯、垫 |
dnb | 174 | 攻击性 | 鼓、贝斯、铅 |
experimental | 100 | 暗 | 调制器、纹理、序列 |
idm | 140 | 空灵 | 鼓、琶音、调律器 |
minimal | 125 | 冷 | 鼓,贝司 |
drone | 40 | 忧郁 | 垫,垫 |
noise | 120 | 攻击性 | 纹理、调制器、鼓 |
7种情绪 调整合成参数(截止、混响室大小、鼓声):黑暗、明亮、攻击性、寒冷、空灵、忧郁、充满活力。
8个仪器角色 映射到具有自动多模块扩展的模板:
| 角色 | 扩展到 | 接线 |
|---|---|---|
lead | synth(ADSR) | seq→ 注: |
bass | synth(低八度音阶,ADSR) | seq→ 注: |
pad | synth(慢包络) | -- |
drums | 滚筒机 | 时钟→ 触发器 |
arpeggio | 定序器+合成器 | 时钟→ seq → synth |
sequence | 定序器 | 时钟→ seq |
texture | 噪声合成+颗粒 | 合成→ 颗粒状 |
modulator | 图灵机+合成器 | 时钟→ 图灵→ synth |
自动布线引擎 构建完整的信号链:时钟→ 音序器→ 合成器→ 混音器→ 影响。
10个音阶 (大调、小调、多里安语、弗里吉语、混合小调、五声大调/小调、半音、全音、蓝调)x 12个根音,用于音序器音符生成。
这 song_analysis MCP提示引导克劳德在打电话之前完成苏格拉底式问题,以填写规范 compose_patch.
{
"genre": "dnb",
"tempo": 175,
"mood": "aggressive",
"key": { "root": "E", "scale": "minor" },
"instruments": [
{ "role": "drums" },
{ "role": "bass" },
{ "role": "arpeggio" }
],
"effects": ["reverb"],
"controller": { "device": "k2" }
}实时控制——OSC/FUDI消息
向正在运行的Pd实例发送实时控制消息。零外部依赖——使用内置的Node.js dgram (UDP)和 net (TCP)。
| 协议 | 传输 | 默认端口 | 格式 |
|---|---|---|---|
| 开源协作 | UDP | 9000 | 二进制(OSC 1.0规范) |
| 富迪 | TCP | 3000 | 文本(selector args;\n) |
使用 bridge 生成Pd侧接收器补丁的模板:
- OSC:
[netreceive -u -b 9000]→[oscparse]→[route /pd]→ 每条路线[send] - FUDI:
[netreceive 3000]→[route]→ 每条路线[send]
VCV机架生成器-- .vcv 补丁文件
生成VCV Rack v2补丁文件(纯JSON .vcv 格式)来自模块+电缆规格。
19个插件注册表 (约600个模块),端口/参数ID从C++源代码中抓取:
| 插件 | 模块 | 源代码 |
|---|---|---|
| 核心 | 9 | 音频接口2、MIDIToCVI接口、CV-MIDI、Notes等。 |
| 基础 | 35 | VCO、VCF、VCA、LFO、ADSR、混频器、SEQ-3、示波器等。 |
| 博格音频 | 111 | VCO、VCF、ADSR、Mix8、FMOp、噪声等。 |
| CountModula | 104 | 序列器、门、逻辑、量化器 |
| 音响设备 | 20 | 可变乐器克隆(辫子、云朵、戒指等) |
| 即兴模块化 | 29 | 时钟、铸造厂、短语序列等。 |
| 弗罗森荒原 | 49 | QAR(欧几里德),概率注,波特兰天气等。 |
| 无潜艇 | 65 | 逻辑门、比较器、数字实用程序 |
| JW模块 | 36 | GridSeq、NoteSeq、模式、生成测序器 |
| 贝法科 | 32 | EvenVCO、混音器、Slew、SpringReverb等。 |
| 山谷 | 8 | 高原、德克斯特、汞合金等。 |
| 报警器 PackOne | 42 | 条纹、MIDI-CAT、8FACE等。 |
| ZZC | 10 | 相位、时钟、分频器、FN-3、SH-8 |
| +6更多 | ~60 | ML模块、棱镜、GlueTheGiant、OrangeLine、StudioSixPlusOne、VCV录像机 |
特征:
- 模糊端口/参数解析(按标签、名称、部分匹配或ID)
- 插件别名(
"vcv"→ 基础,"mi"→ 声音仪器,"bg"→ 博格音频) - 使用模块邻接链从左到右定位HP
- 电缆颜色循环(5色调色板)或自定义十六进制颜色
- 使用注册表中的默认值覆盖参数
- 重复输入端口验证
- 文件输出的路径清理
{
"modules": [
{ "plugin": "Fundamental", "model": "VCO" },
{ "plugin": "Fundamental", "model": "VCF", "params": { "Frequency": 2.0 } },
{ "plugin": "Fundamental", "model": "VCA" },
{ "plugin": "Core", "model": "AudioInterface2" }
],
"cables": [
{ "from": { "module": 0, "port": "Saw" }, "to": { "module": 1, "port": "Audio" } },
{ "from": { "module": 1, "port": "Lowpass" }, "to": { "module": 2, "port": "Channel 1" } },
{ "from": { "module": 2, "port": "Channel 1" }, "to": { "module": 3, "port": "Audio 1" } }
]
}补丁分析器——深度结构分析
- 对象计数 按类别(音频、控制、MIDI、数学等)
- 信号流图 --具有拓扑排序的邻接表(Kahn算法),循环检测
- DSP链检测 --来自音频源的DFS(
osc~,noise~,adc~)到水槽(dac~,writesf~) - 复杂性评分 --基于对象计数、连接密度、子匹配深度、音频链和对象种类的0-100加权分数
______________________________________________________________________
快速开始
1.克隆和构建
git clone https://github.com/j0KZ/synthlab-mcp-server.git
cd synthlab-mcp-server
npm install
npm run build2.配置克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"synthlab": {
"command": "npx",
"args": ["synthlab-mcp-server"]
}
}
}或者从本地克隆:
{
"mcpServers": {
"synthlab": {
"command": "node",
"args": ["/absolute/path/to/synthlab-mcp-server/dist/index.js"]
}
}
}3.使用它
打开克劳德桌面并询问:
*“解析文件/path/to/my-patch.pd并解释它的作用”*
*用时钟、定序器、声合成器、混响器和混音器创建一个机架——将时钟连接到定序器,将定序器连接到合成器,通过混响器连接到混音器进行合成*
*使用基本VCO、VCF和音频接口2创建VCV机架补丁——通过低通滤波器将输出转换为音频*
*用鼓、贝斯和琶音创作一首黑暗的电子舞曲* *“将/pd/tempo 140发送到我正在运行的pd实例”*
______________________________________________________________________
MCP工具
parse_patch
解析a .pd 文件并返回结构化描述。
| 参数 | 类型 | 说明 |
|---|---|---|
source | string | 文件路径或原始文件 .pd 文本 |
generate_patch
生成有效 .pd 文件来自节点和连接的JSON规范。
| 参数 | 类型 | 说明 |
|---|---|---|
title | string? | 顶部评论 |
nodes | array | 对象、消息、原子 |
connections | array | 节点间接线 |
outputPath | string? | 写入文件(可选) |
validate_patch
验证结构完整性(连接断开、孤立、水槽缺失)。
| 参数 | 类型 | 说明 |
|---|---|---|
source | string | 文件路径或原始文件 .pd 文本 |
analyze_patch
对象计数、信号流图、DSP链、复杂性得分。
| 参数 | 类型 | 说明 |
|---|---|---|
source | string | 文件路径或原始文件 .pd 文本 |
create_from_template
从参数化模板生成补丁(11个可用)。
| 参数 | 类型 | 说明 |
|---|---|---|
template | string | 模板名称(见上表) |
params | object? | 模板特定参数 |
outputPath | string? | 写入文件(可选) |
create_rack
通过模块间接线和MIDI控制器集成将多个模块组装到机架中。
| 参数 | 类型 | 说明 |
|---|---|---|
modules | array | 模块规格: { template, params?, id?, filename? } |
wiring | array? | 连接: { from, output, to, input } |
controller | object? | MIDI控制器: { device, midiChannel?, mappings? } |
outputDir | string? | 用于写入所有文件的目录 |
compose_patch
根据高级歌曲描述(流派、情绪、节奏、关键、乐器、效果、控制器)生成一个完整的有线Pd机架。
| 参数 | 类型 | 说明 |
|---|---|---|
genre | string | 类型预设(环境、技术、房子、dnb、实验、idm、最小、无人机、噪音) |
tempo | number? | 覆盖BPM(限制在流派范围内) |
mood | string? | 情绪调节(黑暗、明亮、攻击性、冷静、空灵、忧郁、精力充沛) |
key | object? | 音乐键: { root: NoteName, scale: ScaleType } |
instruments | array? | 仪器规格: { role, id?, template?, params? } |
effects | array? | 效果链: ["reverb", "granular"] |
controller | object? | MIDI控制器: { device, midiChannel?, mappings? } |
send_message
通过OSC或FUDI向正在运行的Pd实例发送控制消息。
| 参数 | 类型 | 说明 | |
|---|---|---|---|
protocol | `"osc" \ | "fudi"` | 传输协议(默认值: "osc") |
host | string? | 目标主机(默认值: "127.0.0.1") | |
port | number? | 目标端口(默认:9000 OSC/3000 FUDI) | |
address | string | 消息地址(例如。 /pd/tempo) | |
args | array? | 消息参数(数字或字符串) |
list_vcv_modules
在构建补丁之前,先发现可用的VCV机架模块、端口和参数。
| 参数 | 类型 | 说明 |
|---|---|---|
plugin | string | 插件名称或别名("Fundamental", "mi", "bg") |
module | string? | 详细端口/参数信息的模块块。省略列出所有模块 |
致电just plugin 获取所有带有标签和HP的模块块。致电 plugin + module 以获取布线的确切输入/输出端口名称和参数名称。包括用于新鲜度跟踪的插件版本。
generate_vcv
生成VCV机架 .vcv 模块和电缆规格的补丁文件。
| 参数 | 类型 | 说明 |
|---|---|---|
modules | array | 模块规格: { plugin, model, params? } |
cables | array? | 电缆连接: { from: {module, port}, to: {module, port}, color? } |
outputPath | string? | 写 .vcv 文件(可选) |
支持19个带有别名的插件: "vcv" → 基础, "mi" → 声音仪器, "bg" → 博格音频, "fw" → 弗罗森荒原, "jw" → JW模块, "sub" → 无潜艇等。
MCP提示
song_analysis
引导苏格拉底式对话,逐步设计歌曲(流派→ mood → 速度→ key → 仪器→ 效果→ 控制器)然后呼叫 compose_patch.
______________________________________________________________________
项目结构
src/ # ~9,500 lines (+ 42,800 registry data)
index.ts # MCP server — 10 tools + 1 prompt, stdio transport
types.ts # PdPatch, PdCanvas, PdNode, PdConnection
constants.ts # Format constants, layout defaults
core/
parser.ts # .pd text -> AST
serializer.ts # AST -> .pd text + buildPatch()
object-registry.ts # ~100 Pd-vanilla objects with port counts
validator.ts # 9 structural checks
composer/
types.ts # SongSpec, Genre, Mood, InstrumentRole types
presets.ts # 9 genre presets (tempo, instruments, key, mood)
moods.ts # 7 mood adjustments (cutoff, reverb, drum tone)
scales.ts # Scale generator (10 scales × 12 keys → MIDI notes)
wiring-rules.ts # Auto-wiring engine (clock→seq→synth→mixer→fx)
song-mapper.ts # SongSpec → CreateRackInput mapper
schemas/
patch.ts # Zod schemas for parse/generate
analyze.ts # Zod schemas for validate/analyze
template.ts # Zod schema for create_from_template
rack.ts # Zod schema for create_rack
control.ts # Zod schema for send_message
compose.ts # Zod schema for compose_patch
vcv.ts # Zod schemas for list_vcv_modules + generate_vcv
templates/
index.ts # Template registry + dispatcher (11 templates)
port-info.ts # PortInfo, RackableSpec types for wiring
validate-params.ts # Runtime param validation
synth.ts # Oscillator -> filter -> VCA -> dac~
sequencer.ts # MIDI step sequencer
drum-machine.ts # 4 analog drum voices — 3-layer (voices/filter/mix)
reverb-template.ts # adc~ -> reverb -> wet/dry -> dac~
mixer.ts # N-channel mixer with mute gates
clock.ts # Master clock with divided outputs
chaos.ts # Logistic map chaos generator
maths.ts # Function generator (rise/fall envelopes)
turing-machine.ts # Shift register random sequencer
granular.ts # Granular synthesis sampler
bridge.ts # OSC/FUDI network receiver
modules/
compose.ts # Module composition with index offsetting
oscillator.ts # 4 variants: sine, saw, square, noise
filter.ts # 5 variants: lowpass, highpass, bandpass, moog, korg
vca.ts # VCA module (*~)
envelope.ts # 3 variants: adsr, ar, decay
delay.ts # 2 variants: simple, pingpong
reverb.ts # 2 variants: schroeder, simple
controllers/
auto-mapper.ts # 4-phase auto-mapping (custom -> amp -> freq -> rest)
pd-controller.ts # Input controller patch builder
pd-output-controller.ts # Output controller (ctlout feedback)
param-injector.ts # Parameter bus injection
k2-deck-config.ts # K2 LED configuration generator
devices/
index.ts # Device registry
k2.ts # Korg nanoKONTROL2 (34 controls)
microfreak.ts # Arturia MicroFreak (21 outputs)
tr8s.ts # Roland TR-8S (51 bidirectional)
network/
osc-encoder.ts # OSC 1.0 binary encoder (4-byte aligned)
fudi-formatter.ts # FUDI text formatter
udp-sender.ts # UDP fire-and-forget (dgram)
tcp-sender.ts # TCP send/receive (net)
vcv/
types.ts # Registry, spec, and serialization types
generator.ts # Module resolution, cables, positioning
positioner.ts # Left-to-right HP layout
registry.ts # Plugin lookup with aliases + fuzzy matching
validate-vcv-params.ts # Claude Desktop quirk coercion
registry/ # 15 auto-generated plugin registries
core.ts # 9 modules (manual — complex ENUMS)
fundamental.ts # 35 modules
bogaudio.ts # 111 modules
audibleinstruments.ts # 20 modules
befaco.ts # 32 modules
countmodula.ts # 50+ modules
impromptumodular.ts # 30+ modules
valley.ts # 9 modules
stoermelder-packone.ts # 42 modules
+ 6 more # ml-modules, orangeline, prism, etc.
tools/
parse.ts # parse_patch tool handler
generate.ts # generate_patch tool handler
validate.ts # validate_patch tool handler
analyze.ts # analyze_patch tool handler
template.ts # create_from_template tool handler
rack.ts # create_rack + combined patch builder
compose.ts # compose_patch tool handler
control.ts # send_message tool handler
list-vcv.ts # list_vcv_modules tool handler (discovery)
vcv.ts # generate_vcv tool handler
wiring/
bus-injector.ts # Inter-module wiring (throw~/catch~, send/receive)
utils/
resolve-source.ts # File-path vs raw-text resolver
scripts/ # ~700 lines
build-vcv-registry.ts # Clone repos -> parse C++ -> generate .ts
parse-cpp-enums.ts # C++ enum parser (ParamIds, InputIds, etc.)
parse-svg-width.ts # SVG panel width -> HP conversion
update-readme-stats.ts # Auto-update README tool/test counts
tests/ # 741 tests, ~6,500 lines
parser.test.ts # 14 — parsing, subpatches, arrays, edge cases
serializer.test.ts # 8 — round-trip, spec builder, escaping
object-registry.test.ts # 37 — port counts, aliases, variable objects
validator.test.ts # 20 — each check type + fixtures
analyze.test.ts # 29 — counts, flow, DSP chains, complexity, formatting
composer/
composer.test.ts # 42 — scales, presets, moods, wiring, mapper, validation
controllers/
controller.test.ts # 80 — auto-mapper, controller patches, device profiles
templates/
compose.test.ts # 8 — module composition, wiring, autoLayout
modules.test.ts # 17 — all module variants
templates.test.ts # 46 — complete template round-trips
edge-cases.test.ts # 106 — param validation, coercion, boundaries
bridge.test.ts # 3 — OSC/FUDI bridge variants
network/
osc-encoder.test.ts # 8 — binary encoding, padding, type inference
fudi-formatter.test.ts # 3 — text formatting
udp-sender.test.ts # 3 — UDP send, socket error mock
control.test.ts # 6 — mock UDP/TCP servers, end-to-end
tools/
rack.test.ts # 13 — rack assembly, layout, file writing
rack-wiring.test.ts # 13 — wiring integration, bus injection
compose.test.ts # 14 — compose_patch tool, genres, validation, coercion
list-vcv.test.ts # 9 — discovery tool, aliases, coercion
vcv.test.ts # 8 — tool handler, format, sanitization
utils/
resolve-source.test.ts # 5 — raw text vs file path resolution
vcv/
generator.test.ts # 15 — modules, cables, positions, errors
registry.test.ts # 71 — 19 plugins, module aliases, fuzzy resolution, formatting
positioner.test.ts # 5 — HP layout, adjacency chain
validate-vcv-params.test.ts # 8 — coercion, empty arrays, booleans
scripts/
parse-cpp-enums.test.ts # 30 — enums, ENUMS macro, removed, labels, preprocessor, expressions
parse-svg-width.test.ts # 4 — mm/px to HP conversion
wiring/
bus-injector.test.ts # 17 — connection helpers, validation
fixtures/
hello-world.pd # Minimal: osc~ -> *~ -> dac~
midi-sequencer.pd # 4-step sequencer with noteout
subpatch.pd # Nested canvas with inlet~/outlet~
broken-connections.pd # Invalid connections for validator
orphan-objects.pd # Disconnected objects
complex-patch.pd # Multi-chain audio + control + subpatch______________________________________________________________________
发展
npm run build # Compile with tsup (ESM + declarations)
npm run dev # Watch mode
npm run test # Run vitest (741 tests)
npm run lint # Type-check with tsc --noEmit
npm run inspect # Test server with MCP InspectorVCV注册表重建(仅在插件更新时需要)
npm run vcv:build-registry # Clone repos -> parse C++ -> regenerate src/vcv/registry/*.ts
npm run build # Rebundle更新README统计数据(工具/测试计数)
npm run update-stats # Patches README with actual tool + test counts______________________________________________________________________
技术栈
| 技术 | 目的 |
|---|---|
| TypeScript (严格模式) | 类型安全解析器和序列化器 |
MCP-SDK (@modelcontextprotocol/sdk) | 协议实施 |
| 佐德 | 运行时输入验证 |
| Vitest | 测试转轮(741次测试) |
| 咋了 | Bundler(ESM输出,1.04 MB) |
| TSX | 构建脚本的TypeScript执行 |
| 零运行时间消耗 超越MCP SDK+Zod | OSC dgram通过FUDI net |
______________________________________________________________________
路线图
所有阶段均已完成。最近的改进:
- 核心 --解析器+串行器+MCP支架
- 分析 --对象注册表、信号流图、DSP链检测、复杂性评分
- 模板 --11台具有模块化两层结构的参数化仪器
- 机架生成器 —
create_from_template+create_rack(多模块组装) - 布线 --模块间总线(投掷/捕获、发送/接收、时钟同步)
- midi控制器 --K2、MicroFreak、TR-8S配置文件,具有自动映射功能
- 实时控制 --OSC/FUDI消息传递(
send_message工具+bridge模板) - VCV机架 —
.vcv生成19个插件注册表(约600个模块),模块发现+别名 - 歌曲作曲 —
compose_patch工具+song_analysis苏格拉底式提示 - 滚筒机v2 --三层架构(声音/过滤器/混音),低音踢踏,波波~温暖,金属高帽,808风格拍手,按音量控制
______________________________________________________________________
许可证
麻省理工学院
