Hörbuchmodus Von - Bis mit Fortschritt Speicherung

Hallo

ich finde kein Modus für Hörbuch Von - Bis mit Fortschritt Speicherung , habe zurzeit die neuste Dev installiert.In den Mp3´s finde ich auch keine Vorbereitung :thinking:. Thorsten kommt das noch ? Oder kann der Arduino das nicht verarbeiten das wäre schade :frowning:

Derzeit gibt es Spezial-Von-Bis nur für Hörspiel, Album & Party. Der Catch hier ist die Speicherung des Fortschritts. Das passiert pro Ordner. Das wäre bei Spezial-Von-Bis ja dann für mehrere Hörspiele der gleiche Ordner und damit die gleiche Stelle im Flash. Von daher musst du wenn du den Fortschritt speichern willst auf separate Ordner ausweichen.

Wäre es denn möglich im Hörbuchmodus die aktuelle Stelle (Trackname + Fortschritt in z.B. Sekunden) einer MP3 File in eine TXT Datei z:b. in dem Ordner des jeweiligen Hörbuches zu schreiben und wenn die Karte mit der ID des verknüften Hörbuch-Ordners aufgelegt wird, startet die jeweilige MP3 mit der Stelle wieder (prüft ob eine Progress-TXT vorhanden und ob ein Eintrag für die Karten ID besteht)?
Vielleicht stelle ich mir das auch zu einfach vor :smiley:
Habe mich so tief noch nicht in die Arduino Entwicklung vorgewagt.

Nein, das geht aus verschiedenen Gründen nicht. Man hat keinen direkten Zugriff auf die SD Karte und der Player kann auch nicht innerhalb einer Datei spulen/springen.

Wie ist denn ueberhaupt der Use-Case fuer dieses Szenario?

Das man z.b. die guten alten ???-CDs alle trackweise konvertieren koennte, um dann in einem Ordner wirklich 20 CDs mit je ~12 Tacks speichert? Und dann 12 Karten mit Fortschritt machen kann und nach z.B. 15 min timer ausschalten kann um am naechsten tag weiterhoeren?

Die einzige (aufwaendige) Moeglichkeit waere wirklich die UUID der Karte mit einem aktuellen Track zu verknuepfen und das wiederum im EEPROM abzulegen oder?

Die Frage ist ob das wirklich ein use-case ist … man hat ja 100 Ordner, reicht das wirklich nicht?
Allein das setup von dem Mode ist ja relativ kompliziert wenn ihr mich fragt.
JKW

Eine weitere Möglichkeit - die sich jedoch etwas von der original TonUINO Software entfernt: Man kann den Fortschritt auf der RFID-Karte speichern, dann müsste man aber die Variante Karte-drauf-Musik-spielt / Karte-weg-Musik-weg wählen.

Ein Use Case ist doch naheliegend: Man kann Hörbücher ab der Stelle fortsetzen, bis zu der man zuletzt gehört hat.

Es gibt Projekte, die dazu eine Möglichkeit vorsehen, die Trackposition zu speichern. Bspw.:
http://forum.arduino.cc/index.php?topic=195749.0

Diese Projekte nutzen allerdings nicht den DF Player. Die Library des DF Player enthält soweit ich das verstehe keine entsprechende Möglichkeit. Ob man sie erweitern könnte vermag ich nicht zu sagen.

Technisch theoretisch sicherlich machbar. Aber man müsste immer „silent“ auf die Karte schreiben (machen as die Karten lange mit?). Was ist, wenns nich klappt etc. Die karte verrutscht nen cm und schon ist Essig mit Schreiben und man merkt es nicht mal. Denke das ist ein recht filigranes Konstrukt dann. Nee, das find ich glaub ich nich so gut.

Genau das versucht ja der Hörbuchmodus nachzustellen mit den beschränkten Mitteln die der DFPlayer Mini in der Richtung bereitstellt. Hier geht es doch nur darum, das in einem der Spezial Von-Bis Modi auch zu machen. Um mehrere Hörbücher in einem Ordner abzulegen. Die Frage nach dem Use-Case ging hier in die Richtung ob die 100 Ordner nich auch reichen, nicht ob man überhaupt den Fortschritt speichern kann oder nicht.

Nein. Weil die Hardware es einfach nicht kann. Wir sind hier auch in einer ganz anderen preislichen Liga. Der Player kostet 5€ (und da hat man schon teuer in DE bestellt). Das Modul in obigen Player kostet 5x so viel.

Das wäre sicher nichts für die offizielle Version, eher für einen Usermod.
Das Verrutschen ist ein Argument. Bei den Schreibzyklen hätte ich keine Bedenken: man muß pro Trackwechsel einmal schreiben und Mifarekarten halten ca. 500.000 Schreibzyklen aus. Wenn mein Kind 500.000 mal das gleiche Hörbuch in Dauerschleife hört, dann … ist es okay, wenn die Karte hinüber ist :joy:

das glaube ich auch, das sehe ich als einzige Möglichkeit eine dedizierte EEPROM Speicherung. Ich hab bei meinem esp branch das auch so gemacht, alle Karten werden auf dem Dateisystem gespeichert. Da haben ich jetzt auch mal jeder Karte neben UUID, Mode, Album und Track noch 10 byte Userdata gegönnt. Dort würde ich dann sowas wie [von][bis] speichern können und nach jedem Track die Track-Variable einen hochzählen und speichern, aber ich bin mir noch nicht mal sicher ob das überhaupt ein usecase (für mich) ist.
JKW

Hat jemand dieses Thema weiter verfolgt?
Mir würde es schon reichen, wenn nur der letzte Track gespeichert würde. Es geht nur darum, dass das Hörspiel am nächsten Tag weiter gehört werden kann.

Wenn zwischendurch eine andere Karte aufgelegt würde, ist das halt Pech.

Also mein Fork (der ist allerdings 3rd-party, basiert auf einer komplett anderen Codebasis, einem anderen Mikrocontroller und auch nicht dem DFPlayer) kann das. Der wird allerdings, das erwähne ich ausdrücklich, vom offiziellen Projekt nicht supportet sondern ausschließlich von mir.

Funktionsweise:
Man definiert entweder ein ganzes Verzeichnis oder eine einzelne Datei und weist dem die Eigenschaft Hörbuch zu. Bei einer einzelnen Datei ist es einfach, da speichere ich einfach die Position im Flash ab, wenn Pause gedrückt wird. Bei einem ganzen Verzeichnis sortiere ich alle Dateinamen immer alphanumerisch. Drückt man dann Pause, wird die aktuelle Titelnummer gespeichert und darin auch die Position. Die einzige Einschränkung ist hier nur, dass diese Methode nur dann immer deterministisch ist, wenn sich am Verzeichnisinhalt nichts ändert. D.h. kopiert man da nachträglich zusätzlich Dateien rein oder löscht welche, dann kann das zu Problemen führen, wenn deren Dateinamen alphanumerisch in einem Bereich liegen, den ich in meinem Hörbuch schon hinter mir gelassen habe. Lässt sich aber relativ einfach umschiffen.

Das ist aber ziemlich übertrieben. Die VS1053b Module kosten bei Amazon zwischen 3 und 14€ (je nach Formfaktor und Anbieter) Direkt aus China wird es dann noch mal günstiger.

Das Ändert aber alles nichts daran, dass der DF-Player keine Positionen innerhalb einer Datei unterstützt.

Zusatz: In meiner Version (die aber wie die von @biologist auf meiner eigenen Codebasis und einem anderen Controller und basiert) ist das ganze ebenfalls umgesetzt. Meine Firmware kann einzelne MP3s oder M3U Dateien spielen und speichert jeweils beim pausieren die aktuelle Position auf der SD Karte.

1 „Gefällt mir“

Das stimmt, darüber will ich auch nicht streiten. Ich bezog mich aber explizit auf den Music Maker FeatherWing. Der Kostet bei Adafruit 25$.

Dann hast du natürlich recht. Ich hab mir nur die github Seite angesehen und da sie dort vom VS1053 reden hab ich mich über den Preis gewundert. (Das dann so ein teures Board mit dem Chip verwendet wird hab ich nicht gedacht)

Mich wundert, dass der DF-Player keine Positionen in Dateien speichern kann: Wenn z.B. eine Funktionskarte aufgelegt wird oder Stoptanz aktiviert wird, unterbricht doch der Tonuino den laufenden Titel, spielt die Benachrichtigung ab und setzt dann den unterbrochenen Titel genau an der Stelle fort, an der er vorher unterbrochen wurde. Wie ist das möglich? Und kann diese Funktion nicht genutzt werden, um den per Karte gewählten Titel an der richtigen Stelle wieder aufzunehmen?

2 „Gefällt mir“

Hi zusammen,
ich habe meine erste TonUINO Box fertig gebaut und bin jetzt am MP3 kopieren und Karten erstellen dran. Und da ist mir aufgefallen, dass ich den Hörbuchmodus Von-bis eigentlich super gebrauchen könnte.
Ich habe eine aktuelle Hörspielreihe mit ~50 Folgen a ~30 Tracks. Wenn ich die jetzt alle so von 01-50 auf die SD Karte haue, ist ja schonmal die hälfte Weg vom Spaß.
Mit Hörbuchmodus von-bis könnte ich ca. 8 Folgen in einen Ordner machen und wäre am Ende bei ca. 8 Ordnern.
Jetzt ist natürlich die Frage wie ich das am besten umsetzen könnte.
Der Fork https://github.com/marco-117/TonUINO hat den Modus drin : " * Hörbuchmodus Von-Bis"
Ich bin mir aber unsicher, ob ich gleich auf diesen ganz anderen Fork gehen sollte, ob vielleicht lieber den Modus ins normale DEV einbauen?!

Du brauchst doch vermutlich nicht für jede Folge einen gespeicherten Fortschritt oder willst du alle Folgen anfangen und beliebig weiterhören können? Sonst könntest du ja eine Hörbuchkarte machen, die dann alle Folgen in dem Ordner nacheinander spielt.
Das Problem beim einfügen in die normale DEV ist

@marco-117 schreibt deshalb den Fortschritt auf die Karte falsch siehe nächste Beiträge. Dafür muss die Karte sicher auf dem Reader liegenbleiben und das Schreiben muss fehlerfrei laufen. Gerade das Schreiben schlägt ja bei vielen immer mal wieder fehl, sodass das vermutlich zu vielen Problemen führt, wenn man es in die normale DEV übernimmt. Probier doch den Fork einfach aus, du kannst ja immer zurückwechseln

Je nachdem, wie fit du bist, kannst du die Änderung von @marco-117 bezüglich des Spezial-Hörbuchmodus mit Speicherung selbst in die DEV übernehmen.

Stichworte für den Code in @marco-117’s Software sind:

  • writeAudiobookMemory
  • readAudiobookMemory
  • special3
    Suche diese Stellen im Code und füge die entsprechenden Parts dann in die DEV ein.

Ich meine, das wäre eine Idee / Variante gewesen. Aber er speichert den Fortschritt nun doch im EEPROM.

uint8_t readAudiobookMemory (uint8_t folder, uint8_t memoryNumber) {
  return EEPROM.read(folder + (99 * memoryNumber));
}

void writeAudiobookMemory (uint8_t folder, uint8_t memoryNumber, uint8_t track) {
  EEPROM.update(folder + (99 * memoryNumber), track);
}

@marco-117 Korrigiere mich bitte, wenn ich falsch liege.