www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Equalizer - Wie?


Autor: Albi G. (deralbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe vor, in nächster Zeit wiedermal einen Mp3-Player zu basteln. 
Diesmal soll die Mp3-Dekodierung direkt mit im Prozessor erfolgen - also 
ohne Mp3-Decoder-Chip.

Als Decoder habe ich mir mal das Helix-Projekt angeschauen. Der 
Mp3-Decoder läuft in Software. Ich habe ihn compiliert um zu sehen, was 
er für Datenmengen schluckt und ausspuckt.
Meine Zielarchitektur wird nur 32kb SRam haben. Wenn man sowohl 
Eingangsdaten (mp3), als auch Ausgangsdaten (pcm) doppelt puffert (wie 
es vllt angebracht wäre) benötige ich 35kB sram.
Ich habe bereits einen 32kb externen SRam gefunden, der per SPI 
ansprechbar ist.

Nun kam mir die Frage auf, wie die Sound-Einstellung gemacht werden 
soll. Ich muss dann ja auch den Equalizer in Software schreiben.

Zu dem Zweck habe ich bereits versucht im Helix-Decoder die Subbänder 
des Mp3-Formats zu verändern. Das zeigte auch Erfolg - es ist aber noch 
weit entfernt von einem richtigen EQ.

Daraus kann man folgern, dass die Soundbearbeitung an den PCM-Daten 
vorgenommen werden muss.

=> die Frage lautet: WIE..?

Voraussetzung für den Algorithmus wird sein, dass er mit so wenig 
Sampels wie nur möglich auskommen muss. (max 1024 - wobei auch das recht 
hoch gegriffen ist) Mir steht für mehr einfach kein RAM zur verfügung. 
:-(
(Rechenleistung ist dagegen genug verfügbar)

Wie geht man an sowas ran? FFT + IFFT?

Oder gibts Filter, die weniger rechenintensiv sind..
Ok wäre einer für Bässe und Höhen.
Optimal wäre natürlich ein 5-Band-EQ ;-)

Ich bin noch totaler Anfänger auf dem gebiet der digitalen Filter.
Danke fürs lesen und eventuelles posten.

MFG

Autor: Albi G. (deralbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da keine Antwort kommt, unterhalte ich mich ein jetzt ein wenig mit mir 
selbst:
Ich habe herausgefunden, dass man Equalizer mit IIR-Filtern realisiert.
Ich habe leider absolut keine Ahnung, wie man sowas implementiert. 
Ehrlichgesagt kenne ich nichtmal die Funktionsweise dieser Filter.

Der Versuch mit der FFT + IFFT funktioniert. Aber es gibt Knackser im 
Signal. Aber z.B. die Bässe lassen sich anheben. Gut klingen tuts aber 
nicht.

Wenn mich jemand über diese IIF-Filter und deren Implementierung 
aufklären könnte, wäre ich dankbar.
Ich hab schon ein wenig Google gefragt, aber ich weiß weder konkret 
wonach ich suchen muss, noch verstehe ich irgendwelche Beschreibungen, 
da mir schlichtweg die Fachkentniss fehlt. Mit wilden mathematischen 
Formeln kann ich zZ recht wenig anfangen.

Die knappen Hardwareansprüche bestehen immernoch. Auch wenn ich zZ alles 
erstmal auf dem PC ausprobiere.

Ein filter, der mit 512 Sapels aukommen könnte wäre fetzig. :-)

MFG
und danke - falls sich jmd erbarmt.

Autor: GPS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FIR und IIR sind gesampelte Auffuehrungen von den ueblichen Bekannten, 
Bessel, Tschebytschew, Cauer, usw. Es sollte genuegend Literatur 
verfuegbar sein. Nach etwas Mathematik ist die Implementierung reltiv 
einfach.

Autor: Albi G. (deralbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..übliche Bekannte... ;-) na danke.
Kann mir jmd was empfehlen, wo solche Sachen anschaulich und 
Kindgerechtt erkärt werden? Tschebytschew kenne ich bisher nur aus dem 
Matheunterricht.

Ja, ich weiß, ich stell mch blöde an, aber ohne fremde Hilfe komme ich 
ier nicht weiter. (bzw gute Quellen)
Literatur in Papierform würde ich gerne vermeiden.

MFG

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also FIR bzw. IIR beschreibt ja erstmal nur die Art des linearen 
digitalen Filters, d.h.
FIR = endliche Impulsantwort, z.b. realisiert durch Faltung mit 
bekannter Impulsantwort
IIR = unendliche Impulsanwort, rekursive Berechnung des Ausgangswert 
durch Rückkopplung

Die Frage lautet dann nur noch wie man zu geeigneten Koeffizienten 
kommt. Das kann dann u.U auch durch Abtasten der "übliche Bekannten" 
erfolgen.

Bzgl. FFT-IFFT:
Das geht schon, allerdings um korrekte Ergebnisse zu bekommen muss hier 
beachtet werden, dass die (I)DFT implizit zyklische Signale verarbeitet.
Kurzum, es gibt spezielle Algorithmen, die das entsprechend 
berücksichtigen. Genaueres müsste ich jetzt auch nachschlagen. Im 
Prinzip muss man überlappend arbeiten. Schau mal unter "Schnelle 
Faltung".

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: Da ja jemand hier eine Link zu einem Online-DSP-Buch gepostet 
hat, hab ich auch kurz nochmal nachgeschaut.
Das Verfahren zum Benutzen der FFT/IFFT zum filtern ist hier 
beschrieben:
http://www.dspguide.com/ch18.htm (Kapitel 18)

Autor: SGP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Albi, du moechtest ohne papier auskommen ? Ich haett da ein Buch ueber 
digitale filter empfohlen. 3cm dick und teuer. Dafuer hat man's nachher 
auch begriffen.

Autor: Albi G. (deralbi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sry, das ich dir mit meiner Mittellosigkeit die Chance auf nen 
inhaltsvollen Post vermasselt habe, SPG. (ja, die msg kam trotzdem an, 
ich weiß auch was du meinst)

Das Kapitel 18 ist zZ nicht erreichbar. Seite kann nicht geladen werden. 
Ich probiers später nochmal, oder die Adresse is falsch. Mal schauen.

In der Zwischenzeit hab ich auch per google was gefunden:

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Ich habe die Implementierung mal übernommen. Besonders freut mich, das 
der Filter quasi beliebig kurze  PCM-Daten bearbeiten kann.
Ich kann damit ja jetzt Frequenzen filtern und diese dann wieder auf die 
OriginalWelle aufaddieren. Damit würde ich z.B. eine Verstärkung 
erreichen.

Zu der Seite habe ich aber noch ein paar Fragen. Ich habe zwar damit 
schon Frequenzen gefiltert, aber nur mit mittelmäßigen ergebnis.
Ich denke für einen sinnvollen mehrbandigen Equalizer braucht man einen 
Tiefpass für die bässe, 3 Bandpässe für die Mitten und einen Hochpass 
für die Höhen.
(Womit mein Ziel eines 5 Kanal-EQ erreicht wäre)

Der Tiefpassfilter ist der LPF.
Der Hochpassfilter ist der HPF.
Der Bandpassfilter ist der BPF. << welcher der beiden ist zu für einen 
EQ empfehlen?

Die Frage bleibt noch offen: was ist ein Notch-Filter, ein 
AllPassFilter?, ein peakingEQ und ein low bzw HighShelf-Filter..?

Ich vermute die Filtereigenschaften werden die Funktionen H(s) 
beschrieben.
z.B. H(s) = 1 / (s^2 + s/Q + 1)
Aber in welcher Einheit ist S ?

Was mich auch noch beschäftigt ist, die Berechnungsweiße von alpha. 
Welche der 3 Formeln ist für welchen Filter sinnvoll.

Wenn sich nochmal jemand erbarmt, wäre ich überglücklich :-)

MFG

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir das mal an, damit habe ich in wenigen Stunden einen Equalizer 
hinbekommen.

http://www.freescale.com/files/dsp/doc/app_note/AN...

Autor: koarl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Die Frage bleibt noch offen: was ist ein Notch-Filter, ein
>> AllPassFilter?, ein peakingEQ und ein low bzw HighShelf-Filter..?

Ein Notch-Filter ist ein Filter, der eine bestimmte Frequenz sperren 
soll (also in etwa das Gegenteil von einem Bandpass-Filter)

Soweit ich mich erinnern kann ist ein AllPassFilter ein Filter mit 
konstantem
Betrag, da er alle Frequenzen durchlässt. Er dient nur dazu um den 
Phasengang
abzuändern.

>> Ich vermute die Filtereigenschaften werden die Funktionen H(s)
>> beschrieben.
>> z.B. H(s) = 1 / (s^2 + s/Q + 1)
>> Aber in welcher Einheit ist S ?

Du kannst statt s jw einsetzen, dann hast du die 
Fourier-Übetrtagungsfunktion.

Die Übertragungsfunktion hat zwei Pole, (das heißt, dass es im Zähler 
Nullstellen gibt), also wird sich das Ganze nur mit einem IIR-Filter
(UnEndliche Impulsantwort) ausgehen.

Dazu schreibst du die Übertragungsfunktion als Differenzengleichung an:

H[z] = 1/(z^2 +z/Q + 1) und erweiterst den Bruch mit z^-2:

H[z] = z^-2 / (z^-2 +1/Q*z^-1 +1)

Danach kannst du das mit DF1 oder DF2 realisieren:

http://de.wikipedia.org/wiki/Filter_mit_unendliche...

Mfg

Autor: 3cm_dick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie heisst das 3cm dicke buch?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Oppenheim, Schafer; Zeitdiskrete Signalverabeitung" hat 6cm...

Autor: 1296 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das 3cm dicke Buch :
Digital Signal Processing - A System Design Approach
David J. DeFatta, Joseph G.Lucas, Wiliam S.Hodgkiss
Wiley ISBN 0-471-63765-3

Hab's leider grad nicht mehr gefunden

Autor: 1296 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, Amazon ab 15$

Autor: 1296 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Iii, bei amazon.de 42 Euro, wow, fast E Euro pro Dollar. Abzock......

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.