hsc3-graphs-0.15: Sound/SC3/Graph/JMCC_mridangam_dr.hs
-- mridangam (jmcc) #SPE3
module Sound.SC3.Graph.JMCC_mridangam_dr where
import Sound.OSC {- hosc -}
import Sound.SC3 {- hsc3 -}
import qualified Sound.SC3.Lang.Pattern.Bind as P {- hsc3-lang -}
import qualified Sound.SC3.Lang.Random.ID as R {- hsc3-lang -}
-- > let g = drum (dust 'α' AR 1)
-- > audition (out 0 g)
drum :: UGen -> UGen
drum a =
let n = whiteNoise 'α' AR * 70
e = decay2 a 0.002 0.1
in distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4
drone :: UGen
drone =
let s1 = saw AR (midiCPS (mce2 60 60.04))
s2 = saw AR (midiCPS (mce2 67 67.04))
in lpf (s1 + s2) (midiCPS 108) * 0.007
lseq :: [Double] -> UGen -> UGen
lseq l n = dseq 'β' n (mce (map constant l))
lrand :: [[Double]] -> UGen -> UGen
lrand l n = drand 'γ' n (mce (map (flip lseq 1) l))
a_solo :: UGen
a_solo =
lrand [[0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0]
,[0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0]
,[0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2]
,[0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0]
,[0.9,0.0,0.0,0.7,0.0,0.2,0.2,0.7,0.2,0.0]
,[0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.2,0.2]
,[0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.0,0.0]
,[0.9,0.0,0.0,0.7,0.2,0.2,0.2,0.7,0.0,0.0]
,[0.9,0.0,0.4,0.0,0.4,0.0,0.4,0.0,0.4,0.0]
,[0.9,0.0,0.0,0.4,0.0,0.0,0.4,0.2,0.4,0.2]
,[0.9,0.0,0.2,0.7,0.0,0.2,0.0,0.7,0.0,0.0]
,[0.9,0.0,0.0,0.7,0.0,0.0,0.0,0.7,0.0,0.0]
,[0.9,0.7,0.7,0.0,0.0,0.2,0.2,0.2,0.0,0.0]
,[0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]] 30
a_seq :: [UGen]
a_seq =
[lseq [0.0] 10
-- intro
,lseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 2
,lseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.0] 2
,lseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2
,lseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2
-- solo
,a_solo
-- tehai
,lseq [2.0,0.0,0.2,0.5,0.0,0.2,0.9
,1.5,0.0,0.2,0.5,0.0,0.2,0.9
,1.5,0.0,0.2,0.5,0.0,0.2] 3
-- sam
,lseq [5.0] 1]
mridangam :: UGen
mridangam = drum (tDuty AR (1 / 8) 0 DoNothing (dseq 'δ' 1 (mce a_seq)) 0) + drone
main :: IO ()
main = audition (out 0 mridangam)