Forum: Mikrocontroller und Digitale Elektronik MP3 per software


von Joed (Gast)


Lesenswert?

Hallo Gemeinde,

ich möchte im rahmen eines Projekts eine MP3-datei aus einer SD-Karte 
lesen und wiedergeben. Zur verfügung steht mir das EVAL-B. STM3210E.
ich habe im Netz gesucht und bin immer wieder auf den VS1001 gestossen. 
ist er denn notwendig als Decoder?
da ich es geschafft habe "Sprache" auf den AD-Wandler zu geben, lesen 
und wiederzugeben dachte ich mir, es wird auch mit MP3 funktionieren.
Das eine habe ich per PCM gemacht.
Geht das andere per Software auch oder ist da zusätzliches notwendig ?
Danke.

von Martin (Gast)


Lesenswert?

Weisst du was MP3 ist bzw. bedeutet?

von Sebastian (Gast)


Lesenswert?

Na ja, man braucht entsprechende Decoderroutinen und die Rechenleistung 
dazu. NXP hat es vorgemacht - hier: 
http://www.nxp.com/documents/application_note/AN10583.pdf

Vielleicht hat ja ST ähnliches?

von Olaf K. (darkover)


Lesenswert?

> Geht das andere per Software auch oder ist da zusätzliches notwendig ?

Im Prinzip geht es auch mit Software. Ich habe auf einem SH2A 132Mhz 
(superscalar!) die libmad laufen. Die kann man sich einfach runterladen 
und uebersetzen. Auf meinem Prozessor reicht die Rechnenleistung fuer 
320kbit gerade so eben aus. Fuer 128kbit (also LoFi :-) braucht es 
weniger Rechenleistung.
Wenn dein Prozessor eine aehnliche Rechenleistung hat dann kann ich die 
libmad empfehlen. Einfach runterladen, etwas Assembleroptimierung falls 
deine CPU noch nicht unterstuetzt wird und uebersetzen.

Oh...du brauchst aber noch etwas Ram. Ich glaube ich nutze so 600kb 
internes Ram als Buffer. Es muesste sicher auch mit weniger gehen. Aber 
unter 128kByte wuerde ich nicht gehen. Der Grund dafuer ist das 
SD-Karten, wo ja vermutlich deine Lieder herkommen, manchmal kurze 
Pausen einlegen bevor sie ihre Daten liefern. In der Zeit muss dein 
Buffer ueberbruecken koennen.

Olaf

von Joed (Gast)


Lesenswert?

@Martin :

ich habe die ganze Zeit auf dich gewartet damit du es mir erklärst ;)!
danke ich weiss bescheid.

@Sebastian :
ich war gestern in verbindung mit Keil und die haben nichts ähnliches.

ich bin ja bereit alles mögliche Softwaremässig zu schreiben wenn ich 
die Sicherheit habe dass das funktioniert! denn es funktioniert ja mit 
der "Sprache": Aufnehmen->AD-Wandler->Software(PCM)->Ausgeben.
ich dachte am Anfang : SD-karte->Software->Ausgeben...

ob das wohl geht..

von Olaf K. (darkover)


Lesenswert?

> http://www.nxp.com/documents/application_note/AN10583.pdf

Interessant. Also 73% CPU-Load wenn man mit schaebigen 128kbit zufrieden 
ist. Und wenn NXP nur 56 bis 128kbit getestet hat dann heisst es wohl 
das 160kbit schon nicht mehr funktioniert.

Also sollte der Arm wohl auch besser mit 120Mhz und mehr laufen wenn man 
wirklich Musik hoeren will.

Olaf

von Joed (Gast)


Lesenswert?

@Olaf:
Der Cortex/Eval.B bieten einiges, also um rechenleistung und Ram mach 
ich mir eher keine Sorgen.
es werden auch keine Lieder sein... es sollen Mp3 Datei ausgelesen 
werden. keine Lieder ;)
hast du zufällig links für mich ?

von Olaf K. (darkover)


Lesenswert?

> ich bin ja bereit alles mögliche Softwaremässig zu schreiben wenn ich
> die Sicherheit habe dass das funktioniert!

Die Applikation von NXP liefert dir doch schon eine gute Einschaetzung 
der benoetigten Rechenleistung. Ausserdem solltest du von dort bereits 
die Assembleranpassung fuer die Multiplikationsroutine uebernehmen 
koennen.

Es macht jedenfalls grossen Spass sowas zu implementieren. Du kannst 
dann jeden Programmierfehler hoeren. :-) Es ist auch sehr lustig wenn 
man den Prozessor komplett aufhaengt oder im Debugger anhaelt und er 
dann einfach weiter die letzten Sekunden Musik abspielt weil der DMA, 
zumindest bei mir, dann weiterlaeuft und den Buffer abspielt.

Olaf

von Olaf K. (darkover)


Lesenswert?

> hast du zufällig links für mich ?

Noe. Such einfach mal nach libmad. Ich hab die Sourcen einfach 
runtergeladen und in meinen Dateibaum kopiert.
Es ist sicherlich nicht einfach sowas wie die libmad selber zu 
programmieren, aber sie zu nutzen ist ganz easy.

Olaf

von Joed (Gast)


Lesenswert?

Ich beschäftige mich jetzt damit.
danke erstmal.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

Nimm den Helix MP3 Decoder der den gibts in fixed point. Läuft super und 
wenn du dir dort die Benchmarks an siehst.

>Sample Rate  Channels  Bit Rate ARM7TDMI  ARM9TDMI-REV2  ARM920T  ARM9E 
StrongARM1  XScale
>48.0 KHz  2  320 Kbps  30 MHz  24 MHz  27 MHz  20 MHz  20 MHz  20 MHz
>44.1 KHz  2  128 Kbps  26 MHz  21 MHz  24 MHz  17 MHz  17 MHz  17 MHz

https://datatype.helixcommunity.org/Mp3dec

Der Ram bedarf ist für einige Cortexe noch ein Ko Kreterium, aber dann 
nimmt man einen mit mehr als 32Kb Ram.

Wenn du beim STCircle schaust gibt es dort einen MP3-Player auf STM32 
der Helix benutzt. Kannst dir den Code ja mal anschauen.

MfG

Tec

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.