Modifikationskarte Single repeat Fehler im Partymodus

Wenn im Partymodus die Modifikationskarte Singel repeat (Aktuellen Titel endlos wiederholen) aufgelegt wird, wiederholt sich nicht der aktuelle Track, sondern ein anderer. Nach einfügen einer Abfrage des Abspielmodus konnte der Fehler beseitigt werden und es wird der richtige Track abgespielt.
Hier die Codeänderung

class RepeatSingleModifier: public Modifier 
{
  public:
    virtual bool handleNext() 
    {
      Serial.println(F("== RepeatSingleModifier::handleNext() -> REPEAT CURRENT TRACK"));
      delay(50);
      if (isPlaying()) return true;
      if (myFolder->mode == 3 || myFolder->mode == 9)             // Partymodus oder Spezialmodus-Party
      {
       // Serial.println(F("=== RepeatSingleModifier-Party"));
        mp3.playFolderTrack(myFolder->folder, queue[currentTrack-1]);
      }
      else
      {
      // Serial.println(F("=== RepeatSingleModifier-and-Modus"));
      mp3.playFolderTrack(myFolder->folder, currentTrack);
      }
      _lastTrackFinished = 0;
      return true;
    }
    RepeatSingleModifier() 
    {
      Serial.println(F("=== RepeatSingleModifier()"));
    }
    uint8_t getActive() 
    {
      Serial.println(F("== RepeatSingleModifier::getActive()"));
      return 6;
    }
};

Dazu habe ich vor einigen Wochen schon ein Pullrequest gemacht. https://github.com/xfjx/TonUINO/pull/69 Hast du auch nur die If-Abfrage und queue[currentTrack-1] ergänzt?

Im Prinzip ja. Dieser Teil des Codes wurde von mir eingefügt.

 if (myFolder->mode == 3 || myFolder->mode == 9)             // Partymodus oder Spezialmodus-Party
      {
       // Serial.println(F("=== RepeatSingleModifier-Party"));
        mp3.playFolderTrack(myFolder->folder, queue[currentTrack-1]);
      }
      else
      {

Ich wuste nicht, dass da schon eine Lösung existiert. Aber unsere Lösung ist ja absolut identisch. Also " Zwei Doofe-Ein Gedanke" :joy: :joy: :joy:

Wäre ja gut, wenn es dann im Quellcode geändert wäre. Dann muss das nicht jeder machen.

Ich hab irgendwo einen Rework, mit dem für alle Modi die Queue verwendet wird das macht den Code insgesamt einfacher, und dieser Bug wäre damit auch behoben. Ich werde einen Pull request erstellen.

Dann beziehe dich mit deinem Pullrequest am besten auch auf den von mir gemeldeten Issue. Man braucht ja nicht beide Korrekturen.

Frage. Wenn nur noch die Queue für alle Modi verwendet wird, wird dann für die Modi, in denen die Reihenfolge der Tracks nach der Nummerierung geht, eine Queue erstellt in der dann auch die Reihenfolge korrekt ist?

Warum sollte das nicht so sein? Ich habe in meinem Fork quasi schon immer für alle Modi eine „playlist“ in der sich nur vor oder (beim skippen) zurück bewegt wird. Das macht alles robuster weil man sich nur in einem Array hin und her bewegt. Kannste dir ja mal angucken wie das dann aussieht.

Genau. Bei n Titeln wird eine wie
Queue von 1…n gefüllt. Soll es random sein, wird die durchgewürfelt, und sonst halt nicht.

Ja, super. Das werde ich mal ausprobieren. Danke für die schnelle Antwort.

Ich hab Mal geschaut. Wenn die Queue immer verwendet wird, werden nur max 255 Titel je Order unterstützt. Mir ist das egal, aber andere könnten das nutzen. Man kann das Limit auch etwas anheben, aber dann wird die RAM-Nutzung grenzwertig.
Wenn ich mal Zeit hab, gucke ich, ob man die Queue durch einen PRNG ersetzen kann.

Mehr MP3s passen ja auch nicht in einen Ordner. Von daher ja ausreichend.

Es gibt ja die Möglichkeit die ersten paar Ordner als langordner zu machen. Da gibt’s dann vierstellige tracknummern.

Aber mir sieht’s nicht aus, als würde die bisherige Software das unterstützen. Höchstens im Album-Modus könnte das gehen.
Ich hab den Code gepusht, könnt ihr ja mal ansehen.


Ich hab’s nicht sonderlich getestet, ich benutze nur „PartyRandom“-Karten.

Die Änderung ist jetzt in die offizielle DEV übernommen worden.