为 OS X 和 Windows 创建既是音频单元又是 VST 的音频插件 UI 的“最佳”方法是啥?

Posted

技术标签:

【中文标题】为 OS X 和 Windows 创建既是音频单元又是 VST 的音频插件 UI 的“最佳”方法是啥?【英文标题】:what's the "best" approach to creating the UI of an audio plugin that will be both audio unit and VST for OS X and Windows?为 OS X 和 Windows 创建既是音频单元又是 VST 的音频插件 UI 的“最佳”方法是什么? 【发布时间】:2012-04-08 23:24:27 【问题描述】:

我正在开发几个音频插件。现在,它们是音频单元。虽然“DSP”代码在实现/端口之间大部分不会改变,但我不确定如何处理 GUI。

例如,我在 Lion 中查看 Apple 提供的 AU。有谁知道他们是如何处理 UI 的?比如,旋钮和控件只是 Cocoa 控件的子类吗?他们是在使用一些单独的框架还是从头开始编写这些旋钮之类的代码?

然后,我正在开发的插件也将作为 Windows 的 VST 提供。我已经使用通用接口启动并运行它们。但我想知道我是否应该克服它并使用 Steinberg 提供的 vstgui 代码重新创建所有界面,或者是否有更实用的方法来使界面跨平台。

【问题讨论】:

【参考方案1】:

VSTGUI 使用起来不是很有趣,尤其是当您的界面变得更加复杂时。源代码一团糟,您最终会得到一个非常硬编码的 GUI,这变得难以重构。

我建议您查看Juce,其中包括一个不错的 GUI 构建器。如果你的 DSP 代码模块化得很好,那么切换到它的架构就不会那么痛苦了。作为一个额外的好处,它将使 x-platform(其中“平台”意味着操作系统和底层插件平台)对您来说更容易跳跃。

【讨论】:

例如,现在,我的 AU 和 VST 版本的插件可以工作,但我只为 AU 版本制作了自定义 UI(使用本机 OS X 资源,基本上混合了CoreGraphics、CoreAnimation 和 Cocoa)。您的建议是我忘记了这个 OS X 特定的 UI,而是尝试使用 JUCE 构建一个独立于平台的 UI,然后我可以用于 Mac 和 Windows 版本的插件? 如果你想在 Windows 上使用 VST,那么是的,我建议使用更成熟的 x 平台框架。甚至 OSX 上的 VST 也可能会导致让 AU GUI 适应它而感到头疼。至少我建议你去看看 Juce。这是一个我希望我早就发现的框架,而不是固执地决定自己重新发明所有的***。 你为什么说“如果我想在 Windows 上使用 VST”?如果我去 ASIO 或您知道的其他特定规范,有什么问题吗? 不,但是任何特定于平台的东西(例如文件位置、构建 GUI 窗口等)都将更容易被 Juce 处理。

以上是关于为 OS X 和 Windows 创建既是音频单元又是 VST 的音频插件 UI 的“最佳”方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 虚拟音频驱动程序

mac os x 上语音处理单元的可用格式

Rogue Amoeba 发布用于 Mac OS X 的音频路由应用 Loopback

如何使用 Mac OS X 的音频 API 函数?

OS X 播放音频帧是不是发送给我

配置 Mac OS X AudioUnit 以提供 SignedInteger 示例