#include <MozziGuts.h>
#include <Oscil.h>
#include <Line.h>
#include <tables/sin2048_int8.h>
#include <OverSample.h>
#include <ControlDelay.h>
const byte INPUT_PIN = 1;
float ENVELOPE_DURATION = 1.f;
const byte LINE_LENGTH = (byte)((
float)
CONTROL_RATE*ENVELOPE_DURATION*0.5);
const int TREMOLO_OFFSET = 4000;
const float TREMOLO_SCALE = 0.002;
void setup(){
pinMode(INPUT_PIN,INPUT);
Serial.begin(115200);
aEnvelope.setFreq(ENVELOPE_DURATION);
}
float start_freq, end_freq;
static int counter, old_oversampled;
int oversampled = overSampler.
next(sensor_value);
float tremeloRate = TREMOLO_SCALE*(oversampled-TREMOLO_OFFSET);
tremeloRate = tremeloRate*tremeloRate*tremeloRate*tremeloRate*tremeloRate;
aTremelo.setFreq(tremeloRate);
if (--counter<0){
if (oversampled>old_oversampled){
start_freq = 550.f;
end_freq = 660.f;
}else if(oversampled<old_oversampled){
start_freq = 330.f;
end_freq = 220.f;
} else {
start_freq = 440.f;
end_freq = 440.f;
}
old_oversampled = oversampled;
counter = LINE_LENGTH-1;
freqLine.
set(start_freq,end_freq,LINE_LENGTH);
Serial.print(oversampled);Serial.print("\t");Serial.print(start_freq);Serial.print("\t");Serial.println(end_freq);
}
aSin.setFreq(freqLine.
next());
}
return ((((int)aSin.next()*(128+aTremelo.next()))>>8)*aEnvelope.next())>>8;
}
void loop(){
}