-- implosion (rd) import Sound.SC3.Monadic mkls :: [(UGen,UGen)] -> UGen -> UGen mkls bp t = let e = envCoord bp t 1 EnvLin in envGen KR 1 1 0 1 RemoveSynth e mkrmp :: UGen -> UGen -> UGen -> UGen mkrmp l r = mkls [(0,l),(1,r)] wrp :: UGen -> UGen -> UGen -> UGen wrp i = linLin i (-1) 1 pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen pmr_n rt l0 l1 r0 r1 d = do let le = mkrmp l0 r0 d re = mkrmp l1 r1 d n <- whiteNoise rt return (wrp n le re) implosion :: IO UGen implosion = do n0 <- rand (-1) 0 n1 <- rand 0 1 d <- rand 7.5 13.5 f0 <- rand 10990 16220 f1 <- rand 9440 19550 f <- pmr_n AR 440 f0 f1 f1 d l <- pmr_n KR n0 n1 0 0 d a <- pmr_n KR 0.1 0.6 0 0 d return (pan2 (saw AR f) l a) main :: IO () main = audition . out 0 =<< implosion