| #include <Audio.h> | |||||
| #include <SD.h> | |||||
| // Reducing this delay will attempt to play the files simultaneously. | |||||
| // The clips are about 3.0 to 3.4 seconds, even though the voice is | |||||
| // heard only for the about the first half second. | |||||
| const int milliseconds = 3500; | |||||
| // GUItool: begin automatically generated code | |||||
| AudioPlaySdWav playSdWav4; //xy=259,267 | |||||
| AudioPlaySdWav playSdWav3; //xy=260,218 | |||||
| AudioPlaySdWav playSdWav5; //xy=260,317 | |||||
| AudioPlaySdWav playSdWav6; //xy=261,369 | |||||
| AudioPlaySdWav playSdWav2; //xy=262,169 | |||||
| AudioPlaySdWav playSdWav1; //xy=263,118 | |||||
| AudioMixer4 mixer1; //xy=460,176 | |||||
| AudioMixer4 mixer2; //xy=571,271 | |||||
| AudioOutputI2S i2s1; //xy=763,245 | |||||
| AudioConnection patchCord1(playSdWav4, 0, mixer1, 3); | |||||
| AudioConnection patchCord2(playSdWav3, 0, mixer1, 2); | |||||
| AudioConnection patchCord3(playSdWav5, 0, mixer2, 1); | |||||
| AudioConnection patchCord4(playSdWav6, 0, mixer2, 2); | |||||
| AudioConnection patchCord5(playSdWav2, 0, mixer1, 1); | |||||
| AudioConnection patchCord6(playSdWav1, 0, mixer1, 0); | |||||
| AudioConnection patchCord7(mixer1, 0, mixer2, 0); | |||||
| AudioConnection patchCord8(mixer2, 0, i2s1, 0); | |||||
| AudioConnection patchCord9(mixer2, 0, i2s1, 1); | |||||
| AudioControlSGTL5000 sgtl5000_1; //xy=625,368 | |||||
| // GUItool: end automatically generated code | |||||
| // Use these with the Teensy 3.x Audio Shield (Rev C) | |||||
| #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 | |||||
| void setup() { | |||||
| AudioMemory(40); | |||||
| sgtl5000_1.enable(); | |||||
| sgtl5000_1.volume(0.6); | |||||
| mixer1.gain(0, 0.167); | |||||
| mixer1.gain(1, 0.167); | |||||
| mixer1.gain(2, 0.167); | |||||
| mixer1.gain(3, 0.167); | |||||
| mixer2.gain(0, 1.0); | |||||
| mixer2.gain(1, 0.167); | |||||
| mixer2.gain(2, 0.167); | |||||
| SPI.setMOSI(SDCARD_MOSI_PIN); | |||||
| SPI.setSCK(SDCARD_SCK_PIN); | |||||
| if (!(SD.begin(SDCARD_CS_PIN))) { | |||||
| // stop here if no SD card, but print a message repetitively | |||||
| while (1) { | |||||
| Serial.println("Unable to access the SD card"); | |||||
| delay(500); | |||||
| } | |||||
| } | |||||
| } | |||||
| AudioPlaySdWav * const playerlist[6] = { | |||||
| &playSdWav1, &playSdWav2, &playSdWav3, &playSdWav4, &playSdWav5, &playSdWav6 | |||||
| }; | |||||
| void playNumber(int n) | |||||
| { | |||||
| String filename = String("NUM") + n + ".WAV"; | |||||
| Serial.print("Playing File: "); | |||||
| Serial.println(filename); | |||||
| Serial.flush(); | |||||
| playerlist[n]->play(filename.c_str()); | |||||
| } | |||||
| void loop() { | |||||
| for (int i=1; i <= 6; i++) { | |||||
| playNumber(i); | |||||
| delay(milliseconds); | |||||
| } | |||||
| } |