hsc3-graphs-0.15: Sound/SC3/Graph/JMCC_drone_plus_rhythm.hs
-- drone plus rhythm (jmcc) #12
module Sound.SC3.Graph.JMCC_drone_plus_rhythm where
import Control.Concurrent {- hsc3 -}
import Sound.SC3 {- hsc3 -}
import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}
scale :: Num a => [a]
scale = [0, 2, 3, 5, 7, 9, 10]
rand2 :: ID a => a -> UGen -> UGen
rand2 z n = rand z (negate n) n
drone_1 :: UGen
drone_1 =
let f0 = midiCPS (lchoose 'α' [24,36] + rand2 'β' 0.08)
f1 = lfSaw AR (mce2 f0 (f0 + 0.2)) 0 * lfNoise2 'γ' KR (f0 * mce2 0.05 0.04) * 0.06
in lpf f1 (rand 'δ' 1000 3000)
drone_1_txt :: IO ()
drone_1_txt = overlapTextureU (4,4,8,maxBound) drone_1
drone_2 :: UGen
drone_2 =
let x = rand 'ε' 0 1 >* 0.8
m = lchoose 'ζ' [60,72] + lchoose 'η' scale + uclone 'θ' 2 (rand2 'ι' 0.05)
in sinOsc AR (midiCPS m) 0 * x * rand 'κ' 0.04 0.07
drone_2_txt :: IO ()
drone_2_txt = overlapTextureU (4,6,3,maxBound) drone_2
iseqr :: ID a => a -> [UGen] -> UGen -> UGen
iseqr z s tr = tr * demand tr 0 (dxrand z dinf (mce s))
rhy :: UGen
rhy =
let m = lchoose 'λ' [48, 60, 72, 84] + lchoose 'μ' scale + uclone 'ν' 2 (rand2 'ξ' 0.03)
sq = iseqr 'ο' [0,1,0,1,1,0] (impulse AR (lchoose 'π' [1.5,3,6]) 0)
sg = lfPulse AR (midiCPS m) 0 0.4 * rand 'ρ' 0.03 0.08
in rlpf (decay2 sq 0.004 (rand 'σ' 0.2 0.7) * sg) (expRand 'τ' 800 2000) 0.1
pp :: UGen -> UGen
pp z = combN z 0.5 0.5 6 + mceReverse z
rhy_txt :: IO ()
rhy_txt = overlapTextureU_pp (6,6,6,maxBound) rhy 2 pp
main = do
forkIO drone_1_txt
forkIO drone_2_txt
forkIO rhy_txt