#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
// GUItool: begin automatically generated code
AudioInputI2S i2s1; //xy=186.1999969482422,188
AudioSynthWaveform waveform1; //xy=255.1999969482422,310
AudioFilterStateVariable filter1; //xy=321.1999969482422,190
AudioMixer4 mixer1; //xy=461.1999969482422,251
AudioAmplifier amp1; //xy=601.1999969482422,257
AudioAnalyzeFFT1024 fft1024_1; //xy=707.1999969482422,182
AudioOutputI2S2 i2s2_1; //xy=753.2000122070312,258.20001220703125
AudioConnection patchCord1(i2s1, 0, filter1, 0);
AudioConnection patchCord2(i2s1, 1, filter1, 1);
AudioConnection patchCord3(waveform1, 0, mixer1, 1);
AudioConnection patchCord4(filter1, 2, mixer1, 0);
AudioConnection patchCord5(mixer1, amp1);
AudioConnection patchCord6(mixer1, fft1024_1);
AudioConnection patchCord7(amp1, 0, i2s2_1, 0);
AudioConnection patchCord8(amp1, 0, i2s2_1, 1);
// GUItool: end automatically generated code
const int SDCard = BUILTIN_SDCARD;
const float maxVol = 0.3;
void setup() {
AudioMemory(50);
filter1.frequency(30); // filter out DC & extremely low frequencies
mixer1.gain(0, 8.5); // amplify sign to useful range
mixer1.gain(1, 1);
waveform1.begin(1, 440, WAVEFORM_SINE);
Serial.begin(38400);
while (!Serial) {
; // wait for serial port to connect.
}
Serial.println("Serial connection established.");
if(!SD.begin(SDCard)){
Serial.println("SD Card Failed to Initalise!");
while (1) {
// No SD card, so don't do anything more - stay stuck here
}
}
Serial.println("SD Card Initalised!");
amp1.gain(maxVol);
/* Play the WAV file
if (!playSdWav1.play("output.wav")) {
Serial.println("Failed to play WAV file!");
return;
}
Serial.println("Playing WAV file...");
delay(100); //Delay to stop the next if statemnt from running before playing starts
*/
}
void loop() {
if (fft1024_1.available()) {
// each time new FFT data is available
// print 20 bins to the Arduino Serial Monitor
Serial.print("FFT: ");
for (int i = 0; i < 20; i++) {
float n = fft1024_1.read(i);
if (n >= 0.001) {
Serial.print(n, 3);
Serial.print(" ");
} else {
Serial.print(" -- "); // don't print "0.000"
}
}
Serial.println();
}
}