聲學原理與算法
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:純音程、律制與五度圈閉合。

