77 lines
1.4 KiB
C++
Executable File
77 lines
1.4 KiB
C++
Executable File
#define MIDI_CHANNEL 1
|
|
|
|
#include <SpringMassDamper.h>
|
|
#include <ExpMovAvg.h>
|
|
#include <MinMaxLerp.h>
|
|
|
|
#include <Haarnet.h>
|
|
#include <HaarnetExtensionFlute.h>
|
|
|
|
float x, y, z = 0;
|
|
SpringMassDamper springX(50.0, 275.0, 1, &x);
|
|
SpringMassDamper springY(50.0, 275.0, 1, &y);
|
|
SpringMassDamper springZ(10.0, 275.0, 10, &z);
|
|
|
|
const int basefreq = 148;
|
|
|
|
long tick = 0;
|
|
|
|
void setup() {
|
|
FluteEx.init();
|
|
Serial.begin(115200);
|
|
Serial.println("starts");
|
|
|
|
Music.init();
|
|
|
|
Music.setGain1(1.0);
|
|
Music.setGain2(1.0);
|
|
Music.setGain3(1.0);
|
|
|
|
usbMIDI.setHandleNoteOff(OnNoteOff);
|
|
usbMIDI.setHandleNoteOn(OnNoteOn);
|
|
usbMIDI.setHandleControlChange(OnControlChange);
|
|
|
|
Music.getPreset(4); ///// saved -- check max patch
|
|
|
|
tick = millis();
|
|
|
|
}
|
|
|
|
|
|
void loop() {
|
|
if(FluteEx.push_button()) x += 1;
|
|
|
|
springX.position(x);
|
|
springY.position(springX.X);
|
|
springZ.position(springY.X);
|
|
|
|
int f1 = basefreq + springX.X;
|
|
int f2 = basefreq + springY.X;
|
|
int f3 = basefreq + springZ.X;
|
|
|
|
Music.setFrequency1(f1);
|
|
Music.setFrequency2(f2);
|
|
Music.setFrequency3(f3);
|
|
|
|
if(millis() - tick > 200) {
|
|
// Serial.println(f3);
|
|
tick = millis();
|
|
//Serial.println(cutmod);
|
|
}
|
|
|
|
usbMIDI.read();
|
|
|
|
}
|
|
|
|
int cutmod = 90;
|
|
float cutmod_indx = 0;
|
|
float cutmod_incr = 0.00001;
|
|
|
|
void cutoff() {
|
|
/// cutmod -- [80, .., 100]
|
|
cutmod_indx += cutmod_incr;
|
|
cutmod = 90 + (cos(cutmod_indx) * 20);
|
|
Music.setCutoffModAmount((cutmod-64) * 1024);
|
|
}
|
|
|