/* * Filename: Operator.h * * Description: * * * Version: * Created: Sun Mar 8 07:57:26 2020 * Revision: None * Author: Rachel Fae Fox (foxiepaws),fox@foxiepa.ws * */ #pragma once #include "Envelope.h" namespace amalgam { namespace FM { class Operator { double mul = 1.0; double detune = 0.0; double fbgain = 0.0; bool __m; double *freq; // frequency bool *gate; double _in = 0.0; // fm input double _out = 0.0; double last = 0.0; // for feedback double phase = 0.0; Envelope e; double elast = 0.0; double smpTime; double smpRate; public: void process(); double operator()(); double operator()(double in); double out() { return elast * _out; } Envelope* getEnvelope() { return &e; } void setAll(double mul, double detune, double fbgain); void setMul(double mul) { this->mul = mul; } void setDetune(double mul) { this->mul = mul; } void setFeedbackLevel(double fbgain) { this->fbgain = fbgain; }; Operator(); Operator(double* f, bool* g); Operator(double* f, bool* g, unsigned int sr); ~Operator(); }; } } /* Local Variables: */ /* mode: c++ */ /* End: */