Audioverarbeitung in einer Endstufe

OP #4697482
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
Gast #4697526
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.
Gast #4697653
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.
#4698914
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.