2

我在 Xcode 中为我正在学习的信号类创建了一个过滤器 AU,我可以在 AU Lab 中从我的组件文件夹中打开它,但我似乎无法在 DAW 中打开它。任何人都可以帮助我了解这一点吗?它可能是 .plist 文件中的设置吗?代码中没有错误,因为 AU 在 AU 实验室中完美运行。如果有人有想法帮助将不胜感激,我可以提供您可能需要的任何信息。

4

3 回答 3

4

我进行了我在评论中提到的调查,因此我现在正在写一个真正的答案。

我证实了我的怀疑。如果您没有遇到 32/64 位构建模式的问题(就像其他人所说的那样),您可能会遇到与我相同的问题。

GarageBand 和 Mainstage(可能是其他人)不读取 AudioComponents捆绑包 plist 的键的键。他们只阅读已弃用的蹩脚碳资源。

我有一个证明(至少在我的系统上:Lion,GarageBand 6.0.5):

  • 我下载的大部分 AU 只提供了 Carbon 资源,并且在他们的 plist 中没有AudioComponents密钥(因为这是在 Lion 之前要走的路,只有像我这样的菜鸟会忽略这个事实)
  • 一旦我将 Carbon 资源正确添加到我的单元中,它就会开始出现在 GarageBand 和 MainStage 中(youhou!)

如果您从 TremoloUnit 或 Apple 提供的其他项目的副本开始您的项目,您必须修复它们,因为他们的项目被搞砸了。显然,维护它们的可怜的灵魂和我一样对 AudioUnit 编程一无所知,他相信(就像我一样)那些来自黑暗时代的可怕 Carbon东西现在必须完全弃用,并且他从构建阶段取消了对它们的检查。由于生成的 AU 很好地加载AU Lab并验证了罚款,auval他很高兴并致力于他的工作。

要修复项目,您必须将资源源文件(以 结尾的文件.r)添加到构建阶段(它已经在项目中)。如果您从文件检查器中单击它,XCode 会(从文件扩展名)确定您要构建可怕的碳资源。在那之后,由于Rez 搜索路径错误,您肯定会遇到难以理解的构建失败。您还必须仔细检查该.r文件描述的内容与您的相同,AudioComponents因为 Apple 的示例项目 AUPinkNoise 在该主题上被破坏(子类型的 4 个字母代码在 plist 和 .r 资源源之间不匹配)

恭喜 Apple 构建了一个验证工具,它忽略了大多数 Apple 产品当前如何加载 AudioUnit。

于 2012-12-03T17:31:23.753 回答
1

这篇 All Things Arcane 文章是一个很好的起点。

此外,对于来自 Apple 的 xcode 5.x 和现在的 (2015-05) 示例,还有一些额外的步骤可能也会有所帮助:

1. 在“构建设置,Apple LLVM - 预处理”中添加预处理器宏“CA_USE_AUDIO_PLUGIN_ONLY=0”这使您能够在 .r 文件和 .exp 文件中使用旧样式入口点(允许您添加 _SinSynthEntry 和 _SinSynthFactory)

2. 删除并重新添加“AUDispatch.cpp”和“AUDispatch.h”到您的项目(这是为了解决缺少的“CMgr_AudioUnitBase ...”链接引用)

3. 如果您正在为 OS X 10.8 或更早版本构建,则必须修改 Apple 的 AUBase.cpp 以划分出 kAudioUnitProperty_NickName,它是在 10.9 中添加的,基于 OS 有条件地编译X 版。一个例子:

#if (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_8) //加我!
    案例 kAudioUnitProperty_NickName:
        ca_require(inScope == kAudioUnitScope_Global, InvalidScope);
        outDataSize = sizeof(CFStringRef);
        可写=真;
        休息;
#endif //加我!
于 2015-05-17T20:32:47.103 回答
0

正如@admsyn 建议的那样,问题很可能是您正在构建一个 64 位插件,Xcode 默认会为您完成。您应该构建 32/64 位通用二进制文件(在调试发布版本中),或者只构建 32 位。

此外,它可能有助于运行auval -v验证 AU,以确保没有问题。

于 2012-12-02T09:00:40.950 回答