用途:在 Max for Live 的 gen~ 子补丁中使用 codebox 编写 GenExpr 代码,实现编译后在音频线程运行的采样精确 DSP。适合需要单样本反馈(含历史状态的滤波器、delay 1)、采样精确缓冲区读写(粒度、scrub)、手写振荡器(避免向量速率 MSP 的混叠或时间量化)以及 pfft~ 内频域处理的情况;控制速率逻辑(参数缩放、MIDI 处理)应使用 JS 或消息域 Max 对象。
主要能力与用法:codebox 内的 GenExpr 代码通过 inN/outN 关键字自动派生进出声。语法类 C/JavaScript,支持 if/else、for、while、break、continue,自定义函数需定义在主语句前。运算符包括算术、比较、逻辑、位运算及 sin、clamp、mix、phasor、noise、delay、peek、poke、sample、lookup、wave 等 DSP 专用函数。声明形式有:Param(外部可设、可持久化、带 min/max 并成为 gen~ 入口)、History(单样本 Z⁻¹ 状态,读写对应上一与下一样本)、Delay(多样本延迟线,支持 linear/cubic/spline/cosine 插值)、Buffer(引用外部 buffer~,用 peek/poke/sample/lookup/nearest/wave/splat 操作,dim 与 channels 获取长度与通道数)、Data(本地存储,默认 512 样本 1 通道,64 位浮点)。
集成:gen~ 子补丁通过 in/out 框接收与输出信号;Param 可用消息设置,也可将 live.dial(开启 parameter_enable、valueof)接到同名入口实现 Live 自动化;History 初值可用 history y1 0 重置。mc.gen~ 以 @chans 指定并行声部,每通道独立 History,用于复音合成。pfft~ 可在 bin 流(实/虚对)上使用 gen~ 做采样精确处理。gen~ 编辑时自动重编译,错误显示在 Max Console 并带行号,可用 gen.exportcode 导出 C++。
限制与常见错误:gen~ 无法访问 LiveAPI;不应用于 vanilla MSP 已足够的分块 DSP。反馈变量必须声明 History;Param 名称需在 gen~ 检查器中确认;浮点比较应用 abs(x)<1e-6;循环边界需为常量或 Param;Buffer 引用的 buffer~ 不存在时静默无效;sample 的 phase 参数范围为 0..1;未赋值的 out 输出静音;feedback 路径需自行加 clamp/tanh 防爆音。分发前应 freeze 设备以携带内嵌 gen 补丁。更多细节暂未提供。