音频分析:频率与音高

我正在设计一个简单的调谐器,所以我的目标是显示音符名称(A,B,F#)以及理论声音和实际输入之间的 距离( 以分为单位)。

我是音频和信号处理的新手,所以我做了一些研究,发现 了一个 叫做快速傅立叶变换 的东西

,它可以分析字节并给我频率。另外,我发现了一些Java库,例如通用数学和JTransforms,所以我不会自己编写硬代码。

我相信就这样,因为每个范围的频率都可以以相同的气质直接映射到音符,但是后来我发现了这个新的(对我来说)

:据说与频率紧密相关,但并不完全相同东西,并且很难获得,并且属于那个 心理声学 领域。

所以我的问题是,有人可以清楚地概述音高和频率之间的差异,也许可以告诉我调谐器要处理的是什么?

回答:

频率

就是波每秒振动的次数。任何周期性的波都有频率。但是通常在音乐中,该术语的使用仅限于谈论正弦波,因此,如果您听到有关频率为x的波的某些信息,则通常表示每秒振荡量很大的正弦波。

可以通过将各种频率的正弦波以不同的数量(即具有不同的振幅)相加来构造任意波,无论是否周期性。傅立叶变换的作用是告诉您要使用哪个频率以及哪个振幅来创建任何给定的波。快速傅立叶变换(FFT)是一种特殊的算法,它根据给定的数据表示随时间变化的波幅,从而计算出波的傅立叶变换。

当您听到乐器弹奏的音符时,它不仅包含单个频率。相反,您得到的是不同频率的基本频率的不同倍数的组合。例如,吹奏特定音符的长笛可能会产生

  • 440 Hz,幅度1
  • 1320 Hz,振幅1/2
  • 2200 Hz,幅度1/3

等等。另一方面,吹奏相同音符的小号可能会产生

  • 440 Hz,幅度1
  • 880 Hz,振幅1/2
  • 1320 Hz,幅度1/4
  • 1760 Hz,幅度1/8

等等。(这些不是这些仪器的实际相对振幅;我只是制作了一些示例数字)因此,在您的调谐器应用程序中,当对输入数据运行FFT时,您会发现输出中的多个峰值处于不同频率,具体取决于哪个乐器正在调音。关键是FFT的输出将不仅是一个数字,而是一个整数。它不仅会告诉您“此乐器正在以440

Hz的频率演奏音符”。

现在,我们得到 间距

,这是一个稍微模糊的概念。音符的音调基本上就是一个人接触该音符时实际听到的声音。对于许多乐器,音高与乐器发射的基频相关。但是,取决于较高频率的相对振幅,一个人可能会感觉到两个乐器的音高不同,即使它们实际上演奏相同的音符也是如此。

幸运的是,如果您只是制作一个简单的调谐器,则完全不必担心音高。调谐器的目的是使不同乐器之间的拍子最小化,拍子是由实际频率而不是音高所引起的。两者都以440Hz为基频演奏的小号和长笛不会表现出节拍,因为它们的所有频率之间的差异是440 Hz的倍数,即使未经训练的耳朵可能认为其中一个的音调比另一个高。

以上是 音频分析:频率与音高 的全部内容, 来源链接: utcz.com/qa/432311.html

回到顶部