hsc3-0.21: Help/Graph/jmcc-strummable-silk.hs
-- strummable silk (jmcc) #11
let x = mouseX kr 0 1 Linear 0.2
strummable_guitar_str ix =
let n = 15
k = constant ix
tr = abs (hpz1 (x `greater_than` (0.25 + k * 0.07)))
e = decay (impulse ar 14 0 * lag (trig tr 1) 0.2 * 0.01) 0.04
freq0 = midiCps (([-2,0,3,5,7,10,12,15] !! ix) + 60)
freq = mce (map ((*) freq0) [1 .. constant n + 1])
param = klankSpec_mce freq (mce (replicate n 1)) (X.randN n 0.3 1)
in pan2 (klank (pinkNoise ar * e) 1 0 1 param) (k * 0.2 - 0.5) 1
strs = sum (map strummable_guitar_str [0..7])
r_allpass i = allpassN i 0.1 (X.randN 2 0 0.05) 4
in iter 6 r_allpass (leakDC (lpf strs 12000) 0.995)
-- strummable silk (jmcc) #11 ; id
let x = mouseX kr 0 1 Linear 0.2
strummable_guitar_str (ix,z) =
let n = 15
k = constant ix
tr = abs (hpz1 (x `greater_than` (0.25 + k * 0.07)))
e = decay (impulse ar 14 0 * lag (trig tr 1) 0.2 * 0.01) 0.04
freq0 = midiCps (([-2,0,3,5,7,10,12,15] !! ix) + 60)
freq = mce (map ((*) freq0) [1 .. constant n + 1])
param = klankSpec_mce freq (mce (replicate n 1)) (X.randNId n z 0.3 1)
in pan2 (klank (pinkNoiseId z ar * e) 1 0 1 param) (k * 0.2 - 0.5) 1
strs = sum (map strummable_guitar_str (zip [0..7] ['α'..]))
r_allpass z i = allpassN i 0.1 (X.randNId 2 (z,'ζ') 0 0.05) 4
rev = useqId 'λ' 6 r_allpass
in rev (leakDC (lpf strs 12000) 0.995)
-- strummable silk (jmcc) #11 ; event control
let f (_,g,_,y,z,o,_,_,p,_,_) =
let n = 15
e = decay (impulse ar (linExp y 0 1 11 19) 0 * (z * 2 + lag (trig g 1) 0.2) * 0.04) 0.04
plk = pinkNoise ar * e
freq = mce (map ((*) (unitCps p)) [1 .. constant n + 1])
param = klankSpec_mce freq (mce (replicate n 1)) (X.randN n 0.3 1)
in pan2 (dynKlank plk 1 0 1 param) (o * 2 - 1) z
r_allpass i = allpassN i 0.1 (X.randN 2 0 0.05) 4
in iter 6 r_allpass (leakDC (lpf (mix (voicer 16 f)) 12000) 0.995) * control kr "gain" 1
-- strummable silk (jmcc) #11 ; event control ; id
let f (c,g,_,y,z,o,_,_,p,_,_) =
let n = 15
e = decay (impulse ar (linExp y 0 1 11 19) 0 * (z * 2 + lag (trig g 1) 0.2) * 0.04) 0.04
plk = pinkNoiseId c ar * e
freq = mce (map ((*) (unitCps p)) [1 .. constant n + 1])
param = klankSpec_mce freq (mce (replicate n 1)) (X.randNId n c 0.3 1)
in pan2 (dynKlank plk 1 0 1 param) (o * 2 - 1) z
r_allpass z i = allpassN i 0.1 (X.randNId 2 (z,'ζ') 0 0.05) 4
rev = useqId 'λ' 6 r_allpass
in rev (leakDC (lpf (mix (voicer 16 f)) 12000) 0.995) * control kr "gain" 1