53 lines
1.1 KiB
C++
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: */
|