首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >macOS中的音频单元(AUv3)仅在DAW中的选定音轨中工作

macOS中的音频单元(AUv3)仅在DAW中的选定音轨中工作
EN

Stack Overflow用户
提问于 2021-02-15 22:48:45
回答 1查看 125关注 0票数 0

当我使用XCode (新建项目→应用程序,然后新建目标→音频单元扩展)中的模板构建音频单元扩展(instrument/aumu),然后使用Logic Pro X或Garage Band构建并运行它时,插件只有在其插入的曲目被选中时才能运行。如果选择了任何其他曲目,则在例如。进程或handleMIDIEvent覆盖函数永远不会被触发。(另外,如果未选择的音轨在所选音轨更改之前实际正在输出声音,则它们将开始输出持续的短周期毛刺噪声)

知道为什么会这样吗?我会怀疑XCode或DAW有问题,但我已经看到其他macOS AUv3插件(不幸的是,它仍然是一个极其稀有的品种)工作得很好,所以我知道这绝对是可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-16 18:11:16

几经折腾,我终于找到了问题所在。(我真的希望在AUv3上有更多的在线知识可以广泛使用……)

似乎在每个渲染周期中,Logic Pro X和Garage Band都会根据插件是否位于选定的轨迹中,向插件进程请求不同长度的块。如果选择了音轨,请求的块将是DAW设置中设置的长度(I/O缓冲区大小),假设是为了最高优先级的渲染?未选择的磁道被要求1024帧(似乎最长的逻辑缓冲区可以被占用),而不管I/O缓冲区大小设置。

1024帧的长度大于

代码语言:javascript
复制
AUAudioFrameCount maxFramesToRender = 512;

音频单元扩展模板存根在DSPKernel.hpp中,因此只有在未选中的曲目上渲染才会失败。(我提到的短周期毛刺噪声似乎是自上次播放每1024帧重新输出一次以来,输出缓冲区中剩余的任何值)

设置maxFramesToRender = 1024;修复该问题。

现在是一个非常固执己见的抱怨:我不禁觉得这个默认的maxFramesToRender值正在让新手(像我)失败,因为1)它从来没有在官方教程或文档中提到过2)它在苹果自己的DAWs上不能很好地发挥作用,想必是最明显的测试3)它一开始可以工作,但只有在你尝试同时播放两首曲目之前,在这一点上你可能已经有很多代码下来了,而且更容易产生混淆。

但是,哦,好吧,我想它就是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66210154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档