Frage

Ich möchte ein Programm erstellen, das die Notiz erfasst, die vor dem Mikrofon gespielt wird. Ich teste die FFT -Funktion von Naudio, aber mit den Tests, die ich in der Kühnheit gemacht habe, scheint es, dass FFT die Tonhöhe nicht richtig erkennt. Ich habe einen C5 gespielt, aber die höchste Wahl war bei E7.

Ich änderte das erste Dropdown -Feld im Fenster Frequenzanalyse in "Enchanced Autokorrelation" und danach war die höchste Wahl bei C5.

Ich googelte "verderbte Autokorrelation" und hatte kein Glück.

War es hilfreich?

Lösung

Der höchste Peak in einem Audiospektrum ist nicht unbedingt die musikalische Tonhöhe, da ein Mensch es wahrnehmen würde, insbesondere in einem Sound mit starken Obertönen. Das liegt daran, dass die Tonhöhe ein menschliches psycho-stimmiges Phänomen ist. Das Gehirn leitet häufig Frequenzen ab, die nicht einmal in einer Wellenform vorhanden sind.

Autokorrelationsmethoden zur Frequenz- oder Tonhöhenschätzung (grob finden, wie weit auch eine lustige und/oder nicht-sinusoide Wellenform-Wiederholungen rechtzeitig voneinander entfernt sind) ist normalerweise besser übereinstimmt, was ein Mensch als Tonhöhe bezeichnen würde. Der Grund für verschiedene Verbesserungen des Autokorrelationsalgorithmus besteht darin Irgendwie statistisch besser übereinstimmen, was ein Mensch über dieselbe Wellenform erraten würde.

Andere Tipps

Sie werden wahrscheinlich von Harmonischen abgeworfen. Haben Sie versucht, mit einer Sinuswelle zu testen, um zu sehen, ob sich die FFT Ihres Naudio im Stadion befindet?

Siehe diese Referenzen:http://cnx.org/content/m11714/latest/

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

Zeile 48 in Spectrum.cpp Im Audacity -Quellcode scheint der Code nahe an dem zu liegen, was Sie wollen. Sie verweisen auch auf ein IEEE -Papier von Tolonen und Karjalainen.

Nun, wenn Sie mit GPLV2 leben können, warum nicht einen Blick auf den Audacity -Quellcode werfen?

http://audacity.sourceforge.net/download/beta_source

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top