在iOS上组合多个音频文件进行实时播放

在iOS上组合多个音频文件进行实时播放,ios,objective-c,xcode,audio,core-audio,Ios,Objective C,Xcode,Audio,Core Audio,我正在尝试在我的iOS应用程序中构建一个功能,它将接收四个.WAV音频文件,将它们组合起来并实时播放。本质上,我只想建立某种回调循环,将数据馈送到输出音频缓冲区。我在CoreVideo上做了类似的事情,我设置了一个合成器,然后得到一个startVideoCompositionRequest回调,该回调将为我提供一个帧,我可以对该帧进行操作,然后输出到渲染器。。。我希望有一种类似的方法来处理音频流 我正在尝试这样做: Output Sample = A*sampleA + B*sampleB +

我正在尝试在我的iOS应用程序中构建一个功能,它将接收四个.WAV音频文件,将它们组合起来并实时播放。本质上,我只想建立某种回调循环,将数据馈送到输出音频缓冲区。我在CoreVideo上做了类似的事情,我设置了一个合成器,然后得到一个startVideoCompositionRequest回调,该回调将为我提供一个帧,我可以对该帧进行操作,然后输出到渲染器。。。我希望有一种类似的方法来处理音频流

我正在尝试这样做:

Output Sample = A*sampleA + B*sampleB + C*sampleC + D*sampleD
其中A、B、C和D只是可由面向用户的控件实时更新的缩放系数。我已经到处寻找解决方案,似乎我应该能够用Core Audio实现这一点,但我还没有找到很多类似的例子,我发现的任何例子都是多年前的,充斥着不推荐的调用

我查阅了开源的iOS音频库Novocaine(),该库声称抽象了许多底层CoreAudio设置代码,但在使用它之后,我一直无法实现我的期望,文档似乎有点单薄


我是一个完全的iOS音频初学者,所以任何提示都将不胜感激

您可以使用Avassetrader API从所有4.wav文件中提取样本,计算生成的样本值,并将生成的样本放入循环缓冲区中。然后让RemoteIO音频单元回调将它们从循环缓冲区中拉出以进行播放。或者,您可以在输出音频单元前面使用kAudioUnitType_Mixer node音频单元,并从.wav资产示例中反馈混音器回调。然后让混合器单元用你的比例系数做所有的数学运算

更多信息在苹果的核心音频文档和指南中