76 void setAllTimes( StkFloat aTime, StkFloat dTime, StkFloat sLevel, StkFloat rTime );
88 StkFloat
lastOut(
void )
const {
return lastFrame_[0]; };
91 StkFloat
tick(
void );
105 void sampleRateChanged( StkFloat newRate, StkFloat oldRate );
110 StkFloat attackRate_;
112 StkFloat releaseRate_;
113 StkFloat releaseTime_;
114 StkFloat sustainLevel_;
122 value_ += attackRate_;
123 if ( value_ >= target_ ) {
125 target_ = sustainLevel_;
128 lastFrame_[0] = value_;
132 if ( value_ > sustainLevel_ ) {
133 value_ -= decayRate_;
134 if ( value_ <= sustainLevel_ ) {
135 value_ = sustainLevel_;
140 value_ += decayRate_;
141 if ( value_ >= sustainLevel_ ) {
142 value_ = sustainLevel_;
146 lastFrame_[0] = value_;
150 value_ -= releaseRate_;
151 if ( value_ <= 0.0 ) {
155 lastFrame_[0] = value_;
164 #if defined(_STK_DEBUG_)
165 if ( channel >= frames.
channels() ) {
166 oStream_ <<
"ADSR::tick(): channel and StkFrames arguments are incompatible!";
171 StkFloat *samples = &frames[channel];
172 unsigned int hop = frames.
channels();
173 for (
unsigned int i=0; i<frames.
frames(); i++, samples += hop )
STK ADSR envelope class.
Definition: ADSR.h:27
void setDecayRate(StkFloat rate)
Set the decay rate (gain / sample).
void setReleaseRate(StkFloat rate)
Set the release rate (gain / sample).
void setAllTimes(StkFloat aTime, StkFloat dTime, StkFloat sLevel, StkFloat rTime)
Set sustain level and attack, decay, and release time durations (seconds).
void setTarget(StkFloat target)
Set a sustain target value and attack or decay from current value to target.
void setDecayTime(StkFloat time)
Set the decay rate based on a time duration (seconds).
void setAttackTime(StkFloat time)
Set the attack rate based on a time duration (seconds).
StkFloat lastOut(void) const
Return the last computed output value.
Definition: ADSR.h:88
~ADSR(void)
Class destructor.
void setSustainLevel(StkFloat level)
Set the sustain level.
void setReleaseTime(StkFloat time)
Set the release rate based on a time duration (seconds).
void keyOff(void)
Set target = 0, state = ADSR::RELEASE.
void setValue(StkFloat value)
Set to state = ADSR::SUSTAIN with current and target values of value.
void keyOn(void)
Set target = 1, state = ADSR::ATTACK.
ADSR(void)
Default constructor.
void setAttackTarget(StkFloat target)
Set the target value for the attack (default = 1.0).
@ SUSTAIN
Definition: ADSR.h:34
@ IDLE
Definition: ADSR.h:36
@ DECAY
Definition: ADSR.h:33
@ RELEASE
Definition: ADSR.h:35
@ ATTACK
Definition: ADSR.h:32
StkFloat tick(void)
Compute and return one output sample.
Definition: ADSR.h:117
int getState(void) const
Return the current envelope state (ATTACK, DECAY, SUSTAIN, RELEASE, IDLE).
Definition: ADSR.h:82
void setAttackRate(StkFloat rate)
Set the attack rate (gain / sample).
STK abstract unit generator parent class.
Definition: Generator.h:21
An STK class to handle vectorized audio data.
Definition: Stk.h:287
unsigned int channels(void) const
Return the number of channels represented by the data.
Definition: Stk.h:415
unsigned int frames(void) const
Return the number of sample frames represented by the data.
Definition: Stk.h:418
static void handleError(const char *message, StkError::Type type)
Static function for error reporting and handling using c-strings.
The STK namespace.
Definition: ADSR.h:8