私は単にピッチ検出を持っています。入力(マイク)データがfftルーチンに渡され、最大値のピッチを探しています。つまり、次のことを意味します。
Max(pow(data[i].getRe(), 2) + pow(data[i].getIm(), 2)) for 0<= i < SAmplesSize
ギター弦の一次周波数の検出に必要です。250Hzまでの周波数440Hz(そして多分それ以上、私はそれをチェックしませんでした)でうまく機能します。この値を下回ると、検出される頻度は本来の2倍になります。195 Hzの場合、検出される周波数は約380Hzです。250Hz未満の高調波を検出しているようです。純粋な195Hzのトーンの場合は完全に検出されますが、クイターストリングの場合は何かが間違っています。
それを引き起こす可能性のある提案はありますか?または、より高度なピッチ検出を使用する必要がありますか?
追伸 サンプリングレート:8000hz、入力データサイズ:1024