我正在构建一个应用程序,该应用程序需要真正准确的位置音频,直至建模耳间时间差 (ITD) 水平,即立体声通道之间的轻微延迟差异随声音相对于听众的位置而变化。不幸的是,iPhone 的 OpenAL 实现没有这个功能,SDK 中也没有提供延迟音频单元。
经过一番阅读,我决定解决这个问题的最佳方法是通过操作 AudioQueue 来实现我自己的延迟(我还可以看到我未来的一些项目可能需要学习这些东西,所以这是学习的好借口)。但是,我根本没有任何低级音频编程的经验,当然也没有使用 AudioQueue。试图学习两者:
a) 音频处理的一般理论
和
b) AudioQueue 如何实现该理论的细节
事实证明,一次吸收太多了:(
所以,我的问题是:
1) 从哪里开始学习 DSP 以及音频生成和处理的一般工作原理(深入到音频数据在内存中的结构、混音如何工作,诸如此类)的好地方?
2) 什么是了解 AudioQueue 是如何做到这一点的好方法?有没有很好的例子来说明如何从生成的环形缓冲区中读取它,而不是AudioFileReadPackets
像 Apple 的 SpeakHere 示例那样按需获取文件的位?
而且,最重要的是
3)有没有我忽略的更简单的方法?