Echtzeit-pitch-Detektion mit FFT
Ich versuche zu tun, Echtzeit-pitch-Detektion mit C++. Ich Teste einige code von performous (http://performous.org/), weil alles andere nicht funktioniert hat für mich. Ich weiß sicher, dass das funktioniert, aber ich einfach nicht bekommen es funktioniert. Ich habe versucht, diese für ein paar Wochen jetzt, und ich habe nicht in der Lage zu bekommen, eine pitch-detection-code arbeiten.
- "kann nicht arbeiten" bedeutet ??? (nicht kompilieren? wird nicht ausgeführt? verwandelt Ihren computer in einen ball von Flamme?)
- es kompiliert, aber Ausgänge Frequenzen läuft von 0 bis zu 1024
- Werfen Sie einen Blick auf die FMOD-Bibliothek. Einer Ihrer Proben nicht-Echtzeit-pitch-detection-IIRC. Die Bibliothek ist frei für open source, und moderaten Preisen für kommerzielle Anwendungen. Auch wenn Sie nicht möchten, dass die Bibliothek zu benutzen, vielleicht wird es Einblicke ermöglichen.
- und was ist falsch? Das mittlere C ist 440 Hz, so dass Angebot scheint sinnvoll, wenn die sampling-Ihre mic. Was frequencys erwarten Sie?
- 440 ist die standard-Ein Hinweis
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle von input vom mic werden soll, erstellen Sie Daten mit einer bekannten Frequenz und auszuführen, dass durch das Programm und sehen, ob es wird Ihnen das richtige Ergebnis. Dann können Sie Obertöne und sehen, ob das funktioniert. Daten aus der realen Welt ist einfach zu variabel für erste Tests.
Performous-audio-code hat einige Optimierungen, Frequenz-Grenzen und Heuristiken, die es machen, nur geeignet für Gesang (und ähnliche Töne). Die optimale Reichweite ist etwa 80-600 Hz.
C/C++/Obj-C Real-time-Algorithmus, um festzustellen, Note (nicht die Tonhöhe) von Vocal Input
Überprüfen Sie die akzeptierte Antwort auf diesen link.
Habe ich durchforstet, ALSO für eine Antwort auf dieses problem, und dies ist die wichtigste Ressource, die ich gefunden habe.
Scheint es, dass Performous verwendet diesen Algorithmus, aber es ist schwer zu raus aus der Performous code
EDIT: ich habe es endlich geschafft eine funktionierende Lösung. e-mail mich, wenn Sie interessiert sunfish|gmail|c0m