rsc3/doc/examples/ugen/envelopes/env-gen.help.scm

54 lines
2 KiB
Scheme
Raw Permalink Normal View History

2022-08-24 13:53:18 +00:00
;; (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)