1

我正在构建一个应用程序,该应用程序需要真正准确的位置音频,直至建模耳间时间差 (ITD) 水平,即立体声通道之间的轻微延迟差异随声音相对于听众的位置而变化。不幸的是,iPhone 的 OpenAL 实现没有这个功能,SDK 中也没有提供延迟音频单元。

经过一番阅读,我决定解决这个问题的最佳方法是通过操作 AudioQueue 来实现我自己的延迟(我还可以看到我未来的一些项目可能需要学习这些东西,所以这是学习的好借口)。但是,我根本没有任何低级音频编程的经验,当然也没有使用 AudioQueue。试图学习两者:

a) 音频处理的一般理论

b) AudioQueue 如何实现该理论的细节

事实证明,一次吸收太多了:(


所以,我的问题是:

1) 从哪里开始学习 DSP 以及音频生成和处理的一般工作原理(深入到音频数据在内存中的结构、混音如何工作,诸如此类)的好地方?

2) 什么是了解 AudioQueue 是如何做到这一点的好方法?有没有很好的例子来说明如何从生成的环形缓冲区中读取它,而不是AudioFileReadPackets像 Apple 的 SpeakHere 示例那样按需获取文件的位?

而且,最重要的是

3)有没有我忽略的更简单的方法?

4

2 回答 2

1
  1. 我认为 Richard Lyons 的“理解数字信号处理”被广泛认为是一本很好的 DSP 入门书籍,尽管它全是数学而且没有代码。
  2. 如果时间非常重要,您可能希望使用远程 I/O 音频单元,而不是更高延迟的音频队列。此处的一些音频单元示例可能对您有所帮助,例如“aurioTouch”示例,它使用远程 I/O 单元进行捕获并对其执行 FFT 以获得频率。
  3. 如果内置的 AL 不能为你做这件事,我认为你选择了“疯狂难”的难度级别。

听起来您可能应该在 coreaudio-api 列表 (lists.apple.com) 上,Apple 的 Core Audio 工程师在那里闲逛。

于 2009-09-22T20:24:30.887 回答
0

另一个学习 DSP 基础知识及其应用的重要资源是Steven W. Smith的《数字信号处理科学家和工程师指南》 。它可在http://www.dspguide.com/上免费在线获得,但您也可以订购印刷版。

我真的很喜欢作者如何以一种非常可口的方式建立基本理论。

此外,您应该查看 /Developer/Extras/CoreAudio/PublicUtility 中的 Core Audio Public Utility。它涵盖了使用 CoreAudio 所需的许多基本结构。

于 2010-01-02T15:00:39.467 回答