/* * SDWavPlayer * * Created: Chip Audette, OpenAudio, Dec 2019 * Based On: WaveFilePlayer from Paul Stoffregen, PJRC, Teensy * * Play back a WAV file * * This is the basic WAV file player, adapted from the Tympan library. * See also WAVFilePlayer and WAVFilePlayer2 Bob * * For access to WAV files, please visit https://www.pjrc.com/teensy/td_libs_AudioDataFiles.html. * */ #include "OpenAudio_ArduinoLibrary.h" #include "AudioSDPlayer_F32.h" //set the sample rate and block size const float sample_rate_Hz = 44100.0f; const int audio_block_samples = 128; // Must be 128 for SD recording. AudioSettings_F32 audio_settings(sample_rate_Hz, audio_block_samples); //create audio objects AudioSDPlayer_F32 audioSDPlayer(audio_settings); AudioOutputI2S_F32 audioOutput(audio_settings); //create audio connections AudioConnection_F32 patchCord1(audioSDPlayer, 0, audioOutput, 0); AudioConnection_F32 patchCord2(audioSDPlayer, 1, audioOutput, 1); AudioControlSGTL5000 sgtl5000_1; // Use these with the Teensy 4.x Rev D Audio Shield #define SDCARD_CS_PIN 10 #define SDCARD_MOSI_PIN 11 #define SDCARD_SCK_PIN 13 void setup() { Serial.begin(300); delay(1000); Serial.println("### SDWavPlayer ###"); Serial.print("Audio Sample Rate (Hz): "); Serial.println(audio_settings.sample_rate_Hz); Serial.print("Audio Block Size (samples): "); Serial.println(audio_settings.audio_block_samples); // Audio connections require memory to work. AudioMemory_F32(20, audio_settings); sgtl5000_1.enable(); audioOutput.setGain(0.05); // Volume control 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(1000); } } //prepare SD player audioSDPlayer.begin(); //finish setup delay(1000); //stall a second Serial.println("Setup complete."); } void loop() { //service the audio player if (!audioSDPlayer.isPlaying()) { //wait until previous play is done //start playing audio Serial.println("Starting audio player: SDTEST1.WAV"); audioSDPlayer.play("SDTEST1.WAV"); } delay(500); }