packages feed

hsc3-graphs-0.12: gr/rzblp.hs

-- rzblp (rd)

import Sound.SC3.ID {- hsc3 -}

wrp :: Fractional a => a -> a -> a -> a
wrp i l r =
    let m = (r - l) / 2
    in i * m + l + m

lfn :: ID a => a -> UGen -> UGen -> UGen -> UGen
lfn z f l r =
    let z' = z `joinID` l `joinID` r
    in wrp (lfNoise0 z' KR f) l r

hpb :: (ID a) => a -> UGen -> UGen
hpb z q =
    let g i = let z' = idHash z + i
                  f = lfn z' q 1330 1395
                  a = lfn z' q 0.001 0.007
              in blip AR f 24 * a
    in mixFill 2 g

mk_f :: ID a => a -> (a -> UGen -> UGen -> UGen) -> UGen
mk_f z d =
    let q = lfn z 5.2 5.2 5.21
        a = d z dinf (mce [1,3,2,7,8])
        tr = impulse KR q 0
        freq = demand tr 0 a * 30 + 340
        rt = impulse AR q (mce2 0 0)
        rf = lfn z 5 30 640
        rbw = lfn z q 0.1 0.5
    in sum [blip AR freq 3 * lfn z q 0.001 0.01
           ,resonz rt rf rbw * lfn z q 0.01 1.8
           ,hpb z q * lfn z q 1.2 1.8
           ,blip AR (lfn z q 16 36) 3 * mce2 0.03 0.09]

rzblp :: UGen
rzblp = mk_f 'a' drand + mk_f 'b' dxrand

main :: IO ()
main = audition (out 0 rzblp)