-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)
import Data.List {- base -}
import Sound.SC3 {- hsc3 -}
type T4 a = (a,a,a,a)
-- > param 6
param :: Fractional n => Int -> [T4 n]
param n =
let f g z = take n (iterate g z)
in zip4 (f (* 4) 2) (f (/ 2) (1/2)) (f (* 4) 1) (f (* 4) 2)
gen :: UGen -> T4 UGen -> UGen
gen f0 (m,f1,l,r) = sinOsc AR f0 0 * m + linExp (sinOsc AR f1 0) (-1) 1 l r
-- audition (pkt_07 12)
-- Sound.SC3.UGen.Dot.draw (pkt_07 6)
pkt_07 :: Int -> UGen
pkt_07 n =
let c = foldl gen 1 (param n)
o = sinOsc AR c 0 * 0.1
in out 0 (gVerb (leakDC o 0.995) 16 8 0.75 0.5 15 1 0.7 0.5 16)
main :: IO ()
main = audition (pkt_07 6)