packages feed

hsc3-graphs-0.15: gr/zizle-hp.hs

-- zizle (jmcc) #SC3d1.5
{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}

import Sound.SC3 {- hsc3 -}
import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}

twopi :: Floating n => n
twopi = 2 * pi

rand2 :: UId m => UGen -> m UGen
rand2 n = randM (-n) n

-- Sound.SC3.UGen.Dot.draw =<< zizle
-- audition =<< zizle
zizle :: UId m => m UGen
zizle = do
  let a f = mix (sinOsc AR (f * mce2 #(randM 0.7 1.3) 1) (mce2 #(randM 0 twopi) #(randM 0 twopi)) * 0.1)
  let a1 = max (a #(expRandM 0.3 8)) 0
  let a2 = abs (a #(expRandM 6 24))
  let o = sinOsc AR (midiCPS #(randM 24 108)) #(randM 0 twopi)
  return (pan2 (o * a1 * a2) #(rand2 1) 1)

main :: IO ()
main = overlapTextureU (4,4,12,maxBound) =<< zizle