parent
e8258cc0aa
commit
0f0a480ab5
@ -0,0 +1,118 @@ |
||||
#include <OpenAudio_ArduinoLibrary.h> |
||||
#include <Audio.h> |
||||
#include <Wire.h> |
||||
#include <SPI.h> |
||||
#include <SD.h> |
||||
#include <SerialFlash.h> |
||||
|
||||
// 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); |
||||
} |
Loading…
Reference in new issue