Einzeltitel im Loop abspielen

Moin,
hab meinem Sohn nen TonUino gebastelt und dazu ein Frage: Gibt es eine Möglichkeit einen einzelnen Titel in einem Order in Dauerschleife abzuspielen, ohne Modifikationskarte? Oder muss ich mir das selbst coden? Die Funktion dazu aus der dfmini API tut schonmal nicht, vermutlich wegen der Art wie die queue implementiert ist. Bin dankbar für jeden Tipp :slightly_smiling_face:

Lg Wanja

In meinem Fork hälst du dafür die Play/Pause Taste gedrückt während der Titel spielt. Dann hast du dauer repeat. Erneutes langes drücken beendet das repeat. Allerdings musst du dafür eben die Firmware und den mp3/advert Folder wechseln. Der Funktionsumfang ist auch etwas anders (gibt z.B. keine Modifikationskarten).

Wenn du eine Karte im Spezialmodus von bis Party erstellst und dort nur einen Titel angibst, also von Track 5 bis Track 5, dann läuft dieser in Endlosschleife.
Edit: Er läuft leider nur 2 mal. Das Problem ist, dass in der Funktion nextTrack der aktuelle Titel gespeichert wird und beim nächsten auslösen von nextTrack abgeglichen wird, um mehrmaliges Aktivieren durch den Player zu verhindern. Damit wird auch die Endlosschleife von einem Titel verhindert.
Du müsstest den gleichen Titel also 2 mal hintereinander im Ordner haben um eine Endloswiedergabe zu erreichen.

Was stört dich denn an der Lösung mit der Modifikationskarte?

Moin, jo der Spezialmodus von bis Party war auch meine Hoffnung, geht aber nicht :smiley:
Mein Kleiner hört ein Lied halt gerne mehrmals hintereinander, da will ich aber nicht immer die karte dranhalten, oder hab ich das Prinzip falsch verstanden?

lg Wanja

Willst du, dass er mit einer Karte jeweils ein Lied ansteuert, welches dann in Endlosschleife läuft oder soll er, wenn er will bei einem Album in den Endlosmodus eines Titels wechseln können?

Bei ersterem kann man einen Modus ähnlich dem Einzelmodus machen, der das Verhalten erzeugt oder man ändert direkt den Einzelmodus (hab ich gerade probiert, ich hab jetzt genug von dem Lied :slight_smile:).

Für die 2. Variante bleibt eigentlich nur das ständige benutzen der Zurück Taste oder das Vorhalten der Repeat-Karte. Also wenn Endlosschleife gewünscht Karte kurz davorhalten oder liegen lassen bis es weitergehen soll. Dann Karte wieder vorhalten. Wobei man die Karte auch durch einen Tastendruck ersetzen kann (bei 5 Tasten z.B. durch langes Drücken auf zurück oder wie bei stephan durch langes Drücken auf Play, wobei dann die Ansage der Tracknummer wegfallen würde)

Moin,
es soll mit einer Karte genau ein Lied angesteuert werden, das dann solange im Loop läuft, bis man eine andere Karte auflegt, „Pause“, oder „Aus“ drückt. :slight_smile:

lg Wanja

Du hast mich da auf eine tolle Idee gebracht. Ich habe den Einzelmodus um eine optionale Endloswiedergabe erweitert. Die Software findest du hier: https://github.com/GuteLaune/TonUINO/tree/Einzelmodus-mit-Endlosschleife
Wichtig ist, nicht nur die neue Software auf den TonUINO zu laden sondern auch die 3 neuen Sounddateien (323 - 325) aus dem mp3-Ordner auf die SD-Karte zu packen. Die Sounddateien haben leider eine andere Stimme.
Beim Anlernen einer Karte im Einzelmodus wird dann gefragt, ob der Titel in Endlosschleife laufen soll. Vielleicht magst du das ja mal ausprobieren.
Edit: Andere dürfen natürlich auch gerne probieren

1 „Gefällt mir“

Mittlerweile habe ich einfach die nextTrack-Methode angepasst, sodass ein einzelner Track immer in einer Schleife abgespielt wird, aber ich finde Deine Lösung dafür besser :smiley:

Also ich glaube das doppelte OnPlayFinished-Event müsstest du noch irgendwie behandeln, sonst startet der Titel zweimal im kurzen Abstand. Ansonsten TOP! :smiley:

lg Wanja

Hab’s bei mir mal so reingehackt, damit tut’s :smiley:

bool isDoubleOnPlayFinished = false;



static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track) {
//Serial.print(„Track beendet“);
//Serial.println(track);
//delay(100);
if (myFolder->special2 == 2 && !isDoubleOnPlayFinished) {
isDoubleOnPlayFinished = true;
} else {
isDoubleOnPlayFinished = false;
nextTrack(track);
}
}

besser so:

static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track) {
// Serial.print(„Track beendet“);
// Serial.println(track);
// delay(100);
if (!isPlaying()) {
nextTrack(track);
}
}

1 „Gefällt mir“