-- http://sccode.org/1-4QM import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -} import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -} import Sound.SC3.UGen.External.RDU {- sc3-rdu -} type ST = (UGen,UGen,UGen) n1 :: ST -> UGen -> UGen n1 (s1,s2,s3) a = let x = tScramble 'α' KR 1 (mce [60,67,75,79,94]) rel = choose 'β' (mce [0,0,0,0,0,0,0,1]) p = envPerc 0.01 (a + rel) e = envGen AR 1 1 0 1 RemoveSynth p ta = midiCPS x * a * choose 'γ' s1 tb = x * midiCPS (choose 'δ' s2) tc = a * midiCPS (choose 'ε' s3) in out 0 (e * ay ta tb tc 0.25 3 15 10 7 4 1 0) mk_e :: UGen -> UGen -> UGen mk_e m k = let g = let d = dseq 'ζ' dinf m l = dxrand 'η' dinf (mce2 0 1) in (duty KR d 0 DoNothing l) p = envPerc 0.01 k in envGen AR g 1 0 1 RemoveSynth p n2 :: UGen -> UGen n2 a = let n z = brownNoise z AR e = mk_e (mce2 0.5 0.25) (a / 2) in out 0 (e * mce2 (n 'θ') (n 'ι') * 0.6) n3 :: UGen -> UGen n3 a = let n z = whiteNoise z AR e = mk_e (mce2 0.25 0.5) (a / 4) in out 0 (e * lfNoise0 'κ' KR 16 * mce2 (n 'λ') (n 'μ')) c1_4QM :: Transport m => ST -> m () c1_4QM st = do dt <- L.choose [0.125,0.25,0.5,0.5,0.25,0.125,1] let a = constant dt play (n1 st a) play (n2 a) play (n3 a) liftIO (wait dt) main :: IO () main = do let s1 = [8,12,16,20] s2 <- L.scramble s1 s3 <- L.scramble s1 withSC3 (forever (c1_4QM (mce s1,2 / mce s2,2 * mce s3)))