ミュージシャンが音楽を演奏している間に信号周波数を測定する必要がありますが、たまたま FFT (高速フーリエ変換) には少し速すぎます。
ミュージシャンは 90 ~ 140 bpm で音楽を演奏します。これは、毎分 90 ~ 140 のノート グループがあり、各グループに最大 8 つ (多くの場合、最大 4 つ) のノートがあることを意味します (60/140/8 = 0.0536 秒、60/90/4 = 0.167 秒)。つまり、ノートは 1 秒あたり 6 ~ 19 ノートの割合で変化する可能性があります。
音楽は対数スケールを使用します。たとえば、440Hz と 880Hz の間の範囲が 12 の音符に分割され、そのうちの 7 つだけがメロディーに使用されます。(基本的に、彼らはピアノの白鍵のみを使用します。開始周波数をシフトしたい場合、黒鍵の一部を使用し、白鍵を使用しません。) つまり、次の各音の周波数が乗算されます。 2^(1/12) = 1.05946 です。
さらに複雑なことに、A (La) 周波数は 438 から 446 Hz まで変化する場合があります。弦楽器は理論的にはチューニングできますが、管楽器は気温と湿度に依存するため、サウンド チェック中にミュージシャンによって周波数がたまたま再調整されます。
ミュージシャンやボーカリストが周波数を間違えることがあり、彼らはそれを「調子外れ」と呼んでいます。彼らは、そのような「チューニングエラー」を知らせるデバイスを望んでいます。チューナーがありますが、チューナーは何かを表示し始める前に約 1 秒間同じサウンドを再生する必要があります。これはチューニングには機能しますが、音楽の再生中は機能しません。
ほとんどの場合、チューナーはFFTを実行しており、式のために
df = 1/T
1Hz の分解能を得るために 1 秒間待ちます。
A=440Hz の場合、2 つの音符間の周波数の差は 440*0.05946 = 26.16 Hz です。その周波数分解能を得るには、0.038 秒の取得時間を使用する必要があります。 98 bpm では、ピッチが変化するまさにその瞬間に取得を開始する場合、50% のチューニング誤差を伝えることができます。取得期間中にピッチの変更を許可すると、49 bpm になりますが、これは遅すぎます。さらに、周波数をより正確にすること、たとえば 25% のチューニング外れエラーを検出することは非常に望ましいことです。
FFT よりも優れた周波数を測定する方法、つまり、短い取得時間でより高い分解能で測定する方法はありますか? (少なくとも 2 倍、理想的には 8 倍) 代わりに、異なるオクターブの音を区別する必要はありません。たとえば、440 と 880 の両方が A として認識される場合があります。(おそらく、より多くのトレードオフが可能です。今は他に何も思い浮かびません。)
UPD これは本当に良い絵です:
UPD2
博士論文とオープン ソース ソフトウェア ( TARTINI -- リアルタイム音楽分析ツール) を次の場所で見つけました。
http://miracle.otago.ac.nz/tartini/
(ページは Web アーカイブ サービスからも利用できます: http://web.archive.org = http://archive.org = http://waybackmachine.org )