packages feed

hsc3-graphs-0.12: gr/trkl.hs

-- trkl (rd)

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

trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen
trkl d ul fu dy la fy = do
  let tf = xLine KR 1 ul d RemoveSynth
      st = impulse AR (tf * 8) 0
      t = impulse AR tf 0
  r0 <- rand (-1) 1
  r1 <- rand (-1) 1
  r2 <- tRand 0.05 1.0 t
  r3 <- tExpRand 0.001 0.25 st -- non-zero minima
  fh <- tRand 1.75 2.25 t
  let a = dbAmp (line KR 12 la d RemoveSynth)
      f = xLine KR fu 900 d RemoveSynth
      p = line KR r0 r1 d RemoveSynth
      o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)
      o2 = mix (saw AR (mce2 f (f * fh)))
  return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)

-- > Sound.SC3.UGen.Dot.draw =<< trkl_r
-- > audition . out 0 =<< trkl_r
trkl_r :: UId m => m UGen
trkl_r = do
  d <- rand 0.5 16
  ul <- rand 16 64
  fu <- rand 1200 9000
  dy <- rand 0.005 0.175
  la <- rand (-60) (-25)
  fy <- rand 0.015 0.125
  trkl d ul fu dy la fy

main :: IO ()
main = overlapTextureU (5,2,12,maxBound) =<< trkl_r