1 #ifndef __ADSR_ENVELOPE_H
2 #define __ADSR_ENVELOPE_H
61 void gate(
bool state,
int delay){
139 [[deprecated(
"use generate() instead.")]]
143 [[deprecated(
"use generate() instead.")]]
147 [[deprecated(
"use process() instead.")]]
173 return level + amount;
178 return level + amount;
183 return level + (1.01-level)*amount;
188 return level + level * amount;
193 return (endValue-startValue)/(sampleRate*time+1);
199 return (logf(endValue) - logf(startValue)) / (time*sampleRate+10);
AdsrEnvelope< true > LinearAdsrEnvelope
AdsrEnvelope< false > ExponentialAdsrEnvelope
ADSR Envelope, either linear or exponential.
void getEnvelope(FloatArray output)
static void destroy(AdsrEnvelope< linear > *env)
void setRelease(float value)
void setAttack(float value)
void setSampleRate(float value)
void attenuate(FloatArray buf)
AdsrEnvelope(float sampleRate)
float decrement(float level, float amount)
void setDecay(float value)
void setSustain(float newSustain)
float increment(float level, float amount)
virtual float process(float input)
void setRetrigger(bool state)
void setLevel(float newLevel)
static const float MINLEVEL
void gate(bool state, int delay)
static AdsrEnvelope< linear > * create(float sampleRate)
void trigger(bool state, int delay)
float generate()
Produce the next envelope sample.
float calculateIncrement(float startValue, float endValue, float time)
virtual float process(float input)
This class contains useful methods for manipulating arrays of floats.
virtual float generate()
Produce the next consecutive sample.