NSSound状框架的作品,但并不要求处理一个陡峭的学习曲线

我已经差不多完成了在白噪声功能工作使用NSSound打10秒AAC编码的预录白噪声环路我的应用程序之一。

[sound setLoops: YES]

应该是所有的需要,对不对?

它的工作原理就像一个魅力,但我注意到,有声音文件整理和重新启动的一个声音停顿..一种“噗通”声。 这种循环的原始声音文件后一个小时左右的试图弄清楚这一点,当不存在,我已经到了NSSound很烂的结论,而且声音停顿是民营​​后台线程的同步造成的假象播放声音。 它似乎是依赖于主运行循环以某种方式,这将导致声音的端部和重新启动的可听间隙。

我还不是很了解声音的东西,这是一个非常小的功能,所以我并不想进入CoreAudio的深处只是起到一个循环10秒的声音片段..所以我去后一个不错的选择追逐,但似乎没有任何以颇为契合:

  • 核心音频:总矫枉过正,但至少一个标准框架
  • AudioQueue:复杂的,用C ++代码示例!?
  • MusicKit / SndKit:也是巨大的学习曲线的基础上,很多开源的东西,等等。

我看到AVFoundation在iOS 4将是一个不错的方式来播放声音,但这只是计划为Mac OS X 10.7 ..

是否有可靠重复的声音在Mac OS X 10.5+任何易于使用的方法是什么?

是否有AudioQueue或核心音频任何示例代码,需要疼痛从一个Objective-C的应用程序中使用它们呢?

任何帮助将是非常赞赏..

诚挚的问候,

坦率

--------------解决方案-------------

使用QTKit。 创建QTMovie的声音,将其设置为循环,并把它玩。

只是为了在档案中。

QTKit还患有一种比赛结束之间通过和下一个的间隙的开始。 它似乎与重新初始化数据(可能是从磁盘重新阅读什么?)以某种方式被链接。 它使用比播放未经压缩的AIFF文件时要小得多,但高度压缩M4A格式时,很多更明显,但它仍然存在即使如此。

我已经找到了解决方案是使用音频队列服务:

http://developer.apple.com/mac/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQPlayback/PlayingAudio.html#//apple_ref/doc/uid/TP40005343-CH3-SW1

http://developer.apple.com/mac/library/samplecode/AudioQueueTools/Listings/aqplay_cpp.html#//apple_ref/doc/uid/DTS10004380-aqplay_cpp-DontLinkElementID_4

音频队列调用回调函数,准备和入队下一个缓冲区,所以当你达到当前文件的末尾,你需要从一开始就重新开始。 这使得完全无缝播放。

有一个在文档中的示例代码的两个陷阱。

第一个是实际的错误(我会联系DTS对此,使他们能够纠正)。 在分配和启动音频缓冲,自定义结构必须打开,否则播放音频缓冲从来没有得到底漆,并没有什么发挥:

aqData.mIsRunning = 1;

第二个疑难杂症的是,代码不可可而是作为一个独立的工具运行,因此代码中的音频队列连接到一个新的运行循环,并真正实现了运行循环本身作为该计划的最后一步。

相反,通过CFRunLoopGetCurrent()的,只要传递NULL这将导致AudioQueue在其自己的运行循环中运行。

result = AudioQueueNewOutput ( // 1
&aqData.mDataFormat, // 2
HandleOutputBuffer, // 3
&aqData, // 4
NULL, //CFRunLoopGetCurrent (), // 5
kCFRunLoopCommonModes, // 6
0, // 7
&aqData.mQueue // 8
);

我希望这可以节省可怜虫试图做同样的事情在未来一点时间:-)

可悲的是,有很多痛苦的发展在OS X上的音频应用程序时的学习曲线很陡,因为文档是相当稀少。

如果你不介意的Objective-C ++我写了这种事情的框架:SFBAudioEngine。 如果你想打一个声音,我的代码在这里是你如何能做到这一点:

DSPAudioPlayer *player = new DSPAudioPlayer();
player->Enqueue((CFURLRef)audioURL);
player->Play();

循环也是可能的。

分类:可可 时间:2015-03-14 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.345 (s). 10 q(s)