#include "DaisyDuino.h" DaisyHardware hw; static Oscillator osc; size_t num_channels; const int trigPin = D4; const int echoPin = D3; const int baud = 9600; int distance; float pitch, amp = 100; Switch pwrButton, effectButton; int on = 0, effect = 0; void MyCallback(float **in, float **out, size_t size) { float sine_signal; pwrButton.Debounce(); effectButton.Debounce(); osc.SetFreq(pitch); osc.SetAmp(amp * on); for (size_t i = 0; i < size; i++) { sine_signal = osc.Process(); out[0][i] = sine_signal; out[1][i] = sine_signal; } } void setup() { pwrButton.Init(1000, true, 26, INPUT_PULLUP); effectButton.Init(1000, true, 27, INPUT_PULLUP); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(baud); float sample_rate; hw = DAISY.init(DAISY_SEED, AUDIO_SR_48K); num_channels = hw.num_channels; sample_rate = DAISY.get_samplerate(); osc.Init(sample_rate); osc.SetWaveform(osc.WAVE_SIN); osc.SetFreq(440); osc.SetAmp(1); DAISY.begin(MyCallback); } void loop() { pwrButton.Debounce(); effectButton.Debounce(); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); distance = pulseIn(echoPin, HIGH); delay(50); if (effect == 0) { pitch = min((220.0 * ((float) distance / 1200)) + 220.0, 440.0); } else if (effect == 1) { amp = min((float) distance / 1200, 100.0f); } if (pwrButton.Pressed()) { on = !on; Serial.println(on ? "Power: ON" : "Power: OFF"); } if (effectButton.Pressed()) { effect = !effect; Serial.print("Effect: "); Serial.println((!effect) ? "Pitch" : "Amp"); } }