声学原理与算法
1. 为什么拧琴钮能改变音高
由梅森定律(Mersenne’s Laws),弦振动的基频 f 由三个物理量决定:
- T(张力):旋紧琴钮 → 张力增大 → 音高升高
- L(弦长):按住品格 → 有效弦长变短 → 音高升高
- μ(线密度):琴弦越粗越重 → 音高越低(所以低音弦总是最粗)
2. 音分(Cents)是什么
音分是度量音高微小差异的对数单位。十二平均律中一个八度=1200 音分,相邻半音相差 100 音分:
音高差异的可听程度随音色、音域、时长、听者与音乐语境改变,没有此处适用于所有人的固定 5–10 音分极限,也没有通用的录音 ±3 音分标准。本工具默认 ±5 音分是可调的判断容差。
3. 泛音列与音色
拨动琴弦时,它不只整体振动(基频 f1),还同时在二分之一、三分之一处分段振动,产生整数倍频率:
频谱页的最左侧强峰不一定是基频,环境低频噪声可能干扰,基频也可能弱于泛音。调音应结合周期性检测、目标音名和八度;各频率分量的幅值、起音与衰减共同影响音色。
4. 本调音器用什么算法
采用 McLeod Pitch Method(MPM):以 FFT 加速自相关并计算归一化平方差函数(NSDF),在当前候选周期峰中取首个达到最高峰 88% 的峰,再作抛物线插值估计周期。88% 是此实现的阈值;插值细化估计,不代表每种信号都具有相同测量精度。
- MPM 的候选峰选择有助于减少倍频误判,但噪声、弱基频、多音同时发声、拨弦瞬态及检测范围仍可能造成八度错误。读数异常时先只拨一根弦,并锁定目标弦或检查音名与八度。
- 输入端串联 22 Hz 高通 + 2.2 kHz 低通,滤掉环境隆隆声与高频噪声
- 未经校准信号、采样时钟、频段和统计误差测试,不能给整个系统承诺 ±0.1 音分准确度。显示小数位与算法插值分辨率不等于测量准确度,实际结果受设备、信号与环境影响。
5. 律制:为什么有那么多种
十二平均律按 2^(1/12) 划分半音;纯律用特定整数比描述音程,其适用主音和和声语境需明确。四分之一音差中庸全音律与 Werckmeister、Kirnberger 等良律的构造和可用调范围不同,不能统称为同一种方案。固定品格的吉他可调整空弦目标,但选择历史律制不会自动改变品位位置,也不能保证所有按弦音都符合该律制。
- 无品乐器(提琴、二胡、人声、合唱)实际演奏常自发趋向纯律
- 演奏巴洛克作品时,可试试 Werckmeister III + A4=415 Hz
- 中国传统的三分损益律与西方五度相生律(Pythagorean)算法同源
6. 八度拉伸(钢琴调律)
真实琴弦有刚度,泛音并非严格整数倍,而是略偏高(弦的不谐性)。因此钢琴调律师会把高音区调得略高、低音区略低,使各八度的泛音相互吻合,这就是 Railsback 曲线。设置页的「八度拉伸」可模拟这一做法。
7. 键盘快捷键
- 空格 开启 / 暂停麦克风
- 1–6 锁定第 N 根弦(按弦序)
- 0 取消锁定,回到自动识别
- A 播放 A4 参考长音
8. 使用建议
- 安静环境下先点「一键采样环境底噪」,读数会明显更稳
- 拨弦后等待约 0.3 秒再看读数:起振瞬间泛音混乱,基频尚未稳定
- 调音时始终从低于目标的方向拧上去,让弦轴受力方向一致,音高更不易回落
- 换新弦后需反复调 2–3 轮,因为琴弦会持续伸长
- 调完低音弦后琴颈受力变化,高音弦会轻微跑音,建议整体再校一遍
频谱参数与算法参考
FFT 频率栅格间距为 fₛ/N,窗口长度为 N/fₛ。在 48 kHz、32768 点时,约为 1.46 Hz 与 683 ms;增加点数会增加观测时长,不会提高采样率,也不等于超采样或自动保证更高调音准确度。
琴弦物理:UNSW:琴弦、驻波与谐波。算法原始论文:McLeod 与 Wyvill(2005):A Smarter Way to Find Pitch。律制比较:UNSW:纯音程、律制与五度圈闭合。




-10--scaled-e1787801713475-110x80.jpg)


