Module Stream.Envelope

val apply : float t -> float -> float t
val adsr : ?event:[< `Release | `Reset ] Event.t -> ?on_die:(unit -> unit) -> unit -> ?a:float -> ?d:float -> ?s:float -> ?r:float -> ?sustain:bool -> ?release:[< `Exponential | `Linear Linear ] -> unit -> float t

ADSR (Attack / Decay / Sustain / Release) envelope.

val exponential : ?init:float -> unit -> float -> float t

Exponential decay with given parameter.

val exponential_hl : ?init:float -> unit -> float -> float t

Same as above but taking half-life as parameter.

val ramp : ?kind:[< `Exponential | `Linear Linear ] -> unit -> ?from:float -> ?target:float -> float -> float t

Affine from a value to a value in a given time.