VST插件开发套件

JUCE框架的VST插件开发套件,包含文档访问的MCP服务器和即用型插件模板,适用于音频插件开发者。

  • by itshellbound
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 itshellbound/juce-plugin-template

使用说明

JUCE VST插件开发工具包

使用JUCE框架完成VST插件开发的设置,包括用于文档访问的MCP服务器。

目录

  1. mcp服务器/ -JUCE文档的模型上下文协议服务器
  2. juce模板/ -即用型JUCE插件模板

第1部分:JUCE文档的MCP服务器

MCP服务器直接在Claude code中提供对JUCE文档和代码生成工具的访问。

设置MCP服务器

cd mcp-server
npm install

配置Claude桌面

添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "juce-docs": {
      "command": "node",
      "args": ["/Users/hellbound/juce-mcp-project/mcp-server/index.js"]
    }
  }
}

可用资源

  • juce://docs/getting-started -JUCE框架介绍
  • juce://docs/audio-processor-basics -音频处理器基础
  • juce://docs/dsp-basics -DSP模块指南
  • juce://docs/parameters -参数管理
  • juce://templates/basic-plugin -插件模板结构

可用工具

  • search_juce_docs -搜索JUCE文档
  • generate_plugin_code -生成样板代码(处理器、编辑器、参数、dsp链)
  • 解释判断概念 -获取JUCE概念的详细解释

第2部分:JUCE插件模板

一个完整的、可用于生产的VST插件模板,采用现代JUCE架构。

特性

  • ✅ 带DSP链的音频处理器
  • ✅ 用于参数管理的AudioProcessorValueTreeState
  • ✅ 带GUI的自定义音频处理器编辑器
  • ✅ 输入/输出增益控制
  • ✅ 状态保存/加载功能
  • ✅ 立体声/单声道支持
  • ✅ 干净、有注释的代码

项目结构

juce-template/
├── PluginProcessor.h      # Audio processing header
├── PluginProcessor.cpp    # Audio processing implementation
├── PluginEditor.h         # GUI header
└── PluginEditor.cpp       # GUI implementation

使用模板

选项1:创建新的Projucer项目

  1. 打开 主持人
  2. 创建新的 音频插件 项目
  3. 替换 PluginProcessor.h/cpp 和 PluginEditor.h/cpp 使用模板文件
  4. 配置插件格式(VST3、AU、AAX)
  5. 保存并在IDE中打开

选项2:添加到现有项目

  1. 将模板文件复制到项目的 Source/ 目录
  2. 从以下位置重命名类 CustomPlugin* 到您的插件名称
  3. 更新 #include 声明
  4. 添加到Projucer并保存

关键组件

音频处理器(插件处理器.cpp)

  • prepareToPlay() -使用采样率和缓冲区大小初始化DSP
  • processBlock() -主音频处理回路
  • 创建参数布局路径) -定义插件参数
  • getStateInformation() 函数 -保存插件状态
  • setStateInformation() -恢复插件状态

音频处理器编辑器(插件编辑器.cpp)

  • 构造函数 -创建和配置UI组件
  • 油漆() -自定义图形和样式
  • 调整大小() -布局UI组件

定制指南

添加参数

在 PluginProcessor.cpp,添加到 createParameterLayout():

params.push_back(std::make_unique<juce::AudioParameterFloat>(
    "cutoff",
    "Cutoff Frequency",
    juce::NormalisableRange<float>(20.0f, 20000.0f, 1.0f, 0.3f),
    1000.0f,
    "Hz"
));

添加DSP处理器

在 PluginProcessor.h:

private:
    juce::dsp::StateVariableTPTFilter<float> filter;
    juce::dsp::Reverb reverb;

在 prepareToPlay():

filter.prepare(spec);
reverb.prepare(spec);

在 processBlock():

filter.process(context);
reverb.process(context);

添加UI控件

在 PluginEditor.h:

private:
    juce::Slider cutoffSlider;
    juce::Label cutoffLabel;
    std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> cutoffAttachment;

在 PluginEditor.cpp 构造函数:

cutoffSlider.setSliderStyle(juce::Slider::RotaryHorizontalVerticalDrag);
addAndMakeVisible(cutoffSlider);

cutoffAttachment = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(
    audioProcessor.getAPVTS(), "cutoff", cutoffSlider
);

构建你的插件

  1. Projucer中的开放项目
  2. 设置插件格式(VST3、AU、AAX)
  3. 配置公司名称和插件ID
  4. 导出到IDE(Xcode、Visual Studio等)
  5. 在IDE中构建

插件格式

该模板支持:

  • VST3 -跨平台(Windows、macOS、Linux)
  • 澳大利亚 (音频单元)-仅限macOS
  • AAX -专业工具(需要AAX SDK)
  • 独立 -桌面应用程序

开发工作流程

使用MCP服务器

  1. 在配置了MCP服务器的情况下启动Claude Desktop
  2. 使用 search_juce_docs 查找文档的工具
  3. 使用 generate_plugin_code 创建组件
  4. 使用 explain_juce_concept 详细解释

测试

  1. 在IDE中构建插件
  2. 复制到插件文件夹:
    • macOS VST3: ~/Library/Audio/Plug-Ins/VST3/
    • macOS AU: ~/Library/Audio/Plug-Ins/Components/
    • Windows VST3: C:\Program Files\Common Files\VST3\
  3. 在DAW中打开(Ableton、Logic、Reaper等)
  4. 测试音频处理和UI

资源


故障排除

MCP服务器问题

  • 确保已安装Node.js: node --version
  • 检查Claude Desktop配置路径是否正确
  • 配置更改后重新启动Claude Desktop
  • 检查Claude Desktop中的日志是否有错误

构建问题

  • 在Projucer中验证JUCE路径
  • 检查C++标准是否为C++17或更高版本
  • 确保所有模块都已启用(juce_audio_processors、juce_dsp等)
  • 将JUCE更新至最新版本

插件未出现在DAW中

  • 检查插件是否已复制到正确的目录
  • DAW中的重新扫描插件
  • 检查插件验证(macOS: auval -a,Windows:DAW中的插件验证)
  • 确保架构与DAW匹配(x86_64与arm64)

许可证

模板代码按原样提供,用于教育和商业用途。

JUCE框架有自己的许可条款-有关详细信息,请访问JUCE.com。