packages feed

hsc3-0.5: Help/Graphs/fwalk.lhs

fwalk (rd)

> import Sound.SC3

> let { n = [ 40.0, 47.0, 42.0, 40.0, 50.0
>           , 43.0, 35.0, 43.0, 40.0, 47.0
>           , 45.0, 35.0, 43.0, 42.0, 59.0
>           , 48.0, 40.0, 47.0, 52.0, 45.0 ]
>     ; m = [ 40.0, 40.0, 42.0, 47.0, 50.0
>           , 35.0, 43.0, 43.0, 40.0, 45.0
>           , 42.0, 35.0, 48.0, 47.0, 43.0
>           , 40.0, 59.0, 45.0, 47.0, 52.0 ] 
>     ; a = map (\b -> b_alloc b 20 1) [0, 1]
>     ; s = map (\(b, d) -> b_setn1 b 0 d) [(0, n), (1, m)]
>     ; fwalk r = do { t <- dust kr 3
>                    ; r1 <- tiRand 0 6 t
>                    ; r2 <- tRand (-0.0001) 0.0001 t
>                    ; let { f = bufRdL 1 kr (mce2 0 1) r1 NoLoop
>                          ; f' = f + r2
>                          ; o1 = blip ar (midiCPS (r + f)) 12
>                          ; o2 = blip ar (midiCPS (r + f')) 12 }
>                      in return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1) } }
> in withSC3 (\fd -> do { f1 <- fwalk 24
>                       ; f2 <- fwalk 36
>                       ; mapM_ (async fd) a
>                       ; mapM_ (send fd) s
>                       ; play fd (out 0 (f1 + f2)) })