packages feed

hsc3-0.2: Help/Graphs/synthetic-piano.lhs

synthetic piano (jmcc)

> let p = do { n <- iRand 36 90
>            ; f <- rand 0.1 0.5
>            ; ph <- rand 0 (pi * 2)
>            ; let { s = impulse AR f ph * 0.1
>                  ; e = decay2 s 0.008 0.04
>                  ; c i = do { n0 <- lfNoise2 AR 3000
>                             ; let { o = [-0.05, 0, 0.04] !! i
>                                   ; dt = 1 / (midiCPS (n + o)) }
>                               in return (combL (n0 * e) dt dt 6) }
>                  ; l = ((n - 36) / 27) - 1 }
>              in do { c_ <- mixFillM 3 c
>                    ; return (pan2 c_ l 1) } }
> in audition . out 0 =<< mixFillM 6 (const p)

{ var p = { var n = IRand.new(36, 90)
          ; var f = Rand.new(0.1, 0.5)
          ; var ph = Rand.new(0, pi * 2)
          ; var s = Impulse.ar(f, ph) * 0.1
          ; var e = Decay2.ar(s, 0.008, 0.04)
          ; var c = { arg i
                    ; var n0 = LFNoise2.ar(3000)
                    ; var o = [-0.05, 0, 0.04].at(i)
                    ; var dt = 1 / (n + o).midicps
                    ; CombL.ar(n0 * e, dt, dt, 6) }
          ; var l = ((n - 36) / 27) - 1
          ; var c_ = Mix.fill(3, c)
          ; Pan2.ar(c_, l, 1) }
; Out.ar(0, Mix.fill(6, p)) }.play