2011-04-11 30 views
1

我想在任何時候獲得歌曲的音高。我計劃在稍後儲存音調。我怎樣才能讀出...一個mp3文件或wav文件來獲得某個點播放的音樂?使用VB.net獲取音高

下面是一個視覺示例: enter image description here 假設我想要獲得這首歌曲的這一點的音調。

如果可以的話,謝謝!

回答

1

這件事比你預料的要複雜得多。

雖然存在時域方法(即,直接與PCM數據一起工作的方法),但頻域基音檢測將更準確。你可以閱讀一個非常簡單的概述here

你可能想要的是一個Fourier Transform,它可以用來從時域到頻域(即信號給定範圍內的頻率內容分佈)轉換信號塊。從那裏,你需要分析該塊內的頻譜。問題變得更加困難,因爲在一般情況下,沒有從最佳採樣頻譜中推斷音高的方式。前面提到的維基百科文章應該爲您研究這些算法奠定基礎。

最後,值得注意的是,這實際上是一個語言不可知的問題,除非您的主要興趣在於使用VB.NET的reading a WAV file

+0

謝謝!一旦我回家,我會看看這個:) – FreeSnow 2011-04-11 17:50:49

+0

我使用** BASS **音頻庫進行頻域轉換,然後計算音高。我用它來計算任何歌曲的臨時指紋。 – 2011-04-13 15:24:26