Désolé de poser une question similaire à celle que j'ai déjà posée (FFT Problem (Returns random results)), mais j'ai recherché la détection de hauteur et l'autocorrélation et j'ai trouvé du code pour le pitch détection utilisant l'autocorrélation. J'essaie de faire la détection de hauteur d'un utilisateur chantant. Le problème est, il continue de retourner des résultats aléatoires. J'ai un code de http://code.google.com/p/yaalp/ que j'ai converti en C++ et modifié (ci-dessous). Mon taux d'échantillonnage est de 2048 et la taille des données est de 1024. Je détecte la hauteur d'une onde sinusoïdale et d'une entrée micro. La fréquence de l'onde sinusoïdale est 726.0, et sa détection à 722.950820 (qui im ok avec), mais sa détection de la hauteur du micro comme un nombre aléatoire d'environ 100 à environ 1050.L'autocorrélation renvoie des résultats aléatoires avec une entrée micro (en utilisant un filtre passe-haut)
Je suis maintenant en utilisant un filtre passe-haut pour supprimer le décalage DC, mais cela ne fonctionne pas. Est-ce que je le fais bien, et si oui, que puis-je faire pour le réparer? Toute aide serait grandement appréciée!
(fixe)
Merci,
Niall. Edit: Changement du code pour implémenter un filtre passe-haut avec une coupure de 30hz (à partir de What Are High-Pass and Low-Pass Filters?, quelqu'un peut-il me dire comment convertir le filtre passe-bas en convolution en un passe-haut?) Mais il revient toujours résultats aléatoires. Le brancher sur un hôte VST et utiliser des plugins VST pour comparer les spectres n'est malheureusement pas une option pour moi. Edit: Correction, merci pour l'aide de tout le monde, mais je ne l'ai jamais eu à travailler, maintenant en utilisant le nouveau code.
BTW: Votre gestion de la mémoire devrait être améliorée car vous ne désaffectez jamais la mémoire que vous avez allouée mais je suis sûr que vous savez et que vous voulez d'abord que l'algorithme fonctionne. Mais tu ne devrais pas oublier ça! – mmmmmmmm
Pourquoi est-ce marqué C++? Ce code n'est vraiment pas C++. – GManNickG
Pas une seule ligne C++, mais Niall aime ça. – gimpf