Frequenzen vom Mikrofon bestimmen

Dat Problem bei FFT ist: es ist noch ungenauer wie 5Hz ...

Also wenn du ein FFT Filter von 320Hz nimmst und 32 Eingänge benutzt hast du eine Bandbreite von 10Hz
Regeln für FFT
die Anzahl der Eingänge muss immer eine 2er Potenz sein
Bandbreite pro Eingang ist Gesamtbandbreite / Gesamteingänge
Anzahl der Eingänge = Anzahl der Ausgänge

Man kann den FFT als die Mathematische Version von mehreren Bandpass Filtern sehen :-)
Wobei ich noch nicht weiss mit welcher Güte zu rechen ist ...

Sprich wie die Ergebnisse aussehen ...

Ich Kämpfe immer noch mit dem Eingang von meiner Kiste :-( - dazu mache ich mal ein eigenes Thema auf :-)

Nachtrag:
Ungenauigkeit von 1 Hz ist dem Problem geschultet das man irgendwann mitten einer Sinuswelle anfängt miit Messen
Wenn du also die Messung nach dem ersten Maximum startet haste den Fehler schon mal weg
Ob man die Restwelle noch berücksichtigt nach dem letzen Maximum ist ne andre Frage

Mit andren Worten genauer wirds nicht ...

PS: wenn du eine Code Hast der geht währe ein Posten cool für andre Leute die die gleiche Aufgabenstellung haben
 
Zuletzt bearbeitet:
bei 44100 Durchlaufen, macht glaube ich eine falsche Frequenz nicht so den Kohl Fett ;)
Viel schlimmer ist es jedoch, dass ich bei einer Frequenz von 349hz eine Ungenauigkeit von 1000 habe ;) Da schwanken die Ergebnisse von 1200hz-1800hz...
Es funktioniert nur dann einigermaßen, wenn ich davon ausgehe, dass mehr als 30 Samples pro Frequenz gelten (Frequenz unter 1000 Hz). Das jedoch ist etwas unpraktisch für ein Stimmgerät ;).
Ich habe den Code ja schon einmal aktualisiert, werde ihn aber nochmal komplett hochladen, sobald er funktioniert ;)
Hast du/ habt ihr noch ne Idee, wie man das hinbekommen könnte?
 
Zuletzt bearbeitet:
Mir ist eben eine ganz abgefahrene Idee gekommen ..

Da du ja Stimmen willst -

wenn man am Oszi zwei Frequenzen vergleichen will nimmt man ein mal den X für das Messsignal und Y für das Sollsignal.
Ich frage mich grade ob man das nicht auf dein Problem Rechnerisch anwenden kann.
Sprich du erstellst recherisch ein soll Sample (den Bereich von 1-2 Schwingungen) und wird mit dem Eingang Sampel für Sampel verglichen und wenn Theoretisch über alle Samples den gleichen (mit tolerzanzen wegen rippel usw) Unterscheid hast - Bingo Gleichstand ...

oder ist die Idee zu Irre ?

Wir bauen uns eine software Stimmgabel - smile
 
Zuletzt bearbeitet:
An und für sich keine schlechte Idee. Nach dem Motto: 2x gleich falsch hat den selben Unterschied.
Das Problem dabei ist nur, dass
a) ich nicht sicher weiß ob der Unterschied immer gleichbleibend ist. Und
b) woher ich ein Sample dieser Art nehmen soll. Ich kann demnach ja keine Sinusfrequenzen wählen. Es müsste jeweils eine richtige Frequenz von dem selben Instrument sein, damit das klappt...

abgesehen davon gehst du davon aus, dass es nach einem einzigen Ton gestimmt wird. Ich wollte aber nach einem x-beliebigen Ton stimmen, was die ganze Sache leider nicht möglich macht, irre ich?
(daran hatte ich nämlich auch schon gedacht ;) )
 
Naja eine X beliebige Frequenz und deren Samples zu berechen sollte nicht so komplex sein ..

Samplerate 4400 > gewüschter Ton 440 = 10 Samples für den einheitskreis.
1. Wert berechen den Sinus von Cosinus 0,9 . 2. wert .0,8 ... sprich der cosinus hat ein festen Bezug zur Zeitachse ...

du gibst dem Programm den Ton vor - rechne rechne .. fertig

was mir auch sorgen macht ist das beim berechnen wir tatsächlich vom Sinus ausgehen - aber versuch wäre es wert - denke ich (immerhin sind wir bei der zählung auch davon ausgegangen)

grobe abstimmung über die Vorhandnen Frequenzzählung - feinjustage über Differenz Vergleich mit Sinus

selbst mit den Klangoberwellen - hoffe ich - sollte da man ein ein Minimalwert rauskommen ... wenn nicht kann man (denke ich) die Idee eh adacta legen ...
 
Zuletzt bearbeitet:
Zurück