Sounds von der SD mit Due abspielen - Spulfunktion fehlerhaft

Hallo! Ich versuche momentan mit dem Due Sounds (Turrican-II-Soundtrack) von einer SD abzuspielen. Dabei habe ich eine SD mit CS an Pin 9 und einen Stecker, der hinten beim AUX-Input von meinem CD-Player reinkommt als Hardware. (OK, ein TFT ist auch noch dran, aber nur für die SD) Ich habe das Beispiel dieser Audio-Library ausprobiert und es hat geklappt. Darum habe ich sie etwas verändert, um über ein + und - im seriellen Monitor spulen zu können:

/*
  Simple Audio Player

 Demonstrates ...

*/

#include <SD.h>
#include <SPI.h>
#include <Audio.h>

void setup() {
  // debug output at 9600 baud
  Serial.begin(9600);

  // setup SD-card
  Serial.print("Initializing SD card...");
  if (!SD.begin(9)) {
    Serial.println(" failed!");
    while(true);
  }
  Serial.println(" done.");
  // hi-speed SPI transfers

  // 44100kHz stereo => 88200 sample rate
  // 100 mSec of prebuffering.
  Audio.begin(88200, 100);
}

void loop() {
  int count = 0;

  // open wave file from sdcard
  File myFile = SD.open("test.wav");
  if (!myFile) {
    // if the file didn't open, print an error and stop
    Serial.println("error opening test.wav");
    while (true);
  }

  const int S = 1024; // Number of samples to read in block
  short buffer[S];

  Serial.print("Playing");
  // until the file is not finished
  while (myFile.available()) {
    // read from the file into buffer
    myFile.read(buffer, sizeof(buffer));

    // Prepare samples
    int volume = 1024;
    Audio.prepare(buffer, S, volume);
    // Feed samples to audio
    Audio.write(buffer, S);

    // Every 100 block print a '.'
    count++;
    if (count == 100) {
      Serial.print(".");
      count = 0;
    }
    //ab hier anders:
    while(Serial.available()){
      char ch = Serial.read();
      Serial.write(ch);
      delay(50);
      int i = ch == '+' ? 1000000 : (ch == '-' ? -1000000 : 0);
      myFile.seek(max(0, myFile.position() + i));
      if(!Serial.available()){
        Serial.println();
      }
    }
  }
  myFile.close();

  Serial.println("End of file. Thank you for listening!");
  while (true) ;
}

Wenn ich einfach nur ein + oder - eingebe, klappt es. Aber wenn ich so um die 10 oder mehr + eingebe, stückelt der Due irgendwie die Musik. Dann ist es so, als würde 20 Mal oder so die Musik pausiert und wieder abgespielt wird. Dadurch hat dann die Musik halbe Geschwindigkeit. Da ich selber ein gutes Ohr für Musik habe, halte ich das maximal 30 Sekunden ohne ausrasten aus. Kann mir jemand helfen? Ich kann, bei Bedarf, auch eine Audio-Datei von dem, was die Boxen ausspucken, schicken.

Liegt wohl daran, weil er nach jedem "+" das überträgt und startet.

Du musst die "+" zusammenzählen und erst wenn eine bestimmte Pausenlänge abgelaufen ist, die Anzahl weiter geben.

Also es spult schon, aber danach, nachdem (auch mit debug überprüft) alle + verarbeitet sind, macht er diesen Mist mit dem Rumgestückel.
Und es liegt auch nicht daran, dass es mehr als ein + ist, denn +++ geht.

Oh, jetzt mag er nicht mal ein einziges +

Jetzt verstehe ich garnichts mehr: Wenn ich irgendwie im Programm Serial.read() oder readString() oder wat-weiß-ich zum Lesen des seriellen Ports verwende, hapert es von da an. Z.B. habe ich versucht, den Dateinamen zum Abspielen einzugeben und was passiert? Es s t ü c k e l t wie blöde. Auch wenn ich einen Teil des Turrican-II-Soundtracks nehme, der etwa 3 Minuten lang geht, den der µC auch vernünftig abspielt und am Ende etwas hinschreibe, was wartet, bis irgendwelche Daten (in dem Fall das \n beim nichts-senden im Modus "Neue Zeile") da sind und sie dann alle liest, bis sie weg sind, dann s t ü c k e l t es ab der Wiederholung.