声学基础与音高的数学表示
第1章:声学基础与音高的数学表示
音乐与数学的关系,长久以来被视作人类文化中最深邃的谜题之一。从毕达哥拉斯学派发现整数比与和谐音程的对应,到现代频谱音乐的崛起,人们始终试图回答一个根本问题:为何抽象的数学结构能够在声音中呈现出如此动人的秩序?本章将追溯这一问题的物理起点,追问音乐的物质载体——声波——其本身的数学特性如何为后续所有抽象化奠定基础。
这一追问的必要性在于:若我们仅仅将音乐视为纯粹的文化建构,便无法解释为何某些音程在几乎所有人类文明中都自发地呈现出和谐性;若我们仅将其视为物理事实,又会忽视人类感知系统在其中的关键调节作用。因此,本章将沿着「物理振动→心理感知→音乐符号」的完整链条展开分析,逐步揭示从连续频率空间到离散音高集合的映射机制,最终回答一个核心问题:音乐的物理基础如何决定其数学表示的可能性?
声音作为物理现象的数学描述
振动方程与波动原理
声音的本质是机械振动在弹性介质中的传播。当一根钢琴弦被拨动或敲击时,弦上的质点离开平衡位置,在弹力作用下围绕平衡位置往复振动。这一振动通过与空气分子的碰撞传递给周围介质,形成在空间中传播的压缩波与稀疏波,我们的耳膜感知到这些压力变化后,便产生了「听见」的主观体验。
从数学上看,理想弦振动的行为由一维波动方程精确描述:
$$\frac{\partial^2 y}{\partial t^2} = c^2 \frac{\partial^2 y}{\partial x^2}$$
其中 $y(x,t)$ 表示弦上位置 $x$ 在时刻 $t$ 的横向位移,$c$ 为波在弦上的传播速度,其值由弦的材质密度和张力决定:
$$c = \sqrt{\frac{T}{\mu}}$$
此处 $T$ 代表弦的张力,$\mu$ 为单位长度质量。波动方程的解揭示了弦振动的一个重要特征:其固有振动模式不是任意的连续形状,而是离散的驻波构型。具体而言,一根两端固定的弦,其固有振动(又称本征模态或简正模式)必须满足在端点处位移为零的边界条件,这导致只有特定波长的振动能够稳定存在:
$$L = \frac{n\lambda_n}{2}, \quad n = 1, 2, 3, \ldots$$
其中 $L$ 为弦长,$\lambda_n$ 为第 $n$ 个模式的波长。相应的振动频率为:
$$f_n = \frac{n c}{2L} = \frac{n}{2L}\sqrt{\frac{T}{\mu}}$$
这一数学结果具有深刻的音乐意义:它解释了为何每根弦都能同时发出多个「音高」——这并非乐器的某种特殊设计,而是波动方程的必然推论。第 $n=1$ 的模式产生的频率最低,称为主音基频(fundamental frequency),而 $n=2,3,4,\ldots$ 的各模式则对应泛音(overtones),它们与基频共同构成该弦发出的完整声音。
傅里叶分析:波形与频谱的等价描述
波动方程揭示了弦振动的离散模态结构,而傅里叶分析则提供了将这些物理事实转化为精确数学语言的工具。1822年,约瑟夫·傅里叶在研究热传导问题时证明了一个革命性的命题:任何周期函数都可以表示为正弦和余弦函数的无限级数之和。对于声音信号而言,这一命题意味着:任何周期性的声波振动,都可以在数学上分解为一系列单一频率的正弦波的叠加。
设原始声波信号为 $x(t)$,其傅里叶级数展开为:
$$x(t) = a_0 + \sum_{n=1}^{\infty} \left[ a_n \cos\left(\frac{2\pi n t}{T}\right) + b_n \sin\left(\frac{2\pi n t}{T}\right) \right]$$
其中 $T$ 为信号的周期,系数 $a_n$ 和 $b_n$ 由积分确定。更常用的形式是幅度-相位表示:
$$x(t) = \sum_{n=1}^{\infty} A_n \cos\left(\frac{2\pi n t}{T} + \phi_n\right)$$
此处 $A_n$ 表示第 $n$ 次谐波的幅度,$\phi_n$ 为其相位。傅里叶分析的核心价值在于:时域中的波形信息与频域中的频谱信息是完全等价的。一个复杂的波形对应着一组离散的频率-幅度对,反之亦然。
对于音乐声学而言,这一等价性具有根本性的意义。当我们分析一把小提琴和一个电子合成器发出的同一音高时,两者产生的波形可能截然不同——这是因为它们包含的谐波幅度分布不同。然而,如果我们仅仅关注「音高」这一属性,我们实际关注的是波形中幅度最大的那个频率分量(即基频),而波形形状的差异则对应着「音色」的差异。傅里叶分析将这一直觉精确化:音高由基频决定,音色由谐波幅度分布决定,两者共同构成了声音的完整频谱描述。
在实际应用中,快速傅里叶变换(FFT)算法使得我们能够在计算机上高效计算任意声音信号的频谱。以下Python代码演示了如何读取一段音频并计算其频谱:
```python import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile from scipy.fft import fft, fftfreq
def analyze_audio(filename): """ 读取音频文件并分析其频谱结构 """
读取音频文件
sample_rate, audio_data = wavfile.read(filename)
如果是立体声,取单声道
if len(audio_data.shape) > 1: audio_data = audio_data.mean(axis=1)
计算FFT
n_samples = len(audio_data) fft_result = fft(audio_data) frequencies = fftfreq(n_samples, 1/sample_rate)
只取正频率部分
positive_freq_mask = frequencies > 0 frequencies = frequencies[positive_freq_mask] magnitudes = np.abs(fft_result[positive_freq_mask])
归一化幅度
magnitudes = magnitudes / np.max(magnitudes)
return frequencies, magnitudes
示例:分析A4音(440Hz)的频谱
freqs, mags = analyze_audio('piano_A4.wav')
找出峰值频率(谐波位置)
from scipy.signal import find_peaks peaks, _ = find_peaks(mags, height=0.01, distance=10)
print("检测到的谐波频率(Hz):") for peak in peaks[:10]: print(f" {frequencies[peak]:.2f} Hz") ```
这段代码的输出将揭示钢琴A4音的泛音分布规律:基频在440Hz附近,其上各次谐波的频率大致为基频的整数倍,而谐波的相对幅度则决定了钢琴特有的明亮音色。
人耳感知系统的对数特性
频率与音高的非线性映射
物理学家可以精确测量声波的振动频率,但人类感知「音高」的方式并非线性的。一百多年前,心理物理学的先驱者们通过大量实验揭示了这一关键事实:人类对音高的感知与频率之间呈现对数关系。
具体而言,当一个声音的频率从100Hz增加到200Hz时,人耳感知到的音高变化等同于从200Hz增加到400Hz的变化,尽管两者在物理上的频率增量均为100Hz。这表明,音高感知的「单位距离」对应着频率的等比例变化,而非等差变化。这一关系可以用数学语言表述为:
$$\text{音高} \propto \log(\text{频率})$$
或更精确地,采用以2为底的对数以适应音乐中的八度概念:
$$p = k \cdot \log_2(f)$$
其中 $p$ 为以某些参考点为基准的音高度量,$f$ 为物理频率,$k$ 为比例常数。
对数感知特性的一个直接推论是:频率比而非频率差是音乐中具有意义的度量。当两个音的频率比为2:1时(即相差一个八度),无论这两个音是在低频区域还是高频区域,人耳感知到的「八度距离」始终相同。然而,它们的频率差则可能从100Hz(100Hz到200Hz)变化到2000Hz(2000Hz到4000Hz)。因此,音乐语言中关于音程的描述——纯五度、纯四度、大三度等——其本质都是频率比,而非频率差。
这一原则的具体数值可以通过实验确定。例如,科学研究表明,当两个正弦音的频率比达到特定简单整数比时,听众倾向于将其感知为「和谐」或「融合」,而当频率比趋于复杂无理数比时,则感知为「不和谐」或「紧张」。最基础的和谐关系包括:
| 音程名称 | 频率比 | $\log_2$ 比值 | |---------|--------|--------------| | 纯八度 | 2:1 | 1 | | 纯五度 | 3:2 | $\log_2(3/2) \approx 0.585$ | | 纯四度 | 4:3 | $\log_2(4/3) \approx 0.415$ | | 大三度 | 5:4 | $\log_2(5/4) \approx 0.322$ | | 小三度 | 6:5 | $\log_2(6/5) \approx 0.263$ |
值得注意的是,这些频率比都基于小整数(2、3、4、5、6),这一现象将在后续章节中与泛音列的物理起源相联系。
韦伯-费希纳定律的音乐学诠释
对数感知特性并非音乐领域所独有,而是广泛存在于人类多种感觉通道中。19世纪的心理物理学研究发现,人类对刺激强度的感知通常与刺激强度的对数成正比。这一规律被系统化为韦伯-费希纳定律(Weber-Fechner Law),其数学形式为:
$$S = k \log(I) + C$$
其中 $S$ 为主观感知量,$I$ 为物理刺激强度,$k$ 和 $C$ 为常数。
对于声音的响度感知,韦伯-费希纳定律表现为:人耳对声音响度的感知大致与声压级的分贝(dB)数成正比,而非与声压本身成正比。声压级 $L_p$ 定义为:
$$L_p = 20 \log_{10}\left(\frac{p}{p_0}\right) \text{ dB}$$
其中 $p$ 为声压有效值,$p_0 = 20\,\mu\text{Pa}$ 为参考声压(人耳能感知的最低声压)。
对于音高感知,虽然直接套用韦伯-费希纳定律存在争议,但大量实验数据支持以下近似关系:当频率从 $f_1$ 变化到 $f_2$ 时,人感知到的音高变化量 $\Delta P$ 与 $\log_2(f_2/f_1)$ 成正比。更精确地,森特(Susan J. Ledward)和库克(David M. Howard)等人的研究表明,人对音高变化的感知阈值在不同频率区域基本保持恒定的比例——约为频率的0.5%到1%。这意味着,在100Hz附近人能察觉的最小频率变化约为0.5-1Hz,而在1000Hz附近则约为5-10Hz。
这一定量约束对音乐实践具有深远影响。以钢琴为例,其频率范围从A0的27.5Hz到C8的4186Hz,跨越约7个八度。如果我们要求相邻半音之间的频率差异能够被人可靠地感知和区分,那么每个半音必须对应足够大的频率比。以十二平均律为例,从A4(440Hz)到A♯4(466.16Hz),频率比约为1.05946,这对应约1.93森特(cents,关于这一单位的定义详见后文)。对于听力正常的人群而言,这一差异处于可感知范围的边界——这解释了为何调音师的工作需要极高的精确度,也暗示了12音结构的设计在感知上是经过优化的。
对数感知特性还解释了为何音乐理论中的音程命名体系能够跨越绝对频率的巨大差异而保持一致。无论我们讨论的是钢琴低音区的八度还是高音区的八度,它们都被称为「八度」——因为它们在感知上具有相同的「距离」,尽管物理频率差相差数十倍。这种感知等价性是音乐抽象化符号系统得以建立的心理基础。
标准音高体系与频率比关系
A4=440Hz:约定论的基础
现代西方音乐实践中,标准音高A4=440Hz已成为全球通行的约定。然而,这一数值并非自然界的客观物理常数,而是历史演化的产物,其确立过程本身就是数学与文化协商的绝佳案例。
在18世纪末至19世纪初,古典音乐时期的标准音高经历了显著的地区和时代差异。德国某些教堂使用的音高(以Handel的tuning fork为代表)低至A4=396Hz,而同时期法国歌剧院使用的音高则高至A4=566Hz。这种差异给跨地区音乐交流和乐器制造带来了严重困扰。1859年,法国政府率先以法律形式确立了A4=435Hz的标准,这一数值基于阿代玛·约瑟夫·萨沃特(Aristide Cavaillé-Coll)的建议,其依据是让标准音高尽可能接近当时法国各地区乐器的平均音高。
国际标准协会(ISO)在1955年将A4=440Hz确立为国际标准(ISO 16),1975年进一步确认。这一选择背后的物理考量是:A4=440Hz提供了足够高的基准频率,使得大多数乐器在演奏时处于其最佳共鸣区域;同时,该频率也处于人耳最敏感的感知范围内(约2000-4000Hz附近),便于校准和听感判断。
然而,关于标准音高的争论从未完全平息。一些音乐家指出,当代交响乐团普遍使用A4=442Hz甚至更高的音高,这一趋势部分源于追求更明亮音色的审美取向,也与弦乐器在高音区更易发挥其共鸣特性有关。在巴洛克音乐复兴运动中,学者们根据历史文献考证出当时的音高标准可能低于现代标准(如A4≈415Hz),于是发展出专门用于巴洛克演奏的「巴洛克音高」体系。这种约定论视角揭示了一个重要事实:音高体系的核心不是某个绝对频率值,而是频率之间的比例关系——只要比例保持不变,音乐的相对音高结构就不会改变。
十二平均律的数学结构
如果说标准音高A4=440Hz是一个约定,那么将一个八度划分为12个等比音级的十二平均律(12-tone Equal Temperament, 12-TET)则是一个经过精密数学设计的系统。在十二平均律中,一个八度内的12个半音对应12个等比频率,其公比为:
$$r = \sqrt[12]{2} \approx 1.059463094$$
这意味着,从任意音出发,向上移动 $n$ 个半音后的频率为:
$$f_n = f_0 \cdot 2^{n/12}$$
反之,给定任意两个频率 $f_1$ 和 $f_2$,它们之间的半音距离为:
$$n = 12 \cdot \log_2\left(\frac{f_2}{f_1}\right)$$
为了更精细地描述音高关系,音乐理论和声学中引入了森特(cent)这一单位,定义为:
$$\text{cents} = 1200 \cdot \log_2\left(\frac{f_2}{f_1}\right)$$
在十二平均律中,一个半音恰好等于100森特,一个八度等于1200森特。这一单位使得不同音程之间的关系可以被精确量化:纯五度的森特值为:
$$1200 \cdot \log_2(3/2) \approx 701.955 \text{ cents}$$
纯四度的森特值为:
$$1200 \cdot \log_2(4/3) \approx 498.045 \text{ cents}$$
而在十二平均律中,最近似的纯五度为700森特(7个半音),与理论的701.955森特相差约2森特——这一差异如此之小,以至于大多数人的听觉无法察觉。因此,十二平均律在实践中被广泛采用,其代价是无法实现完美的纯律音程,但获得了转调自由这一巨大优势:在任意调性之间切换时,音程关系始终保持一致。
下表展示了C4到C5的完整十二平均律音阶:
| 音名 | 半音数(相对C4) | 频率(Hz) | 森特(相对C4) | |------|---------------|----------|-------------| | C4 | 0 | 261.63 | 0 | | C♯4/D♭4 | 1 | 277.18 | 100 | | D4 | 2 | 293.66 | 200 | | D♯4/E♭4 | 3 | 311.13 | 300 | | E4 | 4 | 329.63 | 400 | | F4 | 5 | 349.23 | 500 | | F♯4/G♭4 | 6 | 369.99 | 600 | | G4 | 7 | 392.00 | 700 | | G♯4/A♭4 | 8 | 415.30 | 800 | | A4 | 9 | 440.00 | 900 | | A♯4/B♭4 | 10 | 466.16 | 1000 | | B4 | 11 | 493.88 | 1100 | | C5 | 12 | 523.25 | 1200 |
这些数值可以通过以下Python函数精确计算:
```python import math
十二平均律频率计算
def equal_temperament(freq_base, n_semitones): """ 计算从基准频率向上移动n个半音后的频率
参数: freq_base: 基准频率(Hz) n_semitones: 半音数(可正可负)
返回: 计算得到的频率(Hz) """ r = 2 ** (1/12) # 半音公比 return freq_base * (r ** n_semitones)
def frequency_to_semitones(f1, f2): """ 计算两个频率之间的半音距离
参数: f1: 较低的频率 f2: 较高的频率
返回: 半音距离 """ return 12 * math.log2(f2 / f1)
def frequency_to_cents(f1, f2): """ 计算两个频率之间的森特距离
参数: f1: 较低