在 macOS 上做音乐,AU 是亲儿子;跨平台干活,VST3 几乎成了唯一能打的通用格式。很多人以为这只是“苹果格式”和“Steinberg 格式”的站队问题,实际上远不止于此。两个格式的底层设计思路,直接决定了它们在 DAW 里的资源占用、参数管理方式,甚至自动化行为都不一样。
总线架构 vs 组件化
AU(Audio Unit)规范来自 Core Audio,它从根本上被设计成 macOS 系统级音频组件。插件被视为一个或多个处理“单元”,通过严格的总线输入/输出模型与宿主连接。一条总线上可以有多个通道,但总线逻辑是硬性的。在 Logic Pro 里,类似 Multichannel Gain 这样的 AU 能方便地处理环绕声,就是因为总线支持多通道流。

VST3 走了另一条路。它抛弃了 VST2 时代固定的 I/O 概念,转而用更细粒度的“音频总线”加“激活”标记。插件可以在运行时动态调整输入/输出配置,而不是在初始化时就焊死。这对 DAW 的灵活性要求更高,但也意味着更少的死代码。而且 VST3 原生支持自动检测输入静音并自动禁用处理(Silence Flag),这种省算力的特性 AU 需要额外实现。
参数模型与自动化精度
VST3 引入了“样本精确自动化”(Sample-Accurate Automation)。传统格式里,自动化参数更新通常是按“块”刷新的,比如一个 buffer 256 个采样才更新一次。VST3 允许插件在每一个采样点插值参数,变化曲线平滑到令人发指,合成器滤波扫频时尤其明显。AU 虽然也支持样本精确事件,但实现模型不同——AU 走的是参数事件列表,开发者需要手动解析,不像 VST3 那样通过 IParameterChanges 队列强制规范化。
另外,VST3 的参数系统天生支持多语言和单位显示,厂商可以直接提供字符串给宿主,而不需要宿主查表。AU 的参数信息依赖 Core Audio 的 AudioUnitParameterInfo,虽然也能做到,但元数据表达上不如 VST3 丰富。你在 Studio One 里看到的 dB 值精确单位,在 Logic 里可能只是个百分比,根源就在这里。
状态保存与迁移
AU 用 plist 或二进制档案保存状态,天然依赖 macOS。VST3 的 .vstpreset 和标准化容器方案,让预设跨平台迁移几乎无痛。作曲家从 Windows 工作室换到 Mac,AU 预设得重新存一次,VST3 直接拖过去就行。
不过,AU 的 bus 级旁通和 Logic 深度集成,让它在自家生态里延迟极低。强行跨格式比较时,最关键的不是音质——算法一样声音就一样——而是宿主适配程度。Ableton Live 跑 VST3 可能比 AU 更稳定,Logic 跑 AU 则多半比 VST3 版本少一次桥接开销。
说到底,这不是谁更好的问题。如果是 macOS 独占工作流,AU 足够干净高效。一旦沾上 Windows 或者需要细致自动化控制,VST3 的样本精确和灵活配置就成了硬需求。

评论(6)
怎么又在吵格式,不都是DSP算法一样吗,爱用啥用啥。
纯路过,虽然看不懂但是感觉好厉害hhh
说真的AU那套总线逻辑太死板了,想灵活路由还得上VST3。
Live里是不是AU容易爆延迟?我一直用VST3,没敢换。
补充一点,VST3的样本精确自动化在Cubase里用着真爽,滤波扫频明显比AU丝滑。
一直用Logic,AU确实比VST3延迟低,尤其是好多轨道的时候。