#include "instr_zosc.hh" #include "daisysp.h" #include "utils.hh" namespace Heck::OSP { namespace Instrument { ZOsc::ZOsc() { init(); } void ZOsc::init() { zosc.Init(Constants::AUDIO_SAMPLERATE); zosc.SetFreq(40.f); zosc.SetShape(1.); zosc.SetFormantFreq(200); } void ZOsc::trigger() {} void ZOsc::ctl(unsigned int ctl_nr, float val) { switch (ctl_nr) { case 0: { zosc.SetFreq(scalen_min_max(val, 40, 180)); } break; case 1: { // zosc.SetDecay(scalen_min_max(val,0,1)); } break; case 2: { zosc.SetFormantFreq(scalen_min_max(val, 200, 800)); } break; case 3: { zosc.SetShape(1. - scalen_min_max(val, 0, 1)); } break; } } void ZOsc::switch_algo(unsigned int pos) { mode1 = pos; zosc.SetMode(((float)pos) / 3.); seed.PrintLine(""); } void ZOsc::switch_mode(unsigned int pos) { mode2 = pos; seed.PrintLine("ZOSC MODE2: %i", mode2); } float ZOsc::nextsample() { float out{}; out = zosc.Process(); return out; } } // namespace Instrument } // namespace Heck