Guten Tag, ich habe vor, mir eine Endstufe zu bauen, in der ein Atmega32 das Audiosignal auswertet und anschließend über Bargraph-LEDs einen Equalizer anzeigt. Meine Frage nun...kann mir jemand erklären oder mir einen Link zeigen, wie man das Audiosignal mittels einer FFT auswertet...ich möchts haargenau wissen, weil ich danach das Ganze komplett selbst programmieren will. Grüße Leopold
Für so eine Aufgabe ist ein Atmega viel, SEHR VIEL zu schwach. Eine FFT in Echtzeit kriegst Du damit nicht hin. Das wäre eher was für einen richtigen DSP.
Moin, z.B.: Hier hat jemand das per FFT gemacht: http://elm-chan.org/works/akilcd/report_e.html Ich persoenlich halt' die FFT dafuer fuer nicht so geeignet und hab' mir hier mal was ueberlegt und auch mal ausprobiert: Beitrag ""LED-Spectrumanalyzer"software ohne Fouriertransformation" Gruss WK
Das kommt alles auf die Zahl der Bänder und die Genauigkeit an. Wenn es nur 5 Bänder und sagen wir 32 Stufen sein sollen, ist das mit einer Filterkaskade sicher am Einfachsten. Das Beispiel von WEKA ist da fast schon zuviel.
Es gibt auch noch den Görtzel Algorithmus: http://de.wikipedia.org/wiki/Goertzel-Algorithmus Habe ihn nie selbst probiert, aber evtl. käme er anstatt FFT auch in Frage. Die Idee ist, dass man nur selektiv Frequenzanteile aus dem Signal extrahiert, sodass man keine komplette FFT machen muss. Das sollte vom Rechenaufwand deutlich geringer sein.
Moin, Thomas U. schrieb: > Das Beispiel von WEKA ist da fast > schon zuviel. Hm - was heisst fast zuviel? Das laeuft auf einem atmega16 mit 16MHz und braucht dabei ca. 40% der CPU-Zyklen. Also da ist noch Luft drinnen. Das gute an der Filterkaskade ist, dass der Rechenaufwand bei mehr Filtern kaum mehr steigt, weil die Abtastrate fuer jedes neue Filter 'runtergeht. Verwend' ich Oktavfilter, also 1:2 Unterabtastung, von Filter zu Filter (wie in meinem Testprojekt) ist der Rechenaufwand fuer alle Filter zusammen hoechsten 2x so gross, wie der Rechenaufwand fuer die erste Hoch/Tiefpass-kombi. Egal, ob ich danach noch weitere 9 Filter (sinnvoll, damit ist der menschl. Hoerbereich ungefahr abgedeckt) oder 99 Filter berechnen lasse. Kurz: Das kosta fast garnix. Beim Goertzel kostet jedes neue Filter gleichviel neue Rechenzeit; nochdazu ist das ein IIR-Filter; speziell beim AVR wuerd' ich mir da erstmal Sorgen machen wegen Rundungs/Ueberlauffehlern bei 8/16-Bit Arithmetik bzw. Geschwindigkeit bei hoeheren Wortbreiten. Bei einer FFT steigt der Rechenaufwand auch mit zunehmendem N an, sogar noch staerker als nur linear (N*log(N) iirc). Bei all dem nicht vergessen: Auf einen mit 16MHz getakteten AVR bezogen, der Audio mit 32kSamples/sec sampled, kommt alle 500 CPU-Takte ein neues Sample, das verwurstet werden will. Und zusaetzlich haengt noch ein LED-Grab dran, das puenktlich gemultiplext und mit Lichteffekten versorgt werden will. Gruss WK
FFT aufm Mega geht schon, beendet there, done that. Hier hatte ich mal Code gepostet1. Beitrag "Fragen zu FFT mit Festkomma-Arithmetik" Cheers Detlef
Dergute W. schrieb: > Hm - was heisst fast zuviel? Ich meinte, für DIE Anwendung wären ein paar passive analoge Filter auch ausreichend genau.
Leo N. schrieb: > ich habe vor, mir eine Endstufe zu bauen, Du weisst schon, dass mit "ENDSTUFE" normal ein Leistungsvertsärker bezeichnet wird?
Thomas U. schrieb: > Ich meinte, für DIE Anwendung wären ein paar passive analoge Filter auch > ausreichend genau. Die könnte man auch als IIR realisieren, um Leistung zu sparen.
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.