Lied weiter bei erneutem Auflegen der Karte

Ich würde gerne bei erneutem Auflegen der Karte ein Lied weiterspringen. Habt ihr ein paar Hinweise/Ideen welche Stellen ich dafür anpassen müsste?

In welchem Abspielmodus willst du das?

Hatte jetzt hauptsächlich an den Albummodus gedacht.

Hintergrund ist, dass meine 1,5 Jahre alte Tochter mit den Knöpfen nicht so gut klar kommt, insbesondere der lange Tastendruck ist bei den von mir verwendeten Tasten doch schwierig. Die Karte noch mal Auflegen ist dagegen simple und so könnte sie ihre Lieblingslieder leicht selbst auswählen, ohne dass für jedes Lied eine eigene Karte benötigt wird.

Du müsstest dafür den Hörbuchmodus nehmen, diesen aber so anpassen, dass nicht der zuletzt gespielte unvollendete Track von vorn abgespielt wird, sondern der nächst folgende.

@marco-117 hat bereits einen ähnlichen Modus programmiert. Den Albummodus mit Fortschrittspeicher.
Das ganze wurde hier besprochen

Allerdings ist die neue Software noch nicht ausgiebig getestet.

Ja, diese Funktion ist bei mir etwas von hinten durchs Auge, wenn man nur auf den neuen Titel aus ist.

Aus eigener Erfahrung (mein Sohn ist auch 1,5) und um dir eine schnelle praktikable Lösung zu empfehlen:
Nimm den Partymodus.
In dem Alter reicht es doch aus wenn ein anderer Titel kommt.
Ich hab auch nur drei Karten mit unterschiedlicher Musik im Partymodus laufen. Das Kind kann damit gut umgehen.

Das ist die Stelle, wo eine neue Karte ausgelesen wurde, aber die neuen Werte noch nicht gespeichert sind. Da kannst du vergleichen, ob es die gleichen Daten sind. Wenn es dann eine Karte im Album-Modus ist, kannst du nextTrack ausführen, wie wenn der Button gedrückt wird.

  if  (tempCard.nfcFolderSettings.folder == buffer[5]     //gleicher Ordner
    && tempCard.nfcFolderSettings.mode == buffer[6]       //gleicher Modus
    && tempCard.nfcFolderSettings.special == buffer[7]    //gleicher von
    && tempCard.nfcFolderSettings.special2 == buffer[8]   //gleicher bis
    &&(tempCard.nfcFolderSettings.mode == 2               //Album-Modus
    || tempCard.nfcFolderSettings.mode == 8)){            //Album-von-bis-Modus
      Serial.println(F("gleiche Karte und Album-Modus"));
      nextTrack(random(65536));
      delay(1000);
      return false; //sonst wird playFolder ausgeführt und damit der 1. Track gestartet
    }
1 „Gefällt mir“

Vielen lieben Dank euch allen für die vielen Ideen und Hinweise, ganz besonders an @Gute_Laune für den Pointer zu den relevanten Codestellen. Genauso hatte ich mir das auch vorgestellt, dass man die Info zur zuletzt genutzten Karte speichert und wenn diese wieder aufgelegt wird, die nextTrack()-Funktion aufruft. Wenn es geklappt hat, dann werde ich die Änderungen hier beschreiben.

Grundsätzlich auch eine gute Idee, aber der Tonuino gehört eigentlich ihrem älteren Bruder und der möchte sich die Titel schon explizit aussuchen.

Noch ein Tipp. Ich hatte beim Testen das Problem, dass nach dem Upload der Software oder einem Reset, die Wiedergabe nicht startete, wenn die selbe Karte wie zuletzt vorgehalten wurde. Trennt man zwischendurch einmal die Stromversorgung, funktioniert auch die Wiedergabe mit der zuletzt gespielten Karte ohne Probleme.

1 „Gefällt mir“

Du hast ja schon die fertige Funktion gepostet! Das war mir bisher gar nicht aufgefallen. Funktioniert so weit perfekt, habe lediglich noch ein && currentTrack != numTracksInFolder in die if-Bedingung eingefügt, damit nach dem letzten Track wieder von vorne begonnen werden kann.

Also noch mal ganz herzlichen Dank!

1 „Gefällt mir“

Vielen Dank für den Code-Schnipsel. Ich habe ihn für die Box (Vorstellung folgt bald) meiner zweijährigen Tochter genutzt, aber eine Zeile ausgeklammert ( // nextTrack(random(65536)); ).

Uns hat immer sehr genervt, dass sie manchmal die Karte mitten beim Hören neu aufgelegt hat und dadurch das Album von Vorne begonnen hat. Durch den Vergleich, ob die gleiche Karte erneut aufgelegt wurde, wird diese nun einfach ignoriert.

1 „Gefällt mir“