2010-09-07 108 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