このピッチ検出器の仕組み
ブラウザ上でマイクから8192サンプルのバッファ(48 kHzで約170ミリ秒分)を取り込みます。これは低音域の数サイクル分をカバーするのに十分な長さです。このツールは、そのウィンドウに対してMcLeod方式の正規化自己相関(McLeod-style normalized autocorrelation)を実行します。これは、最近の波形をそれ自身のずらしたコピーと比較し、最も強い繰り返しの周期を探す手法です。その周期の長さが波の周期となり、周期の逆数が周波数(Hz)となります。その後、周波数は最も近い音名とセント単位のオフセット(1半音=100セント)に変換されます。
解析の前に、ブラウザに対してマイクストリームのオートゲイン、エコー除去、ノイズ抑制をスキップするよう要求します。これらのフィルタは波形を歪ませ、小さな声や低い楽器のピッチ測定値を数十セント狂わせる原因となるため、これらを無効にすることが精度向上の最大の鍵となります。また、直近数フレームに短いメディアンフィルタを適用することで、表示の遅延を抑えつつ、単発のノイズによる異常値を除去しています。
このアプローチは、通常のFFT(高速フーリエ変換)よりも持続的な単音の追跡に優れており、特に低周波数において倍音を基音と見誤る可能性が低くなります。ただし、和音(コード)の解析はできず、ビブラートがかかるとセント表示が揺れ、騒がしい環境では精度が低下するという特性があります。
基準:標準ピッチ
この検出器は標準的なコンサートピッチ A4 = 440 Hz を基準としていますが、使用する楽器やアンサンブルに合わせて調整可能です。他のすべての音は、1半音ごとに2の12乗根(約1.05946)の固定比率で計算されます。オクターブが上がると周波数は2倍になります(A3は220 Hz、A5は880 Hz)。セントは半音内のズレを測定する単位で、±5セント以内の差は一般的に耳では判別できないレベルとされています。
表示の見方
- 大きな音名 — 直近数フレームで検出された、最も近い半音を表示します。
- セントバー — 音が合っているときは中央に表示され、低い(フラット)ときは左へ、高い(シャープ)ときは右へ動きます。緑=正確(±5 ¢)、黄=許容範囲(±20 ¢)、赤=明らかにズレている状態です。
- ピアノキーボード — C1からB6の範囲で、検出された音をハイライトします。この範囲外の音も数値としては表示されます。
- 検出履歴 — 新しい音が一定時間持続するたびにリストに追加され、歌ったり演奏したりした音の流れを確認できます。
正確に測定するためのヒント
- 1つの音を少なくとも0.5秒以上長く伸ばしてください。検出器が確定させるには、数フレームの安定したデータが必要です。
- 静かな部屋で使用してください。扇風機、交通騒音、キーボードの打鍵音などは、想像以上に精度に影響します。
- 音を安定させてください。ビブラートは、平均的なピッチが正しくてもセント表示を変動させます。
- 可能な限り外部マイクを使用してください。ノートPCの内蔵マイクは80 Hz以下の感度が低く、低いベース音などを拾いきれないことがあります。
- マイクに近づいてください。マイクとの距離が2倍になると、検出器が受信するレベルは4分の1に低下します。
よくある質問
どんな楽器をチューニングできますか?
約40 Hzから2.2 kHzの範囲で単一の持続音を出せるものであれば何でも可能です。ギター、ベース、ウクレレ、バイオリン、チェロ、ハープ、金管楽器、木管楽器、そして歌声に対応しています。ドラムやシンバル、ピアノの和音などは、自己相関法が単一の支配的な周波数を必要とするため、正しく測定できません。
歌っているときに音名が飛び跳ねるのですが、故障ですか?
多くの場合、ツールの問題ではなく発声によるものです。マイクは声だけでなく、息の音や部屋の反響も拾います。耳では聞こえないようなわずかなピッチの揺れが、±20セント程度の変動として現れます。より大きく、安定した声を出すと表示が落ち着きます。
なぜ非常に低い音や高い音は検出されないのですか?
この検出器は、約40 Hzから2.2 kHzの範囲に制限されています。40 Hz以下は多くのマイクで感度が落ち、2.2 kHz以上は倍音のエイリアシングが発生してピッチ推定の信頼性が低くなるためです。この範囲内であれば、5弦ベースの低いB0からソプラノの最高音域までカバーしています。
音声が録音されたりサーバーに送信されたりしますか?
いいえ。すべてのオーディオ解析はWeb Audio APIを使用してブラウザ内で行われます。データがアップロード、保存、または送信されることはありません。検出を停止するかタブを閉じれば、ストリームは完全に終了します。