hsc3-0.21: Help/Graph/jmcc-resonators-harmonic-series.hs
-- resonators harmonic series (jmcc) #2 ; texture=xfade,1,7,inf
let nharm = 12
spec _ = let rat = [1.0,1.125,1.25,1.333,1.5,1.667,1.875,2.0,2.25,2.5,2.667,3.0,3.333,3.75,4.0]
freq = lchoose rat * 120
series n i j = case n of {0 -> []; _ -> i : series (n - 1) (i + j) j}
in klankSpec_mce
(mce (series nharm freq freq) + X.randN nharm (-0.5) 0.5)
(mceFill nharm (\i -> 1 / (i + 1)))
(X.randN nharm 0.5 4.5)
gen n = klank (brownNoise ar * 0.001) 1 0 1 (spec n)
in mceFill 2 gen
-- resonators harmonic series (jmcc) #2 ; texture=xfade,1,7,inf ; id
let series n i j = case n of {0 -> []; _ -> i : series (n - 1) (i + j) j}
enumFromN e i = let j = fromEnum e in [j .. j + i]
nharm = 12
noise = brownNoiseId 'α' ar * 0.001
rat = [1.0,1.125,1.25,1.333,1.5,1.667,1.875,2.0,2.25,2.5,2.667,3.0,3.333,3.75,4.0]
freq = lchooseId 'β' rat * 120
resFreqs = zipWith (+)
(series nharm freq freq)
(map (\z -> rand2Id ('γ',z) 0.5) (enumFromN 'δ' nharm))
spec = klankSpec
resFreqs
(map (\i -> 1 / (constant i + 1)) [0 .. nharm - 1])
(map (\z -> randId ('ε',z) 0.5 4.5) (enumFromN 'ζ' nharm))
in Protect.uclone_all 'η' 2 (klank noise 1 0 1 spec)
-- resonators harmonic series (jmcc) #2 ; event control
let f (_,g,_,y,z,o,rx,_,p,_,_) =
let nharm = 12
spec _ = let freq = unitCps p
series n i j = case n of {0 -> []; _ -> i : series (n - 1) (i + j) j}
in klankSpec_mce
(mce (series nharm freq freq) + (X.randN nharm (-0.5) 0.5) * rx)
(mceFill nharm (\i -> 1 / (i + (2 * y))))
(X.randN nharm 0.5 4.5)
gen n = dynKlank (brownNoise ar * 0.001) 1 0 1 (spec n)
in pan2 (mceFill 2 gen) (o * 2 - 1) (z * g)
in mix (voicer 16 f) * control kr "gain" 1
-- resonators harmonic series (jmcc) #2 ; event control ; id
let f (c,g,_,y,z,o,rx,ry,p,_,_) =
let series n i j = case n of {0 -> []; _ -> i : series (n - 1) (i + j) j}
enumFromN e i = let j = fromEnum e in [j .. j + i]
nharm = 12
noise = brownNoiseId (c,'α') ar * 0.001
freq = unitCps p
resFreqs = zipWith (+)
(series nharm freq freq)
(map (\k -> rand2Id (c,'γ',k) 0.5 * rx) (enumFromN 'δ' nharm))
spec = klankSpec
resFreqs
(map (\i -> 1 / (constant i + (2 * y))) [0 .. nharm - 1])
(map (\k -> randId (c,'ε',k) 0.5 4.5 * (0.5 + ry)) (enumFromN 'ζ' nharm))
in pan2 (Protect.uclone_all 'η' 2 (dynKlank noise 1 0 1 spec)) (o * 2 - 1) (z * g)
in mix (voicer 16 f) * control kr "gain" 1