packages feed

hsc3-graphs-0.15: gr/seqr-n.hs

-- seqr-n (rd)

import Sound.SC3 {- hsc3 -}
import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}
import Sound.SC3.UGen.External.RDU {- sc3-rdu -}

seqr_f :: UGen -> UGen -> UGen
seqr_f f e =
    let n = constant (mceDegree e) / 2
    in select (mulAdd (lfSaw KR f 0) n n) e

seqr_n :: Int -> UGen
seqr_n n =
  let f = iRand 'α' 9 18 / constant n
      o1 = let f1 = seqr_f f (midiCPS (iRandN n 'β' 72 96))
               f2 = seqr_f f (midiCPS (iRandN n 'γ' 72 84))
               h1 = seqr_f f (randN n 'δ' 1 3)
               h2 = seqr_f f (randN n 'ε' 3 6)
           in blip AR (mce2 f1 f2) (mce2 h1 h2)
      o2 = mce2 (seqr_f f (randN n 'ζ' 0.05 0.10)) (seqr_f f (randN n 'η' 0.05 0.15))
  in o1 * o2

main :: IO ()
main = overlapTextureU (6,6,3,maxBound) (seqr_n 13)