Ich versuche, ein Gesangsspiel zu implementieren, das den rohen Mikrofoneingang analysiert und dem Spieler sagt, wie gut er singt. Das muss in Echtzeit erfolgen.
Ich bin auf viele Threads gestoßen, die die gleiche Frage gestellt haben, aber ich bin immer noch nicht damit fertig, wahrscheinlich aufgrund meiner mangelnden Erfahrung auf dem Gebiet und des geringen mathematischen Hintergrunds. Ich habe einen Algorithmus implementiert, der auf dem Artikel der DSPDimension-Website Pitch Shift basiert: http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/
Ich extrahiere die wahre Frequenz und Größe, wie im Artikel erklärt, aber ich weiß nicht, ob ich damit die Grundfrequenz finde. Ich habe versucht, den Bin mit der größten Größe zu erhalten, aber das liefert mir nur die richtigen Ergebnisse für Signale mit höherer Tonhöhe. Es spielt keine Rolle, welchen Überabtastungsfaktor ich verwende. Ich erhalte immer noch schlechte Daten für Signale mit niedriger Frequenz. Ist dieser Ansatz völlig falsch oder bin ich auf dem richtigen Weg, vermisse aber nur etwas?
Danke im Voraus,
EDIT: Ich habe vergessen zu erwähnen, dass ich nur an der Tonhöhenklasse interessiert bin, daher ist es in Ordnung, wenn das Fundament fehlt, aber ich habe einen starken Oberton im Sample.
EDIT2: Vielen Dank an alle, ich habe gerade eine Version des Algorithmus fertiggestellt, die wie ein Zauber funktioniert. Das Problem der Schätzung der niedrigen Tonhöhe war auf meinen Eingangstest zurückzuführen. Als ich die Note gesungen habe, stimmte sie richtig überein. Außerdem betrachte ich jetzt alle Harmonischen, nicht nur den höchsten Peak.