37 float process(
int sampleCount);
38 float getOutput(
void);
41 void setAttackRate(
float rate);
42 void setDecayRate(
float rate);
43 void setReleaseRate(
float rate);
44 void setSustainLevel(
float level);
45 void setTargetRatioA(
float targetRatio);
46 void setTargetRatioDR(
float targetRatio);
65 float calcCoef(
float rate,
float targetRatio);
68 inline float ADSR::process() {
73 output = attackBase + output * attackCoef;
80 output = decayBase + output * decayCoef;
81 if (output <= sustainLevel) {
82 output = sustainLevel;
89 output = releaseBase + output * releaseCoef;
99 inline float ADSR::process(
int sampleCount)
103 if(state != env_idle)
105 for(
int i=0; i<sampleCount; i++)
112 inline void ADSR::gate(
int gate) {
116 else if (state != env_idle)
120 inline int ADSR::getState() {
124 inline void ADSR::reset() {
129 inline float ADSR::getOutput() {