2009-10-29 47 views
0

我一直在研究节拍器的应用程序相当长一段时间了。遵循Apple'e节拍器应用程序示例,我一直在(高优先级)后台线程上使用定时器播放系统声音。我的结果没问题,但很不完美。我面对一些问题是:为了在iPhone上保持一致的速度,是否有比系统声音更好的解决方案?

  • 应用程序并没有真正保持时间,虽然这听起来像它
  • 而声音线程运行,因为它得到我不能做在主线程真的很慢
  • 如果我按下设备上的锁定按钮或音量按钮,速度会变得不合时宜。当手机处于静音

我昨天购买的应用程序商店节拍器,发现这个程序没有任何上述问题

  • 系统声音不玩了。它没有使用系统声音,因为iPhone静音并没有停止播放。

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

  • 回答

    2

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

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

    +0

    谢谢尼尔。看起来像音频单元(可能还有音频队列)正是我所期待的。 – infiniteloop 2009-10-30 10:24:20

    1

    您可以使用OpenAL处理声音。它使用低级API并且工作得很快。你也应该阅读Apple的AudioSessionProgrammingGuide。在那里你可以找到很多关于你的可能问题的答案。

    +0

    问一个问题,我感到相当的OpenAL暂且所以我想我会先研究一下音频单元吓倒了。 谢谢! – infiniteloop 2009-10-30 10:25:30

    +1

    如果你只是想在没有定位的背景下播放一些音乐,它很简单。你可以阅读本教程。 http://benbritten.com/2008/11/06/openal-sound-on-the-iphone/comment-page-1/#comment-292 – Morion 2009-10-30 10:40:00

    +0

    谢谢!我已经开始阅读教程。看起来不错! – infiniteloop 2009-11-02 18:54:04

    1

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

    “音频入门”页面列出了多种音频播放方式,其中一种清晰地声明“播放I/O延迟最低的声音或提供同时音频输入和输出......”(I很可能违反了一些NDA这里不管)

    至少峰的文档,你在这里

    +0

    谢谢。我已经完成了超过“音频入门”。我是一名初学者,对音频框架并不十分了解。我正在寻找一个关于我的问题的正确方向的指针。现在我明白了,我可以投入时间熟悉相关框架(特别是音频单元和音频队列)。 – infiniteloop 2009-10-30 10:23:23

    相关问题