hsc3-0.16: Help/UGen/envADSR.help.lhs
Sound.SC3.UGen.Help.viewSC3Help "Env.*adsr"
:i Sound.SC3.ADSR
:t Sound.SC3.envADSR_r
:t Sound.SC3.envADSR
> import Sound.SC3 {- hsc3 -}
{SinOsc.ar * EnvGen.kr(Env.adsr(0.75, 2.75, 0.1, 7.25, 1, -4, 0))}.draw;
> g_01 =
> let c = control KR "env-gate" 1
> p = envADSR 0.75 2.75 0.1 7.25 1 (EnvNum (-4)) 0
> e = envGen KR c 1 0 1 DoNothing p
> in sinOsc AR 440 0 * e * 0.1
import Sound.OSC {- hosc -}
withSC3 (sendMessage (n_set1 (-1) "env-gate" 0))
withSC3 (sendMessage (n_set1 (-1) "env-gate" 1))
withSC3 (sendMessage (n_free [-1]))
> e_01 =
> [envADSR 0.75 0.75 0.5 0.75 1 (EnvNum (-4)) 0
> ,envADSR 0.02 0.2 0.25 1 1 (EnvNum (-4)) 0
> ,envADSR 0.001 0.2 0.25 1 1 (EnvNum (-4)) 0
> ,envADSR 0 2 1 0.1 0.5 EnvSin 0
> ,envADSR 0.001 1.54 1 0.001 0.4 EnvSin 0]
import Sound.SC3.Plot {- hsc3 -}
plotEnvelope e_01
There is a record variant:
> g_02 =
> let g = control KR "gate" 1
> c = EnvNum (-4)
> r = ADSR {adsr_attackTime = 0.75
> ,adsr_decayTime = 0.75
> ,adsr_sustainLevel = 0.5
> ,adsr_releaseTime = 0.75
> ,adsr_peakLevel = 1
> ,adsr_curve = (c,c,c)
> ,adsr_bias = 0}
> p = envADSR_r r
> e = envGen KR g 0.1 0 1 DoNothing p
> in sinOsc AR 440 0 * e
withSC3 (sendMessage (n_set1 (-1) "gate" 0))
withSC3 (sendMessage (n_set1 (-1) "gate" 1))
withSC3 (sendMessage (n_free [-1]))
SC3 comparison:
Env.adsr.asArray == [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4];
> r_03 = [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4]
> e_03 = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0
> a_03 = envelope_sc3_array e_03
e_03 == envADSR_r adsrDefault
a_03 == Just r_03
> r_04 = [0,3,2,-99,1,0.3,5,-4,0.1,0.4,5,-4,0,1.2,5,-4]
> e_04 = envADSR 0.3 0.4 0.1 1.2 1 (EnvNum (-4)) 0
> a_04 = envelope_sc3_array e_04
a_04 == Just r_04
x = {|gate=0, freq=440 | EnvGen.kr(Env.adsr,gate) * SinOsc.ar(freq,0) * 0.1}.play
x.set(\gate,1);
x.set(\gate,0);