hsc3-0.4: Help/Graphs/scritto.lhs
scritto (rd)
> let { scritto = [ ( "sA"
> , [800, 1150, 2900, 3900, 4950]
> , [0, -6, -32, -20, -50]
> , [80, 90, 120, 130, 140] )
> , ( "sE"
> , [350, 2000, 2800, 3600, 4950]
> , [0, -20, -15, -40, -56]
> , [60, 100, 120, 150, 200] )
> , ( "sI"
> , [270, 2140, 2950, 3900, 4950]
> , [0, -12 , -26 , -26 , -44]
> , [60, 90, 100, 120, 120] )
> , ( "sO"
> , [450, 800, 2830, 3800, 4950]
> , [0, -11 , -22 , -22 , -50]
> , [70, 80, 100, 130, 135] )
> , ( "sU"
> , [325, 700, 2700, 3800, 4950]
> , [0, -16, -35, -40, -60]
> , [50, 60, 170, 180, 200] )
> , ( "aA"
> , [800, 1150, 2800, 3500, 4950]
> , [0, -4 , -20, -36 , -60]
> , [80, 90, 120, 130, 140] )
> , ( "aE"
> , [400, 1600, 2700, 3300, 4950]
> , [0, -24 , -30, -35, -60]
> , [60, 80, 120, 150, 200] )
> , ( "aI"
> , [350, 1700, 2700, 3700, 4950]
> , [0, -20, -30, -36 , -60]
> , [50, 100, 120, 150, 200] )
> , ( "aO"
> , [450, 800, 2830, 3500, 4950]
> , [0, -9 , -16 , -28 , -55]
> , [70, 80, 100, 130, 135] )
> , ( "aU"
> , [325, 700, 2530, 3500, 4950]
> , [0, -12 , -30, -40, -64]
> , [50, 60, 170, 180, 200] )
> , ( "ctA"
> , [660, 1120, 2750, 3000, 3350]
> , [0, -6 , -23 , -24 , -38]
> , [80, 90, 120, 130, 140] )
> , ( "ctE"
> , [440, 1800, 2700, 3000, 3300]
> , [0, -14 , -18 , -20, -20]
> , [70, 80, 100, 120, 120] )
> , ( "ctI"
> , [270, 1850, 2900, 3350, 3590]
> , [0, -24 , -24 , -36 , -36]
> , [40, 90, 100, 120, 120] )
> , ( "ctO"
> , [430, 820, 2700, 3000, 3300]
> , [0, -10, -26 , -22 , -34]
> , [40, 80, 100, 120, 120] )
> , ( "ctU"
> , [370, 630, 2750, 3000, 3400]
> , [0, -20, -23 , -30, -34]
> , [40, 60, 100, 120, 120] )
> , ( "tA"
> , [650, 1080, 2650, 2900, 3250]
> , [0, -6 , -7 , -8 , -22]
> , [80, 90, 120, 130, 140] )
> , ( "tE"
> , [400, 1700, 2600, 3200, 3580]
> , [0, -14 , -12 , -14 , -20]
> , [70, 80, 100, 120, 120] )
> , ( "tI"
> , [290, 1870, 2800, 3250, 3540]
> , [0, -15, -18 , -20, -30]
> , [40, 90, 100, 120, 120] )
> , ( "tO"
> , [400, 800, 2600, 2800, 3000]
> , [0, -10, -12 , -12 , -26]
> , [40, 80, 100, 120, 120] )
> , ( "tU"
> , [350, 600, 2700, 2900, 3300]
> , [0, -20, -17 , -14 , -26]
> , [40, 60, 100, 120, 120] )
> , ( "bA"
> , [600, 1040, 2250, 2450, 2750]
> , [0, -7 , -9 , -9 , -20]
> , [60, 70, 110, 120, 130] )
> , ( "bE"
> , [400, 1620, 2400, 2800, 3100]
> , [0, -12 , -9 , -12 , -18]
> , [40, 80, 100, 120, 120] )
> , ( "bI"
> , [250, 1750, 2600, 3050, 3340]
> , [0, -30, -16 , -22 , -28]
> , [60, 90, 100, 120, 120] )
> , ( "bO"
> , [400, 750, 2400, 2600, 2900]
> , [0, -11 , -21 , -20, -40]
> , [40, 80, 100, 120, 120] )
> , ( "bU"
> , [350, 600, 2400, 2675, 2950]
> , [0, -20, -32 , -28 , -36]
> , [40, 80, 100, 120, 120] ) ]
> ; 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 <- M.lfNoise2 kr 3
> ; let { t = impulse ar (n * 9 + 9) 0
> ; i d = do { n1 <- M.tRand 0.02 0.06 t
> ; n2 <- M.tiRand 30 52 t
> ; n3 <- M.tiRand 16 32 t
> ; let { p = pulseDivider t d 0
> ; b = blip ar (midiCPS n2) n3 }
> in return (decay2 p 0.01 n1 * b * 12) }
> ; bi = linLin n (-1) 1 0 bx
> ; voice = mix . v_filter_b bi }
> in return . out 0 . mce . map voice =<< mapM i [1, 2] } }
> in withSC3 (\fd -> do { mapM_ (s_alloc fd) (zip scritto [0..])
> ; let n = constant (length scritto)
> in audition =<< mk_instr n })