packages feed

hsc3-graphs-0.14: Sound/SC3/Graph/SC_bottle_m.hs

-- bottle (sc)
module Sound.SC3.Graph.SC_bottle_m where

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

bottle :: UId m => m UGen
bottle = do
  freq <- rand 220 880
  wn <- whiteNoise AR
  pn <- pinkNoise AR
  let perc = envPerc 0.1 0.6
      ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02
      flute = ringz ex freq 0.3
      r = resonz pn (5 + (freq / 2)) 0.1
      breath = envGen KR 1 1 0 1 DoNothing perc * r
      rapf i = do x <- linRand 0.001 0.1 (-1)
                  return (i + allpassN i 0.1 x 1.0 * 0.5)
      cls i = let en = let c = EnvNum (-4) in (c,c,c)
                  l = envLinen' 0.01 3.0 1.0 1 en
                  z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l
              in mce2 z z
  f <- chainM 2 rapf flute
  return (cls f)

main :: IO ()
main = overlapTextureU (2,0,2,maxBound) =<< bottle