packages feed

hsc3-graphs-0.12: gr/choip.hs

-- choip (jmcc)

import Sound.SC3.ID {- hsc3 -}
import Sound.SC3.UGen.Protect
import Sound.SC3.UGen.External.RDU {- sc3-rdu -}
import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}

xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen
xl e0 e1 l r t = xLine KR (expRand e0 l r) (expRand e1 l r) t DoNothing

r2 :: ID a => a -> UGen -> UGen
r2 e n = rand e (-n) n

choip :: UGen
choip =
    let t = 12
        i = impulse AR (xl 'a' 'b' 1 30 t) 0
        f = xl 'c' 'd' 600 8000 t
        a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0
        l = line KR (r2 'e' 1) (r2 'f' 1) t DoNothing
    in pan2 (decay2 (i * xl 'g' 'h' 0.01 0.5 t) 0.01 0.2 * a) l 1

choip_pp :: UGen -> UGen
choip_pp =
    let f x = allpassN x 0.1 (randN 2 'a' 0 0.05) 4
    in useq 'a' 4 f

main :: IO ()
main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp