2010-11-21 19 views
2

マイクの前で再生されているノートを検出するプログラムを作りたいと思います。私はNaudioのFFT機能をテストしていますが、私が大胆に行ったテストでは、FFTが正しくピッチを検出しないようです。私はC5を演じたが、一番上の選手はE7だった。.NETでリアルタイムピッチ検出を行うにはどうすればよいですか?

周波数解析ウィンドウの最初のドロップダウンボックスを「エンハンスト自己相関」に変更した後、最も高い選択肢がC5になりました。

私は "エンハンサー自己相関"を捜したが運がなかった。

+0

私は「リアルタイムピッチ検出.net」をグーグルで見つけ、これを入手しました:http://stackoverflow.com/questions/1466968/real-time-pitch-detection-using-fft –

+1

私はおそらくあなたがノイズフロアをはるかに上回る最低周波数ではなく、最高の振幅(最も強いハーモニックを提供します)の周波数を使用します(これにより、ピッチが演奏されます)。 – Gabe

+1

あなたはhttp://www.nicholson.com/rhn/dsp.html#1を見ましたか? – Gabe

答えて

1

オーディオスペクトルの最高のピークは、人間がそれを知覚すると必ずしもミュージカルピッチではなく、特に強い倍音を伴う音ではありません。ピッチは人間の心理知覚現象であるため、脳はしばしば波形に存在しない周波数を推定することがあります。

頻度またはピッチ推定(おおよそ、面白い見た目および/または非正弦波の波形が時間内にどのくらい離れているかを概観する)の自動相関方法は、通常、人間がピッチと呼ぶものに適しています。自己相関アルゴリズムの様々な強化の理由は、単純な自己相関がほぼ無限の反復波長を見つけることである(例えば、1秒ごとに繰り返す場合、2秒に2回繰り返すなど)。したがって、トリックは相関を重み付けすることである何らかの形で、人間が同じ波形について推測するものと統計的によく一致します。

2

あなたはおそらく高調波ではオフに投げています。あなたのNAudioのFFTが球場にあるかどうかを調べるために正弦波で試してみましたか?

は、これらの参照を参照してください:Audacityのソースコード内のSpectrum.cpphttp://cnx.org/content/m11714/latest/

http://www.gamedev.net/community/forums/topic.asp?topic_id=506592&whichpage=1�

ライン48はあなたが望むものに近いように思われます。また、IEEE paper by Tolonen and Karjalainenも参照しています。

関連する問題