Question

Je veux faire un programme qui détecte la note qui est jouée devant le microphone. Je teste la fonction FFT de Naudio, mais avec les tests que j'ai faits dans Audacity, il semble que FFT ne détecte pas correctement la hauteur. J'ai joué un C5, mais le choix le plus élevé était à E7.

J'ai changé la première boîte déroulante dans la fenêtre d'analyse de fréquence en "Autocorrélation approfondie" et après cela, le choix le plus élevé était à C5.

J'ai googlé "l'autocorrélation approfondie" et je n'ai pas eu de chance.

Était-ce utile?

La solution

Le plus haut sommet d'un spectre audio n'est pas nécessairement la hauteur musicale comme un humain le percevrait, en particulier dans un son avec de fortes connotations. En effet, Pitch est un phénomène psycho-perceptuel humain, le cerveau déduire souvent des fréquences qui ne sont même pas présentes dans une forme d'onde.

Les méthodes de corrélation automatique de fréquence ou d'estimation de la hauteur (en gros, en constatant à quelle distance, même une forme d'onde d'aspect drôle et / ou non sinusoïdale répète dans le temps) est généralement une meilleure correspondance pour ce qu'un humain appellerait la hauteur. La raison de diverses améliorations de l'algorithme d'autocorrélation est que la simple autocorrélation trouvera un nombre presque infini de longueurs d'onde répétitives (par exemple, si elle se répète toutes les 1 secondes, il se répète également deux fois toutes les 2 secondes, etc.) D'une manière ou d'une autre, mieux correspondre à ce qu'un humain devinerait à propos de la même forme d'onde.

Autres conseils

Vous êtes probablement jeté par des harmoniques. Avez-vous essayé de tester avec une vague sinusoïdale pour voir si la FFT de votre Naudio est dans le stade?

Voir ces références:http://cnx.org/content/m11714/latest/

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

Ligne 48 dans Spectrum.cpp Dans l'Audacity, le code source semble être proche de ce que vous voulez. Ils font également référence à un Papier IEEE par Tolonen et Karjalainen.

Eh bien, si vous pouvez vivre avec GPLV2, pourquoi ne pas jeter un coup d'œil au code source Audacity?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top