packages feed

hsc3-graphs-0.12: gr/harmonic-swimming-m.hs

-- harmonic swimming (jmcc)

import Sound.SC3.Monad {- hsc3 -}

harmonic_swimming :: UId m => m UGen
harmonic_swimming =
    let a = 0.02
        f = 50
        p = 20
        l = line KR 0 (- a) 60 DoNothing
        o h = do r <- clone 2 (rand 2 8)
                 n <- lfNoise1 KR r
                 let e = max 0 (n * a + l)
                 return (fSinOsc AR (f * (h + 1)) 0 * e)
    in fmap sum (mapM o [0..p])

main :: IO ()
main = audition . out 0 =<< harmonic_swimming