From 0f0a480ab52c16b4ead88e9d2924ef72fc44b98a Mon Sep 17 00:00:00 2001 From: DragonSifu Date: Fri, 27 Oct 2017 21:52:47 +0900 Subject: [PATCH] Add files via upload --- Moog_Example/Moog_Example.ino | 118 ++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Moog_Example/Moog_Example.ino diff --git a/Moog_Example/Moog_Example.ino b/Moog_Example/Moog_Example.ino new file mode 100644 index 0000000..224e353 --- /dev/null +++ b/Moog_Example/Moog_Example.ino @@ -0,0 +1,118 @@ +#include +#include +#include +#include +#include +#include + +// GUItool: begin automatically generated code +AudioSynthWaveform waveform1; //xy=213,76 +AudioSynthWaveformDc dc17; //xy=222,178 +AudioSynthWaveformDc dc16; //xy=307,958 +AudioEffectMultiply multiply1; //xy=528,22 +AudioSynthWaveformDc dc20; //xy=534,179 +AudioMixer4 mixer7; //xy=778,49 +AudioFilterMoog moog1; //xy=978,141 +AudioEffectFlange flange1; //xy=1113,375 +AudioEffectDelayExternal delayExt1; //xy=1308,252 +AudioMixer4 mixer6; //xy=1590,176 +AudioMixer4 mixer5; //xy=1591,274 +AudioOutputI2S i2s1; //xy=1717,482 +AudioConnection patchCord1(waveform1, 0, multiply1, 0); +AudioConnection patchCord2(dc17, 0, multiply1, 1); +AudioConnection patchCord3(multiply1, 0, mixer7, 0); +AudioConnection patchCord4(dc20, 0, moog1, 1); +AudioConnection patchCord5(mixer7, 0, moog1, 0); +AudioConnection patchCord6(moog1, 0, mixer6, 1); +AudioConnection patchCord7(flange1, delayExt1); +AudioConnection patchCord8(flange1, 0, i2s1, 1); +AudioConnection patchCord9(delayExt1, 0, mixer6, 0); +AudioConnection patchCord10(mixer6, 0, i2s1, 0); +AudioControlSGTL5000 sgtl5000_1; //xy=1554,569 +// GUItool: end automatically generated code + + +int dcVal; + +//The setup function is called once when the system starts up +void setup(void) { + //Start the USB serial link (to enable debugging) + Serial.begin(115200); delay(500); + Serial.println("Setup starting..."); + sgtl5000_1.enable(); + sgtl5000_1.volume(0.8); + + //Allocate dynamically shuffled memory for the audio subsystem + AudioMemory(10); AudioMemory_F32(10); +// sine2.begin(1,220,WAVEFORM_SAWTOOTH); + waveform1.begin(1,440,WAVEFORM_SAWTOOTH); + //Put your own setup code here + moog1.frequency(652.0,true); + moog1.resonance(4); + moog1.octave(2); + moog1.drive(1); + //End of setup + Serial.println("Setup complete."); +}; + + +//After setup(), the loop function loops forever. +//Note that the audio modules are called in the background. +//They do not need to be serviced by the loop() function. +void loop(void) { + volumeCheck(); + dcValCheck(); + hang(&waveform1,0,&dc17,0); +}; +bool wastouched=false; +void hang( AudioSynthWaveform *sine, AudioSynthWaveform *sinex, AudioSynthWaveformDc *dc, AudioSynthWaveformDc *dcx) +{ + int touch = touchRead(30); + bool touched = false; + if (touch > 5000) + { + touched = true; + } + if (touched) + { + { + Serial.print("touch "); + Serial.print(" = "); + Serial.println(touch); + } + wastouched=true; + //once a pad is touched, a value from the note frquency froma table is looked up via a 2D table + //with x corresponding to a scale and y corresponding to one of the eight notes on the drum. + sine->frequency(220); + dc->amplitude(1, 5); +// sinex->frequency(440); +// dcx->amplitude(1, 50); + dc20.amplitude(1, 50); + } + if (!touched&&wastouched) + { + //one the pad is released, the note fades out with a decay val set by the dcVal knob + dc->amplitude(0, dcVal); + // dcx->amplitude(0,dcVal); + dc20.amplitude(-1,dcVal); + wastouched=false; + } + +} +void volumeCheck() +{ + //check knob value for volume + int knob = analogRead(A7); + int fknob = analogRead(38); + int shift = map(analogRead(37), 0, 1023, 0, 440); + moog1.frequency(shift*4); + float vol = (float)knob / 1280.0; + float fBack = (float)fknob / 128; + moog1.resonance(fBack); + sgtl5000_1.volume(vol); +} +void dcValCheck() +{ + //check knob and set value as delay on dc constant for sine wave decay + dcVal = map(analogRead(A6), 0, 1023, 1, 1000); +}