Forum: Digitale Signalverarbeitung / DSP / Machine Learning Equalizer - Wie?


von Albi G. (deralbi)


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

von Albi G. (deralbi)


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.

von GPS (Gast)


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.

von Albi G. (deralbi)


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

von Fred (Gast)


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".

von Fred (Gast)


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)

von SGP (Gast)


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.

von Albi G. (deralbi)


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

von Benedikt K. (benedikt)


Lesenswert?

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

http://www.freescale.com/files/dsp/doc/app_note/AN2110.pdf?fpsp=1

von koarl (Gast)


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_unendlicher_Impulsantwort

Mfg

von 3cm_dick (Gast)


Lesenswert?

wie heisst das 3cm dicke buch?

von Klaus (Gast)


Lesenswert?

"Oppenheim, Schafer; Zeitdiskrete Signalverabeitung" hat 6cm...

von 1296 (Gast)


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

von 1296 (Gast)


Lesenswert?

Doch, Amazon ab 15$

von 1296 (Gast)


Lesenswert?

Iii, bei amazon.de 42 Euro, wow, fast E Euro pro Dollar. Abzock......

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.