  ****************************************************/
 
 #include <Wire.h>
+#include <SPI.h>
+#include <SD.h>
+#include <Adafruit_VS1053.h>
 #include <Adafruit_Trellis.h>
 
 #define NUMKEYS 4
 #define BLINK_DELAY 100
 #define READ_DELAY   50
 
-// Trellis wiring
+// Trellis pin setup
 #define INTPIN 1
+
+// Feather/Wing pin setup
+#define MUSIC_RESET   -1     // VS1053 reset pin (not used!)
+#define CARD_CS        5     // Card chip select pin
+#define MUSIC_CS       6     // VS1053 chip select pin (output)
+#define MUSIC_DCS     10     // VS1053 Data/command select pin (output)
+#define MUSIC_DREQ     9     // VS1053 Data request, ideally an Interrupt pin (not possible on 32u4)
 
 // States
 #define IDLE_LIGHT_UP 1

  // INT pin requires a pullup
  pinMode(INTPIN, INPUT_PULLUP);

  initializeTrellis(false);
}

void initializeTrellis(boolean delay) {
  trellis.begin(0x70);
  //trellis.readSwitches(); // ignore already pressed switches



  state = IDLE_LIGHT_UP;
  nextLED = 0;
  nextIdleTick = millis() + delay;
}

void initializeCard() {
  if (!SD.begin(CARD_CS)) {
    Serial.println(F("SD failed, or not present"));
    while (1);  // don't do anything more
  }
  Serial.println("SD OK!");
}

void initializePlayer() {
  if (!player.begin()) { 
     Serial.println(F("Couldn't find VS1053"));
     while (1);
  }
  Serial.println(F("VS1053 found"));
  player.softReset();
  player.sineTest(0x44, 500);    // Make a tone to indicate VS1053 is working

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

  // Timer interrupts are not suggested, better to use DREQ interrupt!
  // but we don't have them on the 32u4 feather...
  player.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int
}

void loop() {
