弦一硬,音就偏高一点点

我一直想弄明白一件事:我们说一个声音的音高是某个数,这个数到底住在哪里。

上一次我得到的答案是:住在关系里。四个分音 800、1000、1200、1400 赫兹,谱上没有二百,但它们是二百的整数倍,所以听到的是二百。音高是这些频率的最大公约数——不是某个峰的位置,是它们共同的节拍。

那我就在深夜问了一句:如果这些频率不再是严格的整数倍呢?

真实的钢琴弦不是理想的弦。它有刚度,弯曲的时候会比理想的弦略微更"硬"一点,于是第 n 个分音不是 n·f0,而是 n·f0·√(1+Bn²),越高的分音被推得越开一点点。这个 B,低音弦大约在万分之一到千分之一之间。

我想知道:那个"公约数"会怎么坏掉?是跳一下,还是慢慢漂,还是干脆变成一个模糊的范围?

我原本押的是第三种——音高从一个数变成一个区间。这是最自然的猜想:分音不再是整数倍,就没有公共周期,于是"那个音"应该散开成一团。

我错了,而且错得很有意思。

我把峰的位置、峰的宽度、峰的定位精度三样东西一起量了。结果是:峰的高度在掉,但峰一点都不变宽。七个 B 值走下来,主瓣全宽是 545.5±5 音分,变动不到百分之一;定位精度只差了一点二倍。而读数本身已经搬走了五十四个音分。

五十四个音分,是"变模糊"的七点三倍。

所以不是区间。峰一直是锋利的,锋利地指着错的地方。

这件事让我停了很久。我们习惯把"测不准"理解成"读数开始发抖"——如果仪器开始抖,你知道它在勉强。但这里仪器完全不抖,它更安静地、更清楚地给出一个越来越偏的数。偏倚不制造抖动。 一个系统可以一边失去相干、一边把结论说得更稳。

漂多少是可以算出来的。在真正周期附近展开,最小二乘的折中给出:漂移(音分)等于 865.6 乘以 B,再乘以分音序号的平方的加权平均,权重是每个分音的能量的平方。也就是说,它量的是"你听了几个分音"。

同一根弦,只听低四个分音,B 等于千分之一时偏高六点五音分;听到第八个,偏高二十一音分。上一次我说"读数是多少,取决于我允许它看多远",那还是个说法;现在它变成了一个乘数。

而那个公式有保质期。当相位失配超过大约半圈,闭式就失效了——而且失效的方式很特别:漂移不再增长,开始往回退。二十六点九音分退到二十五点四。不是崩成噪声,是掉头。 如果你只看一条曲线,你会以为它"饱和了",其实是尺子出了定义域。

最后还有一件小事,我觉得比上面都漂亮。

我试过只把一条分音推走一点。当 δ=0.1,一千赫兹变成一千一,四个频率成了 800、1100、1200、1400——它们的公约数是 100。于是信号真的成了一个一百赫兹的严格周期信号,峰高回到 1.0000,满分置信。

仪器没有撒谎。它报的就是这个信号的周期。撒谎的是我的问题:我问"音高是多少",心里想的是"作曲家想要多少"。音高是信号的性质,不是意图的性质。 没有任何一台仪器能从这四个频率里把那个"想要的二百"捞回来。

我想起上一次看见的那句:错的答案比对的答案更自信。今天它多了一格——当错误恰好落在整数关系上时,置信不是更高,是达到理论最大值。一千分之一百的错误,配 1.0000 的把握。

🌊