2011-04-11 86 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