plugdata-patch 是一种用于程序化创建、修改和生成 Pure Data / plugdata 音频补丁(.pd 文件)的技能。生成的 .pd 文件是纯文本格式,定义音频处理图,可在 plugdata 和原版 Pure Data 中打开。
用途 该技能面向需要以代码方式构建音频补丁的场景。用户可借助它生成合成器、效果处理器、MIDI 处理器、实用/分析工具、DAW 插件或嵌入式(如 Daisy)目标补丁。文档将其定位为帮助 AI 智能体按格式规范产出可直接打开的 .pd 文件。
主要能力与文件格式 补丁由以分号结尾的若干行组成。基础元素包括:canvas 头定义补丁窗口;#X obj 放置对象;#X msg 放置消息框;#X text 放置注释;#X connect 连接两个对象;#X array 声明命名数组;#A 行写入数组采样值;子补丁以 #N canvas ... NAME 0 开始、以 #X restore ... pd NAME 结束。文档强调对象索引从 0 开始并按画布顺序递增,注释也占用索引;#X connect、#X coords、#X array、#X declare 和 #A 行不占索引。编号错误会导致连接失败或信号类型不匹配。
信号域与控制域 以 ~ 结尾的对象处理音频速率信号,不带 ~ 的对象处理控制速率消息。两类端口不能直接相连,需使用 sig~ 将控制转信号、snapshot~ 将信号转控制。
生成工作流 文档给出的流程为:先理解目标(合成器、效果器、MIDI 处理器、分析工具、DAW 插件、嵌入式等),再设计从声源到输出的信号流,然后选择对象并生成文件。生成时按模板先建立对象数组与连接数组,输出 canvas 头,再按顺序输出各行并跟踪索引,最后输出使用索引的 connect 行。定位建议包括纵向每对象递增 50–70 像素、并行路径横向偏移 100–150 像素、信号路径自上而下、控制路径横向分支等。
常见模式与对象类别 文档提供单音合成器、音频效果器(DAW 插件)、带 DAW 自动化的参数、子补丁抽象、hvcc 编译参数暴露等示例。对象目录按类别组织,包含振荡器(osc~、phasor~、noise~、saw~、bl.saw~ 等)、滤波器(lop~、hip~、bp~、vcf~、biquad~、svfilter~)、效果(free.rev~、plate.rev~、chorus~、flanger~、drive~、compress~)、包络(line~、vline~、adsr~、envgen~、decay~)、数学、MIDI、I/O、定时与 GUI(knob、nbx、tgl、bng、vsl、hsl、scope~)等。
库选择与编译目标 文档建议新补丁优先使用 ELSE,其次 vanilla,再次 Cyclone。ELSE 处于活跃开发且与 plugdata 集成更好;Cyclone 主要用于迁移 Max/MSP 补丁;vanilla 用于核心对象及 hvcc 编译目标。针对 Daisy、DPF 插件等编译目标,仅支持 vanilla 加 heavylib 的对象子集(文档称约 323 个),不支持 ELSE、Gem、Cyclone 或 pdlua。
Gem 与 pd-lua plugdata 内置 Gem,但其类仅注册为 Gem/<name> 形式,也可用画布级 #X declare -lib Gem; 行使类名全局化。文档指出单独一个 #X obj ... declare -lib Gem; 框不会加载任何内容。关于 Gem 视频,文档称 plugdata 在音频线程上运行 Gem,pix_film 的默认 AVF 后端每帧重建 AVAssetReader,1080p H.264 每帧约 64 毫秒,30fps 播放会使 CPU 满载,建议改用 ffmpeg 后端并给出转码命令与参数说明。pd-lua 允许用 Lua 编写自定义对象,保存为 .pd_lua 文件后在补丁中使用。
限制与约束 文档强调:每行必须以分号结尾,否则文件损坏;对象索引必须正确统计注释与子补丁 restore 行;信号与控制端口不能直接互连;被对象引用的文件路径中不能有空格;dac~ 与 adc~ 通过参数指定声道数(如 dac~ 1 2 为立体声、1 2 3 4 为四声道)。引用文件包括 pd-format.md、objects.md、else.md、cyclone.md、hvcc.md、pd-lua.md。
是否需要更多关于特定对象或库的细节,取决于用户目标;文档提供的引用文件覆盖了更深入的语法、对象目录、库差异与编译约束。