简介:这份VST 3插件SDK资料面向音频插件开发者、DAW扩展开发者及音效/乐器插件学习者,聚焦Windows、macOS、Linux与iOS多平台下的VST 3接口理解、工程组织与构建准备。压缩包共7个文件,约405KB,以2个PDF、2个TXT、1个Markdown及HTML索引、gitmodules配置为主,分别承载许可与使用规范、说明文档、入口索引和子模块信息,体量轻便,适合先梳理SDK结构再按需获取完整源码。已有1387人学习或下载,具备一定参考热度。内容围绕VST 3架构、插件生命周期、参数系统、多线程音频处理、自定义界面与宿主兼容性展开,并提供CMake构建和模块划分线索;读者可据此快速建立跨平台插件开发的知识框架,明确许可边界与工程接入方式,为后续编译、调试和扩展音效或乐器插件打下基础。
1. 从「能编过」到「宿主愿意加载」:VST 3 SDK 的分水岭在哪
上周有人把一份已经能离线出声的音频算法丢过来,问为什么套上 VST 3 SDK 的壳子之后,宿主连扫都扫不出来。逻辑没问题,坏在壳子上:工厂里注册的类不是处理器、参数 ID 在两半里对不上、macOS 那个包少了一层目录。VST 3 SDK 不是装完就能用的框架,它给的是一套纯虚接口加若干参考实现,中间那层胶水得自己糊。它能干的事很具体:把一份 DSP 代码包成 Windows、macOS、Linux、iOS 上都能被音频宿主认出来的插件,参数、状态、编辑器、总线布局这些宿主约定好的契约全部对齐。适合手里已经有能出声的处理代码、要用 CMake 跨平台交付插件包的开发者,也适合被宿主行为折腾过、想翻到底层接口看的人。下面按目录怎么读、工程怎么挂、process 怎么写、包怎么打、坑在哪,一层层拆。
2. 拆开 SDK 的四层目录:CMake 挂载与三平台第一次编译
拿到 SDK 之后最容易犯的错是直接翻public.sdk/source/vst/找「主函数」,然后被一堆.h和.cpp的关系绕晕。它其实分得很清楚:接口声明、参考实现、基础运行时、GUI 库各占一层,混着看才会觉得庞大。先把这四层的边界划出来,后面写代码时你才知道每个 include 该指哪。
2.1 四个目录各管什么,哪些能改哪些别碰
pluginterfaces/是纯接口层,只有头文件,没有一行实现。IComponent、IAudioProcessor、IEditController、IPlugView都在这里,它定义的是宿主和插件之间的 ABI 契约:全部是纯虚函数,对象靠FUnknown::queryInterface拿,版本靠FUID区分。这一层不要改,改了宿主就不认。
public.sdk/source/是参考实现层,也是你真正要读的部分。vst/vstaudioeffect.cpp实现了AudioEffect,vst/vsteditcontroller.cpp实现了EditController,main/pluginfactory.cpp是导出入口和工厂宏,hosting/是一套最小宿主实现——那套东西的价值在于,你可以拿它写离线渲染脚本,不开宿主就能跑插件。
base/是基础运行时,字符串、线程、消息、FUnknown的引用计数实现都在里面。新一点的仓库结构里它和vstgui/一样是以子模块形式挂进来的,拉代码时记得带--recursive,否则 CMake 配置阶段会告诉你找不到base/source/fobject.cpp。
vstgui/是 GUI 库,做编辑器才用得上。cmake/modules/下那堆SMTG_*.cmake是构建胶水,smtg_add_vst3plugin这个函数就定义在里面,它替你干了三件事:生成插件 bundle 目录结构、设置导出符号、把 Windows 的.def和 macOS 的Info.plist拼进去。
| 目录 | 作用 | 是否需要修改 |
|---|---|---|
pluginterfaces/ | 纯虚接口与 ABI 定义 | 不改 |
public.sdk/source/vst/ | 处理器/控制器参考实现 | 可继承,不改源文件 |
public.sdk/source/main/ | 工厂宏与导出入口 | 只 include |
public.sdk/source/hosting/ | 最小宿主实现 | 拿来做测试 |
base/ | 基础运行时(子模块) | 不改 |
vstgui/ | GUI 库(子模块) | 不改 |
cmake/modules/ | smtg_add_vst3plugin等 | 不改 |
一个提醒:public.sdk/source/vst/下的.cpp是编进 SDK 静态库的,你的插件链接它,不要把它拷到自己工程里改,否则升级 SDK 时你会面对两份分叉的实现。
2.2 用 add_subdirectory 挂 SDK,
本文还有配套的精品资源,点击获取