3

我正在尝试创建一个程序,该程序可以获取声音文件(WAV 或 MP3)中的各种“音符”,并可以获得每个音符的频率和幅度。我一直在寻找这个,当然存在区分不是 MIDI 的音乐文件中的单个“音符”的问题,但似乎可以使用 NAudio 或 DirectSound 完成这些方面的事情。有任何想法吗?

谢谢!

4

1 回答 1

3

您要求做的事情非常困难。

第一步是将您的音频从时域转换为频域。也就是说,您获取大量样本,并进行傅里叶变换(在您的软件中作为 FFT 实现)。

接下来,您开始决定您将什么称为笔记。这并不像挑选出最响亮的频率那么简单!不同的乐器有不同的音色,这是由各种谐波产生的。如果你有一首只有正弦波的歌曲,这会简单得多。但是,您会发现您会开始看到您的耳朵告诉您它们不存在的音符。

现在,心理声学开始发挥作用。人类完全有可能“听到”甚至没有基本音的音符。在音乐背景下尤其如此。如果我拿起长号开始向下演奏音阶,在某个时候,基本音消失或大部分消失了。但是,您仍然会感觉到音阶在下降,而实际上基本声音几乎消失了。在这一点上事情变得非常棘手。

要回答您的问题,请从 FFT 开始。也许这足以满足您的需求。如果没有,请开始阅读有关该主题的大量技术文献。

于 2012-09-09T17:13:54.920 回答