#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) { }