hi @ all ich brauchte da mal etwas hilfe. ich will eine audioquelle auf ihre frequenz hin untersuchen... die fft methode (hab ich mir sagen lassen) ist hierfür ideal. nur... ich habe keinen blassen schimmer, wie sie funktioniert. ich finde nur immer irgend einen fortran code, den ich nicht lesen kann und so etwas wie eine blanke "step by step" formel kann ich auch nicht (bei google) finden :-( kann mir da jemand helfen?
:
Verschoben durch Admin
hallo grundsätzlich: die fft ist ein effizienter algorithmus um die dft (diskrete fourier transformation) schnell auszuführen. den fft algorithmus musst du sicherlich nicht selbst "neu programmieren" das gibt es hunderte bsp. auf dem netz. einfach mal nach radix2 + fft suchen. -es wäre noch interessant zu wissen wo du die analyse machen willst, auf einem pc oder mikroprozessor? -was für einen auflösung hat dein audio signal? -wie viele punkte möchtest du analysieren? -muss das "echtzeit" sein -welche programmiersprache? wenn du einfach ein array mit den werten deiner audioquelle hast und das ganze auf einem pc analysieren willst, brauchst du nicht unbedingt die fft. da kannst du auch einfach die dft programmieren und das wäre dann mit ca 8 zeilen code geschafft. einfach mal nach "dft" suchen. ich habe für mich eine fft und dft für den pc progbrammiert aber visual basic. gruss tobias
ok, es soll... ...auf einen x86 ca 500Mhz (C3 prozessor) laufen ...eine linux applikation werden ...mit einer auflösung von cd-qualität klar kommen ...in echtzeit ablaufen ...c/c++ (gcc syntax) ...als quelle dient der "line in" einer soundkarte
dann würde ich auf jeden fall die fft benutzen. suchst am besten mal nach "fft radix2" algorithmus. da findest du sicherlich was. als eingangsparamter für die fft hast du dann ein array mit den zeit-diskreten samples als retour wert bekommst du dann ein array mit den realen und ein array mit dem imaginärenteil. daraus kannst du dann die frequenzwerte und deren phase berechnen. tobias
Das ist zwar Code für Win32, aber das wesentliche solltest Du den Sourcen dennoch entnehmen können: http://www.codeproject.com/audio/waveInFFT.asp Etliche weitere Links spuckt unser Freund google aus, wenn er mit "win32 fft audio spectrum" gefüttert wird - statt win32 könnte man ja auch "linux" eingeben und sich an noch mehr Links erfreuen. Nu mach ma'
Da gibts schon was: http://www.fftw.org Das kann man benutzen und auch relativ sicher sien,d as was sinnvolles raus kommt :) Außerdem wird man es nie im Leben schneller hinbekommen. Ich zumindest nicht -- die Jungs haben mehr drauf :)
hallo, das würde mich auch interessieren. bitte an tobias hofer, kannst du mit dein prog mit VB schicken.wäre sehr dankbar. mfg juniorone
falls dich nur die fft interessiert: http://www.fullspectrum.com/deeth/programming/vb.html ist nicht meine seite aber ein sehr gutes bsp. für einen audioanalyzer in visual basic. falls dich die dft interessiert musst dich halt nochmals melden. gruss tobias
hier die dft funktion in vb. die dft erledigt das selbe wie die fft halt nur viel langsamer. 'dft Function dft(RealIn() As Double, n As Long) Dim m As Integer Dim z As Integer Dim rsum As Double Dim isum As Double Dim spect(4096) As Double rsum = 0 isum = 0 For m = 0 To n / 2 - 1 Step 1 For z = 0 To n - 1 rsum = RealIn(z) * Cos(2 Pi m * z / n) + rsum isum = RealIn(z) * Sin(2 Pi m * z / n) + isum Next spect(m) = Sqr(rsum ^ 2 + isum ^ 2) 'betrag berechnen rsum = 0 isum = 0 Next End Function gruss tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.