hsc3-graphs-0.11: src/scritto-m.hs
-- scritto (rd)
import Sound.SC3.Monadic
import qualified Sound.SC3.Lang.Data.Vowel as V
main :: IO ()
main =
let s_msg n (_,_,f,a,b) = b_setn1 n 0 (f ++ a ++ b)
s_alloc fd (s,b) = do _ <- async fd (b_alloc b 15 1)
send fd (s_msg b s)
buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation
v_filter i f a b = resonz i f (b / f) * dbAmp a
v_filter_b bi i = v_filter i (buf_at bi 0) (buf_at bi 5) (buf_at bi 10)
mk_instr bx = do
n <- lfNoise2 KR 3
let t = impulse AR (n * 9 + 9) 0
i d = do n1 <- tRand 0.02 0.06 t
n2 <- tIRand 30 52 t
n3 <- tIRand 16 32 t
let p = pulseDivider t d 0
b = blip AR (midiCPS n2) n3
return (decay2 p 0.01 n1 * b * 12)
bi = linLin n (-1) 1 0 bx
voice = mix . v_filter_b bi
return . out 0 . mce . map voice =<< mapM i [1,2]
in withSC3 (\fd-> do mapM_ (s_alloc fd) (zip V.fdata_table [0..])
let n = constant (length V.fdata_table)
audition =<< mk_instr n)