我有一个使用The Amazing Audio Engine 2
构建的大型项目。我一直在努力整合Inter-App-Audio,并想迁移到AudioKit 3。
苦苦挣扎,意味着它已经集成了,但是一旦我选择它作为生成器,渲染就停止了,引擎就处于禁用状态。
音频系统的主要区别是什么? TAAE2使用每个都有渲染块的模块,这些模块可从渲染堆栈中推送和弹出音频缓冲区。
AudioKit如何呈现音频?在较高的层次上,将AEModules迁移到Audiokit对象会涉及什么?
最佳答案
对于音频渲染,它实际上是AVAudioEngine,AUAudioUnit,AVAudioUnit和AVAudioNode的包装。它被概念化为渲染链而不是堆栈,但是最终结果是相同的。您可以使用系统音频单元,也可以通过创建AUAudioUnit子类来注册自己的音频单元。
渲染链的工作方式几乎相同,但是具有基于块的API。不是将AEAudioUnitModule子类化并将其FunctionFunction设置为C函数(从渲染器中提取缓冲区列表和时间戳记),而是将AUAudioUnit子类化并实现internalRenderBlock,在其中您返回一个以缓冲区和时间戳记作为块参数调用的块。该块是您可以进行大部分移植的地方。