ミュージシャンが音楽を再生しているときにピッチ(信号周波数の測定)を検出し、チューニングがずれている場合は警告を出す必要がありますが、音楽がFFT(高速フーリエ変換)には少し速すぎる場合があります。
以下に、問題の技術的な説明を記載します。
ミュージシャンは90〜140 bpmで音楽を演奏します。つまり、毎分90〜140のノートグループがあり、各グループには最大8(より頻繁には最大4)のノートがあります(60/140/8 = 0.0536秒、60/90/4 = 0.167秒)。つまり、ノートは毎秒6〜19のレートで変化する可能性があります。
音楽は対数スケールを使用します(添付の画像を参照)。たとえば、440Hzから880Hzまでの範囲は12の音符に分割され、そのうちの7つだけがメロディーに使用されます。(基本的に、ピアノの白いキーのみを使用します。開始周波数をシフトする場合、黒いキーの一部を使用し、白いキーの一部は使用しません。)つまり、次の各ノートの周波数が乗算されます。 2 ^(1/12)= 1.05946。
物事をより複雑にするために、A(La)周波数は438から446 Hzまで変化します。弦楽器は理論的にはチューニングできますが、管楽器は気温と湿度に依存するため、周波数はサウンドチェック中にミュージシャンによって再ネゴシエーションされます。
ミュージシャンやボーカリストは周波数に誤りを犯すことがあり、それを「調律外」と呼んでいます。彼らは、そのような「調整外エラー」を通知するデバイスを望んでいます。彼らはチューナーを持っていますが、チューナーは何かを見せ始める前に約1秒間同じサウンドを再生する必要があります。これはチューニングには有効ですが、音楽の再生中は機能しません。
ほとんどの場合、チューナーはFFTを実行しており、式 1Hzの解像度を取得するために1秒間待機します。
A = 440Hzの場合、2つの音符間の周波数の差は440 * 0.05946 = 26.16 Hzです。その周波数分解能を得るには、0.038秒の取得時間を使用する必要があります。つまり、tempo = 196bpmでFFTは2つを区別できます。ノートは、98 bpmでピッチが変化するその瞬間に取得を開始する場合、50%の調整外エラーを通知できます。取得期間中にピッチの変更を許可すると、49 bpmになり、遅すぎます。さらに、周波数についてより正確であることが非常に望ましいです。たとえば、25%または12%の調整誤差を検出します。
FFTよりも優れた周波数(ピッチの検出)を測定する方法、つまり、より短い取得時間でより良い分解能で測定する方法はありますか?(少なくとも2倍、理想的には8〜16倍。)代わりに、異なるオクターブの音を区別する必要はありません。たとえば、440と880の両方がAとして認識される場合があります。FFTの線形性は必要ありません。出力、対数スケールの方が良いでしょう。(おそらく、より多くのトレードオフが可能ですが、今のところ、他に何も思い浮かびません。)
これは本当に良い絵です: