#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
AudioPlaySdRaw playWav[16];
AudioOutputAnalogStereo audioOutput;
AudioMixer4 mixer[5];
AudioConnection patchCord1(playWav[0], 0, mixer[0], 0);
AudioConnection patchCord2(playWav[1], 0, mixer[0], 1);
AudioConnection patchCord3(playWav[2], 0, mixer[0], 2);
AudioConnection patchCord4(playWav[3], 0, mixer[0], 3);
AudioConnection patchCord5(playWav[4], 0, mixer[1], 0);
AudioConnection patchCord6(playWav[5], 0, mixer[1], 1);
AudioConnection patchCord7(playWav[6], 0, mixer[1], 2);
AudioConnection patchCord8(playWav[7], 0, mixer[1], 3);
AudioConnection patchCord9(playWav[8], 0, mixer[2], 0);
AudioConnection patchCord10(playWav[9], 0, mixer[2], 1);
AudioConnection patchCord11(playWav[10], 0, mixer[2], 2);
AudioConnection patchCord12(playWav[11], 0, mixer[2], 3);
AudioConnection patchCord13(playWav[12], 0, mixer[3], 0);
AudioConnection patchCord14(playWav[13], 0, mixer[3], 1);
AudioConnection patchCord15(playWav[14], 0, mixer[3], 2);
AudioConnection patchCord16(playWav[15], 0, mixer[3], 3);
AudioConnection patchCord17(mixer[0], 0, mixer[4], 0);
AudioConnection patchCord18(mixer[1], 0, mixer[4], 1);
AudioConnection patchCord19(mixer[2], 0, mixer[4], 2);
AudioConnection patchCord20(mixer[3], 0, mixer[4], 3);
AudioConnection patchCord21(mixer[4], 0, audioOutput, 0);
AudioConnection patchCord22(mixer[4], 0, audioOutput, 1);
// 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
const char *files[] = {"FIRE1.raw", "FIRE2.raw", "FIRE3.raw", "FIRE4.raw", "RAIN1.raw", "RAIN2.raw", "RAIN3.raw", "RAIN4.raw",
"WIND1.raw", "WIND2.raw", "WIND3.raw", "WIND4.raw", "ANIMAL1.raw", "ANIMAL2.raw", "ANIMAL3.raw", "ANIMAL4.raw"};
float mix[4] = {};
void setup() {
delay(1000);
Serial.begin(9600);
Serial.println("Starting!");
AudioMemory(256);
audioOutput.analogReference(INTERNAL);
for(int i = 0; i < 5; ++i){
for(int j = 0; j < 4; ++j){
mixer[i].gain(j, 1);
}
}
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
if (!(SD.begin(SDCARD_CS_PIN))) {
while (1) {
Serial.println("Unable to access the SD card");
delay(500);
}
}
}
void playFileFromPlayer(const char *filename, int player)
{
Serial.print("Playing file: ");
Serial.println(filename);
// Start playing the file. This sketch continues to
// run while the file plays.
playWav[player].play(filename);
// A brief delay for the library read WAV info
delay(5);
Serial.println("Check!");
}
int counter = 0;
void loop() {
int one = millis();
for(int i = 0; i < 4; ++i){
if(!(playWav[i].isPlaying())){
playFileFromPlayer(files[i], i);
}
}
if(millis() - counter > 1000){
counter = millis();
digitalWrite(13, !digitalRead(13));
}
}