amalgam/src/FM/Operator.h

53 lines
1.1 KiB
C++

/*
* 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: */