Ordner wiederholen

Hallo @ClausiusMaximus
Ich habe mir mal dahingehend gedanken gemacht. Man kann das über ein Modifier machen. Das besondere ist, dass dieses Modifier neben einem anderen Modifier parallel laufen kann, was normalerweise nicht möglich ist. Bei meiner Lösung, muss zuerst das EndlessPlayQueue Modifier gestartet werden und dann kann zusätzlich z.B.das Schlummermodus Modifier gestartet werden. Diese Reihenfolge ist wichtig. Machst du es anders herum, schaltet das EndlessPlayQueue Modifier den Schlummermodus wieder aus. Eine Besonderheit ist noch, dass das EndlessPlayQueue Modifier nur durch das Abschalten des Tonuino wieder deaktiviert wird. Aber in deiner Wunschverwendung wird der Tonuino ja durch den Schlummermodus ausgeschaltet. Dieses Modifier habe ich für den Albummodus, Albummodus-Spezial-Von-Bis, und den Hörbuchmodus eingebunden. Der Partymodus braucht das nicht, da er am Ende der Queue sowieso neu mischt und neu beginnt.

Hier die Codeabschnitte, die du Ändern, bzw. ergänzen musst. Das bezieht sich auf meinen Fork alwaysQueue. In einem anderen Fork müsste das ggf. angepasst werden.

Zuerst eine bool Variable in den Deklarationen der Variablen am Scetchanfang einfügen
bool EndlessPlay = false;

Dann die Abspielmodi wie folgt ergänzen, bzw. ändern,
Im Albummodus , so:

    case 2: //Album
    case 7: //Album-SpezialVonBis
//#ifdef Konsole
        Serial.print("idx: ");
        Serial.print(currentQueueIndex);
        Serial.print(" --> ");
//#endif
if((currentQueueIndex + Steps) < queueSize)                 // wenn Queueindex plus Sprung unter queueSize
currentQueueIndex = (currentQueueIndex + Steps);            // Weiterspringen in der Queue

    else                                                    // wenn Queueindex plus Sprung gleich oder größer queueSize
    {
     currentQueueIndex = (queueSize -1);                    // Gehe zum Ende der queue

     if(EndlessPlay)                                                // wenn EndlessPlay aktiviert
      {
        bStop = false ;                                             // kein Stop am Ende der Queue
        currentQueueIndex = (0);                                    // Index auf Anfang der Queue
      }
    else                                                            // EndlessPlay nicht aktiviert
        bStop = true;                                               // Stop am Ende der Queue
 //#ifdef Konsole
      Serial.println(currentQueueIndex);
      Serial.println(F(" - EoQ"));   
 //#endif
    }     
     
     Steps = 1;                                             // Rücksetzen der Sprungweite auf 1 für Einzelschritt
      break;
// --------------------------------------

Im Hörbuchmodus, so:

    case 5: //Hoerbuch
#ifdef Konsole
     if (ResetHB == true) Serial.println ("next Track und Wiederholung Epromupdate nach HB Reset gesperrt");
#endif
//#ifdef Konsole
        Serial.print("idx: ");
        Serial.print(currentQueueIndex);
        Serial.print(" --> ");
//#endif
     if (ResetHB == false)                                    // Wenn nxtTrk und update EEProm HB nicht gesperrt
     { 
      if (currentQueueIndex + Steps < queueSize)              // Wenn Sprung unter Queue Ende bleibt
      {
        currentQueueIndex = currentQueueIndex + Steps;        // Weitersprung in Queue
        if (currentQueueIndex + Steps >= queueSize)           // Wenn Sprung Queue Ende erreicht oder Überschreitet
        {
         currentQueueIndex = (queueSize - 1);                 // index auf Ende der Queue setzen
        }
#ifndef AiO
        EEPROM.update(myFolder->folder, queue[currentQueueIndex]);  // Fortschritt im EEPROM abspeichern
#endif
#ifdef AiO
        EEPROM_update(myFolder->folder, queue[currentQueueIndex]);  // Fortschritt im EEPROM abspeichern
#endif
#ifdef Konsole
        Serial.println(F("Sp.-Fortschr."));
#endif
        Steps = 1;                                                  // Rücksetzen der Sprungweite auf 1 für Einzelschritt
        break;
      }
      else                                                          // Ende der Queue
      {
#ifndef AiO
         EEPROM.update(myFolder->folder, 1);                        // Fortschritt am Ende HB autom.zurücksetzen (Classik)
#endif
#ifdef AiO
        EEPROM_update(myFolder->folder, 1);                         // Fortschritt am Ende HB autom.zurücksetzen (AiO)
#endif
#ifdef Konsole
        Serial.println(F("Hörb->Anfang"));
#endif

     if(EndlessPlay)                                                // wenn EndlessPlay aktiviert
      {
        bStop = false ;                                             // kein Stop am Ende der Queue
        currentQueueIndex = (0);                                    // Index auf Anfang der Queue
      }
    else                                                            // EndlessPlay nicht aktiviert
        bStop = true;                                               // Stop am Ende der Queue
        
        Steps = 1;                                                  // Rücksetzen der Sprungweite auf 1 für Einzelschritt
        break;
      }
// --------------------------------------
    default:
      return; // do nothing
   }
   ResetHB = false;                                                // Rücksetzen Marker Hörbuch reset, Aufheben der Sperre
 }

Dann noch das Modifier. Ich habe bei mir der einfachheit halber, das single Repeat Modifier durch das das EndlessPlayQueue Modifier ersetzt. Du kannst natürlich auch ein eigenes Modifier dafür anlegen, musst dann nur das Adminmenü entsprechend erweitern. Hier der Code dafür:

//**** Modkarte ******** Titel endlos wiederholen *************************************
ändern in
//*********Modkarte******** EndlessPlayQueue **************************************

//**** Modkarte ******** EndlessPlayQueue *************************************

class RepeatSingleModifier: public Modifier
{
public:
  RepeatSingleModifier()
  {
#ifdef Konsole
      Serial.println(F("EndlessPlay-Queue"));
#endif

  EndlessPlay = true;
  }
};

Das Modifier macht nichts weiter als den Flag für EndlessPlay zu setzen.

Ich habs getestet, läuft soweit zur zufriedenheit.