hsc3-0.5: Help/Graphs/adso.lhs
adso (rd)
> import Sound.OpenSoundControl
> import Sound.SC3
> import System.Random
> let { rrand l r = getStdRandom (randomR (l, r))
> ; rrand_l j l r = sequence (replicate j (rrand l r))
> ; n = 24
> ; adso = let { get b j = let k = mce [0 .. constant j - 1]
> in bufRdN 1 kr b k NoLoop
> ; m = sinOsc kr (get 3 n) 0
> ; f = midiCPS (get 0 n) * (m * get 4 n + 1)
> ; l = get 2 n
> ; g = get 1 n }
> in out 0 (mix (pan2 (sinOsc ar f 0) l g))
> ; pattern fd t = do { z <- do { l <- rrand 22 48
> ; r <- rrand 54 122
> ; sequence (replicate n (rrand l r)) }
> ; send fd (b_setn1 0 0 z)
> ; let rn i l r = do { d <- rrand_l n l r
> ; send fd (b_setn1 i 0 d) }
> in do { rn 1 0 0.1
> ; rn 2 (-1) 1
> ; rn 3 2 12
> ; rn 4 0.001 0.0075
> ; rn 5 1 24
> ; rn 6 0.05 2.4 }
> ; pauseThread t } }
> in withSC3 (\fd -> do { mapM_ (\i -> async fd (b_alloc i n 1)) [0..6]
> ; play fd adso
> ; mapM_ (pattern fd) =<< rrand_l 32 0.025 0.75
> ; reset fd })