我想修改苹果的auriotouch样本代码来生成波形和音频文件,而不是从麦克风输入渲染波形。我试图这样做,但我无法理解在哪里做什么改变。任何人都可以指导我如何实现它。
谢谢,
答案 0 :(得分:1)
查看名为AudioUnitRender
的函数的render回调只要扬声器渴望获取数据,就会发生渲染回调。
IIRC A.T.只需抓住麦克风使用此功能就可以获得许多样本
当然,第一次它会失败,因为没有什么可以等待
无论如何,只需注释掉这个函数,然后自己用文件中的样本填充缓冲区(我想你可能希望提前加载到内存中,可能不希望fileIO堵塞高优先级的线程)
这意味着您可能需要创建某种AudioFile类,并在设置render回调时将引用传递给此类的实例。这样你就可以从这个渲染回调中访问数据(这是一个vanilla C函数,即不是类的成员,所以它没有其他方法来访问类数据 - 除非你想做一些可怕的事情文件级变量)。
确保你创建了这个AudioFile * audiofile NONATOMIC,如果它是一个属性,你不希望你的渲染回调保持等待,因为其他一些线程在对象内部并因此锁定它。