tgr-rpr (rd) > let { sf = "/home/rohan/audio/text.snd" > ; preset = [ 0.01, 0.02 > , 0.95, 1.05 > , 0.02, 0.06 > , 0.2, 0.3 > , 0.7, 0.9 > , -1.0, 1.0 ] > ; dustR r lo hi = do { n1 <- dwhite 1 lo hi > ; n2 <- whiteNoise r > ; d <- dseq dinf n1 > ; return (tDuty r d 0 DoNothing (abs n2) 1) } > ; rpr n t = tRand (in' 1 KR n) (in' 1 KR (n + 1)) t > ; rrand l r = getStdRandom (randomR (l, r)) > ; rSet = [ (0.005, 0.025), (0.05, 0.25) > , (0.75, 0.95) , (1.05, 1.25) > , (0.001, 0.01) , (0.02, 0.04) > , (0.1, 0.2) , (0.2, 0.4) > , (0.0, 0.45) , (0.55, 1.0) > , (-1.0, 0.0) , (0.0, 1.0) ] > ; edit fd = do { s <- mapM (\(l,r) -> rrand l r) rSet > ; send fd (c_setn [(0, s)]) > ; threadDelay 350000 } } > in do { clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1) > ; rat <- rpr 2 clk > ; dur <- rpr 4 clk > ; pos <- liftM (* (bufDur KR 10)) (rpr 8 clk) > ; pan <- rpr 10 clk > ; amp <- rpr 6 clk > ; withSC3 (\fd -> do { async fd (b_allocRead 10 sf 0 0) > ; send fd (c_setn [(0, preset)]) > ; let o = tGrains 2 clk 10 rat pos dur pan amp 2 > in play fd (out 0 o) > ; threadDelay 3000000 > ; replicateM_ 16 (edit fd) > ; reset fd }) }