-- tr-out (rd)
import Sound.OpenSoundControl
import Sound.SC3.Monadic
tr_nd :: UId m => UGen -> m (UGen,UGen)
tr_nd n = do
t <- dust KR 1.6
r1 <- tRand 0 6 t
r2 <- tRand 0 6 t
r3 <- tRand 0 6 t
let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)
p = bufRdN 1 KR 1 r2 NoLoop
a = bufRdN 1 KR 2 r3 NoLoop
return (pan2 (sinOsc AR f 0) p a
,sendTrig t n (f / 660))
tr_out :: UId m => m UGen
tr_out = do
ns <- mapM tr_nd [1..4]
let o = sum (map fst ns)
return (mrg (o : map snd ns))
act :: Transport t => t -> IO ()
act fd = do
_ <- async fd (b_alloc_setn1 0 0 [60,62,64,65,67,69])
_ <- async fd (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])
_ <- async fd (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])
play fd . out 0 =<< tr_out
main :: IO ()
main = withSC3 act