0

我已经在节拍器应用程序上工作了很长一段时间了。在 Apple'e 示例节拍器应用程序之后,我一直在(高优先级)后台线程上使用计时器来播放系统声音。我的结果还可以,但远非完美。我面临的一些问题是:

  • 该应用程序并没有真正保持时间,尽管听起来确实如此
  • 当声音线程运行时,我不能在主线程上做很多事情,因为它变得非常缓慢
  • 如果我按下设备上的锁定按钮或音量按钮,节奏就会失控。
  • 手机静音时不播放系统声音

我昨天在应用商店购买了一个节拍器,发现这个应用没有上述任何问题。它没有使用系统声音,因为静音 iPhone 并没有停止播放。

现在,我想知道是否有人可以指导我为这项任务找到一个更好、更强大的框架?

4

3 回答 3

2

OSX 音频库被称为“核心音频”。有几种不同的方式可以与音频硬件和 Core Audio 框架进行交互。有 OpenAL(正如另一条评论中提到的),它是一种跨平台的音频标准方法,就像 OpenGL 用于图形一样。还有音频单元,它是一个基于回调的直接连接到音频硬件的接口,它允许您实时提供原始 PCM 音频。Audio Units 非常受时间限制,所以如果您正在寻找节拍节奏,Audio Units 可以为您做到这一点。在音频单元之上还有一层称为 AudioQueue,它允许您安排音频流以实时播放。AudioQueue 的好处之一是它可以自动解码 MP3 或 AAC 等压缩格式。

在文档中搜索“Core Audio Overview”以了解有关 iPhone 的各种音频框架的更多信息。

于 2009-10-29T15:09:04.897 回答
1

您可以使用 OpenAL 来处理声音。它使用低级 API 并且运行速度很快。您还应该阅读 Apple 的 AudioSessionProgrammingGuide。在那里,您会找到许多关于您可能提出的问题的答案。

于 2009-10-29T10:20:52.000 回答
1

我要在这里点燃火焰,所以如果你不喜欢这个评论,请在它上面。但是你真的看过苹果为你提供的文档吗?

“音频入门”页面的文档列出了多种播放音频的方法,其中一种明确指出“以最低的 I/O 延迟播放声音,或提供同时的音频输入和输出,......”(我可能违反了一些NDA在这里无论如何)

在您在这里提出问题之前,至少在文档中达到顶峰

于 2009-10-29T15:20:56.833 回答