我想修改苹果的 auriotouch 示例代码以从音频文件生成波形,而不是从麦克风输入渲染波形。我尝试这样做,但我无法理解要在哪里进行更改以及进行哪些更改。谁能指导我如何实现它。
谢谢
最佳答案
查看渲染回调中名为 AudioUnitRender 的函数
只要扬声器需要数据,就会发生渲染回调。
IIRC A.T.使用此功能可以简单地从麦克风中获取需要的许多样本
当然,第一次会失败,因为没有什么等待
无论如何,只需注释掉这个函数,然后用文件中的样本填充缓冲区(我认为您可能希望提前加载到内存中,可能不希望 fileIO 阻塞高优先级线程)
这意味着您可能需要创建某种 AudioFile 类,并在设置渲染回调时传递对该类实例的引用。这样你就可以从这个渲染回调中访问数据(这是一个普通的C函数,即不是类的成员,所以它没有其他方法来访问类数据——除非你想做一些可怕的事情)与文件级变量)。
确保您创建的 AudioFile* 音频文件是非原子的(如果它是一个属性),您不希望渲染回调一直等待,因为其他线程位于该对象内部,因此对其具有锁定。
关于iphone - 修改Auritouch示例代码以从音频文件读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856573/