Forum: Mikrocontroller und Digitale Elektronik uC-Mp3-Player Ablaufsteuerung


von Johannes (menschenskind)


Lesenswert?

Ih hab mir hier nen Player gebaut: Lesen von SD-karte in den Mega32 rein 
und der Stream dann an nen VS1001.
Nun geht es an die Funktionen wie Pause, Titel vor, Titel zurück und 
Shuffle.

Frage: Die Dateinamen sind dem Player ja nicht bekannt. Wie bekomm ich 
es also hin, dass der Player startet, sich die 1. Mp3-Datei schnappt und 
diese abspielt? Meine Idee wäre, Bei Adresse 0 zu beginnen, den 
Filepointer zu inkrementieren und dann immer ein Stück von 4 Byte mit 
".mp3" zu vergleichen um die Dateien zu finden.
Ich nutze das TinyFatFs von Chan und kenne mich mit der Datenverteilung 
auf nem Datenträger nicht wirklich aus.
Das Problem bei dieser Methode wäre ja dann auch: wenn ich also das Ende 
des Dateinamens ausfindig gemacht habe, wie ermittle ich dann den Rest 
des Dateinamens, um diese Datei dann öffnen zu können? Der kann ja 
unterschiedlich lang sein.

Zum Shuffle: Könnte ich da mittels eines Zufallswertes irgendwo in den 
Adressbereich des Datenträgers springen, wo Mp3-Daten vorhanden sind und 
dann entweder vor- oder rückwärtsgehen, bis ich wieder auf den 
Dateianfang einer Mp3 stoße und diese dann abspielen?

Klar hab ich hier einige Beispielprojekte rumliegen, aber in deren 
Quelltexten bin ich nicht so richtig fündig geworden. Teilweise sind die 
ziemlich kompliziert zu verstehen für mich als relativen Beginner.

Danke für Eure Hilfe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Die Dateinamen sind dem Player ja nicht bekannt.

Natürlich sind sie das, der Player liest das Inhaltsverzeichnis 
("Directory") der SD-Karte.

Dazu ist das von Dir erwähnte Dateisystem FAT und der Treiber TinyFatFS 
zuständig.

Wie das Inhaltsverzeichnis strukturiert ist, ist in der 
FAT-Dokumentation beschrieben.

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.