修改Auriotouch示例代码以从音频文件中读取数据

时间:2011-07-28 09:11:23

标签: iphone audio core-audio

我想修改苹果的auriotouch样本代码来生成波形和音频文件,而不是从麦克风输入渲染波形。我试图这样做,但我无法理解在哪里做什么改变。任何人都可以指导我如何实现它。

谢谢,

1 个答案:

答案 0 :(得分:1)

查看名为AudioUnitRender

的函数的render回调

只要扬声器渴望获取数据,就会发生渲染回调。

IIRC A.T.只需抓住麦克风使用此功能就可以获得许多样本

当然,第一次它会失败,因为没有什么可以等待

无论如何,只需注释掉这个函数,然后自己用文件中的样本填充缓冲区(我想你可能希望提前加载到内存中,可能不希望fileIO堵塞高优先级的线程)

这意味着您可能需要创建某种AudioFile类,并在设置render回调时将引用传递给此类的实例。这样你就可以从这个渲染回调中访问数据(这是一个vanilla C函数,即不是类的成员,所以它没有其他方法来访问类数据 - 除非你想做一些可怕的事情文件级变量)。

确保你创建了这个AudioFile * audiofile NONATOMIC,如果它是一个属性,你不希望你的渲染回调保持等待,因为其他一些线程在对象内部并因此锁定它。