// Simple WAV file player example testing multi-file CPU load
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
#define USE_BOESING_PLAYER
#if defined(USE_BOESING_PLAYER)
#define AudioPlaySdWav AudioPlayWav // divert normal player to Frank's one
#endif // defined(USE_BOESING_PLAYER)
// GUItool: begin automatically generated code
AudioPlaySdWav track16; //xy=214,1053
AudioPlaySdWav track15; //xy=216,981
AudioPlaySdWav track14; //xy=219,915
AudioPlaySdWav track8; //xy=221,521
AudioPlaySdWav track13; //xy=221,843
AudioPlaySdWav track7; //xy=223,449
AudioPlaySdWav track12; //xy=223,776
AudioPlaySdWav track11; //xy=224,716
AudioPlaySdWav track6; //xy=226,383
AudioPlaySdWav track10; //xy=225,662
AudioPlaySdWav track9; //xy=226,603
AudioPlaySdWav track5; //xy=228,311
AudioPlaySdWav track4; //xy=230,244
AudioPlaySdWav track3; //xy=231,184
AudioPlaySdWav track2; //xy=232,130
AudioPlaySdWav track1; //xy=233,71
AudioMixer4 mixerR3; //xy=467,895
AudioMixer4 mixerL3; //xy=470,680
AudioMixer4 mixerR4; //xy=470,966
AudioMixer4 mixerL4; //xy=471,757
AudioMixer4 mixerR1; //xy=474,363
AudioMixer4 mixerL1; //xy=477,148
AudioMixer4 mixerR2; //xy=477,434
AudioMixer4 mixerL2; //xy=478,225
AudioMixer4 mixerL; //xy=733,522
AudioMixer4 mixerR; //xy=733,606
AudioOutputI2S i2s; //xy=907,572
AudioConnection patchCord1(track16, 0, mixerL4, 3);
AudioConnection patchCord2(track16, 0, mixerR4, 3);
AudioConnection patchCord3(track15, 0, mixerR4, 2);
AudioConnection patchCord4(track15, 0, mixerL4, 2);
AudioConnection patchCord5(track14, 0, mixerL4, 1);
AudioConnection patchCord6(track14, 0, mixerR4, 1);
AudioConnection patchCord7(track8, 0, mixerL2, 3);
AudioConnection patchCord8(track8, 0, mixerR2, 3);
AudioConnection patchCord9(track13, 0, mixerL4, 0);
AudioConnection patchCord10(track13, 0, mixerR4, 0);
AudioConnection patchCord11(track7, 0, mixerR2, 2);
AudioConnection patchCord12(track7, 0, mixerL2, 2);
AudioConnection patchCord13(track12, 0, mixerL3, 3);
AudioConnection patchCord14(track12, 0, mixerR3, 3);
AudioConnection patchCord15(track11, 0, mixerL3, 2);
AudioConnection patchCord16(track11, 0, mixerR3, 2);
AudioConnection patchCord17(track6, 0, mixerL2, 1);
AudioConnection patchCord18(track6, 0, mixerR2, 1);
AudioConnection patchCord19(track10, 0, mixerL3, 1);
AudioConnection patchCord20(track10, 0, mixerR3, 1);
AudioConnection patchCord21(track9, 0, mixerL3, 0);
AudioConnection patchCord22(track9, 0, mixerR3, 0);
AudioConnection patchCord23(track5, 0, mixerL2, 0);
AudioConnection patchCord24(track5, 0, mixerR2, 0);
AudioConnection patchCord25(track4, 0, mixerL1, 3);
AudioConnection patchCord26(track4, 0, mixerR1, 3);
AudioConnection patchCord27(track3, 0, mixerL1, 2);
AudioConnection patchCord28(track3, 0, mixerR1, 2);
AudioConnection patchCord29(track2, 0, mixerL1, 1);
AudioConnection patchCord30(track2, 0, mixerR1, 1);
AudioConnection patchCord31(track1, 0, mixerL1, 0);
AudioConnection patchCord32(track1, 0, mixerR1, 0);
AudioConnection patchCord33(mixerR3, 0, mixerR, 2);
AudioConnection patchCord34(mixerL3, 0, mixerL, 2);
AudioConnection patchCord35(mixerR4, 0, mixerR, 3);
AudioConnection patchCord36(mixerL4, 0, mixerL, 3);
AudioConnection patchCord37(mixerR1, 0, mixerR, 0);
AudioConnection patchCord38(mixerL1, 0, mixerL, 0);
AudioConnection patchCord39(mixerR2, 0, mixerR, 1);
AudioConnection patchCord40(mixerL2, 0, mixerL, 1);
AudioConnection patchCord41(mixerL, 0, i2s, 0);
AudioConnection patchCord42(mixerR, 0, i2s, 1);
AudioControlSGTL5000 sgtl5000_1; //xy=908,666
// GUItool: end automatically generated code
AudioPlaySdWav* tracks[]={&track1,&track2,&track3,&track4,&track5,&track6,
&track7,&track8,&track9,&track10,
&track11,&track12,&track13,&track14,&track15,&track16};
#define SDCARD_CS_PIN BUILTIN_SDCARD
#define SDCARD_MOSI_PIN 11 // not actually used
#define SDCARD_SCK_PIN 13 // not actually used
/*********************************************************************************/
uint32_t next;
void setup() {
Serial.begin(115200);
while (!Serial)
;
if (CrashReport) {
Serial.println(CrashReport);
CrashReport.clear();
}
Serial.println("Started!");
AudioMemory(50);
SPI.setMOSI(SDCARD_MOSI_PIN);
SPI.setSCK(SDCARD_SCK_PIN);
while (!(SD.begin(SDCARD_CS_PIN))) {
// Serial.println("Unable to access the SD card");
delay(500);
}
mixerL.gain(0,0.02);
mixerL.gain(1,0.02);
mixerL.gain(2,0.02);
mixerL.gain(3,0.02);
mixerR.gain(0,0.02);
mixerR.gain(1,0.02);
mixerR.gain(2,0.02);
mixerR.gain(3,0.02);
mixerL1.gain(0,0.3);
mixerL1.gain(1,0.2);
mixerL1.gain(2,0.1);
mixerL1.gain(3,0.35);
mixerL2.gain(0,0.6);
mixerL2.gain(1,0.5);
mixerL2.gain(2,0.4);
mixerL2.gain(3,0.35);
mixerR1.gain(0,0.4);
mixerR1.gain(1,0.5);
mixerR1.gain(2,0.6);
mixerR1.gain(3,0.55);
mixerR2.gain(0,0.1);
mixerR2.gain(1,0.2);
mixerR2.gain(2,0.3);
mixerR2.gain(3,0.15);
mixerL3.gain(0,0.3);
mixerL3.gain(1,0.2);
mixerL3.gain(2,0.1);
mixerL3.gain(3,0.35);
mixerL4.gain(0,0.6);
mixerL4.gain(1,0.5);
mixerL4.gain(2,0.4);
mixerL4.gain(3,0.35);
mixerR3.gain(0,0.4);
mixerR3.gain(1,0.5);
mixerR3.gain(2,0.6);
mixerR3.gain(3,0.55);
mixerR4.gain(0,0.1);
mixerR4.gain(1,0.2);
mixerR4.gain(2,0.3);
mixerR4.gain(3,0.15);
sgtl5000_1.enable();
sgtl5000_1.volume(0.5);
track1.addMemoryForRead(1);
next = millis();
}
bool useEventReading = false;
void toggleEventReading(void)
{
useEventReading = !useEventReading;
track1.enableEventReading(useEventReading);
}
void loop() {
int pulse = 20;
track1.play("sine440.wav",true);
track2.play("sine110.wav",true);
track3.play("sine330.wav",true);
track4.play("sine220.wav",true);
track5.play("sine550.wav",true);
track6.play("sine660.wav",true);
track7.play("sine110.wav",true);
track8.play("sine440.wav",true);
track9.play("sine330.wav",true);
track10.play("sine220.wav",true);
track12.play("sine110.wav",true);
track11.play("sine440.wav",true);
track13.play("sine330.wav",true);
track14.play("sine220.wav",true);
track15.play("sine550.wav",true);
track16.play("sine660.wav",true);
AudioNoInterrupts();
track1.pause(false);
track2.pause(false);
track3.pause(false);
track4.pause(false);
track5.pause(false);
track6.pause(false);
track7.pause(false);
track8.pause(false);
track9.pause(false);
track10.pause(false);
track11.pause(false);
track12.pause(false);
track13.pause(false);
track14.pause(false);
track15.pause(false);
track16.pause(false);
AudioInterrupts();
while (track1.isPlaying())
{
float pct=0.0f;
for (int i=0;i<16;i++)
{
pct += tracks[i]->getCPUload();
}
Serial.print(AudioProcessorUsageMax());
AudioProcessorUsageMaxReset();
Serial.print(' ');
Serial.print(pct);
Serial.print(' ');
Serial.print(useEventReading?90:110);
Serial.print(' ');
Serial.print(pulse);
pulse=0;
Serial.println();
delay(50);
if (millis() > next)
{
next += 10000;
toggleEventReading();
}
}
delay(250);
}