packages feed

hsc3-0.5: Help/Graphs/default.lhs

default (jmcc)

> import Sound.SC3
> import Sound.OpenSoundControl
> import System.Random

> let { def = do { r0 <- rand (-0.4) 0.0
>                ; r1 <- rand 0.0 0.4
>                ; r2 <- rand 4000 5000
>                ; r3 <- rand 2500 3200
>                ; let { f = Control KR "freq" 440
>                      ; a = Control KR "amp" 0.1
>                      ; p = Control KR "pan" 0
>                      ; g = Control KR "gate" 1
>                      ; e = linen g 0.01 (a * 0.7) 0.3 RemoveSynth
>                      ; f3 = mce [f, f + r0, f + r1]
>                      ; l = xLine KR r2 r3 1 DoNothing
>                      ; z = lpf (mix (varSaw AR f3 0 0.3)) l * e }
>                  in return (pan2 z p 1) }
>     ; rrand lr = getStdRandom (randomR lr)
>     ; tone fd nid = do { pan <- rrand (-1, 1)
>                        ; amp <- rrand (0.1, 0.3)
>                        ; indx <- rrand (0, 7)
>                        ; let note = [60, 62, 64, 65, 67, 69, 71, 72] !! indx
>                          in send fd (s_new "default" nid AddToTail 1
>                                      [("freq", midiCPS note)
>                                      ,("pan", pan)
>                                      ,("amp", amp)])
>                        ; pauseThread 0.075
>                        ; send fd (n_set nid [("gate", 0)])
>                        ; pauseThread 0.075 } }
> in withSC3 (\fd -> do { u <- def
>                       ; async fd (d_recv (synthdef "default" (out 0 u)))
>                       ; reset fd
>                       ; mapM_ (tone fd) [1024..1036] })