2010-09-07 104 views
1

好的,iPhone上的无缝动态音频循环

所以我试图无缝地将三个声音文件与第二个文件循环播放n次。让我们假设我可以让他们在另一个程序中一起循环,并将它们对接在一起。然而,当我使用audioPlayerDidFinishPlaying avaudioplayer的委托方法时,在对接时会有轻微的延迟(即使使用“prepareToPlay”方法也是如此)。另一点复杂的是,只要touchesDidEnd中间声音需要继续循环n次AKA方法尚未被调用,此时程序将播放第三个也是最后一个剪辑以结束声音“播放列表”。

作为示例,想一个观众在演出后给予掌声。声音文件A将包含最初的膨胀的声音文件2会包含一个可循环的人群样本,以持续的速度欢呼,直到用户抬起按钮,此时程序应该进入第三个声音文件,这将是人群尾声的掌声off。

因此,我最初尝试使用AVAudioPlayer似乎不够快,无法延迟,因此我需要另一种更快的方法来做到这一点,建议?

回答

1

对于循环,请查看AVAudioPlayer的numberOfLoops属性。比使用播放器的代理自己处理循环逻辑效果更好。

至于从一个循环样本到一个“尾部”样本的平滑衰落,这将很难与AVAudioPlayer结合。可能你最好的选择是使用尾随声音文件启动另一个播放器,并使用计时器快速淡入淡出,使用volume属性。

如果这并不令人满意(我怀疑它可能不会),我不认为你有多少选择,只能下载到AudioQueue API来解决这个问题。

+0

这就是我所害怕的,不期待搞乱audioqueue api。我昨晚弄乱了数目的循环,它确实使循环部分变得毫无意义,但是,这只是方程的一半。谢谢,希望其他人可以用更简单的答案弹出。 – nickthedude 2010-09-07 21:35:56