Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Frequenzen finden (https://www.delphipraxis.net/21237-frequenzen-finden.html)

fred.reichbier 29. Apr 2004 17:18


Frequenzen finden
 
Hallo Leute
Ich möchte Frequenzen aus WAV-Dateien finden,
also nicht das Zeug für die Visualisierungen.
Zum Beispiel:
Ich nehme den Ton A(440 Hz) auf.
Dann will ich mit dem Programm eben diese 440 Hz herausfinden.
Kann mir jemand helfen?
Schon mal danke,
fred

negaH 29. Apr 2004 18:28

Re: Frequenzen finden
 
Suche nach Fourier Transformation, genauer gesagt FFT = Fast Fourier Transformation. Desweiteren suche nach SFIR und FIR Filtern.

Sollte dein WAV File nur diese eine Frequenz enthalten so kann über die FFT dikret der relative Pegel dieser 440 HZ ermitelt werden, ebenso die Frequnez von 440Hz. D.h. über die FFT kannst du ermitteln wie stark und welche Frequnzen im Signal enthalten sind.

Die SFIR und FIR Filter dagegen sind "Algortihmen" die auf ganz spezielle Frequenzen eingestellt sind. Sie lassen dann nur diese eine Vrequenz durch oder aber verstärken diese.

Gruß Hagen

fred.reichbier 30. Apr 2004 14:21

Re: Frequenzen finden
 
Ja, danke erstmal.
Ich hab mit der Bass.dll schon mal eine FFT gemacht, bloß
was stelle ich jetzt mit diesen Zahlen an, damit die Frequenz(en)
herauskommen?
Ich hab keine Ahnung...

negaH 30. Apr 2004 14:46

Re: Frequenzen finden
 
Bass.dll schön und gut, nur nutzen die keine für dich brauchbare FFT, bzw. der Output der "FFT" nutzt dir im speziellen nichts. Normalerweise macht man eine FFT über einen begrenzten Samplingbereich. Die Breite der FFT ist dann immer 2^x. x/2 gibt dann sozusagen deinen Frequenzbereich an. Also angenommen du machst eine 2^10 = 1024 Punkte FFT über ein Signal das mit 22KHz gesampelt wurde. Nun 22528 / 1024 = 22, d.h. im Outputarray der FFT stellt Array Eintrag 0 = 0Hz, Eintrag 1 = 22Hz, Eintrag 2 = 44Hz bis Eintrag 512 = 11Khz dar. Alle Einträge darüber sind nur das Spiegelbild der vorherigen Einträge, auf grund der Nyquist Eigenschaften der gesampelten Daten.

Nun, werden die Daten in diesem Array korrekt durch die FFT umgerechnet dann stellt jeder Eintrag die relativen Dezibel der zugehörigen Frequenz dar. D.h. mit obigen Paramtern und deinem 440Hz Signal müsste im Array Eintrag Nummer 20 der größte zahlenmäßige Wert stehen im Vergleich zu den anderen array Einträgen. Normalerweise stehen aber in den Array an 19 und 21 ebenfalls überdurchschnittlich hohe Werte.

Gruß Hagen

fred.reichbier 30. Apr 2004 16:08

Re: Frequenzen finden
 
dankeschön erstmal! :thuimb:
Eine Frage noch:
Welche FFT-Unit würdest du mir empfehlen?

negaH 30. Apr 2004 16:46

Re: Frequenzen finden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich glaube hier im Forum hatte ich schon mal einen FFT Source gepostet, der könnte dein Problem lösen, da er exakt dafür auch konzipiert war.

Allerdings, bevor du nun weitere Fragen stellst, informiere dich über die FFT im allgemeinen und wie sie angewendet wird.


Gruß Hagen

danielmattes 14. Jul 2004 10:06

Re: Frequenzen finden
 
also ich hab das mit der komponente

"phonetonedecoder" gelöst - funktioniert prima


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz