hsc3-graphs-0.15: Sound/SC3/Graph/JMCC_mridangam.hs
-- mridangam (jmcc) #SPE3
module Sound.SC3.Graph.JMCC_mridangam 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 -}
mridangam :: UGen
mridangam =
let a = tr_control "amp" 1
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 :: [a] -> Int -> [a]
lseq l n = concat (replicate n l)
lrand :: Enum e => e -> [[a]] -> Int -> [a]
lrand e l n = concat (R.nchoose e n l)
a_seq :: Fractional n => Char -> [[n]]
a_seq e =
[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
,lrand e [[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
-- 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
,[5.0]]
act :: Transport m => m ()
act = do
play (out 0 drone)
let sy = synthdef "mridangam" (out 0 mridangam)
a = concat (a_seq 'α')
play (P.nbind1 (sy,100,[("amp",a),("dur",repeat (1/8))]))
main :: IO ()
main = withSC3 act