Party-Modus fängt immer beim ersten Lied an

Hallo!

Ich habe neulich mitbekommen, dass beim Party-Modus, der ja den Ordnerinhalt zufällig abspielt das erste Lied auch tatsächlich IMMER das erste Lied aus dem Ordner ist. Bei vor- und zurück sind dann die Lieder tatsächlich in einer zufälligen Reihenfolge.
Ist das Verhalten so gewollt und standardmäßig aktiv?

Sorry falls es ein Repost ist, aber ich habe dazu leider keine helfenden Beiträge gefunden.

1 „Gefällt mir“

Hallo!

Ich dachte ich beantworte mir selber die Frage, falls jemand anderes das gleiche Verhalten hat und es ändern will. Lösung meinerseits war eigentlich ein dirty Hack in der tonuino.cpp Datei.
Ich habe lediglich mp3.nextTrack(); direkt aufgerufen weil im Verhalten ja die Zufällige Wiedergabe nach einmaligem Betätigen von „vor“ oder „zurück“ funktioniert hat.

Das Schnipsel:

  case pmode_t::party:
    // Party Modus: Ordner in zufälliger Reihenfolge
    myFolder->special = 1;
    myFolder->special2 = numTracksInFolder;
    __attribute__ ((fallthrough));
    /* no break */
  case pmode_t::party_vb:
    // Spezialmodus Von-Bis: Party Ordner in zufälliger Reihenfolge
    LOG(play_log, s_info, F("Party"));
    LOG(play_log, s_info, myFolder->special, str_bis(), myFolder->special2);
    mp3.enqueueTrack(myFolder->folder, myFolder->special, myFolder->special2);
    mp3.shuffleQueue();
    mp3.setEndless();
    mp3.nextTrack();
    break;

Ach, du benutzt die TonUINO-TNG Version. Die befindet sich ja noch in der Testphase. Dann machen wir doch @Boerge1 mal auf das Problem aufmerksam.

achsooo :smiley: dann bin ich wohl Beta-Tester :grin:

1 „Gefällt mir“

Oh, da ist wohl was faul an der Funktion

shuffleQueue()

Schau ich mir an.

1 „Gefällt mir“

@roborob
Ich habe das bei mir ausprobiert und ich kann das nicht nachvollziehen. Bei mir ist auch schon der erste Titel zufällig und nicht der erste. Kannst du bitte mal ein Log hier einstellen?

Hier ist z.B. mein Log:

 _____         _____ _____ _____ _____
|_   _|___ ___|  |  |     |   | |     |
  | | | . |   |  |  |-   -| | | |  |  |
  |_| |___|_|_|_____|_____|_|___|_____|
TonUINO Version 3.1 - refactored by Boerge1

created by Thorsten Voß and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.

V3.1.2.issue_019 03.03.23

Ver:2
Vol:25 5 5
EQ:1
LOC:0
ST:0
IB:1
AL:0
AP:1111
PCR:0
Volume: 5
enter Idle
Command: 6
enqueue mp3 262 0
play mp3 262
Card Inserted
CardData:  31 73 3b 74 02 01 03 00 00
enter StartPlay
enqueue mp3 262 0
play mp3 262
14 tr in folder 1
enqueue 1-1
enqueue 1-2
enqueue 1-3
enqueue 1-4
enqueue 1-5
enqueue 1-6
enqueue 1-7
enqueue 1-8
enqueue 1-9
enqueue 1-10
enqueue 1-11
enqueue 1-12
enqueue 1-13
enqueue 1-14
shuffled 9
shuffled 4
shuffled 11
shuffled 2
shuffled 5
shuffled 13
shuffled 10
shuffled 8
shuffled 14
shuffled 3
shuffled 6
shuffled 1
shuffled 12
shuffled 7
enter Play
play 1-9

Bei mir fängt er hier mit dem Track 9 an und nicht mit der 1.

1 „Gefällt mir“

So, ich habe das nochmals mit meiner auskommentierten Modifizierung ausprobiert und die Konsole zeigt das richtige Verhalten an. Damit ihr mir aber glaubt dass ich nicht verrückt bin hier ein kurzes Video - im Badezimmer aufgenommen, weil die Kleine schläft :grin:

Und auch ein Video nach meiner Codeänderung, wo das Verhalten so ist wie ich es mir erwarten würde.

Du verwendest ja nicht den Player der Leiterkartenpiraten, richtig? Das Problem ist, dass viele DFPlayer ja irgendwelche Macken haben. Du könntest auch mal probieren, ob das Problem bei der Standardsoftware auch auftritt.

ja, ich habe den DFPlayer direkt von DFrobot bestellt da die Leiterkartenpiraten nicht nach Österreich liefern. Dachte das Original sollte schon funzen :smiley:
Ich probier mal bei Gelegenheit die Standarfsoftware wenn ich denn die richtige finde. Muss mir aber vorher das Arduino Environment installieren.
GitHub - tonuino/TonUINO: Die DIY Musikbox (nicht nur) für Kinder ist das die offizielle?

Du kannst auch das online-update für den Classicaufbau benutzen. Ansonsten geht sowohl die von dir verlinkte Variante als auch der Link aus der FAQ.

Also in der Übersicht steht ist schon etwas. Ob das deinen Player betrifft und welche Probleme der vielleicht sonst macht kann ich dir nicht sagen. Das ist halt das große Problem mit den ganzen Playern.

Ich habe es mit der Standard Firmware ausprobiert (Website updater) und es hat ohne Modifikation zum gewünschten Verhalten geführt. Wiedergabe ist zufällig beim anlegen des Tags.

Das finde ich sehr merkwürdig…

Ich habe mir auch die shuffle queue Funktion angeschaut und die schaut soweit logisch nachvollziehbar aus. Ich denke der Fehler ist möglicherweise in der DFPlayer library. Ich weiß nicht welche Version beim online Updater verwendet wird, aber ich verwende die vorgegebene durch die Platform.io Konfiguration

Ich würde dich aber trotzdem bitten, mal ein Log zu machen. Am besten, du machst ein online Upload der 3.1 von der Seite https://www.tonuino.de/TNG/ und machst dann ein Log. Dann könnten wir erstmal ausschließen oder bestätigen ob es am DFPlayer liegt.

Um ganz sicher zu gehen, habe ich gerade alles auch mit platform.io gemacht und ich konnte den Fehler nicht reproduzieren. Also mache bitte ein Log.

Log mit Online-Updater aus der aktuellen TNG Version:
Verhalten ist das Gleiche → Es wird immer das erste Lied abgespielt

---- Opened the serial port /dev/tty.usbserial-10 ----

 _____         _____ _____ _____ _____
|_   _|___ ___|  |  |     |   | |     |
  | | | . |   |  |  |-   -| | | |  |  |
  |_| |___|_|_|_____|_____|_|___|_____|
TonUINO Version 3.1 - refactored by Boerge1

created by Thorsten Vo� and licensed under GNU/GPL.
Information and contribution at https://tonuino.de.

V3.1.2 03.03.23

Version: 2
Max Vol: 25
Min Vol: 5
Init Vol: 15
EQ: 1
Locked: 0
Sleep Timer: 0
Inverted Vol Buttons: 1
Admin Menu locked: 0
Admin Menu Pin: 1111
Pause when card removed: 0
Volume: 15
Firmware Version: 0x92 = v2.0
enter Idle
Command: 6
enqueue mp3 262 0
play mp3 262
Card Inserted
Data on Card:  31 73 3b 74 02 02 03 00 00
enter StartPlay
enqueue mp3 262 0
play mp3 262
44 files in folder 2
enqueue 2-1
enqueue 2-2
enqueue 2-3
enqueue 2-4
enqueue 2-5
enqueue 2-6
enqueue 2-7
enqueue 2-8
enqueue 2-9
enqueue 2-10
enqueue 2-11
enqueue 2-12
enqueue 2-13
enqueue 2-14
enqueue 2-15
enqueue 2-16
enqueue 2-17
enqueue 2-18
enqueue 2-19
enqueue 2-20
enqueue 2-21
enqueue 2-22
enqueue 2-23
enqueue 2-24
enqueue 2-25
enqueue 2-26
enqueue 2-27
enqueue 2-28
enqueue 2-29
enqueue 2-30
enqueue 2-31
enqueue 2-32
enqueue 2-33
enqueue 2-34
enqueue 2-35
enqueue 2-36
enqueue 2-37
enqueue 2-38
enqueue 2-39
enqueue 2-40
enqueue 2-41
enqueue 2-42
enqueue 2-43
enqueue 2-44
shuffled 39
shuffled 33
shuffled 30
shuffled 9
shuffled 42
shuffled 12
shuffled 16
shuffled 22
shuffled 10
shuffled 11
shuffled 6
shuffled 38
shuffled 13
shuffled 29
shuffled 23
shuffled 26
shuffled 7
shuffled 27
shuffled 25
shuffled 41
shuffled 44
shuffled 15
shuffled 18
shuffled 14
shuffled 21
shuffled 35
shuffled 4
shuffled 8
shuffled 31
shuffled 24
shuffled 20
shuffled 32
shuffled 40
shuffled 43
shuffled 34
shuffled 2
shuffled 19
shuffled 1
shuffled 17
shuffled 37
shuffled 28
shuffled 5
shuffled 36
shuffled 3
enter Play
play 2-39
Card Removed
Button raw: 3
Command: 7
enter Pause
Card Inserted
Data on Card:  31 73 3b 74 02 02 03 00 00
enter StartPlay
enqueue mp3 262 0
play mp3 262
44 files in folder 2
enqueue 2-1
enqueue 2-2
enqueue 2-3
enqueue 2-4
enqueue 2-5
enqueue 2-6
enqueue 2-7
enqueue 2-8
enqueue 2-9
enqueue 2-10
enqueue 2-11
enqueue 2-12
enqueue 2-13
enqueue 2-14
enqueue 2-15
enqueue 2-16
enqueue 2-17
enqueue 2-18
enqueue 2-19
enqueue 2-20
enqueue 2-21
enqueue 2-22
enqueue 2-23
enqueue 2-24
enqueue 2-25
enqueue 2-26
enqueue 2-27
enqueue 2-28
enqueue 2-29
enqueue 2-30
enqueue 2-31
enqueue 2-32
enqueue 2-33
enqueue 2-34
enqueue 2-35
enqueue 2-36
enqueue 2-37
enqueue 2-38
enqueue 2-39
enqueue 2-40
enqueue 2-41
enqueue 2-42
enqueue 2-43
enqueue 2-44
shuffled 37
shuffled 26
shuffled 12
shuffled 9
shuffled 43
shuffled 40
shuffled 15
shuffled 36
shuffled 44
shuffled 24
shuffled 32
shuffled 34
shuffled 41
shuffled 38
shuffled 23
shuffled 31
shuffled 21
shuffled 13
shuffled 11
shuffled 4
shuffled 20
shuffled 19
shuffled 3
shuffled 8
shuffled 42
shuffled 17
shuffled 7
shuffled 27
shuffled 2
shuffled 10
shuffled 33
shuffled 29
shuffled 18
shuffled 16
shuffled 39
shuffled 35
shuffled 22
shuffled 30
shuffled 25
shuffled 28
shuffled 1
shuffled 14
shuffled 5
shuffled 6
enter Play
play 2-37
Card Removed
Button raw: 3
Command: 7
enter Pause
Card Inserted
Data on Card:  31 73 3b 74 02 02 03 00 00
enter StartPlay
enqueue mp3 262 0
play mp3 262
44 files in folder 2
enqueue 2-1
enqueue 2-2
enqueue 2-3
enqueue 2-4
enqueue 2-5
enqueue 2-6
enqueue 2-7
enqueue 2-8
enqueue 2-9
enqueue 2-10
enqueue 2-11
enqueue 2-12
enqueue 2-13
enqueue 2-14
enqueue 2-15
enqueue 2-16
enqueue 2-17
enqueue 2-18
enqueue 2-19
enqueue 2-20
enqueue 2-21
enqueue 2-22
enqueue 2-23
enqueue 2-24
enqueue 2-25
enqueue 2-26
enqueue 2-27
enqueue 2-28
enqueue 2-29
enqueue 2-30
enqueue 2-31
enqueue 2-32
enqueue 2-33
enqueue 2-34
enqueue 2-35
enqueue 2-36
enqueue 2-37
enqueue 2-38
enqueue 2-39
enqueue 2-40
enqueue 2-41
enqueue 2-42
enqueue 2-43
enqueue 2-44
shuffled 29
shuffled 24
shuffled 34
shuffled 21
shuffled 1
shuffled 39
shuffled 40
shuffled 15
shuffled 38
shuffled 19
shuffled 41
shuffled 9
shuffled 30
shuffled 16
shuffled 3
shuffled 8
shuffled 28
shuffled 27
shuffled 18
shuffled 43
shuffled 44
shuffled 4
shuffled 5
shuffled 12
shuffled 17
shuffled 42
shuffled 36
shuffled 32
shuffled 20
shuffled 26
shuffled 37
shuffled 35
shuffled 23
shuffled 14
shuffled 6
shuffled 25
shuffled 10
shuffled 33
shuffled 7
shuffled 11
shuffled 2
shuffled 22
shuffled 31
shuffled 13
enter Play
play 2-29
Card Removed
Button raw: 3
Command: 7
enter Pause

Ok, es liegt also am DFPlayer. Vielleicht verträgt er nicht, das kurz vorher das Pling abgespielt wird. Kommentiere doch mal die Zeile 635 in state_machine.cpp aus:

void StartPlay::entry() {
  LOG(state_log, s_info, str_enter(), str_StartPlay());
  //mp3.enqueueMp3FolderTrack(mp3Tracks::t_262_pling);
}

Und schau mal, ob es dann geht.

Habe ich gemacht. Es piepst nicht mehr vorm Trackstart (Also wie gewünscht), aber es ist immer noch das erste Lied aus dem Ordner jedes Mal.

EDIT: Ich habe es nochmal mit der anderen Firmware ausprobiert, also dieser:
TonUINO - Die DIY Musikbox (nicht nur) für Kinder und es funktioniert nach wie vor wie es soll (Bis auf das nette piep, dass da nicht kommt)

Ok, dann bleibt ja wirklich nur noch, dass bei deinem Player die DFPlayer Library 1.1.0 nicht geht.
Es gibt schon die Version 1.1.1. Kannst du mal versuchen, ob es damit geht? Also einfach die Datei plattfomio.ini ändern.
Wenn das auch nicht geht, mache ich mal einen Branch, der dann die 1.0.7 verwendet.

Ach ja, eigentlich müssten auch Karten mit von/bis Modi und mit Einzelmodus nicht gehen. Kannst das ja mal ausprobieren.

Jetzt bin ich verwirrt. 1.1.0 und 1.1.1 zeigen das gleiche Verhalten ohne auskommentiertem Blip.
Mit auskommentiertem Blip ergibt sich folgendes Verhalten:

  1. Auflegen → Erstes Lied spielt (D’OH)
  2. Auflegen → Zufälliges Lied spielt (OK)
  3. Auflegen → Erstes Lied spielt (D’OH)
  4. Auflegen → zufälliges Lied spielt (OK)
    usw. → Zedes zweite Auflegen macht das Ding das Richtige.

gleiches Verhalten bei Einzelmodus und Von-Bis.

1.0.7 konnte ich nicht ausprobieren, da ich beim Kompilieren einen Fehler bekomme weil irgendwelche Funktionen die aufgerufen werden anscheinend nicht in der Library implementiert sind.

Sanity Check mit der Standardsoftware habe ich auch nochmals durchgeführt und da geht alles wie erwartet.

Ja, ich mache dann einen Branch für die 1.0.7 fertig. Heute komme ich aber nicht mehr dazu. Oder du versuchst das selbst. In den Callback Funktionen muss jeweils immer nur der erste Parameter entfernt werden.