  ****************************************************/
 void setup() {
   Serial.begin(14400);
+  while (!Serial);
   Serial.println("MusicBox setup");
   
   // INT pin requires a pullup;

  trellis.writeDisplay();
}

void playAlbumNew(byte index) {
  switch (index) {
    case 0: player.startPlayingFile("track001.mp3"); break;
    case 1: player.startPlayingFile("track002.mp3"); break;
    case 2: player.startPlayingFile("track003.mp3"); break;
    case 3: player.sineTest(0x44, 500); break;
  }
}

void stopPlayingAlbum() {
  player.stopPlaying();
  delay(20);
}

}

void onKey(byte index) {
  // Same key pressed again
  if (state == PLAY_SELECTED && playingAlbum == index) {
    stopPlaying();
    onStop();

  // Some (other) key pressed
  } else {
    blinkSelected(index);
    if (state == PLAY_SELECTED) stopPlaying();
    openNewAlbum(index);
    if (playNextTrack()) {
      Serial.print("Playing album #"); Serial.println(index);
      state = PLAY_SELECTED;
      playingAlbum = index;
    } else {
      if (album && album.isDirectory()) album.close();
      Serial.print("Failed album #"); Serial.println(index);
      initializeTrellis(1200);
      state = IDLE_LIGHT_UP;
      nextLED = 0;
    }
  }
}

void onStop() {
  if (playNextTrack()) {
    Serial.print("Playing next track album #"); Serial.println(playingAlbum);
    blinkSelected(playingAlbum);
    state = PLAY_SELECTED;
  } else {
    if (album && album.isDirectory()) album.close();
    Serial.print("Ended album #"); Serial.println(playingAlbum);
    initializeTrellis(1200);
    state = IDLE_LIGHT_UP;
    nextLED = 0;
  }
}

void blinkSelected(byte index) {
