Hi zusammen, Ich benutze einen DFPlayer (Arduino Zusatz) zum Abspielen von Nachrichten im MP3 Format. Maßgeblich für die Anwahl der verschiedenen Mp3 Nachrichten ist anscheinend nicht der Name, auch nicht das Datum. Sondern die Reihenfolge wie die MP3 Nachrichten auf die SD Karte transferiert wurden. Wie geht sowas? Beispiel. es existieren 3 Mp3-Songs ( halligalli_01.mp3; halligalli_02.mp3 und halligalli_03.mp3. Wenn man nun als erstes halligall_03.mp3 auf die Karte ladet un dann die restlichen 2. Dann passiert am DFPlayer folgendes. Wenn man den Command "myDFPlayer.play(1)" absetzt dann wird Halligalli_03.mp3 abgespielt. Beim Aufruf "myDFPlayer.play(3)" wird halligalli_02.mp3 abgespielt. Wie geht da der DFPlayer vor? das Datum und der Name als Sortier-Kriterium kann es nicht sein. Hat jemand einen Tipp, ich möchte das eigentlich nur verstehen. – Danke.
Player vor dem Herrn schrieb: > Sondern die Reihenfolge wie die MP3 Nachrichten auf die SD Karte > transferiert wurden. Wie geht sowas? In dieser Reihenfolge werden die Dateieinträge in die FAT geschrieben. Und genauso auch wieder eingelesen. Wenn der Player also nichts sortiert, ist es genau das erwartete Verhalten.
Kenne Deinen genauen Typ nicht aber ich musste bei einem Modul das genannt wurde 2 Dinge machen damit die Reihenfolge stimmt: - MP3 mussten auf der SD in einen "mp3" Ordner - Name muss 4-stellige Zahl und dann beliebiger Text + .mp3 sein z.B. 0002-mysound.mp3 0010-audio.mp3 ...
Hallo Player vor dem Herrn, manche Player verwenden einen der 3 Zeitstempel für die Reihenfolge. In der Command Shell von Windows kann man sich die Zeiten ansehen mit: dir *.mp3 /tc dir *.mp3 /ta dir *.mp3 /tw Vielleicht geht die Reihenfolge daraus hervor. Gruß, WIRO
WIRO schrieb: > manche Player verwenden einen der 3 Zeitstempel für die Reihenfolge. FAT hat nur einen. Drei Zeitstempel gibt es nur bei NTFS.
Rufus Τ. F. schrieb: > FAT hat nur einen. ? Eigentlich hat auch FAT drei. Wobei vom letzten Zugriff nur das Datum gespeichert wird und die letzte Änderung nur 2s Auflösung hat (Erstellung 10ms Auflösung).
Player vor dem Herrn schrieb: > Hi zusammen, > > Ich benutze einen DFPlayer (Arduino Zusatz) zum Abspielen von > Nachrichten im MP3 Format. Maßgeblich für die Anwahl der verschiedenen > Mp3 Nachrichten ist anscheinend nicht der Name, auch nicht das Datum. > Sondern die Reihenfolge wie die MP3 Nachrichten auf die SD Karte > transferiert wurden. Wie geht sowas? Sowas geht besch...eiden. Dahinter steht die (für den Alltagsanwender absolut nichtsnutzige) Idee, das Zeug in der Reihenfolge abzuspielen, wie es auf das Medium drauf gekommen ist. Dagegen gibts Progrämmelchen, die die Dateien auf der Karte/dem Stick (um)sortieren (nur zum Beispiel, willkürlich, eine der ersten Google-Treffer): https://waidner-itsolutions.de/wordpress/2011/12/21/audiosorter-dateien-auf-dem-usb-stick-sortieren/ ... sollte natürlich auch mit Speicherkarte funktionieren.
Wenn das der Player ist kann man laut PDF Beschreibung auch spezifische Tracks anwählen wenn sie richtig benamst wurden: https://github.com/DFRobot/DFRobotDFPlayerMini/ müssen wohl 0001.mp3, 0002.mp3 usw heissen dann kann man die per Nummer auswählen.
Hatte auch mal so einen MP3 Player. wieso wird dieses Verhalten als Problem gesehen? Das ist für mich genau das erwartete Verhalten. Denn so kann man die Reihenfolge der Songs in einer Playlist beliebig sortieren und dann auf den Player laden. Der spielt sie dann genau in dieser Reihenfolge ab. Ich habe immer "Shuffle" gemacht damit ich beim Radeln möglichst unterschiedliche Musik zu hören bekam. Der nächste MP3 Player hat dann plötzlich alles alphabetisch abgespielt, das war vielleicht ein Graus... Gruß, Martin
Martin P schrieb: > Denn so kann man die Reihenfolge der Songs in einer Playlist beliebig > sortieren und dann auf den Player laden. Der spielt sie dann genau in > dieser Reihenfolge ab. Und wie schaffst du es dem FAT-Treiber deines Betriebssystems beizubringen, die Songs in genau dieser Reihenfolge abzulegen? Nur weil du die Dateien alle nacheinander da drauf kopierst, sind die noch lange nicht in eben dieser Reihenfolge im Verzeichnis-Index. Martin P schrieb: > Ich habe immer "Shuffle" gemacht damit ich beim Radeln möglichst > unterschiedliche Musik zu hören bekam. Solche Leute hab ich noch nie verstanden ;-) Martin P schrieb: > Der nächste MP3 Player hat dann plötzlich alles alphabetisch abgespielt, > das war vielleicht ein Graus... Da kann man sie dann durchnummerieren. Am Besten ist es natürlich, wenn der Player die ID3-Tags ausliest um die Reihenfolge innerhalb des Albums zu bestimmen. Playlisten kann man ja als m3u-Datei ablegen.
so ein ding hatte ich früher auch mal. Ich hatte mir ein perl-script geschrieben, was die Dateien in der Reihenfolge einer playlist-Datei auf die Karte kopiert, damit der player die richtige Reihenfolge hat.
guest schrieb: > Eigentlich hat auch FAT drei. VFAT, normales FAT nicht. Und welcher Simpel-mp3-Player kennt schon VFAT?
Niklas G. schrieb: > Und wie schaffst du es dem FAT-Treiber deines Betriebssystems > beizubringen, die Songs in genau dieser Reihenfolge abzulegen? Nur weil > du die Dateien alle nacheinander da drauf kopierst, sind die noch lange > nicht in eben dieser Reihenfolge im Verzeichnis-Index. Ich kenne das Betriebssystem des Players nicht, war ein Billigteil. Aber er hat die Songs genau in der Reihenfolge abgespielt in der sie draufkopiert wurden. Da gab es mal ein MP3-Programm namens Musicmatch, das hatte eine Auto-DJ Funktion. Damit konnte man eine zufällige Playlist aus den vorhandenen Songs erstellen und den ganzen Abend Party machen. Der hat die Playlist auch so auf den Player exportiert. Leider wurde Musicmatch eingestellt aber kein anderes Programm hatte eine vergleichbare Funktion. Gruß, Martin
Tek schrieb: > müssen wohl 0001.mp3, 0002.mp3 usw heissen dann kann man die per Nummer > auswählen. Eben nicht! wenn 002.mp3 als erstes auf die Karte geschrieben wird, dann hat diese mp3 Datei den Index "1" und kann nur so (ohne den Namen) aktiviert werden: "myDFPlayer.play(1)". Dasselbe gilt auch dann, wenn die erste Datei zufällig "BlaBla.mp3" heißt. Es wird wohl so sein, dass es mit dem Eintrag in die FAT32 Tabelle zu tun hat. Für uns funktioniert das zwar, ist aber umständlich und läuft einer Strukturierung zuwider. Irgendwie ist es auch nicht verständlich, weil wenn man in der Lage ist, ein File-System zu implementieren, dann kann es doch nicht allzu schwer sein, eine vernünftige DIR Verwaltung hinzubekommen - oder?
Martin P schrieb: > Aber > er hat die Songs genau in der Reihenfolge abgespielt in der sie > draufkopiert wurden. Pures Glück. Das OS des PC hätte sie auch in einer beliebigen anderen Folge ablegen können. Wenn du z.B. eine Datei gelöscht und stattdessen eine andere draufkopiert hättest, wäre die vermutlich an die Stelle der alten Datei getreten, nicht ans Ende. Martin P schrieb: > Leider wurde Musicmatch eingestellt > aber kein anderes Programm hatte eine vergleichbare Funktion. Geht es explizit darum eine bestimmte zufällige Folge zu speichern? Die meisten Player können doch "Shuffle"... Player vor dem Herrn schrieb: > dann kann es doch nicht allzu schwer > sein, eine vernünftige DIR Verwaltung hinzubekommen - oder? Wahrscheinlich haben diese Player zu wenig Speicher, um alle FAT-Einträge einzulesen und dann zu sortieren.
Niklas G. schrieb: > Das OS des PC hätte sie auch in einer beliebigen anderen Folge ablegen > können. Wenn du z.B. eine Datei gelöscht und stattdessen eine andere > draufkopiert hättest, wäre die vermutlich an die Stelle der alten Datei > getreten, nicht ans Ende. Das ist korrekt. Wenn man aber eine leere SD nimmt, dann stimmt die Reihenfolge mit der Chronologie des Draufkopierens überein. Dasselbe gilt für leere Ordner. Derek Manns schrieb: > - MP3 mussten auf der SD in einen "mp3" Ordner > - Name muss 4-stellige Zahl und dann beliebiger Text + .mp3 sein z.B. > 0002-mysound.mp3 0010-audio.mp3 ... Das stimmt nicht ganz für den DFPlayer, jedenfalls ab FW-Version 0005. Hier kann man aber zweistellige Ordner 01, 02 usw. anlegen, in welche man dann die MP3-Dateien mit nnnn-beliebigername.mp3 ablegen kann. Dann kann man beim Abspielen sowohl den numerischen Ordner als auch den numerischen Dateinamen angeben und der DFPlayer spielt dann gezielt diesen Track ab - unabhängig von der Chronilogie des Draufkopierens. Jedenfalls konnte ich das bei der Anbindung des DFPlayers an die WordClock mit WS2812 genau so nachvollziehen. Und das funktioniert auch.
Rufus Τ. F. schrieb: > guest schrieb: >> Eigentlich hat auch FAT drei. > > VFAT, normales FAT nicht. Und welcher Simpel-mp3-Player kennt schon > VFAT? Da ist Microsoft aber anderer Meinung. Die 3 Timestamps gab es schon bei FAT12. Du hast aber insofern Recht, daß zwei davon (und ein Teil des dritten) optional sind. http://download.microsoft.com/download/0/8/4/084C452B-B772-4FE5-89BB-A0CBF082286A/fatgen103.doc
Frank M. schrieb: > dann stimmt die > Reihenfolge mit der Chronologie des Draufkopierens überein Dann muss das drauf-kopierende Programm die Dateien aber auch in alphabetischer Reihenfolge auf dem Stick anlegen. Im Zweifelsfall müsste man schon jede Datei einzeln kopieren, um das zu erreichen.
:
Bearbeitet durch User
Frank M. schrieb: > Hier kann man aber zweistellige Ordner 01, 02 usw. anlegen, in welche > man dann die MP3-Dateien mit nnnn-beliebigername.mp3 ablegen kann. Sorry, muss mich korrigieren. Wenn man die Funktion mit Ordner-Angabe nutzt, müssen die Tracks von 000 bis 255 durchnummeriert werden, also nnn-beliebigername.mp3 nnn ist hier also nur drei- und nicht vierstellig. Niklas G. schrieb: > Dann muss das drauf-kopierende Programm die Dateien aber auch in > alphabetischer Reihenfolge auf dem Stick anlegen. Man müsste schon jede > Datei einzeln kopieren, um das zu erreichen. Ja, das ist korrekt. Bei Linux aber nicht schwierig: Die Shell expandiert Wildcards in alphabetischer Reihenfolge. Ein "cp *.mp3 /mnt/xxx" macht das automatisch richtig. Bei Windows ist das mit der Mausschubserei nicht so einfach. Hier wird nicht unbedingt in der Reihenfolge kopiert, welche man bei der Selektion der Dateien mit der Maus verwendet hat. Aber konkret beim DFPlayer sind solche Vosichtsmaßnahmen nicht notwendig, wenn man obiges Nummernschema verwendet.
:
Bearbeitet durch Moderator
Frank M. schrieb: > Das stimmt nicht ganz für den DFPlayer, jedenfalls ab FW-Version 0005. > Hier kann man aber zweistellige Ordner 01, 02 usw. anlegen, in welche > man dann die MP3-Dateien mit nnnn-beliebigername.mp3 ablegen kann. Dann > kann man beim Abspielen sowohl den numerischen Ordner als auch den > numerischen Dateinamen angeben und der DFPlayer spielt dann gezielt > diesen Track ab - unabhängig von der Chronilogie des Draufkopierens. Das werde ich mal ausprobieren - wenn das so funzt ernenne ich dich glatt zum MOD of the Week ;-) Habe ich das richtig gecheckt - der DFPlayer orientiert sich dann nach dem Nummern-Prefix? Die Reihenfolge ist somit irrelevant bei dieser Vorgehensweise mit den DIRs..
Player vor dem Herrn schrieb: > Habe ich das richtig gecheckt - der DFPlayer orientiert sich dann nach > dem Nummern-Prefix? Ja. Aber wie ich oben schrieb: nnn für die MP3-Datei muss 3- und nicht 4-stellig sein. Die Funktion zum Abspielen ist die mit dem Kommando 0x0F - PLAY FOLDER. Hier findest Du eine Implementation (WordClock-Projekt): https://www.mikrocontroller.net/svnbrowser/wordclock24h/src/dfplayer/dfplayer.c?revision=112&view=markup Die Funktion heisst dort dfplayer_play_folder() und ist folgendermaßen implementiert:
1 | void
|
2 | dfplayer_play_folder (uint_fast8_t folder, uint_fast8_t file) |
3 | {
|
4 | dfplayer_send_cmd (DFPLAYER_PLAY_FOLDER, (folder << 8) | file); |
5 | }
|
Wertebereich: - folder: 0 - 99, gemeint ist Ordner 00 - 99 - file: 0 - 255, gemeint ist Datei 000.mp3 bis 255.mp3 Bitte darauf achten, dass Du beim Testen keine Zahlen mit führenden Nullen übergibst, sonst sind das Oktalzahlen ;-) Der Source ist allerdings für STM32 und hat nichts mit Arduino zu tun. Soll Dir auch nur als Anhaltspunkt dienen.
:
Bearbeitet durch Moderator
Niklas G. schrieb: > Geht es explizit darum eine bestimmte zufällige Folge zu speichern? Die > meisten Player können doch "Shuffle"... Heutzutage hab ich das Problem nicht mehr, weil die Player wie du sagst immer mehr können. Was ich eingangs beschrieb, ist bestimmt 10 Jahre her. Gruß, Martin
Player vor dem Herrn schrieb: > Das werde ich mal ausprobieren - wenn das so funzt ernenne ich dich > glatt zum MOD of the Week ;-) TaaTaa - The MOD of the week is Frank M. Kurzes Feedback: Es funzt genau wie es Frank beschrieben hat. Entscheidend ist man vergisst die oberste DIR Eben und verlegt all seine MP3 Dateien in die Ordner. Ich hatte die Ordner der Reihe nach generiert 01, 02 .... Und anschließend "vogelwild" hinein kopiert und zwar in der Form: nnn_Name.mp3 (z.B. 005_Klappe_Auf; 007_Klappe_Zu) In meiner Referenz Tabelle habe ich die DIR Nummern und den Index zu eine Integer Zahl zusammengefast (z.B. 3005, 3007) zur Laufzeit wird dieser Index dann aufgedröselt in 2 Byte Variablen. Was es anscheinend auch noch gibt, ist der Aufruf "myDFPlayer.playLargeFolder(dd, nnn);" um auf 10 Ordner mit 1000 Dateien zuzugreifen. Frank M. schrieb: > Der Source ist allerdings für STM32 und hat nichts mit Arduino zu tun. > Soll Dir auch nur als Anhaltspunkt dienen. Wir verwenden hier quasi Arduino kompatible Teensy Module (3.5) mit einen ARM Core von NPX - vergleichbar mit STM32. Die Dinger sind sehr hoch getaktet, sodass die üblichen Kritiken wie "Bastelzeug" "lahme Ente" alle abprallen. Der Produktivitäts-Zugewinn ist im Vergleich zu normalen uC-Anwendungen gigantisch. N.B Nach dem Erscheinen der Teensy 4.0 Familie wird die Arduinowelt nicht mehr zum leugnen sein.
Player vor dem Herrn schrieb: > das Datum Klar ist es das Datum und Uhrzeit! Datum und Uhrzeit, an dem die Dateien auf die Karte kopiert wurden. Du erstellst eine Datei mit Datum 1.1.2011. Wenn Du die am 2.2.2022 auf USB-Stick o.ä. kopierst und dann den Stick anschaust, hat die Datei das Datum 2.2.2022. Ein bißchen denken hat noch niemanden geschadet. Einfach mal anfangen damit. Jemand, der einen PC bedienen kann, um eine Frage online zu stellen, sollte das eigentlich wissen.
WTF ?! schrieb: > Wenn Du die am 2.2.2022 auf USB-Stick o.ä. kopierst und dann den Stick > anschaust, hat die Datei das Datum 2.2.2022. Das stimmt nur bedingt. Wenn Du es mit einem unixoiden System mit "cp" ohne spezielle Optionen machst, dann bekommt die Datei ein neues Änderungsdatum und Deine Aussage ist richtig. Wenn man "cp -a Quelldatei Zieldatei" verwendet, wird jedoch u.a. das Änderungsdatum übernommen. Bei Windows ist dieses Verhalten sogar Standard: Hier wird das Änderungsdatum der Quelldatei als Änderungsdatum der Zieldatei beim Kopieren übernommen, so dass beide Dateien im Explorer mit gleichem Änderungsdatum gezeigt werden. Von daher solltest Du Deine hochtrabenden Aussagen > Ein bißchen denken hat noch niemanden geschadet. > Einfach mal anfangen damit. > > Jemand, der einen PC bedienen kann, um eine Frage online zu stellen, > sollte das eigentlich wissen. nochmals überdenken.
:
Bearbeitet durch Moderator
WTF ?! schrieb: > Ein bißchen denken hat noch niemanden geschadet. > Einfach mal anfangen damit. Und wie sieht es bei dir aus? :-( Sich zwei Worte rauspicken, die aus dem Kontext gerissen sind und dann zu meinen hier im Forum "Denkanstöße" zu geben ist deplatziert und peinlich. Das zeugt eigentlich nur davon dass du den Thread nicht mal überflogen hast geschweige denn verstanden :-(
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.