// 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 #include #include #include #include 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_CS_PIN BUILTIN_SDCARD //#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() { Serial.begin(9600); // Audio connections require memory to work. For more // detailed information, see the MemoryAndCpuUsage example AudioMemory(8); // Comment these out if not using the audio adaptor board. // This may wait forever if the SDA & SCL pins lack // pullup resistors sgtl5000_1.enable(); sgtl5000_1.volume(0.5); SPI.setMOSI(SDCARD_MOSI_PIN); SPI.setSCK(SDCARD_SCK_PIN); if (!(SD.begin(SDCARD_CS_PIN))) { // stop here, but print a message repetitively while (1) { Serial.println("Unable to access the SD card"); delay(500); } } } void playFile(const char *filename) { Serial.print("Playing file: "); Serial.println(filename); // Start playing the file. This sketch continues to // run while the file plays. playWav1.play(filename); // A brief delay for the library read WAV info delay(5); // Simply wait for the file to finish playing. while (!playWav1.isStopped()) { if(playWav1.isPlaying()) { // play for 10 seconds delay(10000); } else if(playWav1.isPaused()) { // pause for 2 seconds delay(2000); } // toggle play/pause state playWav1.togglePlayPause(); Serial.println(filename); Serial.print("positionMillis() = "); Serial.println(playWav1.positionMillis()); Serial.print("lengthMillis() = "); Serial.println(playWav1.lengthMillis()); Serial.print("isPlaying() = "); Serial.println(playWav1.isPlaying()); Serial.print("isPaused() = "); Serial.println(playWav1.isPaused()); Serial.print("isStopped() = "); Serial.println(playWav1.isStopped()); Serial.println(); } } void loop() { playFile("SDTEST1.WAV"); // filenames are always uppercase 8.3 format delay(500); playFile("SDTEST2.WAV"); delay(500); playFile("SDTEST3.WAV"); delay(500); playFile("SDTEST4.WAV"); delay(1500); }