Tryibng to play sound from an SD card

Hello, I’m trying to get sound to play from an SD card on my Adafruit music maker feather wing. The board came with no instructions but I was able to find and follow this tutorial online: Adafruit music maker with arduino uno tutorial - YouTube

I followed these steps exactly and was sure to use a high-quality SD card, as well as name my files correctly following the format they told me to use - track001.mp3. However, I cannot get the audio file to play and I am seeing glitchy serial output. I’m trying to hook it up to a regular arduino (not a nano) and I suspect there may be some kind of connection issue or a communication problem between the boards.

I almost got it to work one time (it printed “MP3 Music Player” to the serial output) but it didn’t play any music and when I pressed the reset button on the arduino it went right back to the glitchy output which looks like this: ⸮⸮X⸮:spades:⸮⸮

Here is a copy of the code I’m using:

// Adafruit Music Maker FeatherWing tutorial
// Product reference :
// Lib reference :

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

 * Music Player => Arduino
 * MISO -> 12
 * MOSI -> 11
 * CLK  -> 13
 * Pin 2 (left side, when sd card down towards you) -> 3.3v 
 * Pin 4 -> GND
 * MIDI pin -> 2

// These are the pins used
#define VS1053_RESET   -1     // VS1053 reset pin (not used!)
#define VS1053_CS       7     // MP3CS  VS1053 chip select pin (output)
#define VS1053_DCS      6     // XDCS   VS1053 Data/command select pin (output)
#define CARDCS          4     // SDCS   Card chip select pin
#define VS1053_DREQ     3     // DREQ   VS1053 Data request, ideally an Interrupt pin

Adafruit_VS1053_FilePlayer musicPlayer =  Adafruit_VS1053_FilePlayer(VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ, CARDCS);

void setup() 
    // MIDI pin should not be floating, and set to digital 1
    pinMode(2, OUTPUT);
    digitalWrite(2, HIGH);

    Serial.println("MP3 Music Player");
    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"));
    if (!SD.begin(CARDCS)) 
      Serial.println(F("SD failed, or not present"));
      while (1);  
    Serial.println("SD OK!");
    // Set volume for left, right channels. lower numbers == louder volume!
    // personnal guidelines: 0 : max volume, 50 : really not loud, 15-ish is good
    musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
    // Play a file in the background, REQUIRES interrupts!
    Serial.println(F("Playing full track 001"));
    Serial.println(F("Playing track 002 in 2s"));
    Serial.println(F("s for stop, p for pause/resume"));

void loop() 
    // File is playing in the background
    if (musicPlayer.stopped()) 
        Serial.println("Done playing music");
        while (1) 
            delay(10);  // we're done! do nothing...
    if (Serial.available()) 
      char c =;
      // if we get an 's' on the serial console, stop!
      if (c == 's') 
      // if we get an 'p' on the serial console, pause/unpause!
      if (c == 'p') 
            if (! musicPlayer.paused())


Can anyone tell me what I’m doing wrong or if my suspicions are correct about the connection issue? I’m using a bunch of jumper wires to connect to my arduino board and starting to think they might be part of the problem however I have triple checked my wiring and they all seem to be connected to the right pins. Any help is greatly appreciated.

When you initialize Serial, you need to wait until it is ready before printing. In setup()

    while( !Serial );

This way, you should always see "MP3 Music Player" on the serial monitor (assuming you have to set correctly to 115200 baud

is the serial monitor also using baud rate of 115200 ?

perhaps try bring it to a lower speed and also change the line of code that sets the speed in the sketch to match. It looks like a miss-matched baud rate.