Code:
// Code taken from
// Advanced Microcontroller-based Audio Workshop
//
// http://www.pjrc.com/store/audio_tutorial_kit.html
// https://hackaday.io/project/8292-microcontroller-audio-workshop-had-supercon-2015
//
// Part 2-4: Using The Microphone
//
// Modified by JayShoe for "My First Audio Mixer"
//
// Works with the examples in the forum with the PCM5102a and PCM1808
// Drivers need to be developed for PCM5242 and PCM1865.
///////////////////////////////////
// copy the Design Tool code here
///////////////////////////////////
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
// GUItool: begin automatically generated code
//AudioInputTDM tdm1; //xy=96,676
AudioInputUSB usb1; //xy=253,228
AudioAmplifier amp1; //xy=312,438
AudioMixer4 mixer1; //xy=345,606
AudioMixer4 mixer3; //xy=628,347
AudioMixer4 mixer2; //xy=634,469
AudioOutputI2S i2s2; //xy=812,435
//AudioConnection patchCord1(tdm1, 0, mixer1, 0);
//AudioConnection patchCord2(tdm1, 1, mixer1, 1);
//AudioConnection patchCord3(tdm1, 2, mixer1, 2);
//AudioConnection patchCord4(tdm1, 3, mixer1, 3);
AudioConnection patchCord5(usb1, 0, mixer3, 2);
AudioConnection patchCord6(usb1, 1, mixer2, 2);
AudioConnection patchCord7(amp1, 0, mixer3, 0);
AudioConnection patchCord8(amp1, 0, mixer2, 0);
AudioConnection patchCord9(mixer1, amp1);
AudioConnection patchCord10(mixer3, 0, i2s2, 0);
AudioConnection patchCord11(mixer2, 0, i2s2, 1);
AudioControlSGTL5000 sgtl5000_1; //xy=345,198
// GUItool: end automatically generated code
void setup() {
Serial.begin(9600);
AudioMemory(256);
sgtl5000_1.enable();
sgtl5000_1.volume(0.9);
sgtl5000_1.inputSelect(AUDIO_INPUT_LINEIN);
sgtl5000_1.micGain(0);
delay(1000);
//amp1.gain(1.0);
mixer1.gain(0, 0.3);
mixer1.gain(1, 0.3);
mixer1.gain(2, 0.3);
mixer1.gain(3, 0.3);
mixer2.gain(0, 0.3);
mixer2.gain(1, 0.0);
mixer2.gain(2, 0.1);
mixer2.gain(3, 0.0);
mixer3.gain(0, 0.3);
mixer3.gain(1, 0.0);
mixer3.gain(2, 0.1);
mixer3.gain(3, 0.0);
}
void loop() {
// do nothing
/* print a summary of the current & maximum usage
Serial.print("CPU: ");
Serial.print("all=");
Serial.print(AudioProcessorUsage());
Serial.print(",");
Serial.print(AudioProcessorUsageMax());
Serial.print(" ");
Serial.print("Memory: ");
Serial.print(AudioMemoryUsage());
Serial.print(",");
Serial.print(AudioMemoryUsageMax());
// Serial.print(" ");
// Serial.print("Send: (R)eset, (S)lower, (F)aster");
Serial.println();
// very simple timing :-)
*/
}
A graphic from the audio tool: