Adafruit Musik Maker Shield freezing

Jurs,
I followed your recommendations but it did not seem to make much of a difference. Instead, I noticed that if I stopped the player, then waited for a second before toggling the next track, the player was more stable and did not freeze. So I added a pause after the instruction to stop the player. The pause had to be at least 1000ms for me to see a difference in stability. Do you know why this might be?
Kidd

*************************************************** 
 * This is an example for the Adafruit VS1053 Codec Breakout
 * 
 * Designed specifically to work with the Adafruit VS1053 Codec Breakout 
 * ----> https://www.adafruit.com/products/1381
 * 
 * Adafruit invests time and resources providing this open source code, 
 * please support Adafruit and open-source hardware by purchasing 
 * products from Adafruit!
 * 
 * Written by Limor Fried/Ladyada for Adafruit Industries.  
 * BSD license, all text above must be included in any redistribution
 ****************************************************/
// This code modified by Kidd in order to determine if player can play a file while the 
//loop continues to function and the instructions to the GPIO pins work.

// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>

// define the pins used
//#define CLK 13       // SPI Clock, shared with SD card
//#define MISO 12      // Input data, from VS1053/SD card
//#define MOSI 11      // Output data, to VS1053/SD card
// Connect CLK, MISO and MOSI to hardware SPI pins. 
// See http://arduino.cc/en/Reference/SPI "Connections"

// These are the pins used for the breakout example
#define BREAKOUT_RESET  9      // VS1053 reset pin (output)
#define BREAKOUT_CS     10     // VS1053 chip select pin (output)
#define BREAKOUT_DCS    8      // VS1053 Data/command select pin (output)
// These are the pins used for the music maker shield
#define SHIELD_RESET  -1      // VS1053 reset pin (unused!)
#define SHIELD_CS     7      // VS1053 chip select pin (output)
#define SHIELD_DCS    6      // VS1053 Data/command select pin (output)

// These are common pins between breakout and shield
#define CARDCS 4     // Card chip select pin
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3       // VS1053 Data request, ideally an Interrupt pin
#define PAUSE 1000

Adafruit_VS1053_FilePlayer musicPlayer = 
// create breakout-example object!
//Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS);
// create shield-example object!
Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);

void setup() {
  Serial.begin(9600);
  Serial.println(F("Adafruit VS1053 Simple Test"));
  Serial.println(F("Modified by Kidd for radio restoration"));
  Serial.println(F("Select a track number on the keyboard and press ENTER"));
  
 
  

  if (! musicPlayer.begin()) { // initialise the music player
    Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
    while (1);
  }
  Serial.println(F("VS1053 found"));

  SD.begin(CARDCS);    // initialise the SD card

  // Set volume for left, right channels. lower numbers == louder volume!
  musicPlayer.setVolume(10,10);

  // Timer interrupts are not suggested, better to use DREQ interrupt!
  //musicPlayer.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int

  // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
  // audio playing
  musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int


}

void loop() {

  
  if (Serial.available()) {
    char c = Serial.read();

    // if we get an 's' on the serial console, stop!
    if (c == 's') {
      musicPlayer.stopPlaying();
    }

    // if we get an 'p' on the serial console, pause/unpause!
    if (c == 'p') {
      if (! musicPlayer.paused()) {
        Serial.println("Paused");
        musicPlayer.pausePlaying(true);
      } 
      else { 
        Serial.println("Resumed");
        musicPlayer.pausePlaying(false);
      }
    }
    //Play track 001 if serial "1"input on monitor
    if (c == '1') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE); //Added for stability
     
      musicPlayer.startPlayingFile("track001.mp3");
      Serial.println(F("Playing track 001"));
      c=='0'; // Reset variable c so it is not '1' when loop swings around or track 001
      // will start repeatedly and freeze
    }
    if (c=='2') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
      
      musicPlayer.startPlayingFile("track002.mp3");
      Serial.println(F("Playing track 002"));
      c=='0';
    }
    if (c=='3') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
      
      musicPlayer.startPlayingFile("track003.m4a");
      Serial.println(F("Playing track 003"));
      c=='0';
    }
    if (c=='4') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
      
      musicPlayer.startPlayingFile("track004.m4a");
      Serial.println(F("Playing track 004"));
      c=='0';
    }
    if (c=='5') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
      
      musicPlayer.startPlayingFile("track005.m4a");
      Serial.println(F("Playing track 005"));
      c=='0';
    }
    if (c=='6') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
     
      musicPlayer.startPlayingFile("track006.m4a");
      Serial.println(F("Playing track 006"));
      c=='0';
    }
    if (c=='7') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
      
      musicPlayer.startPlayingFile("track007.m4a");
      Serial.println(F("Playing track 007"));
      c=='0';
    }
    if (c=='8') {
      musicPlayer.stopPlaying();
      Serial.println(F("Player stopping."));
      delay(PAUSE);
     
      musicPlayer.startPlayingFile("track008.m4a");
      Serial.println(F("Playing track 008"));
      c=='0';
    }

  }
}