Public Member Functions |
| ADSR (Tp att=Tp(0.01), Tp dec=Tp(0.1), Tv sus=Tv(0.7), Tp rel=Tp(1.), Tv amp=Tv(1), Tp crv=Tp(-4)) |
ADSR & | attack (Tp len) |
| Set attack length.
|
ADSR & | decay (Tp len) |
| Set decay length.
|
ADSR & | sustain (Tv val) |
| Set sustain level.
|
ADSR & | release (Tp len) |
| Set release length.
|
ADSR & | amp (Tv v) |
| Set amplitude.
|
int | size () const |
| Get the number of segments.
|
int | position () const |
| Get the position, in samples, within the current segment.
|
int | sustainPoint () const |
| Get the sustain break-point.
|
Env & | sustainPoint (int v) |
| Sets the point at which the envelope holds its value until released.
|
int | stage () const |
| Get the envelope's current segment.
|
Tv | value () const |
| Get the current envelope value.
|
bool | done () const |
| Returns whether the envelope is done.
|
bool | released () const |
| Returns whether the envelope is released.
|
bool | sustained () const |
| Returns whether the envelope is currently sustained.
|
Tv | operator() () |
| Generate next value.
|
void | release () |
| Release the envelope.
|
Env & | loop (bool v) |
| Set whether envelope loops.
|
Env & | sustainDisable () |
| Disable sustain.
|
void | reset () |
| Reset envelope to starting point.
|
Tp * | lengths () |
| Get segment lengths array.
|
Env & | lengths (const V *vals, int len) |
| Set break-point values.
|
Env & | lengths (Tp a, Tp b) |
| Set first two segment lengths.
|
Env & | lengths (Tp a, Tp b, Tp c) |
| Set first three segment lengths.
|
Env & | lengths (Tp a, Tp b, Tp c, Tp d) |
| Set first four segment lengths.
|
Env & | lengths (Tp a, Tp b, Tp c, Tp d, Tp e) |
| Set first five segment lengths.
|
Tp | totalLength () const |
| Get total length of all envelope segments.
|
Env & | totalLength (Tp length, int modSegment) |
| Set total length of envelope by adjusting one segment length.
|
Env & | totalLength (Tp length) |
| Set total length of envelope by scaling all segment lengths.
|
Tp * | curves () |
| Get segment curvature array.
|
Env & | curve (Tp v) |
| Set curvature of all segments.
|
Env & | segment (int i, Tp len, Tp crv) |
| Set length and curvature of a segment.
|
Env & | segments (const V *lens, const V *crvs, int len, int begin=0) |
| Set length and curvature of many segments.
|
Env & | segments (Tp la, Tp ca, Tp lb, Tp cb) |
| Set length and curvature of first two segments.
|
Env & | segments (Tp la, Tp ca, Tp lb, Tp cb, Tp lc, Tp cc) |
| Set length and curvature of first three segments.
|
Env & | segments (Tp la, Tp ca, Tp lb, Tp cb, Tp lc, Tp cc, Tp ld, Tp cd) |
| Set length and curvature of first four segments.
|
Tv * | levels () |
| Get break-point levels array.
|
Env & | levels (const V *vals, int len) |
| Set break-point values.
|
Env & | levels (Tv a, Tv b) |
| Set first two break-point levels.
|
Env & | levels (Tv a, Tv b, Tv c) |
| Set first three break-point levels.
|
Env & | levels (Tv a, Tv b, Tv c, Tv d) |
| Set first four break-point levels.
|
Env & | levels (Tv a, Tv b, Tv c, Tv d, Tv e) |
| Set first five break-point levels.
|
template<class Tv = real, class Tp = real, class Ts = Synced>
class gam::ADSR< Tv, Tp, Ts >
ADSR (Attack, Decay, Sustain, Release) envelope.
This is a three segment envelope that rises to one and then falls back to zero. The attack is the rise length, the decay is the length until hitting the sustain level, and the release is the length until hitting zero again. This envelope is most useful when the duration of the envelope is not known in advance. However, it can be easily converted into a fixed length ADR by calling the sustainDisable() method. The decay segment then acts as a pseudo steady state portion.
- Template Parameters:
-
Tv | value (sample) type |
Tp | parameter type |
Ts | sync type |