2011-10-11 54 views
0

我想創建一個遊戲,它可以在現場演奏之前幾秒鐘分析一首mp3。一個基本的想法與吉他英雄類似,你可以看到即將出現和準備的'苦惱',然後他們實時擊中並同步該歌曲。分析時間前面的聲音 - Actionscript

有沒有辦法提前分析聲音文件,或分析靜音聲音文件?

回答

1

您可以使用Sound.extract()訪問基礎音頻數據。您還可以通過向SampleDataEvent偵聽器添加SampleDate事件偵聽器並將其播放,而不用提供MP3來動態地將示例饋送到Sound對象。

所以基本上的過程通常是這樣的:

  1. 加載一個MP3到Sound對象中。
  2. 將其部分或全部樣本數據提取到ByteArray中,以便分析/修改它。根據你需要做的事情,你可能一次只提取足夠的數量,以便按照你想要的數量保持在輸出之前。
  3. 創建第二個聲音對象輸出 - 不要提供這個與MP3。爲SampleDataEvents添加一個監聽器,然後播放它。它會定期發送SampleDataEvents,因爲它需要更多的音頻(每次需要2048,4096或8192個樣本,44100是一秒鐘的樣本)。每次獲取SampleDataEvent時,都會將其數據ByteArray屬性填充到您希望下一次播放的樣本中。

雖然我不明白它到底是什麼你想要做的,它聽起來就像你保持你的提取過程會幾秒鐘前進您的播放過程中 - 解壓到一個緩衝的ByteArray,做您的分析,然後每當輸出聲音請求更多采樣時從該緩衝區BA的開頭複製採樣。