53 lines
2 KiB
Scheme
53 lines
2 KiB
Scheme
;; (env-gen rate gate levelScale levelBias timeScale doneAction envelope)
|
|
|
|
;; A segment based envelope generator. Note that the SC3 language
|
|
;; reorders the inputs to this UGen so that the envelope is the first
|
|
;; argument.
|
|
|
|
;; There are utilities for contructing the envelope argument.
|
|
|
|
;; The arguments for levelScale, levelBias, and timeScale are polled
|
|
;; when the env-gen is triggered and remain constant for the duration
|
|
;; of the envelope.
|
|
|
|
;; envelope - an breakpoint set
|
|
|
|
;; gate - this triggers the envelope and holds it open while > 0. If
|
|
;; the Env is fixed-length (e.g. Env.linen, Env.perc), the gate
|
|
;; argument is used as a simple trigger. If it is an sustaining
|
|
;; envelope (e.g. Env.adsr, Env.asr), the envelope is held open
|
|
;; until the gate becomes 0, at which point is released.
|
|
|
|
;; levelScale - scales the levels of the breakpoints.
|
|
|
|
;; levelBias - offsets the levels of the breakpoints.
|
|
|
|
;; timeScale - scales the durations of the segments.
|
|
|
|
;; doneAction - an integer representing an action to be executed when
|
|
;; the env is finished playing. This can be used to free
|
|
;; the enclosing synth, etc.
|
|
|
|
(import (rhs) (rsc3))
|
|
|
|
;; Percussive envelope
|
|
(let* ((d (env-perc 0.01 1 1 (list -4 -4)))
|
|
(e (env-gen kr 1 0.1 0 1 remove-synth d)))
|
|
(audition (out 0 (mul e (sin-osc ar 440 0)))))
|
|
|
|
;; The break-point assistant makes a static envelope from a
|
|
;; co-ordinate list. There is a duration and amplitude scalar.
|
|
(let* ((d (env-coord (list (cons 0 0)
|
|
(cons 0.75 1)
|
|
(cons 1 0))
|
|
1 1 (replicate 3 "linear")))
|
|
(e (env-gen kr 1 0.1 0 1 remove-synth d)))
|
|
(audition (out 0 (mul e (sin-osc ar 440 0)))))
|
|
|
|
;; Trapezoidal
|
|
(let* ((d (env-trapezoid 0 0.25 2 0.1))
|
|
(e (env-gen kr 1 0.1 0 1 remove-synth d)))
|
|
(audition (out 0 (mul e (sin-osc ar 440 0)))))
|
|
|
|
;; 0.0 3 -1 -1 0.1 0.5 1.0 0.0 0.1 0.0 1.0 0.0 0.0 1.5 1.0 0.0
|
|
(env-trapezoid 0 0.25 2 0.1)
|