module Sound.SC3.UGen.Help.Graph where
import Sound.SC3.Common.Envelope
import Sound.SC3.UGen.Bindings
import Sound.SC3.UGen.Enum
import Sound.SC3.UGen.Rate
import Sound.SC3.UGen.Type
import Sound.SC3.UGen.UGen
default_ugen_graph :: UGen
default_ugen_graph =
let f = control KR "freq" 440
a = control KR "amp" 0.1
p = control KR "pan" 0
g = control KR "gate" 1
o = control KR "out" 0
e = linen g 0.01 0.7 0.3 RemoveSynth
f3 = mce [f,f + rand 'α' (0.4) 0,f + rand 'β' 0 0.4]
l = xLine KR (rand 'γ' 4000 5000) (rand 'δ' 2500 3200) 1 DoNothing
z = lpf (mix (varSaw AR f3 0 0.3 * 0.3)) l * e
in out o (pan2 z p a)
gabor_grain_ugen_graph :: UGen
gabor_grain_ugen_graph =
let o = control IR "out" 0
f = control IR "freq" 440
d = control IR "sustain" 1
l = control IR "pan" 0
a = control IR "amp" 0.1
w = control IR "width" 0.25
e = lfGauss AR d w 0 NoLoop RemoveSynth
s = fSinOsc AR f (0.5 * pi) * e
in offsetOut o (pan2 s l a)
sine_grain_ugen_graph :: UGen
sine_grain_ugen_graph =
let o = control IR "out" 0
f = control IR "freq" 440
d = control IR "sustain" 1
l = control IR "pan" 0
a = control IR "amp" 0.1
w = control IR "width" 0.25
e = envGen AR 1 1 0 1 RemoveSynth (envSine (d * w) 1)
s = fSinOsc AR f (0.5 * pi) * e
in offsetOut o (pan2 s l a)
default_sampler_ugen_graph :: Bool -> UGen
default_sampler_ugen_graph use_gate =
let b = control KR "bufnum" 0
l = control KR "pan" 0
a = control KR "amp" 0.1
r = control KR "rate" 1
m = control KR "rdelay" 0
v = control KR "ramplitude" 0
w = control KR "attack" 0
y = control KR "decay" 0.5
r' = bufRateScale KR b * r
p = playBuf 1 AR b r' 1 0 NoLoop RemoveSynth
e = if use_gate
then let g = control KR "gate" 1
in envGen KR g 1 0 1 RemoveSynth (envASR w 1 y EnvSin)
else let s = control KR "sustain" 1
in envGen KR 1 1 0 1 RemoveSynth (envLinen w s y 1)
d = delayC (p * e) m (rand 'α' 0 m)
in out 0 (pan2 d l (a + rand 'β' 0 v))