節拍檢測主要以「分析高低頻率」及「偵測是否有節拍點」為目標。
一、Bass 音頻庫
簡介:BASS音頻庫是一款對非商業用戶免費的音頻處理類庫。功能強大,支持幾乎所有音頻的解碼編碼等處理。以及強大的擴展功能! BASS在很多軟件中都可以看到其身影,不管是音樂播放器還是視頻播放器還是其他媒體處理軟件。比如其中一款比較有名的叫做AIMP3的音樂播放器,裡面就用到BASS音頻庫。還有國產視頻軟件 快播,迅雷看看等等,裡面都有用到BASS音頻庫。
Bass 音頻庫官網:http://www.un4seen.com/
Bass 音頻庫使用入門:http://tieba.baidu.com/p/2643045626
僅需要下載其windows版的dll放入遊戲資料夾即可。
二、節拍檢測簡易架構
使用FFT algoritm(詳細:http://www.csie.ntnu.edu.tw/~u91029/Wave.html#7)來分析。
其資料結構:
- public enum beatmode // 三種mode:Energy, Frequency, Both
- public enum beatType // 四種type:無感應、高頻、中頻、低頻、強拍
- ...和一堆樂理變數設定。
Function:
- isBeat()
- setUpEnergy()
- setUpFrequency ()
- isBeatEnergy()
- isBeatFrequency()
Start()時setup Energy 和 Frequency其細節數值。
設tIni和tIniF陣列的timer, 確保點與點之間不會重合。
每一次Update()都會判斷isBeat()和beatType的狀況。
關於isBeat() ,利用GetComponent<AudioSource>().GetSpectrumData,來得知其區塊內當前播放音樂的波譜資料(Provides a block of the currently playing audio source's spectrum data)。
判斷是何種beatMode後利用isBeatEnergy()和isBeatFrequency()做運算。
三、其他參考資料
尚未做成但值得研究的資料們。
- libmad相關
- mp3格式解析
- 討論
博主你好,我最近在研究类似的架构,请问可以加我qq:601064362 ,告诉我更多相关的细节吗?
回覆刪除