VST 插件在 OSX 上无法识别
Posted
技术标签:
【中文标题】VST 插件在 OSX 上无法识别【英文标题】:VST plugin doesn't get recognized on OSX 【发布时间】:2014-02-27 10:30:00 【问题描述】:在最近获得 MAC 后,我只是想涉足 OSX 世界。
在过去的几个月里,我还没有成功构建一个工作的 VST 2.4。我只是不明白为什么:vst 示例中的项目(在某种程度上)开箱即用,但我自己的项目无法运行。
我已经准确地镜像了每个构建设置(包括 info.plist 和 pkginfo),仔细检查了 vst.app 的内容是否相同,正确地构建为具有正确扩展名的 vst,并且代码实际上是一样,但是我的 vst 在我尝试过的任何主机中都没有得到认可。 命令行甚至与构建相同。 我已经使用附带的 minihost vst 测试仪测试了我的 VST,它通过并工作 - 但仍然无法识别。我什至用 nm 检查了导出的符号,它们看起来正确(即 createEffectInstance 已正确导出)。
什么给了?一定有一些我没有发现的隐藏构建设置似乎取消了我的 VST 资格。
【问题讨论】:
您是否更改了插件的 4 字符 VST ID? Bidule 要求所有插件都有一个唯一的 VST ID。我不知道这是否适用于任何 Mac VST 主机。 是的,我做了,但我会仔细检查一下 【参考方案1】:可能是最明显但被忽视的设置:您构建的是 32 位还是 64 位?您需要确保位数与您的主机匹配,否则将不会加载插件(顺便说一句,这可能解释了为什么插件可以加载到您自建的迷你主机而不是另一个音序器中)。为确保与大多数主机兼容,我会选择 32 位版本。
另外,这是我不久前写的关于这个主题的教程。但是,您声称您使用 Info.plist 和诸如此类的东西做的一切都是正确的,但也许您错过了一小步:
http://teragonaudio.com/article/Making-a-VST-plugin-from-scratch-with-Xcode.html
另一个可能有用的工具是MrsWatson(免责声明:我是该程序的作者)。它是一个命令行 VST 主机,可用于提供有关 VST 的诊断信息,也可用于插件测试和调试。由于插件难以使用 32/64 位,因此在 Mac OSX 上,该程序提供单独的 32 位和 64 位二进制文件,而不是使用通用二进制文件。
您应该尝试在您的插件上运行以下命令:
mrswatson --verbose --plugin /path/to/wherever/you/put/the/plugin.vst --display-info
如果您看到参数列表和其他信息,那么它应该是洁净的并且能够在大多数音序器中加载。希望这能让你走上正轨!
【讨论】:
嘿,我实际上希望/想知道你会来:) 事实上,我使用你的模板来启动项目。是的,遗憾的是架构是正确的(必须是 32 位和 64 位)。我记得看过 mrswatson,我很快就会尝试并报告(它适用于 64 位,对吗?)。 @Shaggi 遗憾的是我的 Xcode VST 模板已经过时了;这些天我没有做太多的 Mac 编码,所以我认为它们不再适用于现代 Xcode。 :( 是的,MrsWatson 是 64 位兼容的。 好的,我会调查的。【参考方案2】:尝试使用您的调试器来观察Dispatcher() 调用您的主机的内容。检查您的插件和包含的示例项目之间是否存在任何差异。根据我的经验,主机通常会在 Dispatcher() 调用引发异常或返回主机因任何原因不喜欢的结果后立即中止加载插件。
【讨论】:
我目前只能在ableton live中测试它,我什至无法尝试加载插件。我不确定如何“强制”加载 vst。否则,我将不得不在它启动时调试ableton(它检查新插件的地方) - 不知道该怎么做 当我无法使用调试器时,我通常会求助于OutputDebugString()
或类似的东西。 OSX 有类似OutputDebugString()
的东西吗?
主机启动期间的 VST 扫描阶段通常是唯一可用于调试非加载插件的地方。大多数主机不允许“强制”加载插件,AFAIK Ableton Live 也不例外。
我不知道,刚买了这个mac。无论如何,我确认插件确实被加载了,就像调用了 createEffectInstance 方法一样。所以我想我必须以某种方式拦截并调试我的方式。
我多么希望主机只留下调试/错误消息的痕迹。什么样的程序甚至不会显示错误。如果只有ableton至少会承认我的插件的存在:(以上是关于VST 插件在 OSX 上无法识别的主要内容,如果未能解决你的问题,请参考以下文章