You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

44 lines
1.4 KiB

#include "synth/globals.h"
#include "synth/part.h"
float ccToA(int x) {
return 5.0 * exp(9.2 * (x / 127.0) - 9.2);
}
float ccToDR(int x) {
return 5.0 * exp(7.0 * (x / 127.0) - 7.0);
}
void Part::loadPreset(Preset* preset) {
settings.osc1Mode = Oscillator::Mode(preset->osc1Mode);
settings.osc2Mode = Oscillator::Mode(preset->osc2Mode);
settings.oscMix = preset->oscMix / 127.0;
settings.filter.type = Filter::Type(preset->filter.type);
settings.filter.slope = Filter::Slope(preset->filter.slope);
settings.filter.freq = preset->filter.freq / 127.0;
settings.filter.Q = preset->filter.Q / 127.0;
settings.ampEnv.attackStep = (1.0 / SAMPLE_RATE) / ccToA(preset->ampEnv.attack);;
settings.ampEnv.decayStep = (1.0 / SAMPLE_RATE) / ccToDR(preset->ampEnv.decay);
settings.ampEnv.sustain = preset->ampEnv.sustain / 127.0;
settings.ampEnv.releaseStep = (1.0 / SAMPLE_RATE) / ccToDR(preset->ampEnv.release);
settings.fltEnv.attackStep = (1.0 / SAMPLE_RATE) / ccToA(preset->fltEnv.attack);;
settings.fltEnv.decayStep = (1.0 / SAMPLE_RATE) / ccToDR(preset->fltEnv.decay);
settings.fltEnv.sustain = preset->fltEnv.sustain / 127.0;
settings.fltEnv.releaseStep = (1.0 / SAMPLE_RATE) / ccToDR(preset->fltEnv.release);
}
void Part::noteOn(int note, int velocity) {
}
void Part::noteOff(int note) {
}
void Part::control(int code, int value) {
}