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.
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;
@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.
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
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
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.
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:
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.
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:
Auflegen → Erstes Lied spielt (D’OH)
Auflegen → Zufälliges Lied spielt (OK)
Auflegen → Erstes Lied spielt (D’OH)
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.