I have teensy 3.5 and I'm trying to get this sample to work on my board.
Looks like for some reason, if play method is called teensy somehow hangs. I can't print anything to serial and so on.
I'm trying to play it on internal DAC from built-in sd card reader.
I tried multiple computers, sd cards and teensy boards so something must be very wrong somewhere.
I got this to work back in december 2018, and when I'm using computer which was used back then (so with older version of teensy and arduino), it still works.
But if I try the same code somewhere else, it does not work
Can anyone help with that/try if this is working for them?
I might be missing something obvious here, but I tried many things before posting here.
I'm using arduino 1.8.9
Here is the code:
// Simple WAV file player example
// Three types of output may be used, by configuring the code below.
//   1: Digital I2S - Normally used with the audio shield:
//         http://www.pjrc.com/store/teensy3_audio.html
//   2: Digital S/PDIF - Connect pin 22 to a S/PDIF transmitter
//         https://www.oshpark.com/shared_projects/KcDBKHta
//   3: Analog DAC - Connect the DAC pin to an amplified speaker
//         http://www.pjrc.com/teensy/gui/?info=AudioOutputAnalog
// To configure the output type, first uncomment one of the three
// output objects.  If not using the audio shield, comment out
// the sgtl5000_1 lines in setup(), so it does not wait forever
// trying to configure the SGTL5000 codec chip.
// The SD card may connect to different pins, depending on the
// hardware you are using.  Uncomment or configure the SD card
// pins to match your hardware.
// Data files to put on your SD card can be downloaded here:
//   http://www.pjrc.com/teensy/td_libs_AudioDataFiles.html
// This example code is in the public domain.

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

AudioPlaySdWav           playWav1;
// Use one of these 3 output types: Digital I2S, Digital S/PDIF, or Analog DAC
//AudioOutputI2S           audioOutput;
//AudioOutputSPDIF       audioOutput;
AudioOutputAnalog      audioOutput;
AudioConnection          patchCord1(playWav1, 0, audioOutput, 0);
AudioConnection          patchCord2(playWav1, 1, audioOutput, 1);
AudioControlSGTL5000     sgtl5000_1;

// Use these with the Teensy Audio Shield
//#define SDCARD_CS_PIN    10
//#define SDCARD_MOSI_PIN  7
//#define SDCARD_SCK_PIN   14

// Use these with the Teensy 3.5 & 3.6 SD card
#define SDCARD_MOSI_PIN  11  // not actually used
#define SDCARD_SCK_PIN   13  // not actually used

// Use these for the SD+Wiz820 or other adaptors
//#define SDCARD_CS_PIN    4
//#define SDCARD_MOSI_PIN  11
//#define SDCARD_SCK_PIN   13

void setup() {

  // Audio connections require memory to work.  For more
  // detailed information, see the MemoryAndCpuUsage example

  if (!(SD.begin(SDCARD_CS_PIN))) {
    // stop here, but print a message repetitively
    while (1) {
      Serial.println("Unable to access the SD card");

void playFile(const char *filename)
  Serial.print("Playing file: ");

  // Start playing the file.  This sketch continues to
  // run while the file plays.

  // A brief delay for the library read WAV info

  // Simply wait for the file to finish playing.
  while (playWav1.isPlaying()) {

void loop() {
  playFile("ACDC.WAV");  // filenames are always uppercase 8.3 format