Erweiterung des Hörbuch Modes

Ich möchte euch ein neues Feature vorstellen, dass den Hörbuch Mode betrifft auf auf Anregung von Lucas Romero entstanden ist.

Motivation: Auf der Box sind sehr viele Hörbücher und man möchte eins davon hören. Wie wäre es, wenn man der Box die Auswahl überlassen könnte. Dann spart man sich auch die vielen Karten, eine Karte reicht dafür.

Lösung: Die Modi „Hörbuch“ und Hörbuch einzeln" werden erweitert. Beim Erstellen der Karte kann man zusätzlich zur Auswahl eines Folders noch einen „letzten“ Folder angeben. Beim Auflegen der Karte wird dann zufällig ein Folder in dem Bereich ausgewählt und abgespielt. Natürlich kann man unterbrechen und auch die Box ausschalten. Beim Wiederauflegen der Karte wird dann mit dem angefangenen Hörbuch an der richtigen Stelle fortgesetzt, solange bis das Hörbuch beendet ist. Dann wird wieder zufällig ein neues Hörbuch ausgewählt.

Der Mode ist rückwärts-kompatibel, d.h. die alten Karte funktionieren weiter und spielen nur das eine Hörbuch ab wie auch neu erstellte Karten, bei denen als letzter Folder gleich dem Ersten ist.

Wenn der Tonuino im Play State ist und die selbe Karte wieder aufgelegt wird, wird der Fortschritt für den aktuellen Folder gelöscht, so dass mit dem nächsten zufälligen Folder fortgeführt wird. In allen anderen States (Pause, Idle, …) wird mit der letzten Geschichte an der richtigen Stelle fortgefahren (Achtung: natürlich nur, wenn schon ein Fortschritt gespeichert wurde, also mindestens der zweite Track dran war.

Nun ist das mit dem Zufall so eine Sache, natürlich kann es sein, das ein Hörbuch zweimal oder sogar mehrmals hintereinander ausgewählt wird oder nach einem anderen Hörbuch sofort wieder kommt. Um das zu vermeiden gibt es das optionale Feature „Folder Queue“. Dies kann in der Datei constants.hpp mittels Define FOLDER_QUEUE_HOERBUCH eingeschaltet werden. Empfehlen kann ich das aber nicht für den Nano, da hier der RAM zu klein ist und es zu Stack-Overflows kommen kann. Mit diesem Feature wird am Anfang eine Folder Queue in zufälliger Reihenfolge erstellt, die dann abgearbeitet wird. Die Queue ist leider nicht persistent, d.h. nach einem Neustart der Box wir die Queue neu erstellt.

Das Ganze ist auf dem Branch issue_319 implementiert und wartet auf Interessierte und Tester. Achtung: im mp3 Folder auf der SD Karte ist eine neue Datei hinzugekommen.

Die Idee ist super, wie ist es für den Modus Hörbücher von bis? Ich möchte in Zukunft nur noch den Modus „Hörbuch von bis“ einsetzen, da ich damit deutlich mehr Hörbücher auf die Box bringe als nur 99 Stück.

Hatte mir überlegt, eine Überraschungskarte für die Kinder zu machen, wo ich dann jeweils selbst ein Hörbuch zuweise, aber diese Spezialkarte wäre hier sicherlich besser :slight_smile:

Nein, das geht leider nicht. Aus ganz vielen Gründen. Wo soll man denn die von/bis Aufteilung für die Ordner speichern?..

Claude und ich haben uns das angeschaut und ein paar Ideen geprüft. @Boerge1 hat recht – im allgemeinen Fall geht es nicht, weil die Von/Bis-Bereiche pro Hörbuch individuell sind und nirgends gespeichert werden können.

Was ggf.aber machbar wäre:

Die NFC-Karte (MIFARE 1K) hat 1024 Bytes Speicher, davon nutzt TonUINO aktuell nur 9 Bytes. Die restlichen ~750 Bytes sind völlig ungenutzt. Dort könnte man eine Liste von Einträgen speichern:

Eintrag = 3 Bytes: Ordner + Von-Track + Bis-Track
→ ~250 Einträge passen auf eine einzige Karte

Das würde bedeuten:

  1. Firmware (TonUINO-TNG): Neuer Modus hoerbuch_liste – liest N Einträge von der Karte, wählt zufällig einen aus, spielt ihn mit Fortschrittspeicherung ab
  2. Android App : Neuer Kartentyp der eine Liste von (Ordner, Von, Bis)-Einträgen auf die Karte schreibt

Der Aufwand für Punkt 1 in der Firmware wäre überschaubar – chip_card.cpp müsste mehr Blöcke lesen/schreiben, und ein neuer State in state_machine.cpp würde die Zufallsauswahl aus der Liste übernehmen.

Wäre das grundsätzlich denkbar als Erweiterung?
Solange es keine komfortable Möglichkeit gibt, die Liste auf die Karte zu bringen (z.B. über die Android App), nützt die beste Firmware-Erweiterung wenig.

Ich habe lange darüber nachgedacht und ich bin zu dem Schluss gekommen, dass deine Änderungsvorschläge nicht so recht ins Konzept des TonUINO passen. Der TonUINO soll alleine funktionieren und nicht von irgendwelchen Apps abhängen, die die Karten erstellen soll. Außerdem wären die Codeänderungen recht umfangreich, so dass sie nicht mehr bei allen Boards in den Flash Speicher passen. Sorry!

Danke für die ausführliche Erklärung! Ist absolut verständlich. Wäre aber trotzdem eine coole Idee gewesen :grinning_face_with_smiling_eyes:

Da keine weiteren Kommentare mehr kamen, habe ich das Feature auf den main-Branch gemergt.