--nharm (rd) import Control.Concurrent import Control.Monad import Sound.OpenSoundControl import Sound.SC3.Monadic import System.Random rrand :: Random a => a -> a -> IO a rrand l r = getStdRandom (randomR (l,r)) nharm :: (Num b, Integral a) => a -> b -> [b] nharm n f = map ((* f) . fromIntegral) [1..n] klg :: UGen -> Int -> IO UGen klg m u = do n <- rrand 4 u d <- iRand 9 12 f <- iRand m (m + 2) l <- sequence (replicate n (rand 0.01 0.02)) p <- rand (-1.0) 1.0 let a = 0.5 e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a) nh = nharm n (midiCPS f) s = klangSpec nh l (replicate n 0.0) return (pan2 (klang AR 1 0 s) p e) ply :: Int -> (Double,Double) -> UGen -> Int -> IO () ply n (l,r) m u = do let a = do pauseThread =<< rrand l r audition . out 0 =<< klg m u replicateM_ n a main :: IO () main = do _ <- forkIO (ply 32 (0.25,0.75) 92 24) _ <- forkIO (ply 8 (1.25,1.75) 12 54) return ()