回答:
FFTは、実際にはチューナーを作成するための優れた方法ではありません。FFTは本質的に有限の周波数分解能を備えており、時間ウィンドウを極端に長くせずに非常に小さな周波数変化を検出することは容易ではなく、扱いにくく、遅くなります。
より良いソリューションは、位相ロックループ、遅延ロックループ、自動相関、ゼロクロッシングの検出と追跡、最大または最小の検出と追跡、そしてこれらの方法の確かなインテリジェントな組み合わせに基づいています。
前処理は常に役立ちます。
FFTは、スペクトルの周波数ピーク(FFTビンサイズで量子化)を報告しますが、これは音楽のピッチとは異なります。知覚されるピッチ周波数がFFTスペクトルから完全に欠落している可能性があります。
最も単純なギターチューナーの中には、ローパスフィルターまたはバンドパスフィルターを使用して、ゼロ交差間の時間を測定したものがあります。逆数は周波数推定値を提供します。
自己相関は、もう1つの一般的なピッチ推定方法です。また、スライディング相関または他の自己相似性測定には、スライディングASDF(二乗差)、AMDF(平均差)、非線形パターンマッチャー、限られた範囲のラグのみの適応チェック、ラグ補間、ウィンドウイング、適応ウィンドウ選択、さまざまな重み付け、または複数の潜在的なラグ履歴シーケンスから選択するための決定理論の使用など。ほとんどの自己相似性尺度の1つの問題は、サブオクターブがほぼ同じ類似性を示すため、適切なオクターブを選択することです。
他の可能性としては、PLL、フィルターされた直交復調器、フィルターされたヒルベルト変換などがあります。
ただし、一部のDSPフィルタリングおよび復調方法は、ウィンドウDFTの1ビンを実行するのと計算上ほぼ同等であることに注意してください。
また、比較的新しいアルゴリズムで定義されたヒルベルト-ファン変換(HHT)を見てください。アプリケーションに関連する可能性のある非定常非線形信号を処理できます。
1か月前にギターを手に入れ、PLLベースのチューナーの作成を始めました。
私がPLLを理解するのに使用したリソースの1つは、Paul Lutusの「Understanding Phase-Locked Loops」ページです。
実際には、自己相関行列の固有ベクトルを調べる擬似スペクトルを使用して、信号の周波数を計算できます。基本的に、信号をノイズと信号部分空間に分解します。そこから、そのスペクトルを見つけることができます。(制限して、チェックする周波数範囲を指定することもできます)。また、かなりのノイズ耐性があります。もちろん、これはパラメトリック方式であり、DFTのようなアンパラメトリック方式ではありません。
それはすべてあなたがそれを処理したいプラットフォームに依存します、単純な回路が必要な場合、私はゲインで信号を吹き飛ばし、それを方形波に変え、タイマーを使用してマイクロコントローラーで周期を測定することをお勧めします。
ただし、信号処理に興味がある場合は、MUSICメソッドを確認してください。
http://en.wikipedia.org/wiki/Multiple_signal_classification
それが役に立てば幸い
DFT / FFTを使用しないピッチ推定方法は多数存在しますが、MUSIC方法を含むそれらの一部をこのホワイトペーパーに記載しています:https : //ieeexplore.ieee.org/abstract/document/6521410/ このホワイトペーパー のシミュレーション結果は、基本周波数が非常に低い場合、正確なNLSメソッドは、リストされている他のメソッドよりも優れていることに注意してください。