Code:
// PANDA SYNTH
// Coded by Chris Gardella
// HUGE thanks to wcalvert and oddson at the PJRC Forum!
// https://forum.pjrc.com/threads/58586-USB-Host-turning-envelopes-on-and-off?p=222794
// Include Audio System Designer Tool Code
#include "SYNTHARCH.H"
Bounce button0 = Bounce(25, 15);
Bounce button1 = Bounce(26, 15);
Bounce button2 = Bounce(27, 15);
Bounce button3 = Bounce(28, 15);
Bounce button4 = Bounce(29, 15);
Bounce button5 = Bounce(30, 15);
Bounce button6 = Bounce(31, 15);
Bounce button7 = Bounce(32, 15);
// Include USBHost Library
#include <USBHost_t36.h>
USBHost myusb;
MIDIDevice midi1(myusb);
// GLOBAL VARIABLES
// Array to covert MIDI notes to frequencies
const float noteFreqs[128] = {8.176, 8.662, 9.177, 9.723, 10.301, 10.913, 11.562, 12.25, 12.978, 13.75, 14.568, 15.434, 16.352, 17.324, 18.354, 19.445, 20.602, 21.827, 23.125, 24.5, 25.957, 27.5, 29.135, 30.868, 32.703, 34.648, 36.708, 38.891, 41.203, 43.654, 46.249, 48.999, 51.913, 55, 58.27, 61.735, 65.406, 69.296, 73.416, 77.782, 82.407, 87.307, 92.499, 97.999, 103.826, 110, 116.541, 123.471, 130.813, 138.591, 146.832, 155.563, 164.814, 174.614, 184.997, 195.998, 207.652, 220, 233.082, 246.942, 261.626, 277.183, 293.665, 311.127, 329.628, 349.228, 369.994, 391.995, 415.305, 440, 466.164, 493.883, 523.251, 554.365, 587.33, 622.254, 659.255, 698.456, 739.989, 783.991, 830.609, 880, 932.328, 987.767, 1046.502, 1108.731, 1174.659, 1244.508, 1318.51, 1396.913, 1479.978, 1567.982, 1661.219, 1760, 1864.655, 1975.533, 2093.005, 2217.461, 2349.318, 2489.016, 2637.02, 2793.826, 2959.955, 3135.963, 3322.438, 3520, 3729.31, 3951.066, 4186.009, 4434.922, 4698.636, 4978.032, 5274.041, 5587.652, 5919.911, 6271.927, 6644.875, 7040, 7458.62, 7902.133, 8372.018, 8869.844, 9397.273, 9956.063, 10548.08, 11175.3, 11839.82, 12543.85};
// Array for button MIDI notes
const float buttonFreqs[8] = {48, 50, 52, 53, 55, 57, 59, 60};
// Set number of voices
const int NUM_VOICES = 32;
const int NPROGS = 4;
const int NPROGS2 = 4;
float mixGain = 0.5;
float resonance = 3.8;
const float DIV127 = (1.0 / 127.0);
byte globalVelocity = 127;
bool idleVoices[32] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
// Set to 255 so it didn't throw an error :)
byte voiceToNote[32] = { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 };
void setup() {
myusb.begin();
Serial.begin(9600);
pinMode(25, INPUT_PULLUP);
pinMode(26, INPUT_PULLUP);
pinMode(27, INPUT_PULLUP);
pinMode(28, INPUT_PULLUP);
pinMode(29, INPUT_PULLUP);
pinMode(30, INPUT_PULLUP);
pinMode(31, INPUT_PULLUP);
pinMode(32, INPUT_PULLUP);
// Detect USB slave key presses, call functions to handle presses
midi1.setHandleNoteOn(onNoteOn);
midi1.setHandleNoteOff(onNoteOff);
// MUST set Audio Memory
AudioMemory(120);
sgtl5000_1.enable();
sgtl5000_1.volume(0.5);
// Initialize Waveforms
AudioSynthWaveformModulated *oscsStart1[NUM_VOICES] = { &waveform1, &waveform2, &waveform3, &waveform4, &waveform5, &waveform6, &waveform7, &waveform8, &waveform9, &waveform10, &waveform11, &waveform12, &waveform13, &waveform14, &waveform15, &waveform16 };
for (int i = 0; i < 16; i++) {
oscsStart1[i]->begin(mixGain, 144, WAVEFORM_SQUARE);
}
// Initialize Waveforms
AudioSynthWaveformModulated *oscsStart2[NUM_VOICES] = { &waveform17, &waveform18, &waveform19, &waveform20, &waveform21, &waveform22, &waveform23, &waveform24, &waveform25, &waveform26, &waveform27, &waveform28, &waveform29, &waveform30, &waveform31, &waveform32 };
for (int i = 0; i < 16; i++) {
oscsStart2[i]->begin(mixGain, 144, WAVEFORM_TRIANGLE);
}
//Turn on all mixers
mixer1.gain(0, mixGain);
mixer1.gain(1, mixGain);
mixer1.gain(2, mixGain);
mixer1.gain(3, mixGain);
mixer2.gain(0, mixGain);
mixer2.gain(1, mixGain);
mixer2.gain(2, mixGain);
mixer2.gain(3, mixGain);
mixer3.gain(0, mixGain);
mixer3.gain(1, mixGain);
mixer3.gain(2, mixGain);
mixer3.gain(3, mixGain);
mixer4.gain(0, mixGain);
mixer4.gain(1, mixGain);
mixer4.gain(2, mixGain);
mixer4.gain(3, mixGain);
mixer5.gain(0, mixGain);
mixer5.gain(1, mixGain);
mixer5.gain(2, mixGain);
mixer5.gain(3, mixGain);
mixer6.gain(0, mixGain);
mixer6.gain(1, mixGain);
mixer6.gain(2, mixGain);
mixer6.gain(3, mixGain);
mixer7.gain(0, mixGain);
mixer7.gain(1, mixGain);
mixer7.gain(2, mixGain);
mixer7.gain(3, mixGain);
mixer8.gain(0, mixGain);
mixer8.gain(1, mixGain);
mixer8.gain(2, mixGain);
mixer8.gain(3, mixGain);
mixer9.gain(0, mixGain);
mixer9.gain(1, mixGain);
mixer9.gain(2, mixGain);
mixer9.gain(3, mixGain);
mixer10.gain(0, mixGain);
mixer10.gain(1, mixGain);
mixer10.gain(2, mixGain);
mixer10.gain(3, mixGain);
mixer11.gain(0, mixGain);
mixer11.gain(1, mixGain);
mixer11.gain(2, mixGain);
mixer11.gain(3, mixGain);
mixer12.gain(0, mixGain);
mixer12.gain(1, mixGain);
mixer12.gain(2, mixGain);
mixer12.gain(3, mixGain);
mixerFinal.gain(0, mixGain);
mixerFinal.gain(1, mixGain);
mixerFinal.gain(2, mixGain);
mixerFinal.gain(3, mixGain);
mixerFinal1.gain(0, mixGain);
mixerFinal1.gain(1, mixGain);
mixerFinal1.gain(2, mixGain);
mixerFinal1.gain(3, mixGain);
verbMix.gain(0, mixGain);
verbMix.gain(1, mixGain);
verbMix.gain(2, mixGain);
lastMix.gain(0, mixGain);
lastMix.gain(1, mixGain);
}
AudioFilterStateVariable *myfilter[] = { &filter1, &filter2, &filter3, &filter4, &filter5, &filter6, &filter7, &filter8, &filter9, &filter10, &filter11, &filter12, &filter13, &filter14, &filter15, &filter16, &filter17, &filter18, &filter19, &filter20, &filter21, &filter22, &filter23, &filter24, &filter25, &filter26, &filter27, &filter28, &filter29, &filter30, &filter31, &filter32 };
Bounce *mybutton[] = { &button0, &button1, &button2, &button3, &button4, &button5, &button6, &button7};
AudioEffectEnvelope *myEnvelope[] = { &envelope1, &envelope2, &envelope3, &envelope4, &envelope5, &envelope6, &envelope7, &envelope8, &envelope9, &envelope10, &envelope11, &envelope12, &envelope13, &envelope14, &envelope15, &envelope16, &envelope17, &envelope18, &envelope19, &envelope20, &envelope21, &envelope22, &envelope23, &envelope24, &envelope25, &envelope26, &envelope27, &envelope28, &envelope29, &envelope30, &envelope31, &envelope32 };
void loop() {
int knobD = 256 * analogRead(A17) / 1023;
// Check USB input
midi1.read();
// Check if notes are playing
IdleCheck();
//Lowpass Filter
int filterKnob = 10000 * analogRead(A3) / 1023;
// Pointer Array for filter settings
for (int i = 0; i < 16; i++) {
myfilter[i]->frequency(filterKnob);
//Resonace will be controlled by its own knob
myfilter[i]->resonance(resonance);
}
// Reverb!
float knobR = 1.0 * analogRead(A18) / 1023;
float knobA = 1.0 * analogRead(A19) / 1023;
freeverbs1.roomsize(knobR);
freeverbs1.damping(knobA);
// If statements to set mixer volume with freeverb to zero to approximate turning reverb off
// 0.03 to allow for shitty pot jitter
if (knobR > 0.03) {
verbMix.gain(1, mixGain);
verbMix.gain(2, mixGain - knobR);
}
if (knobR <= 0.03) {
verbMix.gain(0, 0);
verbMix.gain(1, 0);
// Envelope Settings
int knob1 = 10000 * analogRead(A0) / 1023;
int knob2 = 20000 * analogRead(A1) / 1023;
for (int i = 0; i < 16; i++) {
myEnvelope[i]->attack(knob1);
myEnvelope[i]->release(knob2);
}
}
for (int i = 0; i < 8; i++) {
mybutton[i]->update();
if (mybutton[i]->fallingEdge()) {
onNoteOn(1, buttonFreqs[i], globalVelocity);
}
if (mybutton[i]->risingEdge()) {
onNoteOff(1, buttonFreqs[i], globalVelocity);
}
}
}
AudioSynthWaveformModulated *oscs[NUM_VOICES] = { &waveform1, &waveform2, &waveform3, &waveform4, &waveform5, &waveform6, &waveform7, &waveform8, &waveform9, &waveform10, &waveform11, &waveform12, &waveform13, &waveform14, &waveform15, &waveform16, &waveform17, &waveform18, &waveform19, &waveform20, &waveform21, &waveform22, &waveform23, &waveform24, &waveform25, &waveform26, &waveform27, &waveform28, &waveform29, &waveform30, &waveform31, &waveform32 };
AudioEffectEnvelope *envelopes[NUM_VOICES] = { &envelope1, &envelope2, &envelope3, &envelope4, &envelope5, &envelope6, &envelope7, &envelope8, &envelope9, &envelope10, &envelope11, &envelope12, &envelope13, &envelope14, &envelope15, &envelope16, &envelope17, &envelope18, &envelope19, &envelope20, &envelope21, &envelope22, &envelope23, &envelope24, &envelope25, &envelope26, &envelope27, &envelope28, &envelope29, &envelope30, &envelope31, &envelope32 };
unsigned long voiceOnTimes[NUM_VOICES] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
void onNoteOn(byte channel, byte note, byte velocity) {
uint8_t progs[NPROGS] = {
WAVEFORM_SINE,
WAVEFORM_SQUARE,
WAVEFORM_TRIANGLE,
WAVEFORM_SAWTOOTH,
};
int val = analogRead(A14);
int numprogs = map(val, 0, 1024, 0, 3);
int myProg = progs[numprogs];
const char prognum = myProg;
uint8_t progs2[NPROGS2] = {
WAVEFORM_SINE,
WAVEFORM_SQUARE,
WAVEFORM_TRIANGLE,
WAVEFORM_SAWTOOTH,
};
int val2 = analogRead(A16);
int numprogs2 = map(val2, 0, 1024, 0, 3);
int myProg2 = progs2[numprogs2];
const char prognum2 = myProg2;
// Set Velocity to global variable
globalVelocity = velocity;
float velo = (globalVelocity * DIV127);
bool found = false;
int voiceToUse = 0;
// Acquire an idle voice if possible.
for (int i = 0; i < NUM_VOICES; i++) {
if (idleVoices[i]) {
voiceToUse = i;
found = true;
break;
}
}
// Steal voice if needed.
if (!found) {
unsigned long oldest = millis();
for (int i = 0; i < NUM_VOICES; i++) {
if (voiceOnTimes[i] < oldest && !envelopes[i]->isSustain()) {
oldest = voiceOnTimes[i];
voiceToUse = i;
}
}
}
// Now use the acquired voice.
idleVoices[voiceToUse] = false;
voiceToNote[voiceToUse] = note;
AudioNoInterrupts();
oscs[voiceToUse]->begin(prognum);
oscs[voiceToUse]->frequency(noteFreqs[note]);
oscs[voiceToUse]->amplitude(velo);
envelopes[voiceToUse]->noteOn();
oscs[voiceToUse + 8]->begin(prognum2);
oscs[voiceToUse + 8]->frequency(noteFreqs[note]);
oscs[voiceToUse + 8]->amplitude(velo);
envelopes[voiceToUse + 8]->noteOn();
AudioInterrupts();
voiceOnTimes[voiceToUse] = millis();
}
void onNoteOff(byte channel, byte note, byte velocity) {
for (int i = 0; i < NUM_VOICES; i++) {
if (voiceToNote[i] == note) {
envelopes[i]->noteOff();
voiceToNote[i] = -1;
envelopes[i + 8]->noteOff();
voiceToNote[i + 8] = -1;
}
}
}
void IdleCheck(void) {
for (uint8_t i = 0; i < NUM_VOICES; i++) {
if (!envelopes[i]->isActive()) {
oscs[i]->amplitude(0);
idleVoices[i] = true;
} else {
idleVoices[i] = false;
}
}
}
Audiotool Code
Code:
#ifndef _SYNTHARCH_H
#define _SYNTHARCH_H
#include <Arduino.h>
#include <Bounce.h>
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
// GUItool: begin automatically generated code
AudioSynthWaveform modWave3; //xy=259.3999881744385,2860.5997371673584
AudioSynthWaveform modWave4; //xy=280.3999881744385,2052.5997371673584
AudioSynthWaveform modWave2; //xy=323.79998779296875,1193
AudioSynthWaveform modWave1; //xy=344.79998779296875,385
AudioMixer4 mixer7; //xy=419.3999881744385,2876.5997371673584
AudioMixer4 mixer8; //xy=458.3999881744385,2064.5996837615967
AudioMixer4 mixer6; //xy=483.79998779296875,1209
AudioMixer4 mixer5; //xy=503.79998779296875,401
AudioSynthWaveformModulated waveform17; //xy=681.3999881744385,3066.5997371673584
AudioSynthWaveformModulated waveform18; //xy=684.3999881744385,3249.5997371673584
AudioSynthWaveformModulated waveform19; //xy=686.3999881744385,3167.5997371673584
AudioSynthWaveformModulated waveform20; //xy=693.3999881744385,2849.5997371673584
AudioSynthWaveformModulated waveform21; //xy=696.3999881744385,2936.5997371673584
AudioSynthWaveformModulated waveform22; //xy=698.3999881744385,2566.5997371673584
AudioSynthWaveformModulated waveform23; //xy=699.3999881744385,2658.5997371673584
AudioSynthWaveformModulated waveform24; //xy=699.3999881744385,2745.5997371673584
AudioSynthWaveformModulated waveform25; //xy=730.3999881744385,2235.5997371673584
AudioSynthWaveformModulated waveform26; //xy=738.3999881744385,2128.5997371673584
AudioSynthWaveformModulated waveform27; //xy=742.3999881744385,2032.5997371673584
AudioSynthWaveformModulated waveform14; //xy=745.7999877929688,1399
AudioSynthWaveformModulated waveform16; //xy=748.7999877929688,1582
AudioSynthWaveformModulated waveform28; //xy=745.3999881744385,2433.5997371673584
AudioSynthWaveformModulated waveform15; //xy=750.7999877929688,1500
AudioSynthWaveformModulated waveform29; //xy=751.3999881744385,2340.5997371673584
AudioSynthWaveformModulated waveform12; //xy=757.7999877929688,1182
AudioSynthWaveformModulated waveform30; //xy=755.3999881744385,1938.5997371673584
AudioSynthWaveformModulated waveform31; //xy=756.3999881744385,1861.5997371673584
AudioSynthWaveformModulated waveform13; //xy=760.7999877929688,1269
AudioSynthWaveformModulated waveform9; //xy=762.7999877929688,899
AudioSynthWaveformModulated waveform10; //xy=763.7999877929688,991
AudioSynthWaveformModulated waveform11; //xy=763.7999877929688,1078
AudioSynthWaveformModulated waveform32; //xy=762.3999881744385,1757.5997371673584
AudioSynthWaveformModulated waveform6; //xy=794.7999877929688,568
AudioSynthWaveformModulated waveform5; //xy=802.7999877929688,461
AudioSynthWaveformModulated waveform4; //xy=806.7999877929688,365
AudioSynthWaveformModulated waveform8; //xy=809.7999877929688,766
AudioSynthWaveformModulated waveform7; //xy=815.7999877929688,673
AudioSynthWaveformModulated waveform3; //xy=819.7999877929688,271
AudioSynthWaveformModulated waveform2; //xy=820.7999877929688,194
AudioSynthWaveformModulated waveform1; //xy=826.7999877929688,90
AudioFilterStateVariable filter17; //xy=843.3999881744385,2843.5997371673584
AudioFilterStateVariable filter18; //xy=851.3999881744385,2939.5997371673584
AudioFilterStateVariable filter19; //xy=853.3999881744385,2653.5997371673584
AudioFilterStateVariable filter20; //xy=854.3999881744385,2571.5997371673584
AudioFilterStateVariable filter21; //xy=856.3999881744385,3244.5997371673584
AudioFilterStateVariable filter22; //xy=859.3999881744385,3062.5997371673584
AudioFilterStateVariable filter23; //xy=864.3999881744385,2746.5997371673584
AudioFilterStateVariable filter24; //xy=863.3999881744385,3168.5997371673584
AudioFilterStateVariable filter25; //xy=889.3999881744385,2037.5997371673584
AudioFilterStateVariable filter26; //xy=897.3999881744385,2133.5997371673584
AudioFilterStateVariable filter27; //xy=899.3999881744385,1767.5997371673584
AudioFilterStateVariable filter28; //xy=899.3999881744385,1847.5997371673584
AudioFilterStateVariable filter29; //xy=902.3999881744385,2438.5997371673584
AudioFilterStateVariable filter12; //xy=907.7999877929688,1176
AudioFilterStateVariable filter30; //xy=905.3999881744385,2256.5997371673584
AudioFilterStateVariable filter31; //xy=910.3999881744385,1940.5997371673584
AudioFilterStateVariable filter32; //xy=909.3999881744385,2362.5997371673584
AudioFilterStateVariable filter13; //xy=915.7999877929688,1272
AudioFilterStateVariable filter10; //xy=917.7999877929688,986
AudioFilterStateVariable filter9; //xy=918.7999877929688,904
AudioFilterStateVariable filter16; //xy=920.7999877929688,1577
AudioFilterStateVariable filter14; //xy=923.7999877929688,1395
AudioFilterStateVariable filter11; //xy=928.7999877929688,1079
AudioFilterStateVariable filter15; //xy=927.7999877929688,1501
AudioFilterStateVariable filter4; //xy=953.7999877929688,370
AudioFilterStateVariable filter5; //xy=961.7999877929688,466
AudioFilterStateVariable filter1; //xy=963.7999877929688,100
AudioFilterStateVariable filter2; //xy=963.7999877929688,180
AudioFilterStateVariable filter8; //xy=966.7999877929688,771
AudioFilterStateVariable filter6; //xy=969.7999877929688,589
AudioFilterStateVariable filter3; //xy=974.7999877929688,273
AudioFilterStateVariable filter7; //xy=973.7999877929688,695
AudioEffectEnvelope envelope17; //xy=1023.3999881744385,2830.5997371673584
AudioEffectEnvelope envelope18; //xy=1031.3999881744385,2926.5997371673584
AudioEffectEnvelope envelope19; //xy=1033.3999881744385,2640.5997371673584
AudioEffectEnvelope envelope20; //xy=1032.4000186920166,3234.5996017456055
AudioEffectEnvelope envelope21; //xy=1040.3999881744385,2574.5997371673584
AudioEffectEnvelope envelope22; //xy=1039.3999881744385,3046.5997371673584
AudioEffectEnvelope envelope24; //xy=1042.4000186920166,3132.5996017456055
AudioEffectEnvelope envelope23; //xy=1044.3999881744385,2733.5997371673584
AudioEffectEnvelope envelope25; //xy=1055.3999881744385,1750.5997371673584
AudioEffectEnvelope envelope26; //xy=1069.3999881744385,2024.5997371673584
AudioEffectEnvelope envelope27; //xy=1077.3999881744385,2120.5997371673584
AudioEffectEnvelope envelope28; //xy=1079.3999881744385,1834.5997371673584
AudioEffectEnvelope envelope29; //xy=1082.3999881744385,2425.5997371673584
AudioEffectEnvelope envelope12; //xy=1087.7999877929688,1163
AudioEffectEnvelope envelope30; //xy=1085.3999881744385,2243.5997371673584
AudioEffectEnvelope envelope31; //xy=1090.3999881744385,1927.5997371673584
AudioEffectEnvelope envelope32; //xy=1089.3999881744385,2349.5997371673584
AudioEffectEnvelope envelope13; //xy=1095.7999877929688,1259
AudioEffectEnvelope envelope10; //xy=1097.7999877929688,973
AudioEffectEnvelope envelope16; //xy=1100.7999877929688,1564
AudioEffectEnvelope envelope9; //xy=1104.7999877929688,907
AudioEffectEnvelope envelope14; //xy=1103.7999877929688,1379
AudioEffectEnvelope envelope11; //xy=1108.7999877929688,1066
AudioEffectEnvelope envelope15; //xy=1107.7999877929688,1488
AudioEffectEnvelope envelope1; //xy=1119.7999877929688,83
AudioEffectEnvelope envelope4; //xy=1133.7999877929688,357
AudioEffectEnvelope envelope5; //xy=1141.7999877929688,453
AudioEffectEnvelope envelope2; //xy=1143.7999877929688,167
AudioEffectEnvelope envelope8; //xy=1146.7999877929688,758
AudioEffectEnvelope envelope6; //xy=1149.7999877929688,576
AudioEffectEnvelope envelope3; //xy=1154.7999877929688,260
AudioEffectEnvelope envelope7; //xy=1153.7999877929688,682
AudioMixer4 mixer10; //xy=1313.400016784668,2057.599447250366
AudioMixer4 mixer9; //xy=1320.4000186920166,1899.5993881225586
AudioMixer4 mixer12; //xy=1334.400016784668,2423.599645614624
AudioMixer4 mixer11; //xy=1337.400016784668,2267.5998401641846
AudioMixer4 mixer1; //xy=1359.7999877929688,742
AudioMixer4 mixer2; //xy=1366.7999877929688,851
AudioMixer4 mixer3; //xy=1368.7999877929688,992
AudioMixer4 mixer4; //xy=1371.7999877929688,1134
AudioMixer4 mixerFinal1; //xy=1532.3999710083008,1680.5995864868164
AudioMixer4 mixerFinal; //xy=1536.799877166748,1571.0000686645508
AudioMixer4 lastMix; //xy=1712.1999778747559,1626.1999740600586
AudioEffectFreeverbStereo freeverbs1; //xy=1859.7999801635742,1552.9999732971191
AudioMixer4 verbMix; //xy=2016.7999801635742,1622.000072479248
AudioOutputI2S i2s1; //xy=2200.799980163574,1605.9999713897705
AudioConnection patchCord1(modWave3, 0, mixer7, 0);
AudioConnection patchCord2(modWave4, 0, mixer8, 0);
AudioConnection patchCord3(modWave2, 0, mixer6, 0);
AudioConnection patchCord4(modWave1, 0, mixer5, 0);
AudioConnection patchCord5(mixer7, 0, waveform22, 0);
AudioConnection patchCord6(mixer7, 0, waveform23, 0);
AudioConnection patchCord7(mixer7, 0, waveform20, 0);
AudioConnection patchCord8(mixer7, 0, waveform21, 0);
AudioConnection patchCord9(mixer7, 0, waveform17, 0);
AudioConnection patchCord10(mixer7, 0, waveform19, 0);
AudioConnection patchCord11(mixer7, 0, waveform18, 0);
AudioConnection patchCord12(mixer7, 0, waveform24, 0);
AudioConnection patchCord13(mixer8, 0, waveform32, 0);
AudioConnection patchCord14(mixer8, 0, waveform31, 0);
AudioConnection patchCord15(mixer8, 0, waveform30, 0);
AudioConnection patchCord16(mixer8, 0, waveform27, 0);
AudioConnection patchCord17(mixer8, 0, waveform26, 0);
AudioConnection patchCord18(mixer8, 0, waveform25, 0);
AudioConnection patchCord19(mixer8, 0, waveform29, 0);
AudioConnection patchCord20(mixer8, 0, waveform28, 0);
AudioConnection patchCord21(mixer6, 0, waveform9, 0);
AudioConnection patchCord22(mixer6, 0, waveform10, 0);
AudioConnection patchCord23(mixer6, 0, waveform11, 0);
AudioConnection patchCord24(mixer6, 0, waveform12, 0);
AudioConnection patchCord25(mixer6, 0, waveform13, 0);
AudioConnection patchCord26(mixer6, 0, waveform14, 0);
AudioConnection patchCord27(mixer6, 0, waveform15, 0);
AudioConnection patchCord28(mixer6, 0, waveform16, 1);
AudioConnection patchCord29(mixer5, 0, waveform1, 0);
AudioConnection patchCord30(mixer5, 0, waveform2, 0);
AudioConnection patchCord31(mixer5, 0, waveform3, 0);
AudioConnection patchCord32(mixer5, 0, waveform4, 0);
AudioConnection patchCord33(mixer5, 0, waveform5, 0);
AudioConnection patchCord34(mixer5, 0, waveform6, 0);
AudioConnection patchCord35(mixer5, 0, waveform7, 0);
AudioConnection patchCord36(mixer5, 0, waveform8, 0);
AudioConnection patchCord37(waveform17, 0, filter22, 0);
AudioConnection patchCord38(waveform18, 0, filter21, 0);
AudioConnection patchCord39(waveform19, 0, filter24, 0);
AudioConnection patchCord40(waveform20, 0, filter17, 0);
AudioConnection patchCord41(waveform21, 0, filter18, 0);
AudioConnection patchCord42(waveform22, 0, filter20, 0);
AudioConnection patchCord43(waveform23, 0, filter19, 0);
AudioConnection patchCord44(waveform24, 0, filter23, 0);
AudioConnection patchCord45(waveform25, 0, filter30, 0);
AudioConnection patchCord46(waveform26, 0, filter26, 0);
AudioConnection patchCord47(waveform27, 0, filter25, 0);
AudioConnection patchCord48(waveform14, 0, filter14, 0);
AudioConnection patchCord49(waveform16, 0, filter16, 0);
AudioConnection patchCord50(waveform28, 0, filter29, 0);
AudioConnection patchCord51(waveform15, 0, filter15, 0);
AudioConnection patchCord52(waveform29, 0, filter32, 0);
AudioConnection patchCord53(waveform12, 0, filter12, 0);
AudioConnection patchCord54(waveform30, 0, filter31, 0);
AudioConnection patchCord55(waveform31, 0, filter28, 0);
AudioConnection patchCord56(waveform13, 0, filter13, 0);
AudioConnection patchCord57(waveform9, 0, filter9, 0);
AudioConnection patchCord58(waveform10, 0, filter10, 0);
AudioConnection patchCord59(waveform11, 0, filter11, 0);
AudioConnection patchCord60(waveform32, 0, filter27, 0);
AudioConnection patchCord61(waveform6, 0, filter6, 0);
AudioConnection patchCord62(waveform5, 0, filter5, 0);
AudioConnection patchCord63(waveform4, 0, filter4, 0);
AudioConnection patchCord64(waveform8, 0, filter8, 0);
AudioConnection patchCord65(waveform7, 0, filter7, 0);
AudioConnection patchCord66(waveform3, 0, filter3, 0);
AudioConnection patchCord67(waveform2, 0, filter2, 0);
AudioConnection patchCord68(waveform1, 0, filter1, 0);
AudioConnection patchCord69(filter17, 0, envelope17, 0);
AudioConnection patchCord70(filter18, 0, envelope18, 0);
AudioConnection patchCord71(filter19, 0, envelope19, 0);
AudioConnection patchCord72(filter20, 0, envelope21, 0);
AudioConnection patchCord73(filter21, 0, envelope20, 0);
AudioConnection patchCord74(filter22, 0, envelope22, 0);
AudioConnection patchCord75(filter23, 0, envelope23, 0);
AudioConnection patchCord76(filter24, 0, envelope24, 0);
AudioConnection patchCord77(filter25, 0, envelope26, 0);
AudioConnection patchCord78(filter26, 0, envelope27, 0);
AudioConnection patchCord79(filter27, 0, envelope25, 0);
AudioConnection patchCord80(filter28, 0, envelope28, 0);
AudioConnection patchCord81(filter29, 0, envelope29, 0);
AudioConnection patchCord82(filter12, 0, envelope12, 0);
AudioConnection patchCord83(filter30, 0, envelope30, 0);
AudioConnection patchCord84(filter31, 0, envelope31, 0);
AudioConnection patchCord85(filter32, 0, envelope32, 0);
AudioConnection patchCord86(filter13, 0, envelope13, 0);
AudioConnection patchCord87(filter10, 0, envelope10, 0);
AudioConnection patchCord88(filter9, 0, envelope9, 0);
AudioConnection patchCord89(filter16, 0, envelope16, 0);
AudioConnection patchCord90(filter14, 0, envelope14, 0);
AudioConnection patchCord91(filter11, 0, envelope11, 0);
AudioConnection patchCord92(filter15, 0, envelope15, 0);
AudioConnection patchCord93(filter4, 0, envelope4, 0);
AudioConnection patchCord94(filter5, 0, envelope5, 0);
AudioConnection patchCord95(filter1, 0, envelope1, 0);
AudioConnection patchCord96(filter2, 0, envelope2, 0);
AudioConnection patchCord97(filter8, 0, envelope8, 0);
AudioConnection patchCord98(filter6, 0, envelope6, 0);
AudioConnection patchCord99(filter3, 0, envelope3, 0);
AudioConnection patchCord100(filter7, 0, envelope7, 0);
AudioConnection patchCord101(envelope17, 0, mixer11, 3);
AudioConnection patchCord102(envelope18, 0, mixer12, 0);
AudioConnection patchCord103(envelope19, 0, mixer11, 1);
AudioConnection patchCord104(envelope20, 0, mixer12, 3);
AudioConnection patchCord105(envelope21, 0, mixer11, 0);
AudioConnection patchCord106(envelope22, 0, mixer12, 1);
AudioConnection patchCord107(envelope24, 0, mixer12, 2);
AudioConnection patchCord108(envelope23, 0, mixer11, 2);
AudioConnection patchCord109(envelope25, 0, mixer9, 0);
AudioConnection patchCord110(envelope26, 0, mixer9, 3);
AudioConnection patchCord111(envelope27, 0, mixer10, 0);
AudioConnection patchCord112(envelope28, 0, mixer9, 1);
AudioConnection patchCord113(envelope29, 0, mixer10, 3);
AudioConnection patchCord114(envelope12, 0, mixer3, 3);
AudioConnection patchCord115(envelope30, 0, mixer10, 1);
AudioConnection patchCord116(envelope31, 0, mixer9, 2);
AudioConnection patchCord117(envelope32, 0, mixer10, 2);
AudioConnection patchCord118(envelope13, 0, mixer4, 0);
AudioConnection patchCord119(envelope10, 0, mixer3, 1);
AudioConnection patchCord120(envelope16, 0, mixer4, 3);
AudioConnection patchCord121(envelope9, 0, mixer3, 0);
AudioConnection patchCord122(envelope14, 0, mixer4, 1);
AudioConnection patchCord123(envelope11, 0, mixer3, 2);
AudioConnection patchCord124(envelope15, 0, mixer4, 2);
AudioConnection patchCord125(envelope1, 0, mixer1, 0);
AudioConnection patchCord126(envelope4, 0, mixer1, 3);
AudioConnection patchCord127(envelope5, 0, mixer2, 0);
AudioConnection patchCord128(envelope2, 0, mixer1, 1);
AudioConnection patchCord129(envelope8, 0, mixer2, 3);
AudioConnection patchCord130(envelope6, 0, mixer2, 1);
AudioConnection patchCord131(envelope3, 0, mixer1, 2);
AudioConnection patchCord132(envelope7, 0, mixer2, 2);
AudioConnection patchCord133(mixer10, 0, mixerFinal1, 1);
AudioConnection patchCord134(mixer9, 0, mixerFinal1, 0);
AudioConnection patchCord135(mixer12, 0, mixerFinal1, 3);
AudioConnection patchCord136(mixer11, 0, mixerFinal1, 2);
AudioConnection patchCord137(mixer1, 0, mixerFinal, 0);
AudioConnection patchCord138(mixer2, 0, mixerFinal, 1);
AudioConnection patchCord139(mixer3, 0, mixerFinal, 2);
AudioConnection patchCord140(mixer4, 0, mixerFinal, 3);
AudioConnection patchCord141(mixerFinal1, 0, lastMix, 1);
AudioConnection patchCord142(mixerFinal, 0, lastMix, 0);
AudioConnection patchCord143(lastMix, freeverbs1);
AudioConnection patchCord144(lastMix, 0, verbMix, 2);
AudioConnection patchCord145(freeverbs1, 0, verbMix, 0);
AudioConnection patchCord146(freeverbs1, 1, verbMix, 1);
AudioConnection patchCord147(verbMix, 0, i2s1, 0);
AudioConnection patchCord148(verbMix, 0, i2s1, 1);
AudioControlSGTL5000 sgtl5000_1; //xy=1428.7999877929688,625
// GUItool: end automatically generated code
#endif // _SYNTHARCH_H