|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #include <Audio.h>
- #include <Wire.h>
- #include <SPI.h>
- #include <SD.h>
- #include <SerialFlash.h>
- #include <Bounce.h>
-
- AudioSynthWaveformSine sine1;
- AudioSynthWaveformSine sine2;
- AudioSynthWaveformModulated waveformMod1;
- AudioOutputAnalogStereo dacs1;
- AudioOutputI2S i2s1;
- AudioConnection patchCord1(sine1, 0, i2s1, 1);
- AudioConnection patchCord2(sine1, 0, dacs1, 1);
- AudioConnection patchCord3(sine1, 0, waveformMod1, 0);
- AudioConnection patchCord4(sine2, 0, waveformMod1, 1);
- AudioConnection patchCord5(waveformMod1, 0, i2s1, 0);
- AudioConnection patchCord6(waveformMod1, 0, dacs1, 0);
- AudioControlSGTL5000 sgtl5000_1;
-
- Bounce button0 = Bounce(0, 15);
- Bounce button1 = Bounce(1, 15);
- Bounce button2 = Bounce(2, 15);
-
- int current_waveform=0;
-
- extern const int16_t myWaveform[256];
-
- void setup() {
- Serial.begin(9600);
- pinMode(0, INPUT_PULLUP);
- pinMode(1, INPUT_PULLUP);
- pinMode(2, INPUT_PULLUP);
-
- delay(300);
- Serial.println("Waveform Modulation Test");
-
-
-
- AudioMemory(12);
-
-
- sgtl5000_1.enable();
- sgtl5000_1.volume(0.8);
-
-
- waveformMod1.arbitraryWaveform(myWaveform, 172.0);
-
-
- waveformMod1.frequency(261.63);
- waveformMod1.amplitude(1.0);
- sine1.frequency(20.3);
- sine2.frequency(1.2);
-
- current_waveform = WAVEFORM_TRIANGLE_VARIABLE;
- waveformMod1.begin(current_waveform);
-
-
-
- }
-
- void loop() {
-
- button0.update();
- button1.update();
- button2.update();
- float knob_A2 = (float)analogRead(A2) / 1023.0;
- float knob_A3 = (float)analogRead(A3) / 1023.0;
-
-
- sine1.amplitude(knob_A2);
- sine2.amplitude(knob_A3);
-
-
- if (button0.fallingEdge() || button2.fallingEdge()) {
- switch (current_waveform) {
- case WAVEFORM_SINE:
- current_waveform = WAVEFORM_SAWTOOTH;
- Serial.println("Sawtooth");
- break;
- case WAVEFORM_SAWTOOTH:
- current_waveform = WAVEFORM_SAWTOOTH_REVERSE;
- Serial.println("Reverse Sawtooth");
- break;
- case WAVEFORM_SAWTOOTH_REVERSE:
- current_waveform = WAVEFORM_SQUARE;
- Serial.println("Square");
- break;
- case WAVEFORM_SQUARE:
- current_waveform = WAVEFORM_TRIANGLE;
- Serial.println("Triangle");
- break;
- case WAVEFORM_TRIANGLE:
- current_waveform = WAVEFORM_TRIANGLE_VARIABLE;
- Serial.println("Variable Triangle");
- break;
- case WAVEFORM_TRIANGLE_VARIABLE:
- current_waveform = WAVEFORM_ARBITRARY;
- Serial.println("Arbitary Waveform");
- break;
- case WAVEFORM_ARBITRARY:
- current_waveform = WAVEFORM_PULSE;
- Serial.println("Pulse");
- break;
- case WAVEFORM_PULSE:
- current_waveform = WAVEFORM_SAMPLE_HOLD;
- Serial.println("Sample & Hold");
- break;
- case WAVEFORM_SAMPLE_HOLD:
- current_waveform = WAVEFORM_SINE;
- Serial.println("Sine");
- break;
- }
- waveformMod1.begin(current_waveform);
- }
-
- }
|