FFT アルゴリズムを使用して音の周波数 (ギターのピッチ) を検出しました。コンピューターから正弦波の音を再生するとうまく機能しますが、ギターを使用するときは完璧ではありません。ピッチ周波数をより適切に推定する方法は?
double[] spectrum = FourierTransform.Spectrum(ref sampleBuffer);//spectrum contains data from FFT
double frequency = indexOfMax(spectrum) * 16000 / 500; //sampling rate/FFT size
//indexOfMax just finds the index of the maximum element in the array
私が使用した正弦波を生成するために:http://www.audiocheck.net/audiofrequencysignalgenerator_sinetone.phpスペクトル配列から最大値を見つけるだけのこの種の波はうまく機能しましたが、より良い方法を探しています。