Forum: Digitale Signalverarbeitung / DSP / Machine Learning Audioverarbeitung in einer Endstufe


von Leopold N. (leo_n)


Lesenswert?

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

von Franz Schlüter (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von T.U.Darmstadt (Gast)


Lesenswert?

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.

von Hans Dämpfung (Gast)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Detlef _A (Gast)


Lesenswert?

FFT aufm Mega geht schon, beendet there, done that. Hier hatte ich mal 
Code gepostet1.


Beitrag "Fragen zu FFT mit Festkomma-Arithmetik"

Cheers
Detlef

von Huh (Gast)


Lesenswert?

Detlef _A schrieb:
> beendet there, done that.
> gepostet1.

???

von Klapper-Klaus (Gast)


Lesenswert?

Huh schrieb:
> Detlef _A schrieb:
>> beendet there, done that.
>
> ???

Autokorrektur.

von T.U.Darmstadt (Gast)


Lesenswert?

Dergute W. schrieb:

> Hm - was heisst fast zuviel?

Ich meinte, für DIE Anwendung wären ein paar passive analoge Filter auch 
ausreichend genau.

von Audiomann (Gast)


Lesenswert?

Leo N. schrieb:
> ich habe vor, mir eine Endstufe zu bauen,
Du weisst schon, dass mit "ENDSTUFE" normal ein Leistungsvertsärker 
bezeichnet wird?

von J. S. (engineer) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.