在编作曲电子化的时代,不论是学习音频处理还是音乐创作,混音,vocaloid等合成人声引擎,都很有必要系统了解音乐的本质以及数字音频处理的底层原理。类似使用高级编程语言仍需了解编译原理和内存分配一样。
例如,你有没有想过这些问题:
- 采样率和采样深度究竟是什么东西?有什么用?
- 怎么用EQ来帮助扒带?
- 我写在钢琴窗中的MIDI音符为什么会卡住不发声?
- 为什么DAW在完成导出音频后,经常会嗡的响一下音符尾音?
- WAV,FLAC和MP3质量上有差别吗,有什么差别?
本科普将会解释声音是什么,乐理的一些底层逻辑,以及如何在计算机上实现编作曲、混音。
在22年初的时候,一直瞎折腾代码和音乐的笔者,无意间看到了(不愿意透露姓名的)张新豪先生的《音频开发技术》系列教程。在实践过程中发现了很多值得查漏补缺的地方以及未来得及的基础知识。同时,这个系列也参考了一些数字音频方面的大学课程。
声音的本质
声音是一种机械波,也就是物体的振动。以空气为介质传播的声音是一种纵波(longitudinal wave),空气中气体分子的密度变化,也就是气压变化,被人耳感知后理解为声音。
乐器的发声原理各有不同。鼓等打击乐器将固体的振动传导到空气中,长笛等管乐器则依赖空气柱本身的振动发声。
如果我们将气体分子的密度/位置变化用图像描绘出来,大概长这样:
一个基本的音可以用对应频率的正弦波来表示。频率越高,音高越高,波长越短。一般以440Hz作为标准音A。
谐和度与十二平均律
一个有趣的现象是,对于两个音,人们普遍认为它们的频率比越简单,听起来越协和,稳定。例如440Hz和880Hz放在一起是协和的(1:2),但440Hz和450Hz就没那么协和(44:45)。
除了协和度以外,声音间还会产生干涉,形成强度不断变化的拍频(Beat frequency)现象,主观感受为声音的音量快速抖动。抖动的频率和音频率比有直接关系。这一特性一般用于钢琴调律,后面的合成器部分也会出现。拍频的产生原因如图:
频率比和协和度是律制和和声的基础。不同音程因频率比不同,有着不同的协和度:纯五度协和,三全音紧张。多个不同音程音放在一起则会构成协和度不同的和弦,进而构建出整个和声学。
历史上人们发明过许多律制。一般来说,频率比互为倍数的音拥有同样的音名,比如440Hz为A时,880Hz为高八度的A。古代常用“三分损益法”或“五度相生法”定律,即将弦乐器的弦长或管乐器的管长不断乘以三分之二来获得音阶。这种做法实际上将频率不断乘以1.5倍(再上升或下降到同个八度),获得的是基音的五度音。
由此律法产生的音阶,五度三度等音程间均为简单的整数比关系,被称为纯律。然而纯律法在不断1.5倍倍增,经过一个五度循环圈回到最初的基音之后,会与基音最初的频率产生一定的误差。十二平均律的诞生解决了这一问题:一个八度内的频率被按照$2^\frac{n}{12}$为比例均分,这样得到的音阶调与调之间是完全的平移关系,且与五度相生的频率较接近。
谐波与泛音
在真正的乐器上,弦/空气柱除了能够按照其基频振动,还会以其基频的两倍,三倍,四倍等振动。这些更高频率的振动被称为谐波(Harmonics),也就是泛音(Overtones)。在宿主软件中加载一个钢琴音源,按下一个键,观察产生的频率:
可以观察到除了基频440Hz的声音以外,乐器还在880Hz、1.3Khz、1.8Khz等整数倍频率上产生了数个泛音。数学上来说这属于傅里叶级数中的不同系数,稍后会讨论到。
回答开头的问题,扒带时可以根据EQ效果器上显示的基频频率,查表反推出音名。这一做法对Sub-bass等听不清楚的乐器尤为有效。
这些更高次的谐波被统称为泛音列。不同乐器的泛音频率上是相同的,但是强度和强度的变化规律不一样,因此其音色也不同。
下一篇中,我们将了解计算机如何存储音频信号。