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