packages feed

hsc3-graphs 0.12 → 0.14

raw patch · 437 files changed

+12292/−2920 lines, 437 filesdep +data-defaultdep +hsc3-graphsdep −hcg-minusdep ~basedep ~hlsdep ~hmtnew-component:exe:hsc3-birds-hpnew-component:exe:hsc3-bs-070705-mnew-component:exe:hsc3-ccomb-mnew-component:exe:hsc3-cds-070701-mnew-component:exe:hsc3-chain-saw-mnew-component:exe:hsc3-clustered-sines-mnew-component:exe:hsc3-cut-outs-mnew-component:exe:hsc3-dark-sea-horns-hpnew-component:exe:hsc3-data-space-hpnew-component:exe:hsc3-dial-history-mnew-component:exe:hsc3-diffraction-mnew-component:exe:hsc3-f-lets-mnew-component:exe:hsc3-feedr-mnew-component:exe:hsc3-fm-kltr-mnew-component:exe:hsc3-forest-sounds-mnew-component:exe:hsc3-fwalk-mnew-component:exe:hsc3-graphsnew-component:exe:hsc3-h-chatter-mnew-component:exe:hsc3-harmonic-tumbling-mnew-component:exe:hsc3-implosion-mnew-component:exe:hsc3-insects-mnew-component:exe:hsc3-k2ws-hpnew-component:exe:hsc3-lg-timed-mnew-component:exe:hsc3-lso-061101-mnew-component:exe:hsc3-nharm-mnew-component:exe:hsc3-oscillator-cluster-mnew-component:exe:hsc3-pattern-buffer-mnew-component:exe:hsc3-plucked-strings-mnew-component:exe:hsc3-police-state-mnew-component:exe:hsc3-pond-life-hpnew-component:exe:hsc3-random-sine-waves-hpnew-component:exe:hsc3-random-sine-waves-shenew-component:exe:hsc3-red-frik-mnew-component:exe:hsc3-resonant-dust-hpnew-component:exe:hsc3-reverberated-sine-percussion-hpnew-component:exe:hsc3-reverberated-sine-percussion-mnew-component:exe:hsc3-rzblp-hpnew-component:exe:hsc3-rzblp-mnew-component:exe:hsc3-shifting-pulses-mnew-component:exe:hsc3-sidereal-time-hpnew-component:exe:hsc3-sosc-lp-mnew-component:exe:hsc3-tank-hpnew-component:exe:hsc3-tgb-mnew-component:exe:hsc3-tgr-rpr-mnew-component:exe:hsc3-three-cpsw-mnew-component:exe:hsc3-tr-out-mnew-component:exe:hsc3-tremulate-hpnew-component:exe:hsc3-trkl-mnew-component:exe:hsc3-trmlo-unew-component:exe:hsc3-uplink-hpnew-component:exe:hsc3-vlc-distrtn-mnew-component:exe:hsc3-voscil-unew-component:exe:hsc3-what-was-i-thinking-mnew-component:exe:hsc3-wial-m

Dependencies added: data-default, hsc3-graphs

Dependencies removed: hcg-minus

Dependency ranges changed: base, hls, hmt, hosc, hps, hsc3, hsc3-cairo, hsc3-lang, hsc3-sf, hsc3-unsafe, hsharc, sc3-rdu

Files

+ Makefile view
@@ -0,0 +1,34 @@+mk-html:+	mkdir -p html+	cp -f css/emacs.css html/hscolour.css+	(cd gr ; sh ../sh/mk-html.sh)++mk-pdf:+	mkdir -p pdf+	(cd dot.gz ; sh ../sh/mk-pdf.sh)++mk-svg:+	mkdir -p svg+	sh sh/mk-svg.sh++mk-ix:+	mkdir -p md+	(cd hs; runhaskell mk-ix.hs sw/hsc3-graphs)++mk-lib:+	mkdir -p Sound/SC3/Graph+	(cd hs; runhaskell mk-lib.hs)++# mk-pdf fails at sp.org+all: mk-html mk-svg mk-ix++clean:+	(cd gr; make clean)+	cabal clean+	rm -f pdf/*.pdf+	rm -f svg/*.svg+	rm -R Sound+	rm -f hs/hsc3-graphs.hs++remote-update:+	ssh rd@slavepianos.org "(cd sw/hsc3-graphs; make all)"
README view
@@ -17,10 +17,21 @@ - Nick Collins ([nc][nc], 3) - Nathaniel Virgo ([nv][nv], 3) - Alex McLean ([am][am], 1)+- Andrea Valle ([av][av], 1)+- Jacob Joaquin ([jj][jj], 1)+- Josh Parmenter ([jp][jp], 1)+- Juan A. Romero ([jar][jar], 1)+- Lance J. Putnam ([ljp][ljp], 1)+- Ryan Brown ([rb][rb], 1)+- Sam Pluta ([sp][sp], 1)+- Thor Magnusson ([tm][tm], 1)  In most cases the `sclang` variants have been re-written prior to transliteration to haskell. +The graphs can be compiled into a library by typing `make mk-lib` and+built by typing `cabal install`.+ There is a `Makefile` at `gr`, type `make dep; make all`.  [hs]: http://haskell.org/@@ -31,13 +42,21 @@  [adc]: http://medienhaus.udk-berlin.de/pages/Dr._Alberto_De_Campo [am]: http://yaxu.org/+[av]: http://www.fonurgia.unito.it/ [f0]: http://fredrikolofsson.com/+[jar]: http://rukano.de/+[jj]: http://codehop.com/ [jl]: http://kymatica.com/+[jp]: http://www.realizedsound.net/josh/ [jrhb]: http://musikundmedien.net/index.php?id=454&L=1+[ljp]: http://www.mat.ucsb.edu/l.putnam/ [nc]: http://www.sussex.ac.uk/Users/nc81/ [nv]: http://nathanielvirgo.com/+[rb]: http://www.wabdo.com/+[sp]: http://www.sampluta.com/+[tm]: http://www.sussex.ac.uk/Users/thm21/ -© [rohan drape][rd] and others, 2006-2012, [gpl]+© [rohan drape][rd] and others, 2006-2013, [gpl]  [rd]: http://rd.slavepianos.org/ [gpl]: http://gnu.org/copyleft/
+ Sound/SC3/Graph/ADC_bit_reduction.hs view
@@ -0,0 +1,27 @@+-- bit reduction (adc)+module Sound.SC3.Graph.ADC_bit_reduction where++import Sound.SC3.ID {- hsc3 -}++sample_rate_decrease :: UGen+sample_rate_decrease =+  let f = lfNoise2 'α' KR 8+      nh = lfNoise2 'β' KR 3+      src = blip AR (f * 200 + 300) (nh * 10 + 20)+      sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2+  in latch src (impulse AR sr 0)++bit_rate_decrease :: UGen+bit_rate_decrease =+  let f = lfNoise2 'γ' KR 8+      nh = lfNoise2 'δ' KR 3+      src = blip AR (f * 200 + 300) (nh * 10 + 20)+      sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2+      bit_sz = mouseY KR 1 24 Exponential 0.2+      down_sample = latch src (impulse AR sr 0)+      bit_redux = roundTo down_sample (0.5 ** bit_sz)+  in mce2 down_sample bit_redux++-- > Sound.SC3.UGen.Dot.draw (sample_rate_decrease + bit_rate_decrease)+main :: IO ()+main = audition (out 0 (sample_rate_decrease + bit_rate_decrease))
+ Sound/SC3/Graph/ADC_kabelscahden.hs view
@@ -0,0 +1,25 @@+-- march 2003 (adc) / (jrhb)+module Sound.SC3.Graph.ADC_kabelscahden where++import Sound.SC3.ID {- hsc3 -}++kabelScahden :: UGen+kabelScahden =+    let freq = 50+        sustain = 1+        amp = 0.5+        hum = let t = dust 'α' KR (7 ** lfNoise1 'β' KR 0.3)+                  h = toggleFF (coinGate 'γ' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'δ' KR 2 * 0.5 - 0.5)) 6000 0.15+                  n = trig t (tRand 'ε' 0 0.01 (coinGate 'ζ' 0.4 t)) * whiteNoise 'η' AR+                  m = trig t (tRand 'θ' 0 0.01 (coinGate 'ι' 0.4 t)) * brownNoise 'κ' AR+                  k = trig t (lfNoise1 'λ' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'μ' AR (lfNoise0 'ν' KR 7 * 30 + 40)+              in distort (leakDC ((h + n + m + k) * 10) 0.995)+        e = envGen KR 1 1 0 1 RemoveSynth (Envelope [amp,amp,0] [sustain,0] [] Nothing Nothing)+    in out 0 (clip2 hum 1 * e * 0.25)++main :: IO ()+main = audition kabelScahden++-- Local Variables:+-- truncate-lines:t+-- End:
+ Sound/SC3/Graph/ADC_shepard_tones.hs view
@@ -0,0 +1,40 @@+-- shepard tones, alberto de campo (adc)+module Sound.SC3.Graph.ADC_shepard_tones where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++interp :: (Fractional t,Enum t) => t -> t -> t -> [t]+interp n l r =+    let i = (r - l) / n+    in [l,l + i .. r - i]++hanningWindow :: (Floating b,Enum b) => b -> [b]+hanningWindow n =+    let lp = pi * (-0.5)+        rp = lp + 2 * pi+        hf i = sin i * 0.5 + 0.5+    in map hf (interp n lp rp)++shepard_tones :: UGen+shepard_tones =+    let ratescale = 1024 / 44100 / 10+        rate = 0.1+        ph = phasor AR 0 (rate * ratescale) 0 1024 0+        phases = mce (map (\n -> n * 0.1 * 1024 + ph) [0..9])+        freqs = bufRdC 1 AR 1 phases Loop+        amps = bufRdC 1 AR 2 phases Loop+    in mix (sinOsc AR freqs 0 * amps) * 0.1++run :: Transport m => m ()+run = do+  let square x = x * x+      ampTable = map square (hanningWindow 1024)+      amp_f i = (0.5 ** i) * 20000+      freqTable = map amp_f (interp 1024 0 10)+  _ <- async (b_alloc_setn1 1 0 freqTable)+  _ <- async (b_alloc_setn1 2 0 ampTable)+  play (out 0 shepard_tones)++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/AM_karplus_strong.hs view
@@ -0,0 +1,48 @@+-- http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/ (am)+module Sound.SC3.Graph.AM_karplus_strong where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++-- x = delay, y = blend / gain+karplus_strong :: UGen+karplus_strong =+    let vf i s = let f = in' 5 KR i+                     a = in' 5 KR (i + 5)+                     b = in' 5 KR (i + 10)+                 in mix (resonz s f (b / f) * dbAmp a)+        x = mouseX KR 0 0.01 Linear 0.1+        y = mouseY KR 0.85 1 Linear 0.1+        ugenIf a b c = (a * b) + ((1 - a) * c)+        n = whiteNoise 'α' AR+        d = dust 'β' KR 4+        n0 = (n * 0.5) + 0.5+        probSwitch i prob = ugenIf (n0 >* prob) i (negate i)+        laggedDelay = lag x 0.01+        o = sinOsc AR 200 0+        a0 = decay d 0.025 * o+        a1 = localIn 1 AR + (a0 * (y - 0.25))+        a2 = delayN a1 0.01 laggedDelay+        a3 = delay1 a2+        a4 = (a2 + a3) * 0.5+        a5 = probSwitch a4 y+        a6 = vf (toggleFF d * 15) a5+        a7 = a6 * 1.5+    in mrg [localOut (a5 * 0.99),out 0 (mce2 a7 a7)]++act :: Transport m => m ()+act = do+  let aA = ("aA"+           ,[800,1150,2800,3500,4950]+           ,[0,-4 ,-20,-36,-60]+           ,[80,90, 120,130,140])+      aU = ("aU"+           ,[325,700,2530,3500,4950]+           ,[0,-12,-30,-40,-64]+           ,[50,60, 170,180,200])+      cs (_,c1,c2,c3) = c1 ++ c2 ++ c3+  send (c_setn [(0,cs aA),(15,cs aU)])+  play karplus_strong++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/AV_rm_octaver.hs view
@@ -0,0 +1,16 @@+-- rm-octaver (av), courtesy miller puckette+module Sound.SC3.Graph.AV_rm_octaver where++import Sound.SC3 {- hsc3 -}++defaultPitch :: UGen -> UGen+defaultPitch x = pitch x 440 60 4000 100 16 1 0.01 0.5 1++rm_octaver :: UGen -> UGen+rm_octaver i =+    let p = defaultPitch i+        f = mceChannel 0 p+    in sinOsc AR (f * 0.5) 0 * i + i++main :: IO ()+main = audition (out 0 (rm_octaver (soundIn 4)))
+ Sound/SC3/Graph/F0_1_4Q6.hs view
@@ -0,0 +1,46 @@+-- http://sccode.org/1-4Q6 (f0)+module Sound.SC3.Graph.F0_1_4Q6 where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition risset+--+-- let set p = withSC3 (\fd -> send fd (n_set (-1) p))+-- set [("trig",1)]+-- set [("freq",midiCPS 100),("sustain",3),("trig",1)]+-- set [("freq",midiCPS 60),("sustain",9),("trig",1)]+-- set [("freq",midiCPS 40),("sustain",15),("trig",1)]+risset :: Synthdef+risset =+    let k = control KR+        pan = k "pan" 0+        f = k "freq" 400+        ampl = k "amp" 0.1+        d = k "sustain" 2+        tr = tr_control "trig" 1+        amps = [1,0.67,1,1.8,2.67,1.67,1.46,1.33,1.33,1,1.33]+        durs = [1,0.9,0.65,0.55,0.325,0.35,0.25,0.2,0.15,0.1,0.075]+        frqs = [0.56,0.56,0.92,0.92,1.19,1.7,2,2.74,3,3.76,4.07]+        dets = [0,1,0,1.7,0,0,0,0,0,0,0]+        fn i =+            let shp = let c = EnvNum (-4.5)+                      in envPerc' 0.005 (d * durs!!i) (amps!!i) (c,c)+                env = envGen AR tr 1 0 1 DoNothing shp+            in sinOsc AR (f * frqs!!i + dets!!i) 0 * ampl * env+        src = mixFill 11 fn+    in synthdef "risset" (out 0 (pan2 src pan 1))++pattern :: P_Bind+pattern =+  [(K_instr,pinstr' (Instr_Def risset False))+  ,(K_id,1000)+  ,(K_note,prand 'α' [0,2,5,7,11] inf)+  ,(K_octave,prand 'β' [4,5,6,7,9] inf)+  ,(K_legato,1)+  ,(K_dur,prand 'γ' [2,3,5,7] inf)+  ,(K_amp,pwhite 'δ' 0.025 0.15 inf)+  ,(K_param "trig",1)]++main :: IO ()+main = audition (pmono pattern)
+ Sound/SC3/Graph/F0_buffer_display.hs view
@@ -0,0 +1,134 @@+-- http://sccode.org/1-1HR (f0)+module Sound.SC3.Graph.F0_buffer_display where++import Control.Concurrent {- base -}+import qualified Graphics.Rendering.Cairo as C {- cairo -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Cairo.Scope.Shell {- hsc3-cairo -}++-- * Type++type R = Double+data BD_Type = BD_Line | BD_Warp | BD_Flower+data BD = BD {gain :: R+             ,theta :: R+             ,theta_incr :: R+             ,trails :: R+             ,version :: BD_Type}++bd_default :: BD+bd_default = BD 0.5 0 0 1 BD_Line++-- * Render++rotate_about :: R -> R -> R -> C.Render ()+rotate_about a x y = do+  C.translate x y+  C.rotate a+  C.translate (-x) (-y)++render_line :: R -> R -> [R] -> C.Render ()+render_line n a d = do+  C.translate 0 (n/2)+  let f (x,y) = let y' = (y * n * a)+                in if x == 0 then C.moveTo x y' else C.lineTo x y'+  mapM_ f (zip [0..] d)+  C.stroke++pt_rotate :: Floating a => a -> (a,a) -> (a,a)+pt_rotate a (x,y) =+    let s = sin a+        c = cos a+    in (x * c - y * s,y * c + x * s)++render_warp :: R -> R -> [R] -> C.Render ()+render_warp n a d = do+  C.translate (n/2) (n/2)+  let f (x,y) = let (x',y') = pt_rotate (y * 2 * pi) (x * a,y * a)+                in if x == 0 then C.moveTo x' y' else C.lineTo x' y'+  mapM_ f (zip [0..] d)+  C.stroke++render_flower :: R -> R -> [R] -> C.Render ()+render_flower n t d = do+  let d0 = d !! 0+  C.translate (n/2) (n/2)+  C.moveTo (d0 * d0) 0+  let f (x,y) = let a = ((x `modE` n) / n) * 2 * pi + t+                    (x',y') = pt_rotate a (y * y,x * y)+                in C.lineTo x' y'+  mapM_ f (zip [0..] d)+  C.stroke++bd_render :: Render_F BD+bd_render sh bd = do+  let n = fromIntegral (sh_nf sh)+      a = gain bd+      t = theta bd+      v = version bd+      r = case v of+            BD_Flower -> return ()+            _ -> rotate_about t (n/2) (n/2)+  C.rectangle 0 0 n n+  C.setSourceRGBA 0 0 0 (trails bd)+  C.fill+  C.setSourceRGBA 0 1 0 1+  let f d = case version bd of+              BD_Line -> render_line n a d+              BD_Warp -> render_warp n a d+              BD_Flower -> render_flower n t d+      g d = C.save >> r >> f d >> C.restore+  mapM_ g (sh_data sh)+  return (bd {theta = t + theta_incr bd})++-- * Key++bd_key :: Key_F BD+bd_key k bd =+    case k of+      'T' -> bd {trails = trails bd + 0.025}+      't' -> bd {trails = trails bd - 0.025}+      'S' -> bd {theta_incr = theta_incr bd + 0.025}+      's' -> bd {theta_incr = theta_incr bd - 0.025}+      'w' -> bd {version = BD_Warp}+      'l' -> bd {version = BD_Line}+      'f' -> bd {version = BD_Flower}+      'z' -> bd {theta = 0}+      _ -> bd++-- * Audio...++instr :: UGen+instr =+    let x = mouseX KR 1 1000 Linear 0.2+        y = mouseY KR 50 5000 Linear 0.2+        v = varSaw AR x 0 0.5+        f = bpf v y 0.5+        s = sinOsc AR 0 f+        n = brownNoise 'α' AR * 0.1+    in out 0 (mce2 s n)++bd_shell :: Int -> Shell BD+bd_shell nc = sh_default nc bd_render bd_key++main :: IO ()+main = do+  audition instr+  _ <- forkIO (shell (bd_shell 2) bd_default)+  return ()++{-++import Sound.SC3.ID++let s = saw AR (mouseX KR 20 800 Exponential 0.2)+in audition (out 0 s)++let {v = varSaw AR (mouseX KR 1 1000 Linear 0.2) 0 0.5+    ;f = bpf v (mouseY KR 50 5000 Linear 0.2) 0.5+    ;s = sinOsc AR 0 f}+in audition (out 0 s)++Control.Concurrent.forkIO (shell (bd_shell 1) bd_default)++-}
+ Sound/SC3/Graph/F0_f0_2012_04_19.hs view
@@ -0,0 +1,15 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg17536.html (f0)+module Sound.SC3.Graph.F0_f0_2012_04_19 where++import Sound.SC3 {- hsc3 -}++f0 :: UGen+f0 = let s0 = lfSaw AR 10 0 * 0.01+         t0 = lfTri AR (mce2 5 6 * 0.1) 0+         t1 = lfTri KR 0.1 0 * 0.05 + 0.05+         s1 = limiter (brf s0 t0 1) 1 0.01+         o = combN s1 0.1 (roundTo t1 0.01) 1+     in out 0 (o * 0.1)++main :: IO ()+main = audition f0
+ Sound/SC3/Graph/F0_f0_tw0011.hs view
@@ -0,0 +1,14 @@+-- instance of unworkable graph given current Eq implementation (f0)+module Sound.SC3.Graph.F0_f0_tw0011 where++import Sound.SC3 {- hsc3 -}++f0_0011 :: UGen+f0_0011 =+    let ifE a b c = (a * b) + ((1 - a) * c)+        s o i = sinOsc AR (mce [i,i + 1e-4] ** 2 * f o (i - 1)) (f o (i - 1) * 1e-4) * f o (i - 1)+        f o i = ifE (i >* 0) (s o i) o+    in out 0 (f 60 6 / 60)++main :: IO ()+main = audition f0_0011
+ Sound/SC3/Graph/F0_f0_tw0014.hs view
@@ -0,0 +1,21 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)+module Sound.SC3.Graph.F0_f0_tw0014 where++import Sound.SC3 {- hsc3 -}++f0_tw0014 :: UGen+f0_tw0014 =+    let a = sinOscFB AR+        k = 1/9+        f i = let a0 = a (i+1) k * 999+                  a1 = a k 1 * k+                  a2 = a a0 k * a1+                  a3 = a 0.1 3+                  a4 = a a2 a3 * ((i+2) * 999)+                  a5 = a k k+              in a a4 a5 * k+        s = sum (map f [0..9])+    in out 0 (mce2 s s)++main :: IO ()+main = audition f0_tw0014
+ Sound/SC3/Graph/F0_f0_tw0020.hs view
@@ -0,0 +1,21 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)+module Sound.SC3.Graph.F0_f0_tw0020 where++import Sound.SC3 {- hsc3 -}++f0_tw0020 :: UGen+f0_tw0020 =+    let a n = lfPulse AR n 0 0.5+        b = mce [1..4]+        a1 = (a (b/32) + 1) / 8+        a2 = (a a1 + 1) * b+        a3 = a (b/64)+        a4 = a (a (b/8)) * 2 + b+        a5 = a (4/b)+        a6 = a a2+        a7 = a ((a6 + ((mix a3 + a5) * a4)) * 100)+        s = mix a7 / 8+    in out 0 (mce2 s s)++main :: IO ()+main = audition f0_tw0020
+ Sound/SC3/Graph/F0_f0_tw0028.hs view
@@ -0,0 +1,23 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0028 where++import Sound.SC3.ID {- hsc3 -}++fib :: Integral i => [i]+fib = 0 : scanl (+) 1 fib++-- sc3_fib 16 == [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987]+sc3_fib :: Integral a => Int -> [a]+sc3_fib n = take n (tail fib)++f0_0028 :: UGen+f0_0028 =+    let n = map ((* 99) . (`mod` 8)) (sc3_fib 16)+        p = dseq 'α' dinf (dshuf 'β' 8 (mce (map fromInteger n)))+        q = combN (duty AR (1/8) 0 DoNothing p) 4 4 16+        o = lfTri AR q 0 / 4+        f = lfTri KR (1/16) 0 * 2e3 + 3e3+    in out 0 (pan2 (moogFF o f 2 0) 0 1)++main :: IO ()+main = audition f0_0028
+ Sound/SC3/Graph/F0_f0_tw0030.hs view
@@ -0,0 +1,15 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0030 where++import Sound.SC3.ID {- hsc3 -}++f0_0030 :: UGen+f0_0030 =+    let a i j k l = lfPar AR i j * k + l+        f = a 1 0 5 (a (mce2 0.05 0.04) 0 50 160 `roundTo` 50)+        w = a 0.2 0 0.5 (a 3 0 0.2 0.5)+        o = varSaw AR f 0 w / 8+    in out 0 (gVerb o 80 3 0.5 0.5 15 1 0.7 0.5 300)++main :: IO ()+main = audition f0_0030
+ Sound/SC3/Graph/F0_f0_tw0033.hs view
@@ -0,0 +1,17 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0033 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++f0_0033 :: UGen+f0_0033 =+    let f = roundE (lfPar AR (1/14) 0) * 20 + 80+        a = pulse AR (mce [1..4]) 0.35+        n = uclone 'α' 4 (brownNoise 'α' AR) * a+        z i = mce2 (i + 1 * f) (i * f + (i + 1 / 3))+        o = lfPar AR (mce (map z [0..3])) 0+    in out 0 (splay ((o >* n) / 3) 1 1 0 True)++main :: IO ()+main = audition f0_0033
+ Sound/SC3/Graph/F0_f0_tw0045.hs view
@@ -0,0 +1,15 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)+module Sound.SC3.Graph.F0_f0_tw0045 where++import Sound.SC3 {- hsc3 -}++f0_0045 :: UGen+f0_0045 =+    let a i j k l = sinOsc AR i j * k + l+        f = a (a 0.11 0 1 0) 0 1 0+        p_f = a (95 * a 0.01 0 1 1) 0 (a 5e-3 0 50 0) 100+        p = a p_f (a (mce2 98 97) 0 1 0) (pi + a 5e-4 0 1 0) 0+    in out 0 (tanh (a f p 1 0))++main :: IO ()+main = audition f0_0045
+ Sound/SC3/Graph/F0_f0_tw0049.hs view
@@ -0,0 +1,17 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg18379.html (f0)+module Sound.SC3.Graph.F0_f0_tw0049 where++import Data.Bits {- base -}+import Sound.SC3 {- hsc3 -}++f0_0049 :: UGen+f0_0049 =+    let t = t2A 0 0+        o0 = lfSaw AR 3 0 * 9 + 99+        s0 = sweep t (mce [3..9]) `modE` o0+        s1 = sweep t (mce [33,32..3]) `modE` 128 .&. s0+        o1 = sinOsc AR (midiCPS (s1+33)) 0 * pi+    in out 0 (splay (sinOsc AR 9 o1) 1 1 0 True / 3)++main :: IO ()+main = audition f0_0049
+ Sound/SC3/Graph/F0_f0_tw0051.hs view
@@ -0,0 +1,21 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0051 where++import Sound.SC3 {- hsc3 -}++-- > ascii "sunday" == mce (map constant [115,117,110,100,97,121])+ascii :: String -> UGen+ascii = mce . map (constant.fromEnum)++-- > Sound.SC3.UGen.Dot.draw (out 0 f0_tw0051)+f0_tw0051 :: UGen+f0_tw0051 =+    let i = a (ascii "sunday")+        f = a (9 / ascii "slow") * 400 + 500+        w = a (7 / ascii "coding") + 1.1+        a = saw AR+        l = splay (bBandPass i f w / 5) 1 1 0 True+    in gVerb l 10 3 0.5 0.5 15 1 0.7 0.5 300++main :: IO ()+main = audition (out 0 f0_tw0051)
+ Sound/SC3/Graph/F0_f0_tw0077.hs view
@@ -0,0 +1,16 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0077 where++import Sound.SC3 {- hsc3 -}++f0_tw0077 :: UGen+f0_tw0077 =+    let a = sinOsc AR+        f = a (1 / mce2 5 6) 0 + mce2 798 912+        p = (a (1 / 16) 0 * 19 + 99) * a (mce2 9 8) 0+        m = a (a 6 0 * a 0.009 0) 0+        b = a f p * m+    in tanh (a (mce2 201 301) b)++main :: IO ()+main = audition (out 0 f0_tw0077)
+ Sound/SC3/Graph/F0_f0_tw0084.hs view
@@ -0,0 +1,15 @@+-- http://sccode.org/1-4Qy (f0)+module Sound.SC3.Graph.F0_f0_tw0084 where++import Sound.SC3 {- hsc3 -}++f0_tw0084 :: UGen+f0_tw0084 =+    let a = saw AR+        f = a (mce [5,7..15] * 19) * 99 + 199+        g = a (mce [1,3..13] * 29) * 199 + 299+        w = a (mce [3,5..11] * (a 3 * 2 + 3)) * 299 + 399+    in splay (formant AR f g w) 1 1 0 True / 3++main :: IO ()+main = audition (out 0 f0_tw0084)
+ Sound/SC3/Graph/F0_hansm.hs view
@@ -0,0 +1,106 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/457 (f0)+-- http://obiwannabe.co.uk/tutorials/html/tutorial_birds.html+module Sound.SC3.Graph.F0_hansm where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++type T3 a = (a,a,a)+type Bird_Call_Param a = (T3 a,T3 a,T3 a,T3 a,T3 a)++bird_call :: Transport m => Bird_Call_Param UGen -> m ()+bird_call ((freq,atk,dcy)+          ,(fmod1,atkf1,dcyf1)+          ,(fmod2,atkf2,dcyf2)+          ,(amod1,atka1,dcya1)+          ,(amod2,atka2,dcya2)) =+    let mk_env a aT dT g lS md =+            let x = EnvNum (-4)+                c = Envelope [0,a,0] [aT,dT] [x,x] Nothing Nothing+            in envGen AR g lS 0 1 md c+        e = mk_env 0.5 atk dcy 1 1 RemoveSynth+        freq1 = mk_env fmod1 atkf1 dcyf1 1 3000 DoNothing+        freq2 = mk_env fmod2 atkf2 dcyf2 1 3000 DoNothing+        amp1 = mk_env amod1 atka1 dcya1 1 1 DoNothing+        amp2 = mk_env amod2 atka2 dcya2 1 1 DoNothing+        fmodc = sinOsc AR freq1 0 * amp1 + 1+        amod = 1 - sinOsc AR freq2 0 * amp2+        z = sinOsc AR ((freq * 7000 + 300) * fmodc) 0 * amod+    in play (out 0 (pan2 z 0 e))++triple_tailed_tree_troubler :: (Fractional a) => Bird_Call_Param a+triple_tailed_tree_troubler =+    ((0.387755, 0.0204082, 0.204082)+    ,(0.367347, 0.571429, 0.734694)+    ,(0.918367, 1, 0.77551)+    ,(0.571429, 0.367347, 0.22449)+    ,(0.0204082, 0.183673, 0.44898))++speckled_throated_spew :: (Fractional a) => Bird_Call_Param a+speckled_throated_spew =+    ((0.183673, 0.591837, 0.387755)+    ,(0.0104082, 0.530612, 0.346939)+    ,(0.244898, 0.55102, 0.122449)+    ,(0.387755, 1, 0.612245)+    ,(0.346939, 0.816327, 0.653061))++lesser_spotted_grinchwarbler :: (Fractional a) => Bird_Call_Param a+lesser_spotted_grinchwarbler =+    ((0.55102, 0.591837, 0.387755)+    ,(0.0716327, 0.0204082, 0.346939)+    ,(0.0204082, 0.55102, 0.122449)+    ,(0.632653, 1, 0.612245)+    ,(0.346939, 0.816327, 0.653061))++long_toed_mudhopper :: (Fractional a) => Bird_Call_Param a+long_toed_mudhopper =+    ((0.163265, 0.22449, 0.183673)+    ,(0.00306122, 0.122449, 1)+    ,(0.0612245, 1, 0.77551)+    ,(0.979592, 0.204082, 0.734694)+    ,(1, 0.142857, 0.612245))++yellow_yiffled_yaffle :: (Fractional a) => Bird_Call_Param a+yellow_yiffled_yaffle =+    ((0.0204082, 0.367347, 0.183673)+    ,(0.0612245, 0, 1)+    ,(0.285714, 0.22449, 0.489796)+    ,(0.367347, 0.387755, 0.734694)+    ,(0.204082, 0.428571, 0.142857))++pointy_beaked_beetlefiend :: (Fractional a) => Bird_Call_Param a+pointy_beaked_beetlefiend =+    ((0.428571, 0.204082, 0.489796)+    ,(0.0204082, 0.795918, 0.591837)+    ,(0.285714, 0.22449, 0.489796)+    ,(0.204082, 0.836735, 0.734694)+    ,(0.77551, 0.428571, 0.142857))++african_boojuboolubala :: (Fractional a) => Bird_Call_Param a+african_boojuboolubala =+    ((0.306122, 0.959184, 0.0408163)+    ,(1, 0, 0.591837)+    ,(0.285714, 0.22449, 0.489796)+    ,(0.204082, 0.836735, 0.734694)+    ,(0.77551, 0.428571, 0.142857))++common_muckoink :: (Fractional a) => Bird_Call_Param a+common_muckoink =+    ((0.0204082, 0.8, 0.0816327)+    ,(0.0204082, 0.001, 0.99)+    ,(0.0204082, 0.01, 1)+    ,(1, 0.142857, 0.734694)+    ,(1, 0.0612245, 0.530612))++main :: IO ()+main = do+  let xs = [triple_tailed_tree_troubler+           ,speckled_throated_spew+           ,lesser_spotted_grinchwarbler+           ,long_toed_mudhopper+           ,yellow_yiffled_yaffle+           ,pointy_beaked_beetlefiend+           ,african_boojuboolubala+           ,common_muckoink]+      fn x = bird_call x >> wait 1.25+  withSC3 (mapM_ fn xs)
+ Sound/SC3/Graph/F0_pkt_26.hs view
@@ -0,0 +1,22 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)+module Sound.SC3.Graph.F0_pkt_26 where++import Sound.SC3 {- hsc3 -}++grid :: UGen -> UGen -> UGen+grid n i =+    let t = i / n+        a = abs (varSaw AR 0.02 t 0.5 * 7.5)+        b = varSaw AR 0.16 t (2/3) * a + 300+        c = varSaw AR 0.064 t 0.5 * 25 + 50+        d = varSaw AR 0.012 t 0.75 * c + 200+        e = varSaw AR 0.024 t 0.25 * 0.475 + 0.5+        f = varSaw AR (100 + i) t e+        g = varSaw AR 0.048 0 0.5 * 25 + 150+        h = varSaw AR ((i + 1) * g) t (1/3) * 150+        o = sinOsc AR h (f * pi) * d + b+        z = leakDC (varSaw AR o t 0.5) 0.995+    in pan2 z (varSaw AR 0.02 t 0.5) (1 / n)++main :: IO ()+main = audition (out 0 (mixFill 8 (grid 8)))
+ Sound/SC3/Graph/F0_pkt_28.hs view
@@ -0,0 +1,25 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)+module Sound.SC3.Graph.F0_pkt_28 where++import Sound.SC3 {- hsc3 -}++rnd :: UGen -> UGen -> UGen+rnd n i =+    let a = lfSaw AR ((i + 1) * 5) 0 * 0.5 * pi+        b = sinOsc AR ((i + 1) * 0.001) 0 * 0.5+        c = max (lfSaw AR (0.2 + b) (i / n) * 0.4) 0+        d = sinOsc AR 0.03 (i + 1) * 0.5 + 1+        e = sinOsc AR (200 + i) 0 * d+        f = sinOsc AR 0.04 (i + 2) * 0.5 + 1+        g = sinOsc AR (400 + i) 0 * f+        h = sinOsc AR 0.05 (i + 3) * 0.5 + 1+        j = sinOsc AR (800 + i) 0 * h+        k = linExp i 0 (n - 1) 70 1500+        z = sinOsc AR k a * c * e * g * j+        l = linLin i 0 (n - 1) (-0.925) 0.925+    in pan2 z l (1 / n)++main :: IO ()+main =+    let y = limiter (leakDC (mixFill 28 (rnd 28)) 0.995) 1 1e-2+    in audition (out 0 (gVerb y 3 5 0.2 0.8 20 0.1 0.7 0.5 300))
+ Sound/SC3/Graph/F0_red_frik_m.hs view
@@ -0,0 +1,25 @@+-- red_frik (f0)+module Sound.SC3.Graph.F0_red_frik_m where++import Sound.SC3.Monad {- hsc3 -}++red :: UId m => UGen -> UGen -> m UGen+red tr n = do+  r1 <- tRand 0.3 3 tr+  r2 <- tRand 0.3 5 tr+  r3 <- tRand 0 0.5 tr+  r4 <- tRand 0.49 0.56 tr+  r5 <- tRand 0.3 0.6 tr+  r6 <- tRand 0.3 0.5 tr+  let o1 = fSinOsc KR r2 0 * r3 + r4+      o2 = fSinOsc KR o1 r5 * r6+  return (rhpf n r1 o2)++red_frik :: UId m => m UGen+red_frik = do+  n <- clone 2 (brownNoise AR)+  let tr = impulse KR 0.1 0+  red tr n++main :: IO ()+main = audition . out 0 =<< red_frik
+ Sound/SC3/Graph/F0_sinusdeklinationen.hs view
@@ -0,0 +1,47 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/488 (f0)+module Sound.SC3.Graph.F0_sinusdeklinationen where++import Data.List.Split {- split -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++sinuscell :: UGen+sinuscell =+    let ctl = control KR+        b = ctl "out" 0+        p = ctl "pan" 0+        a = ctl "amp" 0.5+        fre = ctl "fre" 400+        atk = ctl "atk" 1+        sus = ctl "sus" 0.2+        rel = ctl "rel" 1+        e_d = envLinen atk sus rel a+        e = envGen KR 1 0.1 0 1 RemoveSynth e_d+        s = sinOsc AR fre 0+    in out b (pan2 s p e)++pattern :: Enum e => (Field,[e]) -> P_Bind+pattern (c,z) =+    case z of+      [z0,z1,z2,z3] ->+          let a = pwhite z0 0 1 inf+              s = 0.2+              r = pwhite z1 0 1 inf+              i = psynth (synthdef "sinuscell" sinuscell)+          in [(K_instr,i)+             ,(K_dur,a+s+r)+             ,(K_amp,pwhite z3 0 1 inf)+             ,(K_param "fre",pwhite z2 0 1100 inf)+             ,(K_param "atk",a)+             ,(K_param "sus",s)+             ,(K_param "rel",r)+             ,(K_param "pan",prepeat c)]+      _ -> undefined++cells :: Fractional n => [n]+cells = [-1,-0.6,-0.5,0,0.2,0.5,0.4,1]++main :: IO ()+main =+    let c = zip cells (chunksOf 4 ['α'..])+    in audition (ppar (map (pbind . pattern) c))
+ Sound/SC3/Graph/JJ_bohlen_pierce_140.hs view
@@ -0,0 +1,20 @@+-- http://sccode.org/1-W (jj)+module Sound.SC3.Graph.JJ_bohlen_pierce_140 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++bp140u :: UGen+bp140u =+    let f z n = n * (3 ** (rand z 0 17 / 13))+        e = envGen AR 1 0.3 0 1 RemoveSynth (envPerc 0.01 1)+        o = pmOsc AR (f 'α' (mce2 438 442)) (f 'β' 880) (f 'γ' e) 0+    in o * e++bp140 :: Synthdef+bp140 = synthdef "bp140" (out 0 bp140u)++main :: IO ()+main = do+  let p = pbind [(K_instr,psynth bp140),(K_dur,prand 'δ' [1/6,1/3] inf)]+  audition p
+ Sound/SC3/Graph/JL_bitwise.hs view
@@ -0,0 +1,20 @@+-- a0f253ff89f6b244ea29a1e431dd9e5df5571a8b (jl)+module Sound.SC3.Graph.JL_bitwise where++import Data.Bits+import Sound.SC3 {- hsc3 -}++(.%.) :: UGen -> UGen -> UGen+(.%.) = modE++bitwise_operators :: UGen+bitwise_operators =+    let t = pulseCount (impulse AR 8e3 0) 0+        s = ((((t * 15) .&. (t .>>. 5)) .|.+              ((t *  5) .&. (t .>>. (mce2 3 4))) .|.+              ((t *  2) .&. (t .>>. 9)) .|.+              ((t *  8) .&. (t .>>. 11))) - 3) .%. 256+    in tanh (hpf (((s / 127) - 1) * 3) 20)++main :: IO ()+main = audition (out 0 bitwise_operators)
+ Sound/SC3/Graph/JL_dark_sea_horns.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-j#c51 (jl)+module Sound.SC3.Graph.JL_dark_sea_horns where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++dark_sea_horns :: UGen+dark_sea_horns =+    let n = lfNoise1+        x = localIn 2 AR+        a = tanh (sinOsc AR 65 (x * n 'α' AR 0.1 * 3) * n 'β' AR 3 * 6)+        f i = allpassN i 0.3 (randN 2 'γ' 0.1 0.3) 5+        o = tanh (useq 'δ' 9 f a)+    in mrg2 o (localOut o)++main :: IO ()+main = audition (out 0 dark_sea_horns)
+ Sound/SC3/Graph/JL_dark_sea_horns_hp.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-j#c51 (jl)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JL_dark_sea_horns_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.UGen.External.RDU.Monad {- sc3-rdu -}++dark_sea_horns :: UId m => m UGen+dark_sea_horns = do+  let n = lfNoise1+  let x = localIn 2 AR+  let a = tanh (sinOsc AR 65 (x * #(n AR 0.1) * 3) * #(n AR 3) * 6)+  let f i = do return (allpassN i 0.3 #(randN 2 0.1 0.3) 5)+  let o = tanh #(chainM 9 f a)+  return (mrg2 o (localOut o))++main :: IO ()+main = audition . out 0 =<< dark_sea_horns
+ Sound/SC3/Graph/JL_jl_1_Z.hs view
@@ -0,0 +1,17 @@+-- http://sccode.org/1-Z (jl)+module Sound.SC3.Graph.JL_jl_1_Z where++import Sound.SC3 {- hsc3 -}++jl_z_1 :: UGen+jl_z_1 =+    let a = lag (impulse KR 8 0) 0.1+        b = crackle AR (lag (abs (lfSaw KR 3 0)) 0.1 * 1.8)+        c = a * b+        d = lag (impulse KR 2 0 + impulse KR 4 0.5) 0.1+        e = blip AR 4.9 7 * 0.4+        f = d * e+    in tanh (c + gVerb f 1 1 0.5 0.5 15 1 0.7 0.5 300 * 5) * 2++main :: IO ()+main = audition (out 0 jl_z_1)
+ Sound/SC3/Graph/JL_pwm_crossfade.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-L (jl)+module Sound.SC3.Graph.JL_pwm_crossfade where++import Sound.SC3.ID {- hsc3 -}++urangeM :: UGen -> UGen -> UGen+urangeM u = let [u0,u1] = mceChannels u in urange u0 u1++pwm_crossfade :: UGen+pwm_crossfade =+    let n = mce [400,500,450,376,600]+        d = 1/20+        f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'α' dinf n)+        f_ = urangeM f (lfPulse KR 8 0 (range 0 1 (lfTri KR d 1)))+    in lpf (saw AR (max 376 f_ * mce2 1 0.99) * 0.5) 8000++main :: IO ()+main = audition (out 0 pwm_crossfade)
+ Sound/SC3/Graph/JL_rain_thunder.hs view
@@ -0,0 +1,20 @@+-- http://sccode.org/1-e (jl)+module Sound.SC3.Graph.JL_rain_thunder where++import Sound.SC3.ID {- hsc3 -}++rain_thunder :: UGen+rain_thunder =+    let n0 = pinkNoise 'α' AR * (0.08 + lfNoise1 'β' KR 0.3 * 0.02)+        d0 = lpf (dust2 'γ' AR (range 40 50 (lfNoise1 'δ' KR 0.2))) 7000+        e0 = line KR 0 1 10 DoNothing+        p0 = tanh (3 * gVerb (hpf (n0+d0) 400) 250 100 0.25 0.5 15 0.3 0.7 0.5 300 * e0)+        lfNoise1C e r f = clip (lfNoise1 e r f) 0 1+        n1 = pinkNoise 'ε' AR * ((lfNoise1C 'ζ' KR 3 * lfNoise1C 'η' KR 2) ** 1.8)+        f1 = linExp (lfNoise1 'θ' KR 1) (-1) 1 100 2500+        e1 = line KR 0 0.7 30 DoNothing+        p1 = gVerb (tanh (lpf (10 * hpf n1 20) f1)) 270 30 0.7 0.5 15 0.5 0.7 0.5 300 * e1+    in limiter (p0 + p1) 1 0.01++main :: IO ()+main = audition (out 0 rain_thunder)
+ Sound/SC3/Graph/JMCC_aleatoric_quartet_m.hs view
@@ -0,0 +1,32 @@+-- aleatoric quartet (jmcc)+module Sound.SC3.Graph.JMCC_aleatoric_quartet_m where++import Sound.SC3.Monad {- hsc3 -}++aleatoric_quartet :: UId m => m UGen+aleatoric_quartet = do+  let base_mn = control KR "note" 66+      amp = control KR "ampl" 0.07+      density = mouseX KR 0.01 1 Linear 0.1+      dmul = recip density * 0.5 * amp+      dadd = amp - dmul+      rapf i = do r <- clone 2 (rand 0 0.05)+                  return (allpassN i 0.05 r 1)+      mk_f = do i0 <- iRand 0 2+                let r0 = select i0 (mce [1, 0.5, 0.25])+                r1 <- rand (-30) 30+                n0 <- lfNoise0 KR r0+                let m = n0 * 7 + base_mn + r1+                    m' = lag (roundTo m 1) 0.2+                return (midiCPS m')+      mk_s = do f <- fmap recip mk_f+                r <- rand (-1) 1+                x <- do n0 <- pinkNoise AR+                        n1 <- lfNoise1 KR 8+                        return (n0 * max 0 (n1 * dmul + dadd))+                return (pan2 (combL x 0.02 f 3) r 1)+  g <- chainM 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+  return (leakDC g 0.995)++main :: IO ()+main = audition . out 0 =<< aleatoric_quartet
+ Sound/SC3/Graph/JMCC_alien_froggies.hs view
@@ -0,0 +1,14 @@+-- alien froggies (jmcc)+module Sound.SC3.Graph.JMCC_alien_froggies where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++alien_froggies :: UGen -> (UGen,UGen)+alien_froggies r =+    let r' = fold (r * exp (linRand 'α' (-0.2) 0.2 0)) 1 30+        o = formant AR r' (expRand 'β' 200 3000) (rand 'γ' 0 9 * r' + r')+    in (o * 0.05,r')++main :: IO ()+main = overlapTextureS (0.25,0.5,5,maxBound) alien_froggies 11
+ Sound/SC3/Graph/JMCC_alien_meadow.hs view
@@ -0,0 +1,17 @@+-- alien meadow (jmcc)+module Sound.SC3.Graph.JMCC_alien_meadow where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++alien_meadow :: UGen+alien_meadow =+    let a = rand 'α' 0 20+        b = rand 'α' 0 5000+        c = rand 'α' 0 20+        p = rand 'α' (-1) 1+        f = sinOsc AR a 0 * b * 0.1 + b+    in pan2 (sinOsc AR f 0) p (sinOsc AR c 0 * 0.05 + 0.05)++main :: IO ()+main = overlapTextureU (2,6,6,maxBound) alien_meadow
+ Sound/SC3/Graph/JMCC_analog_bubbles.hs view
@@ -0,0 +1,14 @@+-- analog bubbles (jmcc)+module Sound.SC3.Graph.JMCC_analog_bubbles where++import Sound.SC3 {- hsc3 -}++analog_bubbles :: UGen+analog_bubbles =+  let o = lfSaw KR (mce2 8 7.23) 0 * 3 + 80+      f = lfSaw KR 0.4 0 * 24 + o+      s = sinOsc AR (midiCPS f) 0 * 0.04+  in combN s 0.2 0.2 4++main :: IO ()+main = audition (out 0 analog_bubbles)
+ Sound/SC3/Graph/JMCC_babbling_brook_m.hs view
@@ -0,0 +1,19 @@+-- babbling brook (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+module Sound.SC3.Graph.JMCC_babbling_brook_m where++import Sound.SC3.Monad {- hsc3 -}++babbling_brook :: UId m => m UGen+babbling_brook = do+  let b f m a g = do n1 <- brownNoise AR+                     n2 <- brownNoise AR+                     let n3 = lpf n2 f * m + a+                         n4 = onePole n1 0.99+                     return (rhpf n4 n3 0.03 * g)+  x <- clone 2 (b 14 400 500 0.006)+  y <- clone 2 (b 20 800 1000 0.010)+  return (x + y)++main :: IO ()+main = audition . out 0 =<< babbling_brook
+ Sound/SC3/Graph/JMCC_birds_hp.hs view
@@ -0,0 +1,23 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_birds_hp where++import Sound.SC3.Monad {- hsc3 -}++node :: UId m => m UGen+node = do+  let f = lag (lfSaw AR (7 + #(rand (-1.5) 1.5)) #(rand 0 1) * #(rand 11 15)) 0.1 + #(rand 94 102)+  let a = lfPulse KR (1 / #(rand 12 15.6)) #(rand 0 1) 0.16 * 0.05+  let b = sinOsc AR (midiCPS f) #(rand 0 1) * a+  return (rotate2 b (silent 1) #(rand (-1) 1))++birds :: UId m => m UGen+birds = do+  d <- return . sum =<< sequence (replicate 6 node)+  let apf i = do return (allpassL i 0.07 #(rand 0 0.06) #(rand 0.7 2.0))+  w <- chainM 12 apf d+  return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
+ Sound/SC3/Graph/JMCC_birds_m.hs view
@@ -0,0 +1,29 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+module Sound.SC3.Graph.JMCC_birds_m where++import Sound.SC3.Monad {- hsc3 -}++birds :: UId m => m UGen+birds = do+  let node = do r1 <- rand 94.0 102.0+                r2 <- rand (-1.5) 1.5+                r3 <- rand 0.0 1.0+                r4 <- rand 11.0 15.0+                r5 <- rand 0.0 1.0+                r6 <- rand 12.0 15.6+                r7 <- rand 0.0 1.0+                r8 <- rand (-1.0) 1.0+                let f = r1 + lag (lfSaw AR (7 + r2) r3 * r4) 0.1+                    a = lfPulse KR (1.0 / r6) r7 0.16 * 0.05+                    b = sinOsc AR (midiCPS f) r5 * a+                return (rotate2 b (silent 1) r8)+      apf i = do r1 <- rand 0.0 0.06+                 r2 <- rand 0.7 2.0+                 return (allpassL i 0.07 r1 r2)+  d <- return . sum =<< sequence (replicate 6 node)+  w <- chainM 12 apf d+  return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
+ Sound/SC3/Graph/JMCC_bowed_string_m.hs view
@@ -0,0 +1,26 @@+-- bowed string (jmcc)+module Sound.SC3.Graph.JMCC_bowed_string_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++bowed_string :: UId m => m UGen+bowed_string = do+  let root = 5+      scale = map (+ root) [0,2,4,5,7,9,11]+      oct = [24,36,48,60,72,84]+  n0 <- clone 2 (brownNoise AR)+  r0 <- expRand 0.125 0.5+  r1 <- rand 0.7 0.9+  r2 <- sequence (replicate 12 (rand 1.0 3.0))+  f <- midiCPS `fmap` (lchoose scale .+. lchoose oct)+  n1 <- lfNoise1 KR r0+  let x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4)+      geom n i z = take n (iterate (* z) i)+      iota n i z = take n (iterate (+ z) i)+      d = klankSpec (iota 12 f f) (geom 12 1 r1) r2+      k = klank x 1 0 1 d+  return (softClip (k * 0.1))++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< bowed_string
+ Sound/SC3/Graph/JMCC_choip.hs view
@@ -0,0 +1,30 @@+-- choip (jmcc)+module Sound.SC3.Graph.JMCC_choip where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen+xl e0 e1 l r t = xLine KR (expRand e0 l r) (expRand e1 l r) t DoNothing++r2 :: ID a => a -> UGen -> UGen+r2 e n = rand e (-n) n++choip :: UGen+choip =+    let t = 12+        i = impulse AR (xl 'α' 'β' 1 30 t) 0+        f = xl 'γ' 'δ' 600 8000 t+        a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0+        l = line KR (r2 'ε' 1) (r2 'ζ' 1) t DoNothing+    in pan2 (decay2 (i * xl 'η' 'θ' 0.01 0.5 t) 0.01 0.2 * a) l 1++choip_pp :: UGen -> UGen+choip_pp =+    let f x = allpassN x 0.1 (randN 2 'ι' 0 0.05) 4+    in useq 'κ' 4 f++main :: IO ()+main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp
+ Sound/SC3/Graph/JMCC_clustered_sines.hs view
@@ -0,0 +1,19 @@+-- clustered sines (jmcc)+module Sound.SC3.Graph.JMCC_clustered_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > synthstat cs+cs :: UGen+cs =+    let n = 80+        f1 = rand 'α' 100 1100+        f2 = 4 * f1+        sp = let y = uclone' 'α' n (f1 + rand 'α' 0 f2)+             in klangSpec y (map (f1 /) y) (replicate n 0)+    in uclone 'α' 2 (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) cs
+ Sound/SC3/Graph/JMCC_clustered_sines_m.hs view
@@ -0,0 +1,19 @@+-- clustered sines (jmcc)+module Sound.SC3.Graph.JMCC_clustered_sines_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > fmap synthstat (clone 2 cs)+cs :: UId m => m UGen+cs = do+  let n = 80+  f1 <- rand 100 1100+  let f2 = 4 * f1+  y <- replicateM n (f1 +. rand 0 f2)+  let sp = klangSpec y (map (f1 /) y) (replicate n 0)+  return (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) =<< clone 2 cs
+ Sound/SC3/Graph/JMCC_comb_delay_sweeps.hs view
@@ -0,0 +1,30 @@+-- comb delay sweeps (jmcc)+module Sound.SC3.Graph.JMCC_comb_delay_sweeps where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.Random {- random -}++type ST = (Double,Double,StdGen)++wander :: ST -> ST+wander (s,e,g) =+    let (s',g') = randomR (-7,8) g+        (e',g'') = randomR (-7,8) g'+    in (foldToRange 50 120 (s + s')+       ,foldToRange 50 120 (e + e')+       ,g'')++-- > Sound.SC3.UGen.Dot.draw (fst (cds (60,61,mkStdGen 3567824)))+cds :: ST -> (UGen,ST)+cds st =+    let (s,e,g) = wander st+        l = line KR (constant s) (constant e) 4 DoNothing+        w = whiteNoise 'α' AR * 0.005+        d = 1 / midiCPS l+        c = 1 / midiCPS (constant s)+        o = combC w 0.01 d (c * 1000)+    in (pan2 o (rand 'α' (-1) 1) 1,(s,e,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,9,maxBound) cds (60,61,mkStdGen 3567824)
+ Sound/SC3/Graph/JMCC_contamination_zone.hs view
@@ -0,0 +1,34 @@+-- contamination zone (jmcc)+module Sound.SC3.Graph.JMCC_contamination_zone where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++cz :: UGen+cz =+    let f = expRand 'α' 800 8000+        p = let e = lfNoise1 'β' KR (rand 'γ' 0 3) * 0.0008 + 0.0022+            in pinkNoise 'δ' AR * e+        s = sinOsc KR (linRand 'ε' 0 1 0) 0 * (0.7 * f) + f+        k = let sp = klankSpec_mce (randN 4 'ζ' 50 2000)+                                   (mce [1,1,1,1])+                                   (randN 4 'η' 0.2 4)+            in abs (klank p 1 0 1 sp) * choose 'θ' (mce2 (-1) 1)+        r = rlpf k s 0.1+        a = lfPulse KR (linRand 'ι' 0 150 0) 0 (rand 'κ' 0.2 0.4)+    in pan2 r (lfNoise1 'λ' KR (rand 'μ' 0 1)) a++cz_pp :: UGen -> UGen+cz_pp =+    let f x = allpassN x 0.04 (randN 2 'ν' 0 0.04) 16+    in useq 'ξ' 6 f++main :: IO ()+main = overlapTextureU_pp (3,8,4,maxBound) cz 2 cz_pp++{-+audition (out 0 cz)+audition (out 0 (cz_pp cz))+-}
+ Sound/SC3/Graph/JMCC_coolant.hs view
@@ -0,0 +1,18 @@+-- coolant (jmcc)+module Sound.SC3.Graph.JMCC_coolant where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++coolant :: UGen+coolant =+    let p = 20+        s = onePole (uclone 'α' p (brownNoise 'β' AR) * 0.0015) 0.95+        n = replicate p 1+        sp = mce [klankSpec (uclone' 'γ' p (rand 'δ' 40 2400)) n n+                 ,klankSpec (uclone' 'ε' p (rand 'ζ' 40 2400)) n n]+    in klank s 1 0 1 (mceTranspose sp)++main :: IO ()+main = xfadeTextureU (4,4,maxBound) coolant
+ Sound/SC3/Graph/JMCC_cymbalism_accelerando.hs view
@@ -0,0 +1,25 @@+-- cymbalism accellerando (jmcc)+module Sound.SC3.Graph.JMCC_cymbalism_accelerando where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++cymbalism_accellerando :: UGen+cymbalism_accellerando =+  let y n = let f1 = rand n 500 2500+                f2 = rand n 0 8000+                f = map (\e -> rand e f1 (f1 + f2)) (enumFromN n 15)+                rt = map (\e -> rand e 1 5) (enumFromN n 15)+          in klankSpec f (replicate 15 1) rt+      z = mce2 (y 'α') (y 'β')+      w = whiteNoise 'γ' AR * 0.02+      tf = xLine KR (linRand 'δ' 0.5 4.5 0) (rand 'ε' 0.5 35.5) 12 DoNothing+      t = impulse AR tf 0+      s = decay t 0.004 * w+  in klank s 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) cymbalism_accellerando
+ Sound/SC3/Graph/JMCC_cymbalism_m.hs view
@@ -0,0 +1,27 @@+-- cymbalism (jmcc)+module Sound.SC3.Graph.JMCC_cymbalism_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++cymbalism :: (Functor m,UId m) => m UGen+cymbalism = do+  let p = replicate 15+  f1 <- rand 500 2500+  f2 <- rand 0 8000+  let y = do f <- sequence (p (rand f1 (f1 + f2)))+             rt <- sequence (p (rand 1 5))+             return (klankSpec f (p 1) rt)+  z <- clone 2 y+  n <- fmap (* 0.03) (whiteNoise AR)+  tf <- rand 0.5 3.5+  let t = impulse AR tf 0+      s = decay t 0.004 * n+  return (klank s 1 0 1 (mceTranspose z))++main :: IO ()+main = overlapTextureU (3,6,6,maxBound) =<< cymbalism++{-+main = audition . out 0 =<< cymbalism+-}
+ Sound/SC3/Graph/JMCC_data_space.hs view
@@ -0,0 +1,23 @@+-- data space (jmcc)+module Sound.SC3.Graph.JMCC_data_space where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UGen+data_space =+    let r e = rand e 0+        p0 = lfPulse KR (r 'α' 200) 0 (r 'β' 1)+        p1 = lfPulse KR (r 'γ' 40) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+        p2 = lfPulse KR (r 'η' 20) 0 (r 'θ' 1)+        p3 = lfPulse KR (r 'ι' 4) 0 (r 'κ' 1) * r 'λ' 8000 + r 'μ'  2000+        p4 = lfPulse KR (r 'ν' 20) 0 (r 'ξ' 1)+        p5 = lfPulse KR (r 'ο' 4) 0 (r 'π' 1) * r 'ρ' 8000 + r 'σ'  2000+        f = p0 * p1 + p2 * p3 + p4 * p5+        dt = rand 'τ' 0.15 0.35+        o = lfPulse AR f 0 0.5 * 0.04+        l = lfNoise0 'υ' KR (r 'φ' 3) * 0.8+    in combL (pan2 o l 1) dt dt 3++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) data_space
+ Sound/SC3/Graph/JMCC_data_space_hp.hs view
@@ -0,0 +1,24 @@+-- data space (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_data_space_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UId m => m UGen+data_space = do+    let r = rand 0+    let p0 = lfPulse KR #(r 200) 0 #(r 1)+    p1 <- lfPulse KR #(r 40) 0 #(r 1) *. r 8000 .+. r 2000+    let p2 = lfPulse KR #(r 20) 0 #(r 1)+    p3 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+    let p4 = lfPulse KR #(r 20) 0 #(r 1)+    p5 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+    let f = p0 * p1 + p2 * p3 + p4 * p5+    dt <- rand 0.15 0.35+    let o = lfPulse AR f 0 0.5 * 0.04+    l <- lfNoise0 KR #(r 3) .* 0.8+    return (combL (pan2 o l 1) dt dt 3)++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) =<< data_space
+ Sound/SC3/Graph/JMCC_deep_trip.hs view
@@ -0,0 +1,21 @@+-- deep trip (jmcc)+module Sound.SC3.Graph.JMCC_deep_trip where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID  {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++deep_trip :: UGen+deep_trip =+    let f = midiCPS (lfNoise1 'α' KR (rand 'β' 0 0.3) * 60 + 70)+        a'' = sinOsc KR (rand 'γ' 0 40) 0 * 0.1+        a' = max 0 (lfNoise1 'δ' KR (rand 'ε' 0 8) * a'')+        a = lfNoise2 'ζ' AR (f * rand 'η' 0 0.5) * a'+        z = sinOsc AR f 0 * a+        s = pan2 z (lfNoise1 'θ' KR (rand 'ι' 0 5)) 1+        c0 = combN s 0.5 (randN 2 'κ' 0.3 0.5) 20+        c1 = combN s 0.5 (randN 2 'λ' 0.3 0.5) 20+        in s + c0 + c1++main :: IO ()+main = overlapTextureU (4,12,4,maxBound) deep_trip
+ Sound/SC3/Graph/JMCC_default.hs view
@@ -0,0 +1,18 @@+-- default (jmcc)+module Sound.SC3.Graph.JMCC_default where++import Data.Default {- data-default -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++pattern :: P_Bind+pattern =+    [(K_instr,psynth def)+    ,(K_note,pxrand 'α' [0,1,5,7,9] inf)+    ,(K_octave,prand 'β' [3,4,5,6] inf)+    ,(K_dur,pwrand 'γ' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)+    ,(K_amp,pbrown 'δ' 0.01 0.2 0.01 inf)+    ,(K_param "pan",pbrown 'ε' (-1) 1 0.25 inf)]++main :: IO ()+main = audition (pbind pattern)
+ Sound/SC3/Graph/JMCC_demanding_studies.hs view
@@ -0,0 +1,20 @@+-- demanding studies (jmcc)+module Sound.SC3.Graph.JMCC_demanding_studies where++import Sound.SC3.ID {- hsc3 -}++demanding_studies :: UGen+demanding_studies =+  let s1 = drand 'α' dinf (mce [72, 75, 79, 82])+      s2 = drand 'β' 1 (mce [82, 84, 86])+      s3 = dseq 'γ' dinf (mce [72, 75, 79, s2])+      x = mouseX KR 5 13 Linear 0.2+      tr = impulse KR x 0+      f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])+      o1 = sinOsc AR (f + mce2 0 0.7) 0+      o2 = saw AR (f + mce2 0 0.7) * 0.3+      o3 = cubed (distort (log (distort (o1 + o2))))+  in o3 * 0.1++main :: IO ()+main = audition (out 0 demanding_studies)
+ Sound/SC3/Graph/JMCC_doppler.hs view
@@ -0,0 +1,31 @@+-- doppler (jmcc)/(rd)+module Sound.SC3.Graph.JMCC_doppler where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++-- observer at origin, signal 's' at coordinates ('x','y')+doppler :: (UGen,UGen) -> UGen -> UGen+doppler (x,y) s =+    let d = hypot x y+        a = 40 / squared d+        maxd = 110+    in delayL s (maxd / 344) (d / 344) * a++-- straight line at x axis from (-y,y) over dt seconds+line_x :: UGen -> UGen -> UGen -> (UGen,UGen)+line_x x y dt = (x,line KR (-y) y dt RemoveSynth)++-- ellipse centered at origin and interecting x at +-a and y at +-b.+-- traversal is over dt seconds+ellipse :: UGen -> UGen -> UGen -> (UGen,UGen)+ellipse a b dt =+    let t = line KR (-pi/2) (pi * 3/2) dt RemoveSynth+    in (a * cos t,b * sin t)++main :: IO ()+main = do+  let s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3+  withSC3 (do play (out 0 (doppler (line_x 10 100 6) s))+              wait 8+              play (out 0 (doppler (ellipse 10 75 12) s)))
+ Sound/SC3/Graph/JMCC_early_space_music_lp_side_two.hs view
@@ -0,0 +1,80 @@+-- early space music LP, side 2 (jmcc)+module Sound.SC3.Graph.JMCC_early_space_music_lp_side_two where++import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Random.Gen as R {- hsc3-lang -}+import Sound.SC3.Lang.Control.OverlapTexture+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import qualified System.Random as R {- random -}++m1 :: UGen+m1 =+    let a = rand 'α' 0 20+        b = rand 'β' 0 5000+        c = rand 'γ' 0 20+        p = rand 'δ' (-1) 1+    in pan2 (sinOsc AR (sinOsc AR a 0 * 0.1 * b + b) 0 * sinOsc KR c 0 * 0.08 + 0.08) p 1++m2 :: UGen+m2 =+    let a0 = rand 'ε' 40 240+        a1 = a0 + rand 'ζ' (-1) 1+        a = mce2 a0 a1+        b = expRand 'η' 50 2400+        c = mce2 (a0 + rand 'θ' (-1) 1) (a1 + rand 'ι' (-1) 1)+    in sinOsc AR (sinOsc AR a 0 * rand 'κ' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025++m3 :: UGen+m3 =+    let f = midiCPS (rand 'λ' 60 100)+    in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'μ' KR (f * mce2 0.15 0.16) * 0.1++-- audition (out 0 m4)+m4 :: UGen+m4 =+    let a = lfPulse KR (expRand 'ν' 0.2 1.2) 0 (rand 'ξ' 0.1 0.2)+        o i = let r = let (p,q) = mce2c (expRandN 2 i 0.1 20)+                      in xLine KR p q 25.6 DoNothing+                  f = midiCPS (rand i 24 96)+                  e = max 0 (sinOsc KR (r * rand i 0.9 1.1) (rand i 0 (2 * pi)) * 0.1 - 0.05)+                  s = fSinOsc AR (f * i + f) 0 * e * (1 / (i + 1))+              in pan2 s (rand i (-1) 1) 1+    in sum (map o [0..11]) * a++-- audition (out 0 (m6 * 0.5))+m6 :: UGen+m6 =+    let f = midiCPS (lfNoise1 'ο' KR (rand 'π' 0 0.3) * 60 + 70)+        a0 = lfNoise2 'ρ' AR (f * rand 'σ' 0 0.5)+        a1 = max 0 (lfNoise1 'τ' KR (rand 'υ' 0 8) * sinOsc KR (rand 'φ' 0 40) 0 * 0.1)+        z = sinOsc AR f 0 * a0 * a1+    in pan2 z (lfNoise1 'χ' KR (rand 'ψ' 0 5)) 1++enumFromN :: Enum a => a -> Int -> [Int]+enumFromN e i = let j = fromEnum e in [j .. j + i]++-- audition (out 0 m7)+m7 :: UGen+m7 =+    let p = 15+        k = let y z = let fr = mceChannels (expRandN p z 100 6000)+                          rt = mceChannels (randN p z 2 6)+                      in klankSpec fr (replicate p 1) rt+            in mce2 (y 'ω') (y 'Α')+        f = xLine KR (expRand 'Β' 40 300) (expRand 'Γ' 40 300) 12 DoNothing+        t = lfPulse AR f 0 (rand 'Δ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'Ε' KR (rand 'Ζ' 0 8))+    in distort (klank t 1 0 1 (mceTranspose k)) * 0.3++esmlp2 :: R.RandomGen g => g -> (UGen, g)+esmlp2 = R.choose (map (* 0.3) [m1,m2,m3,m4,m6,m7])++-- Sound.SC3.UGen.Dot.draw (esmlp2_pp (sinOsc AR 440 0))+esmlp2_pp :: UGen -> UGen+esmlp2_pp i =+    let c z = combN i 0.3 (mce2 (rand z 0.1 0.3) (rand z 0.12 0.32)) 8+    in sum (map c ['Η'..'Θ']) * 0.3++main :: IO ()+main = do+  let g = R.mkStdGen 0+  overlapTextureS_pp (4,2,6,maxBound) esmlp2 g 2 esmlp2_pp
+ Sound/SC3/Graph/JMCC_harmonic_swimming.hs view
@@ -0,0 +1,20 @@+-- harmonic swimming (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_swimming where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++harmonic_swimming :: UGen+harmonic_swimming =+  let a = 0.02+      f = 50+      p = 20::Int+      l = line KR 0 (- a) 60 DoNothing+      o h = let r = randN 2 h 2 8+                n = lfNoise1 h KR r+                e = max 0 (n * a + l)+            in fSinOsc AR (f * (fromIntegral h + 1)) 0 * e+  in sum (map o [0..p])++main :: IO ()+main = audition (out 0 harmonic_swimming)
+ Sound/SC3/Graph/JMCC_harmonic_swimming_m.hs view
@@ -0,0 +1,19 @@+-- harmonic swimming (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_swimming_m where++import Sound.SC3.Monad {- hsc3 -}++harmonic_swimming :: UId m => m UGen+harmonic_swimming =+    let a = 0.02+        f = 50+        p = 20+        l = line KR 0 (- a) 60 DoNothing+        o h = do r <- clone 2 (rand 2 8)+                 n <- lfNoise1 KR r+                 let e = max 0 (n * a + l)+                 return (fSinOsc AR (f * (h + 1)) 0 * e)+    in fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_swimming
+ Sound/SC3/Graph/JMCC_harmonic_tumbling_m.hs view
@@ -0,0 +1,18 @@+-- harmonic tumbling (jmcc)+module Sound.SC3.Graph.JMCC_harmonic_tumbling_m where++import Sound.SC3.Monad {- hsc3 -}++harmonic_tumbling :: UId m => m UGen+harmonic_tumbling = do+  let f = 80+      p = 10+      t = xLine KR (mce2 10 11) 0.1 60 DoNothing+      o h = do n <- dust KR t+               r <- rand 0 0.5+               let e = decay2 (n * 0.02) 0.005 r+               return (fSinOsc AR (f * (h + 1)) 0 * e)+  fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
+ Sound/SC3/Graph/JMCC_hell_is_busy.hs view
@@ -0,0 +1,14 @@+-- hell is busy (jmcc)+module Sound.SC3.Graph.JMCC_hell_is_busy where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++hib :: UGen+hib =+    let o = fSinOsc AR (400 + rand 'α' 0 2000) 0+        a = lfPulse KR (1 + rand 'β' 0 10.0) (rand 'γ' 0 0.7) 0.04+    in pan2 (o * a) (rand 'δ' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,8,maxBound) hib
+ Sound/SC3/Graph/JMCC_lfo_modulation.hs view
@@ -0,0 +1,11 @@+-- lfo modulation (jmcc)+module Sound.SC3.Graph.JMCC_lfo_modulation where++import Sound.SC3 {- hsc3 -}++main :: IO ()+main =+  let o = fSinOsc KR 0.05 0 * 80 + 160+      p = fSinOsc KR (mce2 0.6 0.7) 0 * 3600 + 4000+      s = rlpf (lfPulse AR o 0 0.4 * 0.05) p 0.2+  in audition (out 0 (combL s 0.3 (mce2 0.2 0.25) 2))
+ Sound/SC3/Graph/JMCC_modal_space.hs view
@@ -0,0 +1,31 @@+-- modal space (jmcc)+module Sound.SC3.Graph.JMCC_modal_space where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++ms :: UGen -> UGen -> UGen+ms n r =+    let x = mouseX KR 0 15 Linear 0.1+        k = degreeToKey 0 x 12+        o = sinOsc AR (midiCPS (r + k + n * 0.04)) 0 * 0.1+        t = lfPulse AR (midiCPS (mce2 48 55)) 0.15 0.5+        f = midiCPS (sinOsc KR 0.1 0 * 10 + r)+        d = rlpf t f 0.1 * 0.1+        m = o + d+    in combN m 0.31 0.31 2 + m++modal_space :: UGen+modal_space =+    let n = uclone 'α' 2 (lfNoise1 'β' KR 3)+    in (ms n 48 + ms n 72) * 0.25++run :: Transport m => m ()+run = do+  let p = [0,2,3.2,5,7,9,10]+  _ <- async (b_alloc_setn1 0 0 p)+  play (out 0 modal_space)++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/JMCC_moto_rev.hs view
@@ -0,0 +1,13 @@+-- moto rev (jmcc)+module Sound.SC3.Graph.JMCC_moto_rev where++import Sound.SC3 {- hsc3 -}++moto_rev :: UGen+moto_rev =+  let f = sinOsc KR 0.2 0 * 10 + 21+      s = lfPulse AR f (mce2 0 0.1) 0.1+  in clip2 (rlpf s 100 0.1) 0.4++main :: IO ()+main = audition (out 0 moto_rev)
+ Sound/SC3/Graph/JMCC_mridangam.hs view
@@ -0,0 +1,62 @@+-- mridangam (jmcc)+module Sound.SC3.Graph.JMCC_mridangam where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++spe3_mridangam :: Synthdef+spe3_mridangam =+    let t_amp = tr_control "t_amp" 1+        n = whiteNoise 'α' AR * 70+        e = decay2 t_amp 0.002 0.1+        o = distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4+    in synthdef "mridangam" (out 0 o)++spe3_drone :: Synthdef+spe3_drone =+    let s1 = saw AR (midiCPS (mce2 60 60.04))+        s2 = saw AR (midiCPS (mce2 67 67.04))+        o = lpf (s1 + s2) (midiCPS 108) * 0.007+    in synthdef "drone" (out 0 o)++p :: Fractional n => [P n]+p =+    [pseq [0.0] 10+    -- intro+    ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 2+    ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.0] 2+    ,pseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2+    ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2+    -- solo+    ,prand 'β' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+               ,pseq [0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+               ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2] 1+               ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0] 1+               ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.2,0.7,0.2,0.0] 1+               ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.2,0.2] 1+               ,pseq [0.9,0.2,0.2,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+               ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.2,0.7,0.0,0.0] 1+               ,pseq [0.9,0.0,0.4,0.0,0.4,0.0,0.4,0.0,0.4,0.0] 1+               ,pseq [0.9,0.0,0.0,0.4,0.0,0.0,0.4,0.2,0.4,0.2] 1+               ,pseq [0.9,0.0,0.2,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+               ,pseq [0.9,0.0,0.0,0.7,0.0,0.0,0.0,0.7,0.0,0.0] 1+               ,pseq [0.9,0.7,0.7,0.0,0.0,0.2,0.2,0.2,0.0,0.0] 1+               ,pseq [0.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0] 1] 30+    -- tehai+    ,pseq [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+    ,pseq [5] 1]++act :: Transport m => m ()+act = do+  play spe3_drone+  _ <- async (d_recv spe3_mridangam)+  let i = Instr_Def spe3_mridangam False+  play (pmono [(K_instr,pinstr' i),(K_id,100)+              ,(K_param "t_amp",pseq p 1),(K_dur,1/8)])++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/JMCC_noise_burst_sweep.hs view
@@ -0,0 +1,22 @@+-- noise burst sweep (jmcc)+module Sound.SC3.Graph.JMCC_noise_burst_sweep where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++nbs :: ID a => a -> UGen+nbs e =+  let n = uclone e 2 (whiteNoise e AR)+      lfoRate = rand e (-1) 1 + mouseX KR 10 60 Exponential 0.2+      amp = max 0 (lfSaw KR lfoRate (-1))+      cfreq = mouseY KR 400 8000 Exponential 0.2+      freq = sinOsc KR 0.2 0 * cfreq + (1.05 * cfreq)+  in resonz (n * amp) freq 0.1++main :: IO ()+main = overlapTextureU (4,2,4,maxBound) (nbs 'α')++{-+audition (out 0 (nbs 'α'))+-}
+ Sound/SC3/Graph/JMCC_noise_modulated_sines.hs view
@@ -0,0 +1,18 @@+-- noise modulated sines (jmcc)+module Sound.SC3.Graph.JMCC_noise_modulated_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++nms :: UGen+nms =+    let f = midiCPS (rand 'α' 60 100)+        o = fSinOsc AR (mce2 f (f + 0.2)) 0+        a = lfNoise2 'β' KR (f * mce2 0.15 0.16) * 0.1+    in o * a++nms_pp :: (UGen -> UGen)+nms_pp i = combN i 0.3 0.3 4 + mceReverse i++main :: IO ()+main = overlapTextureU_pp (4,4,4,maxBound) nms 2 nms_pp
+ Sound/SC3/Graph/JMCC_overlap_add.hs view
@@ -0,0 +1,22 @@+-- overlap-add (jmcc)+module Sound.SC3.Graph.JMCC_overlap_add where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++sine :: UGen+sine =+    let r0 = expRand 'α' 500 1400+        r1 = rand 'β' (-1) 1+    in pan2 (sinOsc AR r0 0) r1 0.01++noise :: UGen+noise =+    let n0 = whiteNoise 'γ' AR+        r0 = expRand 'δ' 800 8400+        r1 = rand 'ε' (-1) 1+    in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25++main :: IO ()+main = audition (ppar [overlapTextureP (4,4,6,maxBound) sine+                      ,overlapTextureP (4,4,6,maxBound) noise])
+ Sound/SC3/Graph/JMCC_plucked_strings_m.hs view
@@ -0,0 +1,28 @@+-- plucked strings (jmcc)+module Sound.SC3.Graph.JMCC_plucked_strings_m where++import Sound.SC3.Monad {- hsc3 -}++plucked_strings :: UId m => m UGen+plucked_strings = do+  let dt = do r0 <- rand 60 90+              return (1 / midiCPS (floorE r0))+      i = do r0 <- rand 2 2.2+             n0 <- dust AR 0.5+             r1 <- rand 0.05 0.15+             r2 <- rand 0 (pi * 2)+             r3 <- iRand 0 2+             let s0 = impulse AR r0 0.3+                 s1 = n0 * 0.3+                 s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3+             return (select r3 (mce [s0,s1,s2]))+      s = do n0 <- pinkNoise AR+             r1 <- rand (-1) 1+             im <- i+             dt' <- dt+             let t = decay im 0.1 * n0 * 0.1+             return (pan2 (combL t dt' dt' 4) r1 1)+  fmap sum (sequence (replicate 5 s))++main :: IO ()+main = audition . out 0 =<< plucked_strings
+ Sound/SC3/Graph/JMCC_police_state.hs view
@@ -0,0 +1,25 @@+-- police state (jmcc)+module Sound.SC3.Graph.JMCC_police_state where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -}++nd :: UGen+nd =+    let n = lfNoise2 'α' AR (rand 'β' 80 120)+        f = sinOsc KR (rand 'γ' 0.02 0.12) (rand 'δ' 0 (pi * 2)) *+            rand 'ε' 0 600 ++            rand 'ζ' 700 1300+    in pan2 (sinOsc AR f 0 * n * 0.1) (rand 'η' (-1) 1) 1++police_state :: UGen+police_state =+  let ns = uclone 'θ' 4 nd+      n0 = uclone 'ι' 2 (lfNoise2 'κ' KR 0.4)+      n1 = lfNoise2 'λ' AR (n0 * 90 + 620)+      n2 = lfNoise2 'μ' KR (mce2 0.3 0.301)+      e = n1 * (n2 * 0.15 + 0.18)+  in combL (mix ns + e) 0.3 0.3 3++main :: IO ()+main = audition (out 0 police_state)
+ Sound/SC3/Graph/JMCC_police_state_m.hs view
@@ -0,0 +1,25 @@+-- police state (jmcc)+module Sound.SC3.Graph.JMCC_police_state_m where++import Sound.SC3.Monad {- hsc3 -}++police_state :: UId m => m UGen+police_state = do+  let nd = do r0 <- rand 0.02 0.12+              r1 <- rand 0 (pi * 2)+              r2 <- rand 0 600+              r3 <- rand 700 1300+              r4 <- rand (-1) 1+              r5 <- rand 80 120+              n0 <- lfNoise2 AR r5+              let f = sinOsc KR r0 r1 * r2 + r3+              return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)+  ns <- clone 4 nd+  n0 <- clone 2 (lfNoise2 KR 0.4)+  n1 <- lfNoise2 AR (n0 * 90 + 620)+  n2 <- lfNoise2 KR (mce2 0.3 0.301)+  let e = n1 * (n2 * 0.15 + 0.18)+  return (combL (mix ns + e) 0.3 0.3 3)++main :: IO ()+main = audition . out 0 =<< police_state
+ Sound/SC3/Graph/JMCC_pond_life.hs view
@@ -0,0 +1,15 @@+-- pond life (jmcc)+module Sound.SC3.Graph.JMCC_pond_life where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UGen+pond_life =+    let f0 = 20 + rand 'α' 0 30+        f1 = fSinOsc KR f0 0 * rand 'β' 100 400 + linRand 'γ' 500 2500 0+        a = lfPulse KR (3 / rand 'δ' 1 9) (rand 'ε' 0.2 0.5) 0.04+    in pan2 (sinOsc AR f1 0 * a) (rand 'ζ' (-1) 1) 0.5++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) pond_life
+ Sound/SC3/Graph/JMCC_pond_life_hp.hs view
@@ -0,0 +1,17 @@+-- pond life (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_pond_life_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UId m => m UGen+pond_life = do+  let f = fSinOsc KR (20 + #(rand 0 30)) 0+          * #(rand 100 400)+          + #(linRand 500 2500 0)+  let a = lfPulse KR (3 / #(rand 1 9)) #(rand 0.2 0.5) 0.04+  return (pan2 (sinOsc AR f 0 * a) #(rand (-1) 1) 0.5)++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) =<< pond_life
+ Sound/SC3/Graph/JMCC_pulsing_bottles.hs view
@@ -0,0 +1,25 @@+-- pulsing bottles (jmcc)+module Sound.SC3.Graph.JMCC_pulsing_bottles where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pulsing_bottles :: UGen+pulsing_bottles =+    let r = let n = whiteNoise 'α' AR+                r0 = rand 'α' 4 14+                r1 = rand 'α' 0 0.7+                r2 = rand 'α' 400 7400+            in resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01+        s = let f = rand 'β' 0.1 0.5+                p = rand 'β' 0 (pi * 2)+             in sinOsc KR f p+    in sum (zipWith3 pan2 (uclone' 'α' 6 r) (uclone' 'β' 6 s) (repeat 1))++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) pulsing_bottles++{-+audition (out 0 pulsing_bottles)+-}
+ Sound/SC3/Graph/JMCC_pulsing_bottles_m.hs view
@@ -0,0 +1,22 @@+-- pulsing bottles (jmcc)+module Sound.SC3.Graph.JMCC_pulsing_bottles_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pulsing_bottles :: UId m => m UGen+pulsing_bottles = do+  let r = do n <- whiteNoise AR+             r0 <- rand 4 14+             r1 <- rand 0 0.7+             r2 <- rand 400 7400+             return (resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01)+      s = do f <- rand 0.1 0.5+             p <- rand 0 (pi * 2)+             return (sinOsc KR f p)+      u = liftM2 (\x y -> pan2 x y 1) r s+  fmap sum (sequence (replicate 6 u))++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
+ Sound/SC3/Graph/JMCC_rails.hs view
@@ -0,0 +1,24 @@+-- rails (jmcc)+module Sound.SC3.Graph.JMCC_rails where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rand2 :: ID a => a -> UGen -> UGen+rand2 e n = rand e (-n) n++rails :: UGen+rails =+    let n = 20 -- resonant modes+        e = dust 'α' AR 100 * 0.04 -- excitation+        f = xLine KR 3000 300 8 DoNothing -- sweep filter down+        l = line KR (rand2 'β' 1) (rand2 'γ' 1) 8 DoNothing -- sweep pan+        r = uclone' 'δ' n (200 + linRand 'ε' 0 3000 0) -- resonant frequencies+        a = replicate n 1+        t = uclone' 'ζ' n (0.2 + rand 'η' 0 1) -- ring times+        k = klank (resonz e f 0.2) 1 0 1 (klankSpec r a t)+    in pan2 k l 1++main :: IO ()+main = overlapTextureU (3,2,4,maxBound) rails
+ Sound/SC3/Graph/JMCC_random_panning_sines.hs view
@@ -0,0 +1,17 @@+-- random panning sines (jmcc)+module Sound.SC3.Graph.JMCC_random_panning_sines where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rps :: UGen+rps =+    let nd = let o = fSinOsc AR (linRand 'α' 80 2000 0) 0+                 l = lfNoise1 'β' KR (rand 'γ' 0.8 1.2)+                 a = lfNoise1 'δ' KR (rand 'ε' 0.82 0.98)+             in pan2 o l a+    in mix (uclone 'ζ' 8 nd) * (0.4 / 8)++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) rps
+ Sound/SC3/Graph/JMCC_random_panning_sines_m.hs view
@@ -0,0 +1,18 @@+-- random panning sines (jmcc)+module Sound.SC3.Graph.JMCC_random_panning_sines_m where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rps :: UId m => m UGen+rps = do+  let nd = do r0 <- linRand 80 2000 0+              let o = fSinOsc AR r0 0+              l <- lfNoise1 KR =<< rand 0.8 1.2+              a <- lfNoise1 KR =<< rand 0.82 0.98+              return (pan2 o l a)+  r <- clone 8 nd+  return (mix r * (0.4 / 8))++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) =<< rps
+ Sound/SC3/Graph/JMCC_random_pulsations.hs view
@@ -0,0 +1,15 @@+-- random pulsations (jmcc)+module Sound.SC3.Graph.JMCC_random_pulsations where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rp :: UGen+rp =+    let o1 = fSinOsc AR (rand 'α' 0 2000) 0 * 0.02+        o2 = sinOsc AR (linRand 'α' 8 88 0) 0+        o3 = sinOsc KR (rand 'α' 0.3 0.8) (rand 'α' 0 (2 * pi)) * 0.7+    in pan2 (o1 `amClip` o2) o3 1++main :: IO ()+main = overlapTextureU (5,2,8,maxBound) rp
+ Sound/SC3/Graph/JMCC_random_sine_waves.hs view
@@ -0,0 +1,14 @@+-- random sine waves (jmcc)+module Sound.SC3.Graph.JMCC_random_sine_waves where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rsw :: UGen+rsw =+    let f = rand 'α' 0 2000+        o = fSinOsc AR f 0 * 0.02+    in pan2 o (rand 'β' (-1) 1) 1++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) rsw
+ Sound/SC3/Graph/JMCC_random_sine_waves_hp.hs view
@@ -0,0 +1,11 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_random_sine_waves_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+  let rsw = pan2 (fSinOsc AR #(rand 0 2000) 0 * 0.02) #(rand (-1) 1) 1+  overlapTextureU (2,5,12,maxBound) rsw
+ Sound/SC3/Graph/JMCC_random_sine_waves_she.hs view
@@ -0,0 +1,12 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF she #-}+module Sound.SC3.Graph.JMCC_random_sine_waves_she where++import Control.Applicative {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+  s <- (|pan2 ((|fSinOsc ~AR (rand 0 2000) ~0|) .* 0.02) (rand (-1) 1) ~1|)+  overlapTextureU (2,5,12,maxBound) s
+ Sound/SC3/Graph/JMCC_resonant_dust.hs view
@@ -0,0 +1,16 @@+-- resonant dust (jmcc)+module Sound.SC3.Graph.JMCC_resonant_dust where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UGen+resonant_dust =+    let rf = let st = rand 'α' 80 2080+                 en = st + (rand 'β' (-0.5) 0.5 * st)+             in xLine KR st en 9 DoNothing+        d = dust 'γ' AR (rand 'δ' 50 850) * 0.3+    in pan2 (resonz d rf 0.1) (rand 'ε' (-1) 1) 1++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) resonant_dust
+ Sound/SC3/Graph/JMCC_resonant_dust_hp.hs view
@@ -0,0 +1,16 @@+-- resonant dust (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_resonant_dust_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UId m => m UGen+resonant_dust = do+  st <- rand 80 2080+  let en = st + (st * #(rand (-0.5) 0.5))+      rf = xLine KR st en 9 DoNothing+  return (pan2 (resonz (#(dust AR #(rand 50 850)) * 0.3) rf 0.1) #(rand (-1) 1) 1)++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) =<< resonant_dust
+ Sound/SC3/Graph/JMCC_reverberated_sine_percussion_hp.hs view
@@ -0,0 +1,21 @@+-- reverberated sine percussion (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp where++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+  let d = 6+      c = 5+      a = 4+      s_ = do return (resonz (#(dust AR (2 / constant d)) * 50) (200 + #(rand 0 3000)) 0.003)+      x_ i = do return (allpassN i 0.05 #(clone 2 (rand 0 0.05)) 1)+  s <- fmap sum (sequence (replicate d s_))+  y <- do let z = delayN s 0.048 0.48+          return (mix (combL z 0.1 (#(lfNoise1 KR #(clone c (rand 0 0.1))) * 0.04 + 0.05) 15))+  x <- chainM a x_ y+  return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
+ Sound/SC3/Graph/JMCC_reverberated_sine_percussion_m.hs view
@@ -0,0 +1,25 @@+-- reverberated sine percussion (jmcc)+module Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m where++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+  let d = 6+      c = 5+      a = 4+      s_ = do n <- dust AR (2 / constant d)+              r <- rand 0 3000+              return (resonz (n * 50) (200 + r) 0.003)+      x_ i = do r <- clone 2 (rand 0 0.05)+                return (allpassN i 0.05 r 1)+  s <- fmap sum (sequence (replicate d s_))+  y <- do let z = delayN s 0.048 0.48+          r <- clone c (rand 0 0.1)+          n <- lfNoise1 KR r+          return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))+  x <- chainM a x_ y+  return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
+ Sound/SC3/Graph/JMCC_ring_modulated_klank.hs view
@@ -0,0 +1,23 @@+-- ring modulated klank (jmcc)+module Sound.SC3.Graph.JMCC_ring_modulated_klank where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rmk :: UGen+rmk =+    let p = 8+        k = let sp = klankSpec_mce (randN p 'α' 100 10000)+                                   (mce (replicate p 1))+                                   (randN p 'α' 0.2 1)+            in klank (dust 'α' AR 20 * 0.02) 1 0 1 sp+        f = lfNoise2 'α' KR (rand 'α' 0.1 0.4) * 200 + rand 'α' 350 400+    in pan2 (sinOsc AR f 0 * k) (rand 'α' (-1) 1) 1++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) rmk++{-+audition (out 0 rmk)+-}
+ Sound/SC3/Graph/JMCC_sample_and_hold_liquidities.hs view
@@ -0,0 +1,18 @@+-- sample and hold liquidities (jmcc)+module Sound.SC3.Graph.JMCC_sample_and_hold_liquidities where++import Sound.SC3.ID {- hsc3 -}++shl :: UGen+shl =+    let r = mouseX KR 1 200 Exponential 0.1+        t = recip r+        c = impulse KR r 0.4+        cf = mouseY KR 100 8000 Exponential 0.1+        f = latch (whiteNoise 'α' KR * cf * 0.5 + cf) c+        p = latch (whiteNoise 'β' KR) c+        i = pan2 (sinOsc AR f 0 * decay2 c (t * 0.1) (t * 0.9)) p 1+    in combN i 0.3 0.3 2++main :: IO ()+main = audition (out 0 shl)
+ Sound/SC3/Graph/JMCC_saucer_base.hs view
@@ -0,0 +1,18 @@+-- saucer base (jmcc)+module Sound.SC3.Graph.JMCC_saucer_base where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++saucer_base :: UGen+saucer_base =+    let a = rand 'α' 0 20+        b = rand 'β' 0 1000+        c = rand 'γ' 0 5000+        p = rand 'δ' (-1) 1+        o = sinOsc AR a 0 * b + (1.1 * b)+        o' = sinOsc AR o 0 * c + (1.1 * c)+    in pan2 (sinOsc AR o' 0 * 0.1) p 1++main :: IO ()+main = overlapTextureU (2,6,4,maxBound) saucer_base
+ Sound/SC3/Graph/JMCC_sawed_cymbals.hs view
@@ -0,0 +1,20 @@+-- sawed cymbals (jmcc)+module Sound.SC3.Graph.JMCC_sawed_cymbals where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sawed_cymbals :: UGen+sawed_cymbals =+    let y = let f1 = rand 'α' 500 2500+                f2 = rand 'α' 0 8000+                f = uclone' 'α' 15 (rand 'α' f1 (f1 + f2))+                rt = uclone' 'α' 15 (rand 'α' 2 6)+          in klankSpec f (replicate 15 1) rt+        z = uclone 'α' 2 y+        fS = xLine KR (rand 'α' 0 600) (rand 'β' 0 600) 12 DoNothing+    in klank (lfSaw AR fS 0 * 0.0005) 1 0 1 (mceTranspose z)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sawed_cymbals
+ Sound/SC3/Graph/JMCC_scratchy.hs view
@@ -0,0 +1,13 @@+-- scratchy (jmcc)+module Sound.SC3.Graph.JMCC_scratchy where++import Sound.SC3.ID {- hsc3 -}++scratchy :: UGen+scratchy =+  let f m = brownNoise m AR * 0.5 - 0.49+      n = mce2 (f 'α') (f 'β')+  in rhpf (max n 0 * 20) 5000 1++main :: IO ()+main = audition (out 0 scratchy)
+ Sound/SC3/Graph/JMCC_scratchy_m.hs view
@@ -0,0 +1,13 @@+-- scratchy-m (jmcc)+module Sound.SC3.Graph.JMCC_scratchy_m where++import Sound.SC3.Monad {- hsc3 -}++scratchy :: UId m => m UGen+scratchy = do+  n <- clone 2 (brownNoise AR)+  let f = max (n * 0.5 - 0.49) 0 * 20+  return (rhpf f 5000 1)++main :: IO ()+main = audition . out 0 =<< scratchy
+ Sound/SC3/Graph/JMCC_sidereal_time.hs view
@@ -0,0 +1,26 @@+-- sidereal time (jmcc)+module Sound.SC3.Graph.JMCC_sidereal_time where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UGen+sidereal_time =+  let p = 15+      z = let y = let fr = uclone' 'α' p (expRand 'β' 100 6000)+                      rt = uclone' 'γ' p (rand 'δ' 2 6)+                  in klankSpec fr (replicate p 1) rt+          in uclone 'ε' 2 y+      f = xLine KR (expRand 'ζ' 40 300) (expRand 'η' 40 300) 12 DoNothing+      t = let e = lfNoise2 'θ' KR (rand 'ι' 0 8)+          in lfPulse AR f 0 (rand 'κ' 0.1 0.9) * 0.002 * max 0 e+      o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+  in combN o 0.6 (rand 'λ' 0.1 0.6) 8 + mceReverse o++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) sidereal_time++{-+audition (out 0 sidereal_time)+-}
+ Sound/SC3/Graph/JMCC_sidereal_time_hp.hs view
@@ -0,0 +1,29 @@+-- sidereal time (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_sidereal_time_hp where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UId m => m UGen+sidereal_time = do+  let p = 15+  z <- let y = do+             fr <- replicateM p (expRand 100 6000)+             rt <- replicateM p (rand 2 6)+             return (klankSpec fr (replicate p 1) rt)+       in clone 2 y+  let f = xLine KR #(expRand 40 300) #(expRand 40 300) 12 DoNothing+  let t = lfPulse AR f 0 #(rand 0.1 0.9)+          * max 0 #(lfNoise2 KR #(rand 0 8))+          * 0.002+      o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+  return (combN o 0.6 #(rand 0.1 0.6) 8 + mceReverse o)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) =<< sidereal_time++{-+audition (out 0 sidereal_time)+-}
+ Sound/SC3/Graph/JMCC_slow_beating_harmonic_sines.hs view
@@ -0,0 +1,45 @@+-- slow beating harmonic sines (jmcc)+module Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Int -> Rand g [Double]+r_freq k i = do+  n <- nchoose i [0,2,4,5,7,9]+  o <- nrand i 7+  let f n' o' = midiCPS' (n' + (o' * 12) + fromIntegral k)+  return (zipWith f n o)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = do+  d' <- nrand2 m d+  return (zipWith (+) (map (* f) [1,2,4,5,6]) d')++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbhs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbhs n d m = do+  k' <- rand 12+  let k = 24 + k'+  f <- r_freq k n+  p_fr <- mapM (r_harmonics d m) f+  q_fr <- mapM (r_harmonics d m) f+  p_ph <- replicateM n (r_phase m)+  q_ph <- replicateM n (r_phase m)+  let a = replicate n (replicate m 1)+      p_sp = zipWith3 klangSpec' p_fr a p_ph+      q_sp = zipWith3 klangSpec' q_fr a q_ph+      mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+      p_u = sum (map mk_u p_sp)+      q_u = sum (map mk_u q_sp)+  return (mce2 p_u q_u)++main :: IO ()+main = do+  g <- getStdGen+  overlapTextureS (3,6,3,maxBound) (runRand (sbhs 8 0.4 5)) g
+ Sound/SC3/Graph/JMCC_slow_beating_sines.hs view
@@ -0,0 +1,42 @@+-- slow beating sines (jmcc)+module Sound.SC3.Graph.JMCC_slow_beating_sines where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++r_freq :: (RandomGen g) => Int -> Rand g [Double]+r_freq i = do+  n <- nrrand i 24 84+  return (map midiCPS' n)++r_harmonics :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics d m f = fmap (map (+ f)) (nrand2 m d)++r_harmonics' :: (RandomGen g) => Double -> Int -> Double -> Rand g [Double]+r_harmonics' d m f = fmap ((f :)  . map (+ f)) (nrand2 (m - 1) d)++r_phase :: (RandomGen g) => Int -> Rand g [Double]+r_phase m = nrrand m 0 (2 * pi)++sbs :: (RandomGen g) => Int -> Double -> Int -> Rand g UGen+sbs n d m = do+  f <- r_freq n+  p_fr <- mapM (r_harmonics' d m) f+  q_fr <- mapM (r_harmonics d m) f+  p_ph <- replicateM n (r_phase m)+  q_ph <- replicateM n (r_phase m)+  let a = replicate n (replicate m 1)+      p_sp = zipWith3 klangSpec' p_fr a p_ph+      q_sp = zipWith3 klangSpec' q_fr a q_ph+      mk_u s = klang AR 1 0 s * (0.1 / fromIntegral n)+      p_u = sum (map mk_u p_sp)+      q_u = sum (map mk_u q_sp)+  return (mce2 p_u q_u)++main :: IO ()+main = do+  g <- getStdGen+  overlapTextureS (4,4,3,maxBound) (runRand (sbs 20 0.4 3)) g
+ Sound/SC3/Graph/JMCC_snare_909.hs view
@@ -0,0 +1,32 @@+-- snare-909 (jmcc)+module Sound.SC3.Graph.JMCC_snare_909 where++import Sound.SC3.ID {- hsc3 -}++snare_909 :: UGen -> UGen+snare_909 tr =+  let n = whiteNoise 'α' AR+      v = tRand 'β' 0.25 1.0 tr+      e a b = envGen AR tr 1 0 1 DoNothing (envPerc a b)+      e1 = e 0.0005 0.055+      e2 = e 0.0005 0.075+      e3 = e 0.0005 0.4+      e4 = e 0.0005 0.283+      t1 = lfTri AR 330 0+      t2 = lfTri AR 185 0+      x1 = lpf n 7040 * 0.1 + v+      x2 = hpf x1 523+      m1 = t1 * e1 * 0.25 + t2 * e2 * 0.25+      m2 = x1 * e3 * 0.20 + x2 * e4 * 0.20+  in m1 + m2++snare_909_a :: UGen+snare_909_a =+    let x = mouseX KR 1 4 Linear 0.2+        y = mouseY KR 0.25 0.75 Exponential 0.2+        t = impulse KR (3 * x) 0+    in pan2 (snare_909 t) 0 y++main :: IO ()+main = audition (out 0 snare_909_a)+
+ Sound/SC3/Graph/JMCC_spe_m.hs view
@@ -0,0 +1,25 @@+-- spe (jmcc)+-- variant of graph in streams & patterns tutorial+module Sound.SC3.Graph.JMCC_spe_m where++import Sound.SC3.Monad {- hsc3 -}++spe :: UId m => m UGen+spe = do+  let rapf i = do r <- clone 2 (rand 0 0.05)+                  return (allpassN i 0.05 r 4)+      src = do let t = impulse KR 9 0+                   e = envGen KR t 0.1 0 1 DoNothing (envPerc 0.1 1)+                   s = mce [00,03,02,07+                           ,08,32,16,18+                           ,00,12,24,32]+               n <- lfNoise1 KR 1+               m <- dseq dinf s+               let f = midiCPS (demand t 0 m + 32)+                   o = lfSaw AR f 0 * e+                   rq = midiCPS (n * 36 + 110)+               return (rlpf o rq 0.1)+  chainM 4 rapf =<< src++main :: IO ()+main = audition . out 0 =<< spe
+ Sound/SC3/Graph/JMCC_spe_p.hs view
@@ -0,0 +1,29 @@+-- spe-p (jmcc)+module Sound.SC3.Graph.JMCC_spe_p where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++spe3_allpass6 :: UId m => m Synthdef+spe3_allpass6 = do+  n <- lfNoise1 KR 1+  let fr = control KR "freq" 440+      rapf i = do r <- clone 2 (rand 0 0.05)+                  return (allpassN i 0.05 r 4)+      e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.1 1)+      rq = midiCPS (n * 36 + 110)+      o = rlpf (lfSaw AR fr 0 * e) rq 0.1+  u <- fmap (out 0) (chainM 4 rapf o)+  return (synthdef "spe" u)++notes :: Num n => P n+notes =+    let n = [prand' 'α' [pempty,toP [24,31,36,43,48,55]] inf+            ,pflop [60,prand 'β' [63,65] inf,67,prand 'γ' [70,72,74] inf]+            ,psplitPlaces (pwhite 'δ' 3 9 inf) (toP [74,75,77,79,81])]+    in pjoin (pseq1 n inf)++main :: IO ()+main = do+  i <- spe3_allpass6+  audition (pbind [(K_instr,psynth i),(K_midinote,notes),(K_dur,0.13)])
+ Sound/SC3/Graph/JMCC_sprinkler.hs view
@@ -0,0 +1,14 @@+-- sprinkler (jmcc)+module Sound.SC3.Graph.JMCC_sprinkler where++import Sound.SC3.ID {- hsc3 -}++sprinkler :: UGen+sprinkler =+  let n = whiteNoise 'α' AR+      f = lfPulse KR 0.09 0 0.16 * 10 + 7+      t = lfPulse KR f 0 0.25 * 0.1+  in bpz2 (n * t)++main :: IO ()+main = audition (out 0 sprinkler)
+ Sound/SC3/Graph/JMCC_sprinkler_m.hs view
@@ -0,0 +1,14 @@+-- sprinkler-m (jmcc)+module Sound.SC3.Graph.JMCC_sprinkler_m where++import Sound.SC3.Monad {- hsc3 -}++sprinkler_m :: UId m => m UGen+sprinkler_m = do+  n <- whiteNoise AR+  let f = lfPulse KR 0.09 0 0.16 * 10 + 7+      t = lfPulse KR f 0 0.25 * 0.1+  return (bpz2 (n * t))++main :: IO ()+main = audition . out 0 =<< sprinkler_m
+ Sound/SC3/Graph/JMCC_string_wander_cluster.hs view
@@ -0,0 +1,24 @@+-- string wander-cluster (jmcc)+module Sound.SC3.Graph.JMCC_string_wander_cluster where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.Random {- random -}++type ST = (Double,StdGen)++wander :: ST -> ST+wander (n,g) =+    let (n',g') = randomR (-7,8) g+    in (foldToRange 50 120 (n + n'),g')++swc :: ST -> (UGen,ST)+swc st =+    let (n,g) = wander st+        d = 1 / midiCPS (constant n)+        w = whiteNoise 'c' AR * 0.008+        o = combC w 0.01 d (d * 1000)+    in (pan2 o (rand 'd' (-1) 1) 1,(n,g))++main :: IO ()+main = overlapTextureS (4/3,4/3,6,maxBound) swc (60,mkStdGen 0)
+ Sound/SC3/Graph/JMCC_strummable_guitar.hs view
@@ -0,0 +1,20 @@+-- strummable guitar (jmcc)+module Sound.SC3.Graph.JMCC_strummable_guitar where++import Sound.SC3.ID {- hsc3 -}++strummable_guitar :: UGen+strummable_guitar =+    let scale = [52,57,62,67,71,76]+        str i = let x = mouseX KR 0 1 Linear 0.2+                    t = abs (hpz1 (x >* (0.25 + constant i * 0.1)))+                    e = decay t 0.05+                    n = pinkNoise i AR * e+                    dt = 1 / midiCPS (scale !! i)+                    s = combL n dt dt 4+                in pan2 s (constant i * 0.2 - 0.5) 1+        strs = mixFill (length scale) str+  in leakDC (lpf strs 12000) 0.995++main :: IO ()+main = audition (out 0 strummable_guitar)
+ Sound/SC3/Graph/JMCC_sweepy_noise.hs view
@@ -0,0 +1,17 @@+-- sweepy noise (jmcc)+module Sound.SC3.Graph.JMCC_sweepy_noise where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++sweepy_noise :: UGen+sweepy_noise =+    let n = uclone 'α' 2 (whiteNoise 'α' AR)+        lfoDepth = mouseY KR 200 8000 Exponential 0.1+        lfoRate = mouseX KR 4 60 Exponential 0.1+        freq = lfSaw KR lfoRate 0 * lfoDepth + (lfoDepth * 1.2)+        filtered = rlpf (n * 0.03) freq 0.1+    in combN filtered 0.3 0.3 2 + filtered++main :: IO ()+main = audition (out 0 sweepy_noise)
+ Sound/SC3/Graph/JMCC_synthetic_piano_m.hs view
@@ -0,0 +1,27 @@+-- synthetic piano (jmcc)+module Sound.SC3.Graph.JMCC_synthetic_piano_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++synthetic_piano :: UId m => m UGen+synthetic_piano = do+  n <- iRand 36 90+  f <- rand 0.1 0.5+  ph <- rand 0 (pi * 2)+  let s = impulse AR f ph * 0.1+      e = decay2 s 0.008 0.04+      c i = do n0 <- lfNoise2 AR 3000+               let o = [-0.05,0,0.04] !! i+                   dt = 1 / midiCPS (n + o)+               return (combL (n0 * e) dt dt 6)+      l = ((n - 36) / 27) - 1+  c_ <- mixFillM 3 c+  return (pan2 c_ l 1)++main :: IO ()+main = overlapTextureU (6,0,6,maxBound) =<< synthetic_piano++{-+audition . out 0 =<< mixFillM 6 (const synthetic_piano)+-}
+ Sound/SC3/Graph/JMCC_tank.hs view
@@ -0,0 +1,50 @@+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html+module Sound.SC3.Graph.JMCC_tank where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++pling :: ID a => a -> UGen+pling e =+    let d = dust e AR 0.2+        f = expRand e 300 2200+        p = rand e (-1) 1+        s1 = cubed (fSinOsc AR f 0)+        s2 = decay2 d 0.1 0.5 * 0.1 * s1+    in pan2 s2 p 1++bang :: ID a => a -> UGen+bang e =+    let d = dust e AR 0.01+        n = brownNoise e AR+    in pan2 (decay2 d 0.04 0.3 * n) 0 1++r_allpass :: ID z => z -> UGen -> UGen+r_allpass e i =+    let r = randN 2 e 0.005 0.02+    in allpassN i 0.03 r 1++tank_f :: ID z => z -> UGen -> UGen+tank_f e i =+    let r1 = randN 2 e 0.01 0.05+        r2 = randN 2 e 0.03 0.15+        l0 = localIn 2 AR * 0.98+        l1 = onePole l0 0.33+        (l1l,l1r) = mce2c l1+        l2 = rotate2 l1l l1r 0.23+        l3 = allpassN l2 0.05 r1 2+        l4 = delayN l3 0.3 (mce2 0.17 0.23)+        l5 = allpassN l4 0.05 r2 2+        l6 = leakDC l5 0.995+        l7 = l6 + i+    in mrg [l7,localOut l7]++tank :: UGen+tank =+  let s = bang 'α' + mix (uclone 'β' 8 (pling 'γ'))+  in tank_f 'δ' (useq 'ε' 4 (r_allpass 'ζ') s)++main :: IO ()+main = audition (out 0 tank)
+ Sound/SC3/Graph/JMCC_tank_hp.hs view
@@ -0,0 +1,37 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_tank_hp where++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+  let s = decay2 #(dust AR 0.2) 0.1 0.5+          * cubed (fSinOsc AR #(expRand 300 2200) 0)+          * 0.1+  return (pan2 s #(rand (-1) 1) 1)++bang :: UId m => m UGen+bang = do return (pan2 (decay2 #(dust AR 0.01) 0.04 0.3 * #(brownNoise AR)) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do return (allpassN i 0.03 #(clone 2 (rand 0.005 0.02)) 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+  let [l,r] = mceChannels (onePole (localIn 2 AR * 0.98) 0.33)+  let a = allpassN (rotate2 l r 0.23) 0.05 #(clone 2 (rand 0.01 0.05)) 2+      b = delayN a 0.3 (mce [0.17,0.23])+  let c = leakDC (allpassN b 0.05 #(clone 2 (rand 0.03 0.15)) 2) 0.995 + i+  return (mrg [c,localOut c])++tank :: UId m => m UGen+tank = do+  s <- bang .+. mixFillM 8 (const pling :: UId m => Int -> m UGen)+  s' <- chainM 4 r_allpass s+  tank_f s'++main :: IO ()+main = do+  t <- tank+  audition (out 0 t)
+ Sound/SC3/Graph/JMCC_tank_m.hs view
@@ -0,0 +1,46 @@+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html+module Sound.SC3.Graph.JMCC_tank_m where++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+  d <- dust AR 0.2+  f <- expRand 300 2200+  p <- rand (-1) 1+  let s1 = cubed (fSinOsc AR f 0)+      s2 = decay2 d 0.1 0.5 * 0.1 * s1+  return (pan2 s2 p 1)++bang :: UId m => m UGen+bang = do+  d <- dust AR 0.01+  n <- brownNoise AR+  return (pan2 (decay2 d 0.04 0.3 * n) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do+  r <- clone 2 (rand 0.005 0.02)+  return (allpassN i 0.03 r 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+  r1 <- clone 2 (rand 0.01 0.05)+  r2 <- clone 2 (rand 0.03 0.15)+  let l0 = localIn 2 AR * 0.98+      l1 = onePole l0 0.33+      [l1l,l1r] = mceChannels l1+      l2 = rotate2 l1l l1r 0.23+      l3 = allpassN l2 0.05 r1 2+      l4 = delayN l3 0.3 (mce [0.17,0.23])+      l5 = allpassN l4 0.05 r2 2+      l6 = leakDC l5 0.995+      l7 = l6 + i+  return (mrg [l7,localOut l7])++tank :: UId m => m UGen+tank = tank_f =<< chainM 4 r_allpass =<< bang .+. mixFillM 8 (const pling)++main :: IO ()+main = audition . out 0 =<< tank
+ Sound/SC3/Graph/JMCC_theremin.hs view
@@ -0,0 +1,19 @@+-- theremin (jmcc)+module Sound.SC3.Graph.JMCC_theremin where++import Sound.SC3 {- hsc3 -}++theremin :: UGen+theremin =+  let m = 7+      detune = 0+      x = mouseX KR 0 0.6 Linear 0.2+      y = mouseY KR 4000 200 Exponential 0.8+      f = y + detune+      f' = f + f * sinOsc AR m 0 * 0.02+      a = sinOsc AR f' 0 * x+  in pan2 a 0 1++main :: IO ()+main = audition (out 0 theremin)+
+ Sound/SC3/Graph/JMCC_tremulate.hs view
@@ -0,0 +1,21 @@+-- tremulate (jmcc)+module Sound.SC3.Graph.JMCC_tremulate where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++tremulate :: UGen+tremulate =+    let f = rand 'α' 500 900+        o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+        r = randN 4 'β' 30 90+        a = max 0 (lfNoise2 'γ' KR r) * 0.1+        l = randN 4 'δ' (-1) 1+    in mix (pan2 o l a)++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = xfadeTextureU_pp (0.5,2,maxBound) tremulate 2 tremulate_pp
+ Sound/SC3/Graph/JMCC_tremulate_hp.hs view
@@ -0,0 +1,18 @@+-- tremulate (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_tremulate_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+  let o = fSinOsc AR (#(rand 500 900) * mce [1,1.2,1.5,1.8]) 0+  n <- clone 4 (lfNoise2 KR #(rand 30 90))+  return (mix (pan2 o #(clone 4 (rand (-1) 1)) (max 0 (n * 0.1))))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do xfadeTextureU_pp (0.5,2,maxBound) #(tremulate) 2 tremulate_pp
+ Sound/SC3/Graph/JMCC_tremulate_m.hs view
@@ -0,0 +1,23 @@+-- tremulate (jmcc)+module Sound.SC3.Graph.JMCC_tremulate_m where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+  f <- rand 500 900+  let o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0+  r <- rand 30 90+  n <- clone 4 (lfNoise2 KR r)+  let a = max 0 (n * 0.1)+  l <- clone 4 (rand (-1) 1)+  return (mix (pan2 o l a))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do+  t <- tremulate+  xfadeTextureU_pp (0.5,2,maxBound) t 2 tremulate_pp
+ Sound/SC3/Graph/JMCC_tsort.hs view
@@ -0,0 +1,27 @@+-- http://create.ucsb.edu/pipermail/sc-users/2003-March/002807.html (jmcc)+module Sound.SC3.Graph.JMCC_tsort where++{-+This simple graph tests the topological sort of the unit generator+graph, it ought only to use a minimal number of interconnect buffers.++The below 369 node graph works with 'scsynth -u 57110 -w 2'.++(Note that graphs loaded from disk during startup will grow the number+of interconnect buffers, so to test this we must delete all graphs that+would otherwise be loaded.)+-}++import Sound.SC3 {- hsc3 -}++tsort :: UGen+tsort =+  let n = 122+      c = envCoord [(0,0), (0.15, 1), (6, 0)] 1 1 EnvLin+      e = envGen KR 1 1 0 1 RemoveSynth c+      f o = sinOsc AR (440 + constant o) 0 * 0.001+      s = mixFill n f+  in s * e++main :: IO ()+main = audition (out 0 tsort)
+ Sound/SC3/Graph/JMCC_uplink.hs view
@@ -0,0 +1,20 @@+-- uplink (jmcc)+module Sound.SC3.Graph.JMCC_uplink where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++randz :: ID a => a -> UGen -> UGen+randz e = rand e 0++uplink :: UGen+uplink =+    let r = randz+        p0 = lfPulse KR (r 'α' 20) 0 (r 'β' 1)+        p1 = lfPulse KR (r 'γ' 4) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+        f = mix (uclone 'η' 2 (p0 * p1))+    in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'θ' (-0.8) 0.8) 1++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) uplink
@@ -0,0 +1,18 @@+-- uplink (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.JMCC_uplink_hp where++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++uplink :: UId m => m UGen+uplink = do+  let p0 = do return (lfPulse KR #(rand 0 20) 0 #(rand 0 1))+  let p1 = do return (lfPulse KR #(rand 0 4) 0 #(rand 0 1)+                      * #(rand 0 8000)+                      + #(rand 0 2000))+  f <- fmap mix (clone 2 (p0 .*. p1))+  return (pan2 (lfPulse AR f 0 0.5 * 0.04) #(rand (-0.8) 0.8) 1)++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) =<< uplink
+ Sound/SC3/Graph/JMCC_what_was_i_thinking_m.hs view
@@ -0,0 +1,25 @@+-- what was i thinking? (jmcc)+module Sound.SC3.Graph.JMCC_what_was_i_thinking_m where++import Sound.SC3.Monad {- hsc3 -}++what_was_i_thinking :: UId m => m UGen+what_was_i_thinking = do+  n0 <- lfNoise1 KR 0.2+  n1 <- lfNoise1 KR 0.157+  let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04+      i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500+      d = decay i 2+      f = max (sinOsc KR 4 0 + 80) d+      z = rlpf p (n0 * 2000 + 2400) 0.2+      c x = do r <- rand 0 0.3+               n <- lfNoise1 KR r+               return (combL x 0.06 (n * 0.025 + 0.035) 1)+      y = z * 0.6+  z0 <- clone 2 (c y)+  z1 <- clone 2 (c y)+  return (z + mce [mix z0,mix z1])++main :: IO ()+main = audition . out 0 =<< what_was_i_thinking+
+ Sound/SC3/Graph/JMCC_why_supercollider.hs view
@@ -0,0 +1,20 @@+-- why supercollider (jmcc)+module Sound.SC3.Graph.JMCC_why_supercollider where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++why_supercollider :: UGen+why_supercollider =+    let r = resonz (dust 'α' AR 0.2 * 50) (rand 'β' 200 3200) 0.003+        s = mix (uclone 'γ' 10 r)+        z = delayN s 0.048 0.048+        c = combL z 0.1 (lfNoise1 'δ' KR (rand 'ε' 0 0.1) * 0.04 + 0.05) 15+        y = mix (uclone 'ζ' 7 c)+        f i = allpassN i 0.050 (randN 2 'η' 0 0.05) 1+        x = useq 'θ' 4 f y+    in out 0 (s + 0.2 * x)++main :: IO ()+main = audition why_supercollider
+ Sound/SC3/Graph/JMCC_wind_metals_m.hs view
@@ -0,0 +1,24 @@+-- wind metals (jmcc)+module Sound.SC3.Graph.JMCC_wind_metals_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++-- > audition . out 0 =<< wind_metals+wind_metals :: UId m => m UGen+wind_metals = do+  let n = 6+  base <- expRand 60 4000+  rng <- rand 500 8000+  n0 <- clone 2 (brownNoise AR)+  r0 <- expRand 0.125 0.5+  n1 <- lfNoise1 KR r0+  f <- sequence (replicate n (rand base (base + rng)))+  dt <- sequence (replicate n (rand 0.1 2))+  let exc = n0 * 0.007 * max 0 (n1 * 0.75 + 0.25)+      k = klankSpec f (replicate n 1) dt+      s = klank exc 1 0 1 k+  return (softClip (s * 0.1))++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< wind_metals
+ Sound/SC3/Graph/JP_record_scratcher.hs view
@@ -0,0 +1,26 @@+-- record scratcher (jp)+module Sound.SC3.Graph.JP_record_scratcher where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++record_scratcher :: UGen+record_scratcher =+  let dup a = mce2 a a+      d = Envelope [0, 1, 0] [0.1, 0.1] [EnvSin] (Just 1) (Just 0)+      e = envGen KR 1 0.5 0 1 RemoveSynth d+      x = mouseX KR (-10) 10 Linear 0.2+      dx = x - delayN x 0.1 0.1+      bdx = mouseButton KR 1 0 0.3 + dx+      bdxr = bdx * bufRateScale KR 0+      scr = playBuf 1 AR 0 bdxr 0 0 Loop DoNothing+  in dup (scr * e)++run :: Transport m => m ()+run = do+  let fn = "/home/rohan/data/audio/pf-c5.snd"+  _ <- async (b_allocRead 0 fn 0 0)+  play (out 0 record_scratcher)++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/JRHB_black_atlantic_currents.hs view
@@ -0,0 +1,109 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg08240.html (jrhb)+module Sound.SC3.Graph.JRHB_black_atlantic_currents where++import Data.Numbers.Primes {- primes -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -}+import System.Random {- random -}+import System.Random.Shuffle {- random-shuffle -}++nth_prime :: Integral a => Int -> a+nth_prime j = primes !! j++chain :: Int -> (t -> t) -> t -> t+chain j f x = if j == 0 then x else chain (j - 1) f (f x)++xn,yn,zn :: Num a => a+xn = 64+yn = 65+zn = 66++type NF t a = a -> Rate -> t -> UGen++n :: NF t a -> t -> [a] -> UGen+n g f = mce . map (\k -> g k KR f)++n' :: NF t a -> [t] -> [a] -> UGen+n' g f = mce . map (\(f',k) -> g k KR f') . zip f++i :: UGen -> UGen+i = inFeedback 2++c :: Int -> UGen+c = constant++bac :: UGen+bac =+  let x = let ph = i yn * uclone 'α' 2 (lfdNoise3 'β' KR 1)+          in out xn (mceReverse (sinOsc AR (60 * 2) ph))+      y = let ph = i xn * uclone 'γ' 2 (lfdNoise3 'δ' KR 0.3) * 4+          in out yn (sinOsc AR (50 * 2) ph)+  in mrg [inFeedback 2 xn,y,x]++main :: IO ()+main = audition (out 0 bac)++bac' :: UGen+bac' =+  let x = let f = c (nth_prime 23)+              ph = i yn * uclone 'ε' 2 (lfdNoise3 'ζ' KR (sqrt 2))+          in out xn (mceReverse (sinOsc AR f ph))+      y = let f = c (chain 3 nth_prime 1)+              ph = i xn * uclone 'η' 2 (lfdNoise3 'θ' KR (sqrt pi)) * pi+          in out yn (tanh (sinOsc AR f ph))+  in mrg [inFeedback 2 xn,y,x]++bac'' :: UGen+bac'' =+  let x = let f = c (nth_prime 23)+              ph = i yn * n' lfdNoise3 (map sqrt [1,2]) "ab"+          in out xn (mceReverse (sinOsc AR f ph))+      y = let f = c (chain 3 nth_prime 1)+              ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+          in out yn (tanh (sinOsc AR f ph))+      z = let f = c (chain 3 nth_prime 2)+              ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+          in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+  in mrg [inFeedback 2 xn,y,x,z]++bac''' :: UGen+bac''' =+  let x = let j = range 1 30 (lfNoise0 'ι' KR (log 2 / 2))+              f = select j (mce (map (c . nth_prime) [1..30]))+              ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+          in out xn (mceReverse (sinOsc AR f ph))+      y = let f = c (chain 3 nth_prime 1)+              ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+          in out yn (tanh (sinOsc AR f ph) * exp 1)+      z = let f = c (chain 3 nth_prime 2)+              ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+          in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+  in mrg [inFeedback 2 xn,y,x,z]++scramble :: Enum a => a -> [t] -> [t]+scramble j k =+    let g = mkStdGen (fromEnum j)+    in shuffle' k (length k) g++bac'''' :: UGen+bac'''' =+  let x = let j = range 1 30 (lfNoise2 'κ' KR (log 2 / 2))+              ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+              f' = map (c . nth_prime) (scramble 'λ' [1,3..61])+              o = map (\f -> mceReverse (sinOsc AR f ph)) f'+          in out xn (mceChannel 1 (selectX j (mce o)))+      y = let f = c (chain 3 nth_prime 1)+              ph = i xn * n lfdNoise1 (sqrt pi) "cd" * pi+          in out yn (tanh (sinOsc AR f ph) * exp 1)+      z = let f = c (chain 3 nth_prime 2)+              ph = i yn * n lfdNoise0 (sqrt (sqrt pi)) "ef" * 42 * pi+          in out zn (tanh (sinOsc AR f ph) * exp (-0.5 * pi))+  in mrg [inFeedback 2 xn,y,x,z]++{-+audition (out 0 bac)+audition (out 0 bac')+audition (out 0 bac'')+audition (out 0 bac''')+audition (out 0 bac'''')+-}
+ Sound/SC3/Graph/JRHB_chain_saw_m.hs view
@@ -0,0 +1,47 @@+-- chain saw (jrhb)+module Sound.SC3.Graph.JRHB_chain_saw_m where++-- this graph generates long chains of unit generators and may require+-- increasing the stack limit of the haskell run time system++import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++coinIf :: Double -> a -> a -> IO a+coinIf n a b = do+  r <- R.coin n+  return (if r then a else b)++exprange :: UGen -> UGen -> UGen -> UGen+exprange s = linExp s (-1) 1++mceProduct :: UGen -> UGen+mceProduct = mceEdit (\l -> [product l])++clipu :: BinaryOp a => a -> a+clipu s = clip2 s 1++dup :: UGen -> UGen+dup a = mce2 a a++chain_saw :: IO UGen+chain_saw = do+  let f s1 = do xr <- fmap dup (expRand 0.1 2)+                n1 <- lfNoise1 KR xr+                n2 <- lfNoise1 KR xr+                n3 <- lfNoise1 KR xr+                f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)+                s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)+                let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)+                    u1 = lfSaw KR f2 0+                    u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1+                return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)+      inp = lfSaw KR (0.2 * mce2 1 1.1) 0+      b_freq = mce [70, 800, 9000, 5242]+  ff <- chainM 8 f inp+  let c_saw = mceProduct (saw AR (exprange ff 6 11000))+      b_saw = dup (mix (bpf c_saw b_freq 0.2))+  return (b_saw * 0.3)++main :: IO ()+main = audition . out 0 =<< chain_saw
+ Sound/SC3/Graph/JRHB_deep_sea.hs view
@@ -0,0 +1,34 @@+-- deep sea (jrhb)+module Sound.SC3.Graph.JRHB_deep_sea where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++rng :: UGen -> UGen -> UGen -> UGen+rng s l r =+    let m = (r - l) * 0.5+    in mulAdd s m (m + l)++deep_sea :: UGen+deep_sea =+    let amp = 1+        pan = 0+        variation = 0.9+        n = rand 'α' 7 46+        dt1 = 25.0 + rand 'β' (-1.7) 1.7+        dt2 = (dt1 + lfNoise2 'γ' KR 2) * variation * 0.001+        f = 901 + rand 'δ' 0 65+        t = impulse AR (recip dt2) 0 * 100+        count = pulseCount t 0+        mul = count <* n+        u1 = bpf (mul * t) f 1 * 0.1+        f2 = f * ((count `modE` rng (lfNoise1 'ε' KR 1) 2 20) + 1)+        u2 = bpf u1 f2 1 * 0.2+    in mrg [pan2 u2 pan (amp * 10)+           ,detectSilence u2 0.0001 0.2 RemoveSynth]++main :: IO ()+main = do+  let s = synthdef "deep-sea" (out 0 deep_sea)+      p = pbind [(K_instr,psynth s),(K_dur,pxrand 'ζ' [0.25,0.5,1,2] inf)]+  audition p
+ Sound/SC3/Graph/JRHB_dial_history_m.hs view
@@ -0,0 +1,36 @@+-- dial history (jrhb)+module Sound.SC3.Graph.JRHB_dial_history_m where++import Data.List {- base -}+import Sound.SC3.Monad {- hsc3 -}++rng :: UGen -> UGen -> UGen -> UGen+rng s = linLin s 0 1++dial_history :: UId m => m UGen+dial_history = do+  let mfv = [[697,770,852,941],[1209,1336,1477,1633]]+      numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]+      mce_r = mce . map mce+  n <- dwhite dinf 7 12+  w <- dwhite 1 2 7+  b <- dbrown n 0.1 0.2 0.01+  rate <- dseq dinf (mce2 w b)+  q <- dseq dinf (mce [1..10])+  g1 <- grayNoise AR+  g2 <- grayNoise AR+  d <- lfdNoise3 KR 0.5+  let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09+      pat = latch tr tr+      x = mouseX KR 0 1 Linear 0.2+      h = hasher (pat * x)+      which = trunc (rng h 0 (constant (length numbers))) 1+      both = select which (mce_r numbers)+      dial = select both (mce_r (transpose mfv))+      sig = sinOsc AR dial 0 * 0.05 * tr+      dsig = delayN sig 0.2 (rng d 0 0.01)+      hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000+  return (dsig + hiss)++main :: IO ()+main = audition . out 0 =<< dial_history
+ Sound/SC3/Graph/JRHB_half_life.hs view
@@ -0,0 +1,15 @@+-- half-life (jrhb)+module Sound.SC3.Graph.JRHB_half_life where++import Sound.SC3.ID {- hsc3 -}++half_life :: UGen+half_life =+  let t_half = 1/3.92+      n_atoms = 1e+5+      n = max 0 (n_atoms - pulseCount (localIn 2 AR) 0)+      activity = dust 'α' AR (n * log 2 * t_half)+  in mrg [activity,localOut activity]++main :: IO ()+main = audition (out 0 half_life)
+ Sound/SC3/Graph/JRHB_sam_i_am.hs view
@@ -0,0 +1,55 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg00280.html (jrhb)+module Sound.SC3.Graph.JRHB_sam_i_am where++import Control.Monad.Random {- MonadRandom -}+import Data.List {- base -}+import Data.Maybe {- base -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.Monad {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++text :: [String]+text =+    ["I could not would not in a house"+    ,"I would not could not with a mouse"+    ,"I would not eat them with a fox"+    ,"I would not eat them in a box"+    ,"I would not eat them here or there"+    ,"I would not eat them anywhere"+    ,"I would not eat green eggs and ham"+    ,"I do not like them Sam-I-am"]++x :: [[String]]+x = map words text++a :: [String]+a = nub (concat x)++sam :: Synthdef+sam =+    let f1 = control KR "freq1" 440+        f2 = control KR "freq2" 440+        f3 = control KR "freq3" 440+        e = xLine KR 0.1 0.001 0.5 RemoveSynth+        o = sinOsc AR f1 0 * pulse AR f2 0.5 * saw AR f3 * e+    in synthdef "sam" (out 0 o)++b :: (RandomGen g,Floating n,Random n) => g -> [(String,[(Key,n)])]+b g =+    let mk w = do+          f1 <- exprand 200 9000+          f2 <- exprand 20 9000+          f3 <- exprand 20 9000+          let d = 0.1 * fromIntegral (length w)+          return (w,[(K_param "freq1",f1)+                    ,(K_param "freq2",f2)+                    ,(K_param "freq3",f3)+                    ,(K_dur,d)])+    in evalRand (mapM mk a) g++main :: IO ()+main = do+  g <- getStdGen+  let t = b g+      ae = mapMaybe (\w -> fmap e_from_list (lookup w t)) (concat x)+  audition (p_with (K_instr,psynth sam) (pseq (map return ae) 1))
+ Sound/SC3/Graph/LJP_one_line.hs view
@@ -0,0 +1,15 @@+-- one-line (ljp)+module Sound.SC3.Graph.LJP_one_line where++import Sound.SC3 {- hsc3 -}++one_line :: UGen+one_line =+  let lfs = lfSaw AR (mce2 1 0.99) (mce2 0 0.6) * 2000 + 2000+      lfs_t = trunc lfs (mce2 400 600) * mce2 1 (-1)+      f = onePole (mix lfs_t) 0.98+  in pan2 (sinOsc AR f 0) 0 0.1++main :: IO ()+main = audition (out 0 one_line)+
+ Sound/SC3/Graph/MN_k2ws.hs view
@@ -0,0 +1,22 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+module Sound.SC3.Graph.MN_k2ws where++import Sound.SC3.ID {- hsc3 -}++rng :: (UGen,UGen) -> UGen -> UGen+rng (i,j) = range i j++k2ws :: UGen+k2ws =+    let fc = 400 + rng (100,200) (lfNoise2 'α' AR (mce2 1 2))+        fm = rng (100,200) (lfNoise0 'β' AR 5)+        i = rng (1,20) (lfNoise1 'γ' AR 10)+        x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+        rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'δ' AR 1)) 0)+        rq = rng (0.5,10) (lfNoise1 'ε' AR 1)+        a = rlpf x rf rq+        ph = a * rng (1.0,4.0) (lfNoise1 'ζ' AR 0.1) * 4 * pi+    in sinOsc AR 0.2 ph * 0.5++main :: IO ()+main = audition (out 0 k2ws)
+ Sound/SC3/Graph/MN_k2ws_hp.hs view
@@ -0,0 +1,19 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.MN_k2ws_hp where++import Sound.SC3.Monad {- hsc3 -}++k2ws :: UId m => m UGen+k2ws = do+  let fc = 400 + range 100 200 #(lfNoise2 AR (mce2 1 2))+  let fm = range 100 200 #(lfNoise0 AR 5)+  let i = range 1 20 #(lfNoise1 AR 10)+  let x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+  let rf = range 1000 2000 (sinOsc AR (range 0.1 1 #(lfNoise1 AR 1)) 0)+  let rq = range 0.5 10 #(lfNoise1 AR 1)+  let ph = rlpf x rf rq * range 1.0 4.0 #(lfNoise1 AR 0.1) * 4 * pi+  return (sinOsc AR 0.2 ph * 0.5)++main :: IO ()+main = audition . out 0 =<< k2ws
+ Sound/SC3/Graph/NC_after_goeyvaerts.hs view
@@ -0,0 +1,367 @@+-- after goeyvaerts, nick collins (nc), 2007+module Sound.SC3.Graph.NC_after_goeyvaerts where++import Control.Concurrent.MVar {- base -}+import Data.List+import Data.List.Split {- split -}+import qualified Data.Map as M {- containers -}+import Sound.OSC.FD {- hosc -}+import Sound.SC3.ID.FD {- hsc3 -}+import qualified Sound.SC3.Lang.Collection as C {- hsc3-lang -}+import qualified Sound.SC3.Lang.Random.Gen as R+import System.Random {- random -}++-- * SCHEMA++-- | infinite monadic recursion+mrec :: Monad m => (a -> m a) -> a -> m a+mrec f i = f i >>= mrec f++-- | monadic recursion with counter+mrec_n :: Monad m => Int -> (a -> m a) -> a -> m a+mrec_n n f i =+    if n == 0+    then return i+    else f i >>= mrec_n (n - 1) f++-- | recursion function useful for random processes (g = random state)+r_chain :: (g -> (a,g)) -> g -> [a]+r_chain f g =+    let (r,g') = f g+    in r : r_chain f g'++r_chain_fb :: ((a,g) -> (a,g)) -> a -> g -> [a]+r_chain_fb f r_ g_ =+    let go (r,g) = let (r',g') = f (r,g) in r' : go (r',g')+    in r_ : go (r_,g_)++-- | an action that steps through a stored sequence+l_step :: MVar [a] -> IO a+l_step r =+    let f [] = undefined+        f (x:xs) = (xs,x)+    in modifyMVar r (return . f)++-- | generate a stepper action from a list+l_stepper :: [a] -> IO (IO a)+l_stepper l = do+  r <- newMVar (cycle l)+  return (l_step r)++l_stepper_scramble :: [a] -> IO (IO a)+l_stepper_scramble l = scrambleIO l >>= l_stepper++{-+a <- l_stepper [1..5]+sequence (replicate 10 a)+-}++type SEL a b g = (a,g) -> (b,g)++-- | a recursion schema where s chooses between a and b at each step+sel_seq :: RandomGen g => SEL a Bool g->SEL a a g->SEL a a g->a->g->[a]+sel_seq s a b j =+    let step (i,g) =+            let (r,g') = s (i,g)+            in if r then a (i,g') else b (i,g')+    in r_chain_fb step j++-- | variant where s is a (coin' c) and a is (rrand'c r)+sel_seq_c_rng :: (RandomGen g,Random a) => R -> (a,a) -> a -> g -> [a]+sel_seq_c_rng c r i g =+    let s = coin c . snd+        a = rrandc r . snd+    in sel_seq s a id i g++-- | monadic if+ifM :: Monad m => m Bool -> m b -> m b -> m b+ifM i j k = do+  i' <- i+  if i' then j else k++-- | coin at R+coin :: (RandomGen g) => R -> g -> (Bool,g)+coin = R.coin++-- | 'coin' at R+coinIO :: R -> IO Bool+coinIO = getStdRandom . coin++-- | 'R.wchoose'.+wchoose :: RandomGen g => [a] -> [R] -> g -> (a,g)+wchoose = R.wchoose++-- | wchoose at R+wchooseIO :: [a] -> [R] -> IO a+wchooseIO l= getStdRandom . wchoose l++-- | rrand with duple range+rrandc :: (RandomGen g,Random n) => (n,n) -> g -> (n,g)+rrandc = uncurry R.rrand++scrambleIO :: [t] -> IO [t]+scrambleIO = getStdRandom . R.scramble++-- | set precision+set_prec :: Int -> Double -> Double+set_prec n x =+    let n' = 10 ^ n+        x' = round (x * n') :: Integer+    in fromIntegral x' / n'++-- * AFTER GOEYVAERTS++nd :: UGen+nd =+    let freq = control KR "freq" 440+        amp = control KR "amp" 0.1+        sustain = control KR "sustain" 0.1+        pan = control KR "pan" 0+        s = let p = mix (lfPar AR (freq * mce [0.999,1.001]) 0 * amp)+                l = [10000,2000,4000,1000]+                t = [0.005,rand 'α' 0.009 0.05,0.005]+                d = Envelope l t (replicate 3 EnvLin) Nothing Nothing+            in lpf (distort p) (envGen KR 1 1 0 1 DoNothing d)+        e = let l = [0,1,0.4,0.7,0]+                t = [rand 'β' 0.001 0.005,0.005,0.005,sustain]+                d = Envelope l t (replicate 4 EnvLin) Nothing Nothing+            in envGen KR 1 1 0 1 RemoveSynth d+    in out 0 (pan2 (s * e) pan 1)++fx :: UGen+fx = replaceOut 0 (freeVerb (in' 2 AR 0) 0.33 1.5 0.5)++ag_init :: Transport t => t -> IO ()+ag_init fd = do+  _ <- async fd (d_recv (synthdef "nd" nd))+  _ <- async fd (d_recv (synthdef "fx" fx))+  send fd (s_new "fx" (-1) AddToHead 1 [])+  return ()++nd_msg :: Double -> Double -> Double -> Double -> Message+nd_msg f a s p =+    let nd_arg = [("freq",f),("amp",a),("sustain",s),("pan",p)]+    in s_new "nd" (-1) AddToHead 1 nd_arg++type R = Double+type P = M.Map Int R+type S = M.Map Int Int+data AG = AG {note_row :: [Int]+             ,amp_row :: IO R+             ,sus_row :: IO R+             ,pan_row :: IO R+             ,ioi_row :: IO R+             ,ioi_mult_seq :: IO R+             ,base_note_seq :: IO Int+             ,octaves_seq :: IO Int+             ,selections :: S+             ,probabilities :: P}++selections' :: S+selections' = M.fromList (map (\i -> (i,0)) [0..11])++selections_incr :: Int -> S -> S+selections_incr = M.adjust (+ 1)++selections_step' :: RandomGen g => S -> g -> (S,g)+selections_step' s g =+    let (r,g') = coin 0.03 g+    in (if r then selections' else s,g')++selections_step :: S -> IO S+selections_step s = ifM (coinIO 0.03) (return selections') (return s)++note_set :: [Int]+note_set = [0 .. 11]++note_step' :: RandomGen g => [Int] -> P -> g -> (Int,g)+note_step' n p = R.wchoose n (C.normalizeSum (M.elems p))++note_step :: [Int] -> P -> IO Int+note_step n = getStdRandom . note_step' n++chord_n' :: RandomGen g => g -> [Int]+chord_n' = r_chain (wchoose [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025])++chord_n :: IO [Int]+chord_n = fmap chord_n' newStdGen++chord' :: RandomGen g => P -> S -> Int -> [Int] -> g -> (([P],[S],[Int]),g)+chord' p_ s_ =+    let go (pl,sl,zl) p s n nr g =+            if n == 0+            then ((reverse pl,reverse sl,reverse zl),g)+            else let (z,g') = note_step' nr p g+                     p' = probabilities_decr z p+                     s' = selections_incr z s+                 in go (p':pl,s':sl,z:zl) p' s' (n - 1) nr g'+    in go ([p_],[s_],[]) p_ s_++chord :: P -> S -> Int -> [Int] -> IO ([P],[S],[Int])+chord p s n = getStdRandom . chord' p s n++amp_set :: [R]+amp_set = map (dbAmp . negate) [1,3 .. 36]++sus_set :: [R]+sus_set = map ((/ exp 1) . exp . (/ 37)) [1 .. 37]++pan_set :: [R]+pan_set = map ((+ (-1)) . (* 2) . (/ 31)) [1 .. 31]++ioi_set :: [R]+ioi_set = map ((12 **) . (/ 12)) [1..12]++ioi_mult_set :: [R]+ioi_mult_set = [0.01,0.025,0.05,0.1,0.2]++ioi_mult_seq' :: RandomGen g => R -> g -> [R]+ioi_mult_seq' i g =+    let s = uncurry coin+        a = R.choose ioi_mult_set . snd+    in sel_seq s a id i g++--ioi_mult_seq_ = getStdRandom . ioi_mult_seq++octaves_rng :: (Int,Int)+octaves_rng = (2,5)++octaves_seq' :: RandomGen g => g -> [Int]+octaves_seq' = sel_seq_c_rng 0.02 octaves_rng 4++base_note_rng :: (Int,Int)+base_note_rng = (35,47)++base_note_seq' :: RandomGen g => g -> [Int]+base_note_seq' = sel_seq_c_rng 0.01 base_note_rng 36++probabilities' :: P+probabilities' = M.fromList (map (\x -> (x,1)) [0..11])++probabilities_incr :: P -> P+probabilities_incr = M.map (\x -> if x < 0.9999 then x + 0.1 else x)++probabilities_decr :: Int -> P -> P+probabilities_decr z = M.insert z 0.1++ag :: IO AG+ag = do+  a <- l_stepper_scramble amp_set+  s <- l_stepper_scramble sus_set+  p <- l_stepper_scramble pan_set+  i <- l_stepper_scramble ioi_set+  g <- newStdGen+  m <- l_stepper (ioi_mult_seq' 0.1 g)+  o <- l_stepper (octaves_seq' g)+  b <- l_stepper (base_note_seq' g)+  n <- scrambleIO note_set+  return AG {note_row = n+            ,amp_row = a+            ,sus_row = s+            ,pan_row = p+            ,ioi_row = i+            ,ioi_mult_seq = m+            ,base_note_seq = b+            ,octaves_seq = o+            ,selections = selections'+            ,probabilities = probabilities'}++ag_note :: S -> Int -> Int -> Int -> Int+ag_note s' z o b = ((s' M.! z) `mod` o) * 12 + b + z++-- o,b,a,su,pn,i,im are lists+-- p,s,z are nested lists+ag_psz' :: RandomGen g => [Int] -> [Int] -> P -> S -> g -> [([P],[S],[Int])]+ag_psz' nr cn p s g =+    let (n:ns) = cn+        ((p',s',c),g') = chord' p s n nr g+        p'' = probabilities_incr (last p')+        (s'',g'') = selections_step' (last s') g'+    in (p',s',c) : ag_psz' nr ns p'' s'' g''++ag_psz :: [Int] -> [Int] -> P -> S -> IO [([P], [S], [Int])]+ag_psz nr cn p s = do+  g <- newStdGen+  return (ag_psz' nr cn p s g)++{-+let g = mkStdGen 0+let cn = chord_n' g+let t3_3 (_,_,x) = x+take 12$ map t3_3$ ag_psz note_set cn probabilities' selections' g+-}++scramble_c :: [t] -> IO [t]+scramble_c x = fmap cycle (scrambleIO x)++type Score = ([([Int],[Int],[R],[R],[R],([P],[S],[Int]))],[R],[R])++ag_score :: IO Score+ag_score = do+  a <- scramble_c amp_set+  su <- scramble_c sus_set+  pn <- scramble_c pan_set+  i <- scramble_c ioi_set+  g <- newStdGen+  let m = ioi_mult_seq' 0.1 g+      o = octaves_seq' g+      b = base_note_seq' g+  nr <- scrambleIO note_set+  cn <- chord_n+  let gr = splitPlaces (map (+ 1) cn)+  psz <- ag_psz nr cn probabilities' selections'+  return (zip6 (gr o) (gr b) (gr a) (gr su) (gr pn) psz,i,m)++---ag_run_score (a,s,p,o,b,psz,i,m) =++ag_run_note :: Transport t => t->Int->Int->R->R->R->(P,S,Int)->IO()+ag_run_note fd o b a su pn (p,s,z) = do+  let mn = ag_note s z o b+  print ('γ',o,'δ',b)+  print ('ε',map (set_prec 2) (M.elems p))+  print ('ζ',M.elems s)+  send fd (nd_msg (midiCPS (fromIntegral mn)) a su pn)++ag_step :: Transport t => t -> AG -> IO AG+ag_step fd r = do+  let act (p,s,z) = do+        o <- octaves_seq r+        b <- base_note_seq r+        a <- amp_row r+        su <- sus_row r+        pn <- pan_row r+        ag_run_note fd o b a su pn (p,s,z)+  (p',s') <- do let p = probabilities_incr (probabilities r)+                s <- selections_step (selections r)+                n <- wchooseIO [1,2,3,4,5] [0.5,0.35,0.1,0.025,0.025]+                (p',s',c) <- chord p s n (note_row r)+                mapM_ act (zip3 p' s' c)+                return (last p',last s')+  dt <- ioi_row r+  i <- ioi_mult_seq r+  wait (dt * i)+  return (r {probabilities = p',selections = s'})++ag_run :: Transport t => t -> Maybe Int -> IO ()+ag_run fd i = do+  r <- ag+  ag_init fd+  _ <- case i of+         Just n -> mrec_n n (ag_step fd) r+         Nothing -> mrec (ag_step fd) r+  return ()++main :: IO ()+main = do+  i <- randomRIO (256,512)+  withSC3 (\fd -> ag_run fd (Just i) >> wait 9 >> reset fd)++{-+withSC3 ag_init+withSC3 (\fd -> send fd (nd_msg 660 0.45 0.65 0))+r <- ag+withSC3 (\fd -> ag_step fd r)+withSC3 (\fd -> ag_run fd (Just 32))+withSC3 (\fd -> ag_run fd Nothing)+withSC3 reset+-}
+ Sound/SC3/Graph/NC_arpeggio.hs view
@@ -0,0 +1,87 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg07473.html (nc)+module Sound.SC3.Graph.NC_arpeggio where++import Control.Monad {- base -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++analogarpeggio :: Synthdef+analogarpeggio =+    let k = control KR+        o = k "out" 0+        p = k "pan" 0+        g = k "gate" 1+        f = k "freq" 440+        a = k "amp" 0.1+        c = k "cutoffmult" 3+        r = k "res" 0.1+        e = let d = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0+            in envGen AR g 1 0 1 RemoveSynth d+        i = mix (saw AR (f * mce [0.497,0.999,1.0,2.03]))+        s = bLowPass i (c * f) r * 0.25+    in synthdef "analogarpeggio" (out o (pan2 (e * s * a) p 0.25))++{-+audition (pbind [(K_instr,psynth analogarpeggio)+                ,(K_dur,pstutter 8 (pwrand 'α' [0.1,0.25] [2/3,1/3] inf))+                ,(K_note,pwrand 'β' [0,2,4,5,7] [0.3,0.1,0.3,0.1,0.2] inf)+                ,(K_octave,pstutter 4 (prand 'γ' [4,5,6,7] inf))+                ,(K_param "pan",pbrown 'δ' (-1.0) 1.0 0.25 inf)+                ,(K_amp,pbrown 'ε' 0.1 0.5 0.15 inf)+                ,(K_param "cutoffmult",pbrown 'ζ' 4.0 5.0 0.1 inf)+                ,(K_param "res",pbrown 'η' 0.0 1.0 0.25 inf)])+-}++-- > pinterp 3 0 9 == toP' [0,3,6]+-- > pseries 6 ((15 - 3) / 6) 3 == toP' [6,8,10]+pinterp :: (Fractional a) => Int -> a -> a -> P a+pinterp n s e = pseries s ((e - s) / fromIntegral n) n++pinterp' :: (Fractional a) => P Int -> P a -> P a -> P a+pinterp' n s e = join (pzipWith3 pinterp n s e)++arpeggio :: P_Bind+arpeggio =+    [(K_instr,psynth analogarpeggio)+    ,(K_dur+     ,let d = pwrand 'α' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf+      in pstutter 32 d)+    ,(K_param "cutoffmult"+     ,let n = prand 'β' [8,16,24,32] inf+          s = pwhite 'γ' 2.5 5.0 inf+          e = pwhite 'δ' 1.5 7.0 inf+      in pinterp' n s e)+    ,(K_param "res"+     ,let n = prand 'ε' [8,16,24,32] inf+          s = pexprand 'ζ' 0.02 0.5 inf+          e = pexprand 'η' 0.02 1.0 inf+      in pinterp' n s e)+    ,(K_param "pan"+     ,let n = prand 'θ' [8,16] inf+          s = pwhite 'ι' (-1.0) 1.0 inf+          s' = fmap (< 0) s+          e = pif s' (pwhite 'κ' 0.0 1.0 inf) (pwhite 'λ' (-1.0) 0.0 inf)+      in pinterp' n s e)+    ,(K_amp+     ,let n = prand 'μ' [8,16,24,32] inf+          s = prand 'ν' [0.25,0.05,0.5] inf+          e = prand 'ξ' [0.25,0.05,0.5,0.01] inf+      in pinterp' n s e)+    ,(K_note+     ,let f x = pn (toP x) 8+      in pseq (map f [[10,6,1,-2]+                     ,[-3,1,6,9]+                     ,[9,6,1,-3]+                     ,[-2,1,6,10]+                     ,[8,6,1,-4]+                     ,[-3,1,6,9]+                     ,[8,6,1,-3]+                     ,[-6,1,6,8]]) inf)+    ,(K_octave+     ,pstutter 8 (pseq [7,6,5,4,4,5,6,7] inf))]++main :: IO ()+main = do+  let n = 60/157+      p = pedit K_dur (* n) (pbind arpeggio)+  withSC3 (play p)
+ Sound/SC3/Graph/NC_ellipse_based_synthesis.hs view
@@ -0,0 +1,40 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg09524.html (nc)+module Sound.SC3.Graph.NC_ellipse_based_synthesis where++import Sound.SC3 {- hsc3 -}++ifU :: Num a => a -> a -> a -> a+ifU t i j = (t * i) + ((1 - t) * j)++ebs_nc :: UGen -> UGen -> UGen -> UGen+ebs_nc wd fr sc =+    let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2 * pi) 0+        sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+    in cos (atan (wd + sc * tan ph)) * sg++ebs_jr :: UGen -> UGen -> UGen -> UGen+ebs_jr wd fr sc =+    let ph = range 0 (2 * pi) (lfSaw AR fr 0)+        sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+    in cos (atan (wd + sc * tan ph)) * sg++ebs_jmcc :: UGen -> UGen -> UGen -> UGen+ebs_jmcc wd fr sc =+    let ph = phasor AR 0 (fr * 2 * pi * sampleDur) 0 (2* pi) 0+        sg = ifU ((ph `modE` (1.5 * pi)) >* (0.5 * pi)) (-1) 1+    in cos (atan(wd + sc * tan ph)) * sg++ctl :: (UGen -> UGen -> UGen -> t) -> t+ctl f =+    let fr = mouseY KR 4 444 Linear 0.1+        sc = mouseX KR 0.1 1.0 Linear 0.1+        wd = mouseR 'z' KR 0 2 Linear 0.1+    in f wd fr sc++main :: IO ()+main = audition (out 0 (ctl ebs_jmcc))++{-+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jr 0 440 0.5)))+audition (out 0 (mce2 (ebs_nc 0 440 0.5) (ebs_jmcc 0 440 0.5)))+-}
+ Sound/SC3/Graph/NP_pebble_beach.hs view
@@ -0,0 +1,44 @@+-- pebble beach (np)+-- http://sccode.org/1-u+-- requires 'scsynth -u 57110 -m 32768'+module Sound.SC3.Graph.NP_pebble_beach where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++exprange :: UGen -> UGen -> UGen -> UGen+exprange l r i = linExp i (-1) 1 l r++bg_f :: UGen -> UGen+bg_f k =+    let sc = 0.4 + (k * 0.07)+        fr = range 3100 4900 (lag (lfNoise0 'α' KR 21.8) 0.7) * sc+        am = range 0 1 (lag (lfNoise1 'α' KR 5.227) 5.374)+    in bpf (pinkNoise 'α' AR * 0.4) fr 0.1 * am++fg_f :: UGen -> UGen -> UGen+fg_f df tf =+    let d = dust 'α' AR (df * rand 'α' 0.8 1.2) * 50+        l = exprange 800 900 (sinOsc KR 2.2 0)+        r = exprange 2600 2900 (sinOsc KR 5.228 0)+        z = resonz d (tRand 'α' l r d) (tRand 'α' 0.03 0.08 d)+        t = lagUD (range 2 0.5 (saw KR tf)) 0.6 2.8+        o = z * t+    in o + combL o 0.8 (rand 'α' 0.2 0.8) (lchoose 'α' [-4,4])++pebble_beach' :: ID a => a -> UGen+pebble_beach' j =+    let bg' = let am = range 0 1 (lag (lfNoise0 'α' KR 34) 1.4)+              in brownNoise 'α' AR * 0.06 * am+        bg = bg' + sum (uprotect' j (map bg_f [0..19])) * 0.6+        tf = range 0.122 0.24 (sinOsc KR 0.17 0)+        df = exprange 1 700 (lfTri KR tf 0) * exprange 1 0.2 (lfTri KR tf 0)+        fg = mix (uclone j 50 (fg_f df tf)) * 0.2+    in (bg + fg) * line KR 0 1 1.2 DoNothing++pebble_beach :: UGen+pebble_beach = mce2 (pebble_beach' 'α') (pebble_beach' 'β')++-- # UGens == 1994+main :: IO ()+main = audition (out 0 pebble_beach)
+ Sound/SC3/Graph/NV_nv_tw_1.hs view
@@ -0,0 +1,17 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_1 where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++nv_tw_1 :: UGen+nv_tw_1 =+    let a = uclone 'α' 2 (pinkNoise 'β' AR)+        nd z =+            let n = lfNoise1 'γ' KR (rand 'δ' 0 0.05)+                f = linExp n (-1) 1 40 15000+            in bBandStop z f (expRand 'ε' 0.1 2)+    in lpf (useq 'ζ' 50 nd a) 1e5++main :: IO ()+main = audition (out 0 nv_tw_1)
+ Sound/SC3/Graph/NV_nv_tw_41.hs view
@@ -0,0 +1,17 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_41 where++import Sound.SC3.ID {- hsc3 -}++nv_tw_41 :: UGen+nv_tw_41 =+    let nd i =+            let t = (0.6 ** i) * 40 * impulse AR ((2 ** i) / 32) (1/2)+                f = (4 ** lfNoise0 i KR (1/16)) * 300+            in sin (rlpf t f 5e-3)+        x = splay (mce (map nd [0..7])) 1 1 0 True+        r u = let (p,q) = mce2c u in freeVerb2 p q 0.1 1 1+    in r (r x)++main :: IO ()+main = audition (out 0 nv_tw_41)
+ Sound/SC3/Graph/NV_nv_tw_54.hs view
@@ -0,0 +1,32 @@+-- http://sccode.org/1-V (nv)+module Sound.SC3.Graph.NV_nv_tw_54 where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++fF :: Double -> Double -> Double+fF i f =+    let n = (((2 * i) `modE` 6 + 1) + floorE f) / (i `modE` 5 + 1)+    in (f + log2 n) `modE` 2++fS :: [Double]+fS =+    let lp i f = let f' = fF i f in f' : lp (i + 1) f'+    in lp 0 0++nvi :: Synthdef+nvi =+    let i = control KR "i" 0+        f = control KR "f" 0+        p = (i `modE` 8 + 2) * 52+        e = line KR 0.1 0 1 RemoveSynth+        o = syncSaw AR ((2 ** f) * 99 + mce2 0 1) p * e+    in synthdef "nvi" (out 0 o)++main :: IO ()+main =+    let fS' = map realToFrac fS+    in audition (pbind [(K_instr,psynth nvi)+                       ,(K_param "f",toP fS')+                       ,(K_param "i",pseries 0 1 inf)+                       ,(K_dur,0.3)])
+ Sound/SC3/Graph/PC_thx.hs view
@@ -0,0 +1,47 @@+-- http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html (pc)+module Sound.SC3.Graph.PC_thx where++import Sound.SC3 {- hsc3 -}+import System.Random {- random -}++type R = Double++rvb :: UGen -> R -> UGen+rvb i rT =+    let d = mce [0.0297,0.0371,0.0411,0.0437]+        c = mix (combN i 0.05 d (constant rT) * 0.25)+        f = (allpassN c 0.01 0.005 0.096835)+    in allpassN f 0.01 0.0017 0.032924++mk_env :: R -> R -> R -> R -> R -> R -> R -> EnvCurve -> UGen+mk_env z0 t0 z1 t1 t2 z2 t3 c =+    let z = map constant [z0,z1,z1,z2,z2]+        t = map constant [t0,t1,t2,t3]+        e = Envelope z t [c,c,c] Nothing Nothing+    in envGen KR 1 1 0 1 RemoveSynth e++mk_saw :: R -> R -> R -> UGen -> UGen+mk_saw t4 f0 f1 l =+    let f = mk_env f0 t0 f0 t1 t2 f1 (t3 + t4 + t5 + t5) EnvLin+        g = mk_env 0 t0 0.1 (t1 + t2 + t3) t4 0.0 (t5 + t5) EnvLin+        s = saw AR f+        t0 = 0.035+        t1 = 0.2267573696+        t2 = 2.2675736061+        t3 = 6.8027210884+        t5 = 1.75+    in pan2 s l g++thx :: UGen+thx =+    let t4 = 7.9365079365+        s = sum (zipWith3 (mk_saw t4) f0 f1 l)+        n = 30+        l = take n (randomRs (-1.0,1.0) (mkStdGen 1))+        f = [29,87.5,116,175,233,350,524,880,1048,1760]+        f0 = take n (randomRs (200.0,800.0) (mkStdGen 2))+        f1 = take n (cycle f)+    in rvb s t4++main :: IO ()+main = audition (out 0 thx)
+ Sound/SC3/Graph/PJ_forest_sounds_m.hs view
@@ -0,0 +1,17 @@+-- sc-users, 2007-04-06 (pj) [paul jones]+module Sound.SC3.Graph.PJ_forest_sounds_m where++import Sound.SC3.Monad {- hsc3 -}++insects :: UId m => m UGen+insects = do+  n1 <- brownNoise AR+  n2 <- lfNoise2 KR 50+  let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000+  return (bpf n1 o 0.001 * 10)++forest_sounds :: UId m => m UGen+forest_sounds = clone 2 insects++main :: IO ()+main = audition . out 0 =<< forest_sounds
+ Sound/SC3/Graph/RB_hh_808.hs view
@@ -0,0 +1,32 @@+-- hh-808 (rb)+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html+module Sound.SC3.Graph.RB_hh_808 where++import Sound.SC3 {- hsc3 -}++hh_808 :: UGen+hh_808 =+  let time = 250+      fr = [205.35,304.41,369.64,522.71,540.54,812.21]+      env i j k = Envelope i j k Nothing Nothing+      pulseEnv = let e = env [1.0,0.6] [time] [EnvNum (-0.5)]+                 in envGen AR 1 1 0 (1/1000) DoNothing e+      s = mix (lfPulse AR (mce (map (* 4.09) fr)) 0 0.5)+      f = [\a -> ((a ==* 6.0) * 0.6) ++                 ((a ==* 2.0) * 0.2) ++                 ((a ==* 1.0) * 0.9)+          ,\a -> (a * pulseEnv) + (mix (lfPulse AR (mce fr) 0 0.55)) * 0.9+          ,\a -> rlpf a 7000 0.6+          ,\a -> rhpf a 6800 1.5+          ,\a -> rhpf a 6800 1.5+          ,\a -> rhpf a 1200 1.5+          ,\a -> a + freeVerb a 0.33 0.5 0.5+          ,\a -> let c = map EnvNum [0,-0.5,0,-50]+                     e = env [0,1,0.4,0,0] [2,time,50,500] c+                 in a * envGen AR 1 1 0 (1/1000) RemoveSynth e+          ,\a -> mce [a,delayN a 0.005 0.005]]+  in foldl1 (flip (.)) f s * 2++main :: IO ()+main = audition (out 0 hh_808)+
+ Sound/SC3/Graph/RD_adso.hs view
@@ -0,0 +1,45 @@+-- adso (rd)+module Sound.SC3.Graph.RD_adso where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++getb :: Real a => UGen -> a -> UGen+getb b j =+    let k = mce [0 .. constant j - 1]+    in bufRdN 1 KR b k NoLoop++adso :: Real a => a -> UGen+adso n =+    let m = sinOsc KR (getb 3 n) 0+        f = midiCPS (getb 0 n) * (m * getb 4 n + 1)+        l = getb 2 n+        g = getb 1 n+    in mix (pan2 (sinOsc AR f 0) l g)++pattern :: Transport m => Int -> Double -> m ()+pattern n t = do+  z <- do l <- rrand 22 48+          r <- rrand 54 122+          sequence (replicate n (rrand l r))+  send (b_setn1 0 0 z)+  let rn i l r = do d <- nrrand n l r+                    send (b_setn1 i 0 d)+  rn 1 0 0.1+  rn 2 (-1) 1+  rn 3 2 12+  rn 4 0.001 0.0075+  rn 5 1 24+  rn 6 0.05 2.4+  pauseThread t++run :: Transport m => Int -> m ()+run n = do+  mapM_ (\i -> async (b_alloc i n 1)) [0..6]+  _ <- play (out 0 (adso n))+  mapM_ (pattern n) =<< nrrand 32 0.025 0.75+  reset++main :: IO ()+main = withSC3 (run 24)
+ Sound/SC3/Graph/RD_bs_070705_m.hs view
@@ -0,0 +1,74 @@+-- bs-070705 (rd)+module Sound.SC3.Graph.RD_bs_070705_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- | One step in a bubble sort with specified /greater than/ function.+bubble_p :: (a -> a -> Bool) -> [a] -> [a]+bubble_p gt l =+    case l of+      e:f:g -> if e `gt` f+               then f : bubble_p gt (e : g)+               else e : bubble_p gt (f : g)+      _ -> l++-- | 'bubble_p' '>'.+bubble :: (Ord a) => [a] -> [a]+bubble = bubble_p (>)++-- | One step in /odd even/ sorting, a bubble sort variant.+odd_even :: (Ord a) => [a] -> [a]+odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)++-- | Allocate required buffers to /n/ places.+alloc_data :: Transport m => Int -> m ()+alloc_data n = do+  let alloc m b = async (b_alloc b m 1)+  mapM_ (alloc n) [10, 11, 12]++-- | Simple synthesis renderer, r is the impulse frequency (trigger rate).+play_data :: (UId m,Transport m) => UGen -> m ()+play_data r = do+  let inf_sc = 9e8+  phase <- dseries inf_sc 0 1+  f' <- dbufrd 10 phase Loop+  a' <- dbufrd 11 phase Loop+  p' <- dbufrd 12 phase Loop+  let tr = impulse AR r 0+      f'' = demand tr 0 f'+      a'' = demand tr 0 a'+      p'' = demand tr 0 p'+  play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))++-- | Randomize initial data of /n/ places, /s/ sort for+--   /m/ steps, pause for i seconds between each step.+run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()+run_data s n m i = do+  f <- nrrand n 32 96+  a <- nrrand n 0.25 1+  p <- nrrand n (-1) 1+  let prepare l' = take m (iterate s l')+      f' = prepare f+      a' = prepare a+      p' = prepare p+      l i' (f'', a'', p'') = do+                     send (b_setn 10 [(0, f'')])+                     send (b_setn 11 [(0, a'')])+                     send (b_setn 12 [(0, p'')])+                     pauseThread i'+  mapM_ (l i) (zip3 f' a' p')++-- | Run 'odd_even' for 32 iterations at 1 second intervals.+main :: IO ()+main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)++{--+withSC3 (alloc_data 96)+withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)+withSC3 (play_data 24 >> run_data bubble 96 64 0.75)+withSC3 (play_data 24 >> run_data bubble 96 64 0.25)+withSC3 (play_data 24 >> run_data bubble 96 32 0.25)+withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)+--}
+ Sound/SC3/Graph/RD_ccomb_m.hs view
@@ -0,0 +1,22 @@+-- ccomb (rd)+module Sound.SC3.Graph.RD_ccomb_m where++import Sound.SC3.Monad {- hsc3 -}++ccomb :: (Functor m,UId m) => m UGen+ccomb = do+  let rng l r i = linLin i (-1) 1 l r+      lwr = 48+      flwr = midiCPS lwr+      spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)+                   e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)+                   x <- fmap (* e) (whiteNoise AR)+                   m <- lfNoise2 KR 0.1+                   let f = lag (midiCPS n) 0.25+                       m' = rng 1 8 m+                   return (combC x (recip flwr) (recip f) m')+  t <- dust KR (mce2 0.75 0.35)+  return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))++main :: IO ()+main = audition . out 0 =<< ccomb
+ Sound/SC3/Graph/RD_cds_070701_m.hs view
@@ -0,0 +1,112 @@+-- | cds-070701 (rd)+--+-- The 'source' data are breakpoint sets normalized over the time+-- interval (0,1).  There are a fixed number of 'locations' per cycle.+-- The data sets are sampled at these locations and loaded into+-- buffers.  The buffers are read using dbufrd.  One of the data sets+-- gives the time interval to step forward.+module Sound.SC3.Graph.RD_cds_070701_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++-- | Real+type R = Double++-- | Point+type P = (R,R)++-- | Data set+type D = [P]++-- | Points that bracket a time.+pts :: D -> R -> (P,P)+pts d n =+    case d of+      p0:p1:r -> let (t,_) = p1+                 in if n <= t+                    then (p0,p1)+                    else pts (p1:r) n+      _ -> error "pts"++-- | Linear interpolation.+--+-- > lerp 0.5 (0,0) (1,1) == (0.5,0.5)+-- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)+lerp :: R -> P -> P -> P+lerp n (t0,d0) (t1,d1) =+  let n' = (n - t0) / (t1 - t0)+      f i = d0 + ((d1 - d0) * i)+  in (n,f n')++-- | Linear interpolating lookup.+lerpd :: D -> R -> P+lerpd t n =+  let (p0,p1) = pts t n+  in lerp n p0 p1++-- | Linearize in time (ie. /t/ is in equal steps).+rescale :: D -> Int -> D+rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]++-- | Allocate data buffers for linearized envelopes.+alloc_data :: Int -> IO ()+alloc_data n = do+  let alloc b = async (b_alloc b n 1)+  withSC3 (mapM_ alloc [10,11,12,13])++-- | Data can be loaded while nodes are running, ie. edited online.+load_data :: Int -> (D,D,D,D) -> IO ()+load_data n (t,f,a,p) = do+  let setup d = map snd (rescale d n)+  withSC3 (do send (b_setn 10 [(0,setup t)])+              send (b_setn 11 [(0,setup f)])+              send (b_setn 12 [(0,setup a)])+              send (b_setn 13 [(0,setup p)]))++-- | Simple synthesis of data.+play_data :: IO ()+play_data = do+  let inf_sc = 9e8+  phase <- dseries inf_sc 0 1+  t' <- dbufrd 10 phase Loop+  f' <- dbufrd 11 phase Loop+  a' <- dbufrd 12 phase Loop+  p' <- dbufrd 13 phase Loop+  let tr = tDuty AR t' 0 DoNothing 1 0+      f'' = demand tr 0 f'+      a'' = demand tr 0 a'+      p'' = demand tr 0 p'+  audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))++-- | Sample data sets, load using 'load_data'.+data_1 :: (D,D,D,D)+data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]+         ,[(0,200),(0.35,8900),(1,200)]+         ,[(0,0.35),(0.65,0.65),(1,0.35)]+         ,[(0,-1),(0.3,1),(1,-1)])++data_2 :: (D,D,D,D)+data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]+         ,[(0,100),(0.5,13900),(1,200)]+         ,[(0,0.75),(0.5,0.25),(1,0.75)]+         ,[(0,1),(0.5,-1),(1,1)])++data_3 :: (D,D,D,D)+data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]+         ,[(0,770),(0.5,77),(1,770)]+         ,[(0,0.9),(0.5,0.6),(1,0.9)]+         ,[(0,0),(0.5,1),(1,0)])++-- | Switch between data sets at /dd/ at time interval /t/.+data_switch :: [(D,D,D,D)] -> R -> IO ()+data_switch dd t =+    let w d = load_data 64 d >> pauseThread t+    in mapM_ w dd >> data_switch dd t++main :: IO ()+main = do+  alloc_data 64+  load_data 64 data_1+  play_data+  data_switch [data_1,data_2,data_3] 4
+ Sound/SC3/Graph/RD_chrd_m.hs view
@@ -0,0 +1,26 @@+-- chrd (rd)+module Sound.SC3.Graph.RD_chrd_m where++import Sound.SC3.Monad {- hsc3 -}++chrd :: UId m => m UGen+chrd = do+  r0 <- rand 0.05 0.5+  [r1, r2] <- sequence (replicate 2 (rand (-1) 1))+  r3 <- rand 0.15 0.35+  r4 <- rand 0.005 0.01+  let m = mce [60, 65, 72, 77, 79, 84]+      ds = 3+      d = mce (map (* ds) [5, 4, 5, 7, 4, 5])+      f = midiCPS (xLine KR m (m + r0) d DoNothing)+      z = envTrapezoid 0 r3 d r4+      e = envGen KR 1 1 0 1 DoNothing z+      p = xLine KR r1 r2 d DoNothing+      o = fSinOsc AR f 0+  return (mix (pan2 o p e))++chrd9 :: UId m => m UGen+chrd9 = fmap mix (clone 9 chrd)++main :: IO ()+main = audition . out 0 =<< chrd9
+ Sound/SC3/Graph/RD_chrd_t.hs view
@@ -0,0 +1,37 @@+-- chrd-t (rd)+module Sound.SC3.Graph.RD_chrd_t where++import Control.Monad {- base -}+import Control.Monad.Random {- MonadRandom -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad++chrd :: RandomGen g => [Int] -> Double -> Rand g UGen+chrd ch ds = do+  r0 <- rrand 0.05 0.5+  r1 <- rrand (-1) 1+  r2 <- rrand (-1) 1+  r3 <- rrand 0.15 0.35+  r4 <- rrand 0.005 0.01+  let m = mce (map fromIntegral ch)+      d = mce (map (* constant ds) [5, 4, 5, 7, 4, 5])+      f = midiCPS (xLine KR m (m + r0) d DoNothing)+      z = envTrapezoid 0 r3 d r4+      e = envGen KR 1 1 0 1 DoNothing z+      p = xLine KR r1 r2 d DoNothing+      o = fSinOsc AR f 0+  return (mix (pan2 o p e))++chrdN :: RandomGen g => Int -> Int -> Double -> Rand g UGen+chrdN i j ds = do+  let scale = [0,2,4,5,7,9,11]+      octaves = [4,5,6,7]+  ch <- nchoose i [n + (o * 12) | n <- scale, o <- octaves]+  c <- replicateM j (chrd ch ds)+  return (sum c)++main :: IO ()+main = do+  g <- getStdGen+  overlapTextureS (21,0,3,maxBound) (runRand (chrdN 6 9 3)) g
+ Sound/SC3/Graph/RD_cricket_m.hs view
@@ -0,0 +1,23 @@+-- cricket (rd)+module Sound.SC3.Graph.RD_cricket_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++cricket :: UId m => m UGen+cricket = do+  r1 <- clone 2 (rand 10 13)+  r2 <- clone 2 (rand 10 13)+  r3 <- clone 2 (rand 4 7)+  let t = impulse KR 0.7 0+      e = decay2 (impulse KR r1 0) 0.001 0.005+      f = sinOsc KR r2 0 * e * r3+  r4 <- clone 2 (tRand 2130 2230 t)+  return (sinOsc AR r4 0 * f * 0.25)++main :: IO ()+main = overlapTextureU (7,2,3,maxBound) =<< cricket++{-+audition . out 0 =<< cricket+-}
+ Sound/SC3/Graph/RD_crotale.hs view
@@ -0,0 +1,177 @@+-- crotale (rd)+module Sound.SC3.Graph.RD_crotale where++import Sound.SC3.ID {- hsc3 -}++crotale :: UGen+crotale =+    let (cf,ca,cd) = crotale_data+        ps = mce [-12,-5,0,2,4,5,7,12]+        n = pinkNoise 'α' AR+        t = dust 'β' KR 3+        fs = select (tIRand 'γ' 0 7 t) ps+        g = tRand 'δ' 0 1 t+        fo = tRand 'ε' 0 1 t+        ds = tRand 'ζ' 2 7 t+        p = tRand 'η' (-1) 1 t+        s = decay2 t 0.06 0.01 * n * g+        ks = klankSpec' cf ca (map recip cd)+        k = dynKlank s (midiRatio fs) fo ds ks+    in pan2 k p 1++main :: IO ()+main = audition (out 0 crotale)++crotale_data :: ([Double],[Double],[Double])+crotale_data =+    ([35.45676040649414+     ,128.59849548339844+     ,346.9721984863281+     ,483.5544128417969+     ,1049.2449951171875+     ,1564.0279541015625+     ,1756.3399658203125+     ,3391.666015625+     ,3451.802001953125+     ,3497.261962890625+     ,3596.89794921875+     ,3696.739013671875+     ,3835.235107421875+     ,3845.955078125+     ,4254.85107421875+     ,4407.533203125+     ,4415.26416015625+     ,4552.865234375+     ,5538.076171875+     ,5637.73681640625+     ,5690.2978515625+     ,5728.0068359375+     ,5764.27685546875+     ,5824.4189453125+     ,6377.60498046875+     ,6544.35009765625+     ,6807.14404296875+     ,6994.97021484375+     ,7026.84619140625+     ,7144.5859375+     ,7269.61279296875+     ,7393.6708984375+     ,7897.259765625+     ,8040.4580078125+     ,8157.77099609375+     ,8225.01953125+     ,9126.150390625+     ,9488.529296875+     ,9916.408203125+     ,10155.599609375+     ,11715.9599609375+     ,12111.830078125+     ,12339.990234375+     ,12417.669921875+     ,12459.2802734375+     ,12618.330078125+     ,13116.490234375+     ,13201.1298828125+     ,13297.830078125+     ,13533.75]+    ,[0.0012827360769733787+     ,0.0008040848188102245+     ,0.017361238598823547+     ,0.004835359752178192+     ,0.004413491114974022+     ,0.004110544919967651+     ,0.0003338181704748422+     ,0.0036140112206339836+     ,0.006919348146766424+     ,0.0003224937245249748+     ,0.0006031467346474528+     ,0.06686479598283768+     ,0.000605064386036247+     ,0.003602313343435526+     ,0.0002835785271599889+     ,0.015243238769471645+     ,0.020536603406071663+     ,0.016677580773830414+     ,0.0009245267719961703+     ,0.20205098390579224+     ,0.0012542791664600372+     ,0.012705927714705467+     ,0.0002523190632928163+     ,0.0004866079252678901+     ,0.0006429700297303498+     ,0.0007763264584355056+     ,0.2081160992383957+     ,0.0024918108247220516+     ,0.00193469924852252+     ,0.005231771152466536+     ,0.0069242212921381+     ,0.001203975174576044+     ,0.2050020843744278+     ,0.04060448706150055+     ,0.0038344631902873516+     ,0.002189427148550749+     ,0.18056060373783112+     ,0.002192433224990964+     ,0.006516554858535528+     ,0.009982921183109283+     ,0.004745401442050934+     ,0.046154771000146866+     ,0.000510294979903847+     ,0.0018905038014054298+     ,0.0019782145973294973+     ,0.006729386281222105+     ,0.0023426134139299393+     ,0.0024002245627343655+     ,0.03515550494194031+     ,0.0014084168942645192]+    ,[5.203680992126465+     ,1.7034343481063843+     ,40.16516876220703+     ,27.282501220703125+     ,0.8950523138046265+     ,42.84742736816406+     ,2.6603667736053467+     ,15.7678861618042+     ,6.848367214202881+     ,3.2325007915496826+     ,1.7343382835388184+     ,2.0202419757843018+     ,4.7279052734375+     ,9.400103569030762+     ,0.7102512717247009+     ,37.494625091552734+     ,36.24879455566406+     ,29.172658920288086+     ,3.891019344329834+     ,4.757885456085205+     ,3.851426124572754+     ,20.90781021118164+     ,3.732874870300293+     ,2.3834102153778076+     ,10.443285942077637+     ,8.795611381530762+     ,20.98564338684082+     ,18.01180076599121+     ,25.297883987426758+     ,14.819819450378418+     ,42.39189910888672+     ,2.9485135078430176+     ,11.043763160705566+     ,49.55165100097656+     ,29.882694244384766+     ,10.527188301086426+     ,23.5572452545166+     ,26.55561637878418+     ,45.099605560302734+     ,22.550390243530273+     ,36.46126174926758+     ,11.826201438903809+     ,16.818185806274414+     ,14.903121948242188+     ,32.81113815307617+     ,43.1389045715332+     ,12.289558410644531+     ,11.498942375183105+     ,10.465788841247559+     ,24.93169593811035])+
+ Sound/SC3/Graph/RD_crotale_sine.hs view
@@ -0,0 +1,138 @@+-- crotale-sine (rd)+module Sound.SC3.Graph.RD_crotale_sine where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++crotale_sine :: UGen+crotale_sine =+    let (cf,ca) = crotale_data+        g = control KR "gate" 1+        m = control KR "m" 1+        e = let p = envASR 1 1 1 (EnvNum (-4))+            in envGen KR g 1 0 1 RemoveSynth p+        fn m' f' a' =+            let f = constant f'+                a = constant a'+                r0 = rand (f+0) 0 (2 * pi)+                r1 = rand (f+1) 0.1 0.3+                r2 = rand (f+2) 0.025 0.1+                r3 = rand (f+3) 0 (2 * pi)+                o = sinOsc AR (f * midiRatio (m' - 12)) r0+                e' = e * sinOsc KR r1 0 * a+            in pan2 o (sinOsc KR r2 r3) e'+    in sum (zipWith (fn m) cf ca) * 0.1++pattern :: P_Bind+pattern =+    [(K_param "m",pwhitei 'α' 0 12 inf)+    ,(K_dur,pxrand 'β' [1,2,3] inf)+    ,(K_sustain,6)]++main :: IO ()+main = do+  let s = synthdef "crotale-sine" (out 0 crotale_sine)+  audition (p_with (K_instr,psynth s) (pbind pattern))++crotale_data :: ([Double],[Double])+crotale_data =+    ([35.45676040649414+     ,128.59849548339844+     ,346.9721984863281+     ,483.5544128417969+     ,1049.2449951171875+     ,1564.0279541015625+     ,1756.3399658203125+     ,3391.666015625+     ,3451.802001953125+     ,3497.261962890625+     ,3596.89794921875+     ,3696.739013671875+     ,3835.235107421875+     ,3845.955078125+     ,4254.85107421875+     ,4407.533203125+     ,4415.26416015625+     ,4552.865234375+     ,5538.076171875+     ,5637.73681640625+     ,5690.2978515625+     ,5728.0068359375+     ,5764.27685546875+     ,5824.4189453125+     ,6377.60498046875+     ,6544.35009765625+     ,6807.14404296875+     ,6994.97021484375+     ,7026.84619140625+     ,7144.5859375+     ,7269.61279296875+     ,7393.6708984375+     ,7897.259765625+     ,8040.4580078125+     ,8157.77099609375+     ,8225.01953125+     ,9126.150390625+     ,9488.529296875+     ,9916.408203125+     ,10155.599609375+     ,11715.9599609375+     ,12111.830078125+     ,12339.990234375+     ,12417.669921875+     ,12459.2802734375+     ,12618.330078125+     ,13116.490234375+     ,13201.1298828125+     ,13297.830078125+     ,13533.75]+    ,[0.0012827360769733787+     ,0.0008040848188102245+     ,0.017361238598823547+     ,0.004835359752178192+     ,0.004413491114974022+     ,0.004110544919967651+     ,0.0003338181704748422+     ,0.0036140112206339836+     ,0.006919348146766424+     ,0.0003224937245249748+     ,0.0006031467346474528+     ,0.06686479598283768+     ,0.000605064386036247+     ,0.003602313343435526+     ,0.0002835785271599889+     ,0.015243238769471645+     ,0.020536603406071663+     ,0.016677580773830414+     ,0.0009245267719961703+     ,0.20205098390579224+     ,0.0012542791664600372+     ,0.012705927714705467+     ,0.0002523190632928163+     ,0.0004866079252678901+     ,0.0006429700297303498+     ,0.0007763264584355056+     ,0.2081160992383957+     ,0.0024918108247220516+     ,0.00193469924852252+     ,0.005231771152466536+     ,0.0069242212921381+     ,0.001203975174576044+     ,0.2050020843744278+     ,0.04060448706150055+     ,0.0038344631902873516+     ,0.002189427148550749+     ,0.18056060373783112+     ,0.002192433224990964+     ,0.006516554858535528+     ,0.009982921183109283+     ,0.004745401442050934+     ,0.046154771000146866+     ,0.000510294979903847+     ,0.0018905038014054298+     ,0.0019782145973294973+     ,0.006729386281222105+     ,0.0023426134139299393+     ,0.0024002245627343655+     ,0.03515550494194031+     ,0.0014084168942645192])
+ Sound/SC3/Graph/RD_cut_outs_m.hs view
@@ -0,0 +1,20 @@+-- cut-outs (rd)+module Sound.SC3.Graph.RD_cut_outs_m where++import Sound.SC3.Monad {- hsc3 -}++cut_outs :: (Functor m,UId m) => m UGen+cut_outs = do+  let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)+      x = mouseX KR 0.005 0.12 Exponential 0.1+      y = mouseY KR 0.01 0.52 Exponential 0.1+      n = do n1 <- lfNoise0 KR 2+             n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)+             n3 <- tExpRand (mce2 500 900) 1600 t+             return (ringz n2 n3 x)+  s <- fmap sum (sequence (replicate 3 n))+  b <- tRand 0 1 =<< dust KR 8+  return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])++main :: IO ()+main = audition . out 0 =<< cut_outs
+ Sound/SC3/Graph/RD_diffraction_m.hs view
@@ -0,0 +1,29 @@+-- diffraction (rd)+module Sound.SC3.Graph.RD_diffraction_m where++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}++diffraction ::(Functor m,UId m) => m UGen+diffraction = do+  let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1+                 y = mouseY KR 120 400 Exponential 0.1+             f <- fmap (* mce2 32 64) (lfNoise0 KR 4)+             w <- fmap (* x) (lfNoise0 KR 32)+             z <- fmap (* 0.1) (lfNoise0 KR 2)+             m <- lfNoise0 KR 6+             let s = pulse AR f w+             return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)+      q = do n <- lfNoise0 KR 128+             s <- p+             return (combN s 0.2 (n * 0.1 + 0.1) 3)+      r = let x = mouseX KR 0.75 1.25 Exponential 0.1+              y = mouseY KR 0.25 1 Exponential 0.1+              f _ = do fr <- fmap (* x) (rand 50 59)+                       am <- fmap (* y) (rand 0.04 0.16)+                       return (sinOsc AR fr 0 * am)+          in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)+  fmap sum (sequence [p,q,r])++main :: IO ()+main = audition . out 0 =<< diffraction
+ Sound/SC3/Graph/RD_discretion.hs view
@@ -0,0 +1,22 @@+-- discretion (rd)+module Sound.SC3.Graph.RD_discretion where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++discretion :: UGen+discretion =+  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+      part = let f1 = randN 2 'α' 50 55+                 f2 = randN 2 'β' 50 65+                 f3 = randN 2 'γ' 50 55+                 a = randN 2 'δ' 0.01 0.035+                 t = 21+                 f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+                 a_ = mkls [(0,0),(0.33,a),(1,0)] t+             in (saw AR f_ * a_)+  in mix (uclone 'ε' 8 part)++main :: IO ()+main = audition (out 0 discretion)
+ Sound/SC3/Graph/RD_discretion_m.hs view
@@ -0,0 +1,20 @@+-- discretion-m (rd)+module Sound.SC3.Graph.RD_discretion_m where++import Sound.SC3.Monad {- hsc3 -}++discretion :: UId m => m UGen+discretion = do+  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+      part = do f1 <- clone 2 (rand 50 55)+                f2 <- clone 2 (rand 50 65)+                f3 <- clone 2 (rand 50 55)+                a <- clone 2 (rand 0.01 0.035)+                let t = 21+                    f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t+                    a_ = mkls [(0,0),(0.33,a),(1,0)] t+                return (saw AR f_ * a_)+  fmap mix (clone 8 part)++main :: IO ()+main = audition . out 0 =<< discretion
+ Sound/SC3/Graph/RD_e_lamell.hs view
@@ -0,0 +1,64 @@+-- e-lamell (rd)+module Sound.SC3.Graph.RD_e_lamell where++import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}++e_lamell :: UGen+e_lamell =+    let ctl = control KR+        f = ctl "f" 440+        n = ctl "n" 12+        d = ctl "d" 0.1+        l = ctl "l" 0+        a = ctl "a" 1+        t = lchoose 'α' [1,32]+        h = line AR n t d DoNothing+        s = blip AR f h+        e_d = envPerc 0.005 d+        e = envGen AR 1 a 0 1 RemoveSynth e_d+    in pan2 s l e++sendSynth :: Transport m => String -> UGen -> m Message+sendSynth n u = async (d_recv (synthdef n u))++mk_s_new :: Double -> Double -> Double -> Double -> Double -> Message+mk_s_new f n d a l =+    let p = [("f",f)+            ,("n",n)+            ,("d",d)+            ,("a",a)+            ,("l",l)]+    in s_new "blip" (-1) AddToTail 1 p++pattern :: Transport m => m ()+pattern = do+  let r_note o p = do oe <- R.choose o+                      pe <- R.choose p+                      return (oe * 12 + pe)+      l_sel = r_note [2,3] [0]+      h_sel = r_note [2,3,4,5] [0,2,5,7]+  p <- do f <- liftM midiCPS l_sel+          n <- R.rrand 2 36+          d <- R.exprand 0.01 0.8+          a <- R.rrand 0 0.75+          l <- R.rrand (-1) 1+          return (mk_s_new f n d a l)+  q <- do f <- liftM midiCPS h_sel+          n <- R.rrand 2 36+          d <- R.exprand 0.01 1.2+          a <- R.choose [0,0.25,0.5,1]+          l <- R.rrand (-1) 1+          return (mk_s_new f n d a l)+  sendBundle (bundle immediately [p,q])+  wait 0.1++run :: Transport m => m ()+run = do+  _ <- sendSynth "blip" (out 0 e_lamell)+  replicateM_ 64 pattern++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_e_lamell_p.hs view
@@ -0,0 +1,43 @@+-- e-lamell-p (rd)+module Sound.SC3.Graph.RD_e_lamell_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++e_lamell :: UGen+e_lamell =+    let ctl = control KR+        f = ctl "freq" 440+        a = ctl "amp" 1+        d = ctl "d" 0.1+        n = ctl "n" 12+        l = ctl "l" 0+        t = lchoose 'α' [1,32]+        h = line AR n t d DoNothing+        s = blip AR f h+        e_d = envPerc 0.005 d+        e = envGen AR 1 a 0 1 RemoveSynth e_d+    in pan2 s l e++patterns :: [P_Bind]+patterns =+    let i = psynth (synthdef "e-lamell" (out 0 e_lamell))+    in [[(K_instr,i)+        ,(K_note,prand 'β' [0,2,5,7] inf)+        ,(K_octave,pwrand 'γ' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)+        ,(K_dur,0.1)+        ,(K_param "d",pwhite 'δ' 0.01 0.8 inf)+        ,(K_amp,pwhite 'ε' 0 0.75 inf)+        ,(K_param "n",pwhite 'ζ' 2 36 inf)+        ,(K_param "l",pwhite 'η' (-1) 1 inf)]+       ,[(K_instr,i)+        ,(K_note,prand 'θ' [0] inf)+        ,(K_octave,prand 'ι' [2,3] inf)+        ,(K_dur,0.1)+        ,(K_param "d",pwhite 'κ' 0.01 1.2 inf)+        ,(K_amp,prand 'λ' [0,0.25,0.5,1] inf)+        ,(K_param "n",pwhite 'μ' 2 36 inf)+        ,(K_param "l",pwhite 'ν' (-1) 1 inf)]]++main :: IO ()+main = audition (ppar (map pbind patterns))
+ Sound/SC3/Graph/RD_eggcrate.hs view
@@ -0,0 +1,23 @@+-- eggcrate (rd)+module Sound.SC3.Graph.RD_eggcrate where++import Sound.SC3.ID {- hsc3 -}++atp :: (t -> u) -> (t,t) -> (u,u)+atp f (i,j) = (f i,f j)++eggcrate :: UGen+eggcrate =+  let cosu = cos . (* pi)+      sinu = sin . (* pi)+      eggcrate_f u v = cosu u * sinu v+      p = mce [64,72,96,128,256,6400,7200,8400,9600]+      (x,y) = atp (`brownNoise` KR) ('α','β')+      t = dust 'γ' KR 2.4+      (f0,f1) = atp (\z -> tChoose z t p) ('δ','ε')+      f = linLin (eggcrate_f x y) (-1) 1 f0 f1+      a = linLin x (-1) 1 0 0.1+ in pan2 (mix (sinOsc AR f 0)) y a++main :: IO ()+main = audition (out 0 eggcrate)
+ Sound/SC3/Graph/RD_eggcrate_m.hs view
@@ -0,0 +1,20 @@+-- eggcrate-m (rd)+module Sound.SC3.Graph.RD_eggcrate_m where++import Sound.SC3.Monad {- hsc3 -}++eggcrate :: UId m => m UGen+eggcrate = do+  let cosu = cos . (* pi)+      sinu = sin . (* pi)+      eggcrate_f u v = cosu u * sinu v+      p = mce [64,72,96,128,256,6400,7200,8400,9600]+  [x,y] <- sequence (replicate 2 (brownNoise KR))+  t <- dust KR 2.4+  [f0,f1] <- sequence (replicate 2 (tChoose t p))+  let f = linLin (eggcrate_f x y) (-1) 1 f0 f1+      a = linLin x (-1) 1 0 0.1+  return (pan2 (mix (sinOsc AR f 0)) y a)++main :: IO ()+main = audition . out 0 =<< eggcrate
+ Sound/SC3/Graph/RD_f_lets_m.hs view
@@ -0,0 +1,31 @@+-- f-lets (rd)+module Sound.SC3.Graph.RD_f_lets_m where++import Sound.SC3.Monad {- hsc3 -}++f_lets :: (Functor m,UId m) => m UGen+f_lets = do+  let f_let t g j n f = do+           let pd = pulseDivider t j 0+           r0 <- tIRand (mce2 2 1) n pd+           r1 <- tRand 0.01 0.04 pd+           r2 <- tRand 0.05 0.10 pd+           return (formlet pd (f * r0) r1 r2 * g)+      mk_n t = do+           r0 <- tRand 0 1 t+           r1 <- tRand 0 1 t+           r2 <- tRand 0 1 t+           r3 <- tRand 0 1 t+           r4 <- coinGate 0.2 t+           sequence [f_let t 0.15 2 9 (mce2 200 400)+                    ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))+                    ,f_let t 0.05 4 5 (mce2 25 50)+                    ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))+                    ,let lr = fmap (* latch r4 t)+                     in lr (f_let t 0.5 1 16 (mce2 300 600))]+      tr = impulse AR 24 0+  n <- lfNoise0 KR 2+  return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr++main :: IO ()+main = audition . out 0 =<< f_lets
+ Sound/SC3/Graph/RD_fb_090531.hs view
@@ -0,0 +1,48 @@+-- fb-090531 (rd)+module Sound.SC3.Graph.RD_fb_090531 where++import Control.Monad {- base -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fb_090531 :: UGen+fb_090531 =+    let k_in n = linLin (in' 1 KR n) (-1) 1+        p = localIn 1 AR+        bt = recip controlRate+        ig_f = k_in 0 1 20+        ig = impulse AR ig_f 0+        f_f = k_in 1 220 880+        f_rq = k_in 2 0.005 0.2+        f = bpf ig f_f f_rq+        d_t = k_in 3 0.1 0.105+        d = delayC (f + p) 1 (d_t - bt)+    in mrg [p,localOut d]++-- | Constant reset.+c_reset :: Transport m => Double -> m ()+c_reset n = send (c_setn [(0,replicate 4 n)])++-- | Random reset.+r_reset :: Transport m => m ()+r_reset = do+  cs <- replicateM 4 (rrand (-1) 1)+  send (c_setn [(0,cs)])++-- | Loop random reset.+lr_reset :: Transport m => Double -> m b+lr_reset t = pauseThread t >> r_reset >> lr_reset t++-- | Start fb_090531 and run lr_reset.  Type C-cC-i to interrupt.+main :: IO ()+main = do+  audition (offsetOut 0 fb_090531)+  withSC3 (c_reset 1 >> lr_reset 1)++{-+withSC3 (c_reset 0)+withSC3 (c_reset 1)+withSC3 (c_reset (-1))+withSC3 r_reset+-}
+ Sound/SC3/Graph/RD_fbl_fbf.hs view
@@ -0,0 +1,37 @@+-- fbl-fbf (rd)+module Sound.SC3.Graph.RD_fbl_fbf where++import Sound.SC3.ID {- hsc3 -}++fbl :: UGen -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbl l i d g =+    let a0 = l + mce i+        a1 = delayL a0 (maximum d) (mce d)+    in (localOut (a1 * mce g),a1)++fbf :: [UGen] -> [UGen] -> [UGen] -> [UGen] -> (UGen, UGen)+fbf b i d g =+    let a0 = inFeedback 1 (mce b) + mce i+        a1 = delayL a0 (maximum d) (mce d)+    in (offsetOut (mce b) (mce [a1 * mce g]),a1)++fbl_fbf :: UGen+fbl_fbf =+  let n = brownNoise 'α' AR+      e = decay (impulse AR 0.3 0) 0.1 * n * 0.2+      c = 4+      e' = replicate c e+      b0 = [24,26,28,30]+      d0 = [0.1,0.3,0.5,0.7]+      g0 = [0.8,0.6,0.4,0.2]+      b1 = [25,27,29,31]+      d1 = [0.2,0.3,0.6,0.7]+      g1 = [0.8,0.7,0.4,0.3]+      (u0,s0) = fbl (localIn c AR) e' d0 g0+      (u1,s1) = fbf b0 e' d0 g0+      (u2,s2) = fbf b1 (mceChannels s1) d1 g1+      o = mce [mix (s0 + s1),mix s2]+  in mrg [u0,u1,u2,offsetOut 0 o]++main :: IO ()+main = withSC3 (reset >> play fbl_fbf)
+ Sound/SC3/Graph/RD_feedr_m.hs view
@@ -0,0 +1,37 @@+-- feedr (rd)+-- warning: input/output feedback loop+module Sound.SC3.Graph.RD_feedr_m where++import Sound.OSC.FD {- hosc -}+import Sound.SC3.Monad.FD {- hsc3 -}++delayWr :: UGen -> UGen -> UGen+delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing++tap :: Int -> UGen -> UGen -> UGen+tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing++type State = (UGen,Double)++feedr :: (UId m) => State -> Int -> m UGen+feedr (ch,dl) n = do+  t <- sequence (replicate n (rand 0.0 (constant dl)))+  g <- sequence (replicate n (rand 0.4 1.0))+  f <- sequence (replicate n (rand 0.9 0.95))+  let d = zipWith (\p q -> tap 2 10 p * q) t g+      x = mouseX KR 0.02 1.0 Exponential 0.1+      s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1+      i = soundIn ch+      r = i + sum (map (* x) (zipWith (*) d f))+  return (mrg [out 0 s, delayWr 10 r])++run :: Transport t => State -> t -> IO ()+run (ch,dl) fd = do+  nf <- fmap (* dl) (serverSampleRateActual fd)+  send fd (b_alloc 10 (floor nf) 2)+  audition =<< feedr (ch,dl) 18++main :: IO ()+main = withSC3 (run (mce2 4 5,6))++-- withSC3 (\fd -> send fd (b_zero 10))
+ Sound/SC3/Graph/RD_fm_iter.hs view
@@ -0,0 +1,25 @@+-- fm-iter (rd)+module Sound.SC3.Graph.RD_fm_iter where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- audition (out 0 fm_iter)+fm_iter :: UGen+fm_iter =+  let f0 = recip (0.3 + whiteNoise 'α' AR * 0.01)+      t0 = impulse AR f0 0+      t1 = tDelay t0 0.15+      t = mce2 t0 t1+      k = tRand 'β' 56 57 t+      i = tRand 'γ' 40 480 t+      j = tRand 'δ' (-1) 1 t+      c = midiCPS k+      m = midiCPS (k + 1 + j)+      s = envPerc 0.01 0.9+      e = envGen AR t 0.1 0 1 RemoveSynth s+      f = sinOsc AR c 0 * i + m+  in sinOsc AR f 0 * e++main :: IO ()+main = overlapTextureU (3,3,6,maxBound) fm_iter
+ Sound/SC3/Graph/RD_fm_kltr_m.hs view
@@ -0,0 +1,60 @@+-- fm-kltr (rd)+module Sound.SC3.Graph.RD_fm_kltr_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fm_kltr :: UId m => m UGen+fm_kltr = do+  r1 <- U.rand 0.975 1.025+  r2 <- U.rand 0.5 1.5+  r3 <- U.rand 0.975 1.025+  r4 <- U.rand 0.75 1.25+  let o = control IR "out" 0+      a = control KR "amp" 0.1+      d = control KR "dur" 0.1+      f = control KR "freq" 400.0+      i = control KR "index" 40.0+      p = control KR "pan" 0.0+      f2 = control KR "freq2" 600+      ep = envPerc 0.01 d+      e = envGen AR 1 a 0 1 RemoveSynth ep+      so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0+      xl = xLine KR f2 (f2 * r3) d DoNothing+      m = so * line KR i (f * r2) d DoNothing + xl+      l = line KR p (p * r4) d DoNothing+  return (out o (pan2 (sinOsc AR m 0) l e))++type R = Double++fm :: Transport m => R -> R -> R -> R -> R -> m ()+fm f ff a d i = do+  r1 <- rrand (-1) 1+  r2 <- rrand (-1) 1+  let p = [("freq", midiCPS f)+          ,("freq2", midiCPS ff + r1)+          ,("amp", a)+          ,("dur", d)+          ,("index", i)+          ,("pan", r2)]+  send (s_new "fm_kltr" (-1) AddToTail 1 p)++nd :: Transport m => m ()+nd = do+  ff <- rrand 48 96+  a <- rrand 0.1 0.4+  d <- rrand 1.2 7.2+  i <- rrand 240 1480+  t <- rrand 0.15 1.25+  fm 53 ff a d i+  wait t++run :: (Transport m,UId m) => m ()+run = do+  u <- fm_kltr+  _ <- async (d_recv (synthdef "fm_kltr" u))+  sequence_ (replicate 32 nd)++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_fm_kltr_p.hs view
@@ -0,0 +1,41 @@+-- fm-kltr-p (rd)+module Sound.SC3.Graph.RD_fm_kltr_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++fm_kltr :: UGen+fm_kltr =+  let r1 = rand 'α' 0.975 1.025+      r2 = rand 'β' 0.5 1.5+      r3 = rand 'γ' 0.975 1.025+      r4 = rand 'δ' 0.75 1.25+      o = control IR "out" 0+      a = control KR "amp" 0.1+      dt = control KR "sustain" 0.1+      f = control KR "freq" 400.0+      i = control KR "index" 40.0+      p = control KR "pan" 0.0+      f2 = control KR "freq2" 600+      ep = envPerc 0.01 dt+      e = envGen AR 1 a 0 1 RemoveSynth ep+      so = sinOsc AR (xLine KR f (f * r1) dt DoNothing) 0+      xl = xLine KR f2 (f2 * r3) dt DoNothing+      m = so * line KR i (f * r2) dt DoNothing + xl+      l = line KR p (p * r4) dt DoNothing+  in out o (pan2 (sinOsc AR m 0) l e)++pattern :: P_Bind+pattern =+    [(K_instr,psynth (synthdef "fm_kltr" fm_kltr))+    ,(K_freq,fmap midiCPS 53)+    ,(K_param "freq2",fmap midiCPS (pwhitei 'ε' 48 96 inf ++                                    pwhite 'ζ' (-1) 1 inf))+    ,(K_amp,pwhite 'η' 0.1 0.4 inf)+    ,(K_dur,pwhite 'θ' 0.15 1.25 inf)+    ,(K_sustain,pwhite 'ι' 5 6 inf)+    ,(K_param "index",pwhite 'κ' 240 1480 inf)+    ,(K_param "pan", pwhite 'λ' (-1) 1 inf)]++main :: IO ()+main = audition (pbind pattern)
+ Sound/SC3/Graph/RD_fwalk_m.hs view
@@ -0,0 +1,40 @@+-- fwalk (rd)+module Sound.SC3.Graph.RD_fwalk_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++fwalk' :: UId m => UGen -> m UGen+fwalk' r = do+  t <- dust KR 3+  r1 <- tIRand 0 6 t+  r2 <- tRand (-0.0001) 0.0001 t+  let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop+      f' = f + r2+      o1 = blip AR (midiCPS (r + f)) 12+      o2 = blip AR (midiCPS (r + f')) 12+  return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)++fwalk :: UId m => m UGen+fwalk = do+  f1 <- fwalk' 24+  f2 <- fwalk' 36+  return (f1 + f2)++run :: (UId m,Transport m) => m ()+run = do+  let n = [40,47,42,40,50+          ,43,35,43,40,47+          ,45,35,43,42,59+          ,48,40,47,52,45]+      m = [40,40,42,47,50+          ,35,43,43,40,45+          ,42,35,48,47,43+          ,40,59,45,47,52]+  _ <- async (b_alloc_setn1 0 0 n)+  _ <- async (b_alloc_setn1 1 0 m)+  f <- fwalk+  play (out 0 f)++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_h_chatter_m.hs view
@@ -0,0 +1,30 @@+-- h-chatter (rd)+module Sound.SC3.Graph.RD_h_chatter_m where++import Sound.SC3.Monad {- hsc3 -}++h_chatter :: UId m => m UGen+h_chatter = do+  let mma m a = return . (+ a)  . (* m)+      h0 = do n <- mma 5 5 =<< lfNoise0 KR 1+              a <- mma 0.2 1.2 =<< lfNoise2 KR n+              b <- mma 0.15 0.15 =<< lfNoise2 KR n+              let f = 40+                  h = henonN AR (mce2 f (f * 0.5)) a b 0 0+              return (saw AR (h * 3200 + 1600) * 0.35)+      h1 = do n0 <- lfNoise0 KR 32+              n1 <- lfNoise0 KR 2+              let a = mouseX KR 1.2 1.4 Linear 0.1+                  b = mouseY KR 0.2 0.3 Linear 0.1+                  wrp i = linLin i (-1) 1+                  h = wrp n0 1 32+                  p = wrp n1 2400 3200+                  l = wrp n1 (-0.75) 0.75+                  g = wrp n1 0.55 0.85+                  f = 40+                  o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h+              return (pan2 o l g * 0.35)+  h0 .+. h1++main :: IO ()+main = audition . out 0 =<< h_chatter
+ Sound/SC3/Graph/RD_implosion_m.hs view
@@ -0,0 +1,35 @@+-- implosion (rd)+module Sound.SC3.Graph.RD_implosion_m where++import Sound.SC3.Monad {- hsc3 -}++mkls :: [(UGen,UGen)] -> UGen -> UGen+mkls bp t =+    let e = envCoord bp t 1 EnvLin+    in envGen KR 1 1 0 1 RemoveSynth e++mkrmp :: UGen -> UGen -> UGen -> UGen+mkrmp l r = mkls [(0,l),(1,r)]++pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+pmr_n rt l0 l1 r0 r1 d = do+  let le = mkrmp l0 r0 d+      re = mkrmp l1 r1 d+      wrp i = linLin i (-1) 1+  n <- whiteNoise rt+  return (wrp n le re)++implosion :: UId m => m UGen+implosion = do+  n0 <- rand (-1) 0+  n1 <- rand 0 1+  d  <- rand 7.5 13.5+  f0 <- rand 10990 16220+  f1 <- rand  9440 19550+  f <- pmr_n AR 440 f0 f1 f1 d+  l <- pmr_n KR n0 n1 0 0 d+  a <- pmr_n KR 0.1 0.6 0 0 d+  return (pan2 (saw AR f) l a)++main :: IO ()+main = audition . out 0 =<< implosion
+ Sound/SC3/Graph/RD_k_ppr.hs view
@@ -0,0 +1,26 @@+-- k-ppr (rd)+module Sound.SC3.Graph.RD_k_ppr where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++k_ppr :: UGen+k_ppr =+  let wrp i = linLin i (-1) 1+      x = mouseX KR 0.05 0.35 Linear 0.1+      y = mouseY KR 0.15 0.75 Linear 0.1+      ti = lfTri KR x 0+      tf = wrp ti 100 200+      t = impulse AR tf 0+      stream e lf rf ld rd g =+          let r1 = rand e 9 18+              t' = pulseDivider t r1 0+              r2 = tRand e lf (wrp ti lf rf) t'+              r3 = tRand e ld rd t'+          in ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g+      s1 = stream 'α' 3140 6240 0.050 0.005 0.15+      s2 = stream 'β' 0400 9000 0.005 0.005 0.15+  in uclone 'γ' 2 s1 + uclone 'δ' 2 s2++main :: IO ()+main = audition (out 0 k_ppr)
+ Sound/SC3/Graph/RD_k_ppr_m.hs view
@@ -0,0 +1,25 @@+-- k-ppr-m (rd)+module Sound.SC3.Graph.RD_k_ppr_m where++import Sound.SC3.Monad {- hsc3 -}++k_ppr_m :: UId m => m UGen+k_ppr_m = do+  let wrp i = linLin i (-1) 1+      x = mouseX KR 0.05 0.35 Linear 0.1+      y = mouseY KR 0.15 0.75 Linear 0.1+      ti = lfTri KR x 0+      tf = wrp ti 100 200+      t = impulse AR tf 0+      stream lf rf ld rd g =+          do r1 <- rand 9 18+             let t' = pulseDivider t r1 0+             r2 <- tRand lf (wrp ti lf rf) t'+             r3 <- tRand ld rd t'+             return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g)+      s1 = stream 3140 6240 0.050 0.005 0.15+      s2 = stream 0400 9000 0.005 0.005 0.15+  clone 2 s1 .+. clone 2 s2++main :: IO ()+main = audition . out 0 =<< k_ppr_m
+ Sound/SC3/Graph/RD_klink.hs view
@@ -0,0 +1,20 @@+-- klink (rd)+module Sound.SC3.Graph.RD_klink where++import Sound.SC3.ID {- hsc3 -}++klink :: UGen+klink =+  let n1 = lfNoise0 'α' KR (mce2 0.5 1.5)+      o = sinOsc KR n1 0+      a = abs (slope o) * mce2 2 3+      t = impulse AR a 0+      i = decay2 t 0.01 0.1+      x = mouseX KR 960 3620 Exponential 0.2+      y = mouseY KR 0.5 2.0 Linear 0.2+      n2 = tRand 'β' x 3940 t+      n3 = tRand 'γ' 0.005 0.275 t+  in ringz i n2 (n3 * y)++main :: IO ()+main = audition (out 0 klink)
+ Sound/SC3/Graph/RD_lf_pulses.hs view
@@ -0,0 +1,17 @@+-- lf pulses (rd)+module Sound.SC3.Graph.RD_lf_pulses where++import Sound.SC3.ID {- hsc3 -}++lf_pulses :: UGen+lf_pulses =+  let n0 = lfNoise0 'α' AR (mce2 20 40)+      n1 = lfNoise0 'β' AR (mce2 5 10)+      x = mouseX KR 0.012 0.19 Exponential 0.1+      f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x+      o = sinOsc AR 40 0 * n1+  in clip2 (leakDC (f + o) 0.995) 0.75++main :: IO ()+main = audition (out 0 lf_pulses)+
+ Sound/SC3/Graph/RD_lg_timed_m.hs view
@@ -0,0 +1,25 @@+-- lg-timed (rd)+module Sound.SC3.Graph.RD_lg_timed_m where++import Sound.SC3.Monad {- hsc3 -}++lg_timed :: UId m => m UGen+lg_timed = do+  let timed r y p =+          do d0 <- dser r p+             d1 <- dcons 0 d0+             d2 <- dser r y+             let t = tDuty AR d1 0 RemoveSynth d2 1+             return (latch t t)+      lg u = return (lag u 0.03)+      n = mce [52,76,66,67,68,69]+      a = mce [0.35,0.15,0.04,0.05,0.16,0.07]+      d = mce [0.1,0.5,0.09,0.08,0.07,0.3]+      x = mouseX KR 0.5 1.25 Linear 0.2+  tn <- lg =<< timed dinf n (d * x)+  ta <- lg =<< timed dinf a (d * x)+  return (sinOsc AR (midiCPS tn) 0 * ta)++main :: IO ()+main = audition . out 0 =<< lg_timed+
+ Sound/SC3/Graph/RD_lin_sosc.hs view
@@ -0,0 +1,93 @@+-- lin-sosc (rd)+module Sound.SC3.Graph.RD_lin_sosc where++import Control.Concurrent {- base -}+import Control.Monad {- base -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}++iota :: (Num a,Eq a,Num b) => a -> b -> b -> [b]+iota n l s = if n == 0 then [] else l : iota (n - 1) (l + s) s++geom :: (Num a,Eq a,Num b) => a -> b -> b -> [b]+geom n i f = if n == 0 then [] else i : geom (n - 1) (i * f) f++lineTo :: (Fractional a,Eq a) => a -> a -> a -> [a]+lineTo n l r = iota n l ((r - l) / n)++xlineTo :: (Floating a,Eq a) => a -> a -> a -> [a]+xlineTo n l r = geom n l ((r / l) ** (1.0 / n))++tblM :: UGen -> UGen -> UGen+tblM b x = playBuf 1 AR b (x * bufRateScale KR b) 0 0 Loop DoNothing++tblC :: UGen -> UGen -> UGen+tblC b c = tblM b (in' 1 KR c)++lin_sosc :: UGen+lin_sosc =+    let x = mouseX KR 0.001 1.0 Linear 0.1+        o = sinOsc AR (tblM 0 x) 0 * tblM 1 x+    in clip2 (pan2 o (tblC 1 0) 0.025) 0.25++twoPi :: Double+twoPi = pi * 2.0++srng :: Fractional a => a -> a -> a -> a+srng l r e =+    let m = (l - r ) / 2+    in m + l + (e * m)++type Lin_Data = ([[Double]], [[Double]], [Double], [Double])++lin_data :: Double -> Lin_Data+lin_data n =+    let f = [lineTo n 440.0 444.0+            ,lineTo n 40.0 16000.0+            ,xlineTo n 40.0 16000.0+            ,map (srng 20 21000 . sin) (lineTo n 0.0 twoPi)+            ,map (srng 20 12000 . cos) (lineTo n 0.0 twoPi)+            ,map (srng 20 22000 . tan) (lineTo n 0.0 twoPi)+            ,map (srng 20 90 . tan) (lineTo n 0.0 twoPi)]+        a = [lineTo n 0.1 1.0+            ,lineTo n 1.0 0.1+            ,lineTo n 0.5 0.01+            ,lineTo n 0.01 0.5+            ,xlineTo n 1.0 0.1+            ,xlineTo n 0.1 1.0+            ,map sin (lineTo n 0.0 twoPi)+            ,map cos (lineTo n 0.0 twoPi)+            ,map ((* 0.001) . tan) (lineTo n 0 twoPi)]+        l = [0.005,0.0075,0.01,0.025,0.05,0.075+            ,0.1,0.25,0.5,0.75+            ,0.8,0.85,1.0,1.005]+        t = [0.01,0.05,0.1,0.15,0.25,0.5,0.75]+    in (f,a,l,t)++update :: Transport m => Lin_Data -> m ()+update (f,a,l,t) = do+  f' <- R.choose f+  a' <- R.choose a+  l' <- R.choose l+  t' <- R.choose t+  send (b_setn 0 [(0,f')])+  send (b_setn 1 [(0,a')])+  send (c_set [(0,l')])+  pauseThread t'++do_update :: Double -> IO ()+do_update n = withSC3 (replicateM_ 128 (update (lin_data n)))++run :: (Transport m, RealFrac a) => a -> m ()+run n = do+  _ <- async (b_alloc 0 (floor n) 1)+  _ <- async (b_alloc 1 (floor n) 1)+  play (out 0 lin_sosc)++main :: IO ()+main = do+  let n = 1024+  withSC3 (run n)+  _ <- forkIO (do_update n)+  return ()
+ Sound/SC3/Graph/RD_lso_061101_m.hs view
@@ -0,0 +1,111 @@+-- | L-System oscillator (rd), 2006-11-01+module Sound.SC3.Graph.RD_lso_061101_m where++import Control.Monad {- base -}+import Graphics.PS {- hps -}+import qualified LSystem.LSystem as L {- hls -}+import qualified LSystem.Systems as L+import qualified LSystem.Turtle as L+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import System.Directory {- directory -}+import qualified System.FilePath as P {- filepath -}++-- | Normalise to lie in (0,1).+--+-- > normalise [1,4,2,5] == [0.2,0.8,0.4,1]+normalise :: (Fractional a,Ord a) => [a] -> [a]+normalise s =+    let n = 1 / maximum (map abs s)+    in map (* n) s++-- | 'L.render' rule.+plain :: [Double] -> Pt Double -> Pt Double -> [Double]+plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d++-- | Render 'L.LSystem' to 'plain' data.+lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]+lsys_run (l,ta,lls) i =+    let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 lls []+    in L.render [] plain (L.expand l i) a++-- | 'normalise' '.' 'lsys_run'+--+-- > length (gen_d L.l0d 3)+gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]+gen_d l = normalise . lsys_run l++-- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.+gen_f :: FilePath -> [Double] -> IO ()+gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]++-- | Rendered L-system data sets.+lsys_data :: [[Double]]+lsys_data =+    [gen_d L.l0d 3+    ,gen_d L.l1d 3+    ,gen_d L.l2d 5+    ,gen_d L.l3d 12+    ,gen_d L.l4d 6+    ,gen_d L.l5d 4+    ,gen_d L.l6d 7+    ,gen_d L.l7d 4+    ,gen_d L.l8d 6+    ,gen_d L.l9d 10+    ,gen_d L.lAd 11+    ,gen_d L.lBd 6+    ,gen_d L.lCd 5]++-- | Exceeds UDP limits.+lsys_send :: IO ()+lsys_send = do+  let alloc (n,d) = async (b_alloc_setn1 n 0 d)+  withSC3 (mapM_ alloc (zip [0..] lsys_data))+++-- | Filename for 'lsys_data'.+lsys_fn :: FilePath  -> [FilePath]+lsys_fn d =+    let n = length lsys_data+        nm i = d P.</> show i P.<.> "snd"+    in map nm [0 .. n - 1]++-- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.+lsys_write :: FilePath -> IO ()+lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data++-- | Load 'lsys_fn' at /scsynth/.+lsys_load :: FilePath -> IO ()+lsys_load d = do+  let alloc (n,nm) = async (b_allocRead n nm 0 0)+  withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))++-- | Oscillator instrument+oi :: IO UGen+oi = do+  let rng i = linLin i (-1) 1+      exprng i = linExp i (-1) 1+  c <- R.choose [0.25, 0.55, 0.75, 1.25]+  let t = impulse KR c 0+  b <- tIRand 0 12 t+  let n  = bufFrames KR b+      m  = n / 4+      i  = floorE (rng (lfSaw AR c 0) 0 m) * 4+      tt = impulse AR (m / c) 0+      x0 = bufRdL 1 AR b i       NoLoop+      y0 = bufRdL 1 AR b (i + 1) NoLoop+      x1 = bufRdL 1 AR b (i + 2) NoLoop+      y1 = bufRdL 1 AR b (i + 3) NoLoop+  f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]+  let f1 = 22000+      o x y = let f = exprng x f0 f1+              in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)+  return (o x0 y0 + o x1 y1)++main :: IO ()+main = do+  t <- getTemporaryDirectory+  lsys_write t+  lsys_load t+  oi >>= audition . out 0
+ Sound/SC3/Graph/RD_mouse_clatter_m.hs view
@@ -0,0 +1,33 @@+-- mouse clatter (rd)+module Sound.SC3.Graph.RD_mouse_clatter_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++mouse_clatter :: UId m => m UGen+mouse_clatter = do+  let x = mouseX KR 100 12000 Linear 0.1+      y = mouseY KR 0.01 0.15 Linear 0.1+  n1 <- lfNoise0 KR (mce [3,3.25])+  let t = impulse KR (n1 * 16 + 18) 0+  n2 <- tRand 0.005 y t+  n3 <- whiteNoise AR+  n4 <- tRand 10 x t+  n5 <- tRand 0 1 t+  n6 <- tExpRand 0.15 1 t+  o <- let e = decay2 t 0.01 n2+       in return (bpf (n3 * e) n4 n5)+  n7 <- pv_RandComb (fft' 10 o) n6 t+  return (o * 0.05 + ifft' n7)++run :: (UId m,Transport m) => m ()+run = do+  _ <- async (b_alloc 10 2048 1)+  play . out 0 =<< mouse_clatter++main :: IO ()+main = withSC3 run++{-+s.sendMsg('b_alloc', 10, 2048, 1);+-}
+ Sound/SC3/Graph/RD_nharm_m.hs view
@@ -0,0 +1,36 @@+-- nharm (rd)+module Sound.SC3.Graph.RD_nharm_m where++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++nharm :: (Num b, Integral a) => a -> b -> [b]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: UId m => UGen -> Int -> m UGen+klg m u = do+    n <- rrand 4 u+    d <- iRand 9 12+    f <- iRand m (m + 2)+    l <- sequence (replicate n (U.rand 0.01 0.02))+    p <- U.rand (-1.0) 1.0+    let a = 0.5+        e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+        nh = nharm n (midiCPS f)+        s = klangSpec nh l (replicate n 0.0)+    return (pan2 (klang AR 1 0 s) p e)++ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()+ply n (l,r) m u = do+  let a = do pauseThread =<< rrand l r+             audition . out 0 =<< klg m u+  replicateM_ n a++main :: IO ()+main = do+  _ <- forkIO (ply 32 (0.25,0.75) 92 24)+  _ <- forkIO (ply 8 (1.25,1.75) 12 54)+  return ()
+ Sound/SC3/Graph/RD_nharm_p.hs view
@@ -0,0 +1,38 @@+-- nharm-p (rd)+module Sound.SC3.Graph.RD_nharm_p where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++nharm :: Num n => Int -> n -> [n]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: Int -> UGen+klg n =+    let f = control KR "freq" 440+        d = rand 'α' 9 12+        l = mceChannels (randN n 'α' 0.01 0.02)+        p = rand 'α' (-1.0) 1.0+        a = 0.5+        e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+        nh = nharm n f+        s = klangSpec nh l (replicate n 0.0)+    in out 0 (pan2 (klang AR 1 0 s) p e)++type Range = (Field,Field)++{- Note that the dur key is used only to schedule the nodes. Both it,+and any gate message, are ignored by the UGen graph, which manages+duration internally.  -}++pN :: Int -> Range -> Range -> P Event+pN n (m0,m1) (d0,d1) =+    let s = synthdef ("klg" ++ show n) (klg n)+    in pbind [(K_instr,psynth s)+             ,(K_midinote,pwhite 'α' m0 m1 inf)+             ,(K_dur,pwhite 'β' d0 d1 inf)]++main :: IO ()+main = audition (pmerge (pN 24 (90,92) (0.25,0.75))+                        (pN 54 (12,14) (1.25,1.76)))
+ Sound/SC3/Graph/RD_pattern_buffer_m.hs view
@@ -0,0 +1,55 @@+-- pattern buffer (rd)+module Sound.SC3.Graph.RD_pattern_buffer_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++tseq :: [UGen] -> UGen+tseq l =+    let n = fromIntegral (length l) / 2.0+    in select (lfSaw KR 0.5 0 * n + n) (mce l)++pattern_buffer :: UId m => Int -> m UGen+pattern_buffer c = do+  let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0+      t = bufRdC 1 AR 10 p Loop+  r1 <- sequence (replicate c (rrand 36 96))+  r2 <- sequence (replicate c (rrand (-1.0) 1.0))+  r3 <- rrand 0 1+  n1 <- tRand 0.02 0.08 t+  let e = decay2 t 0.01 n1+      f = midiCPS (tseq r1)+      l = tseq r2+      o = [sinOsc AR f 0, saw AR f] !! r3+  return (pan2 o l e)++set_pattern :: Transport m => Int -> Int -> m ()+set_pattern nf c = do+  let rs = do r0 <- rrand 0 nf+              r1 <- rrand 0.0 1.0+              send (b_set1 10 r0 r1)+  sequence_ (replicate c rs)++fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b+fill_clr nf c dt n = do+  let go i = if i == 0+             then do send (b_zero 10)+                     go n+             else do set_pattern nf c+                     pauseThread dt+                     go (i - 1)+  go n++run :: (UId m,Transport m) => m ()+run = do+  let nf = 2 * 48000+      c = 24+      n = 16+      dt = 2.6+  _ <- async (b_alloc 10 (nf * 2) 1)+  play . out 0 =<< pattern_buffer c+  fill_clr nf c dt n++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_rzblp.hs view
@@ -0,0 +1,37 @@+-- rzblp (rd)+module Sound.SC3.Graph.RD_rzblp where++import Sound.SC3.ID {- hsc3 -}++lfn :: ID a => a -> UGen -> UGen -> UGen -> UGen+lfn z f l r =+    let z' = z `joinID` l `joinID` r+    in range l r (lfNoise0 z' KR f)++hpb :: (ID a) => a -> UGen -> UGen+hpb z q =+    let g i = let z' = idHash z + i+                  f = lfn z' q 1330 1395+                  a = lfn z' q 0.001 0.007+              in blip AR f 24 * a+    in mixFill 2 g++mk_f :: ID a => a -> (a -> UGen -> UGen -> UGen) -> UGen+mk_f z d =+    let q = lfn z 5.2 5.2 5.21+        a = d z dinf (mce [1,3,2,7,8])+        tr = impulse KR q 0+        freq = demand tr 0 a * 30 + 340+        rt = impulse AR q (mce2 0 0)+        rf = lfn z 5 30 640+        rbw = lfn z q 0.1 0.5+    in sum [blip AR freq 3 * lfn z q 0.001 0.01+           ,resonz rt rf rbw * lfn z q 0.01 1.8+           ,hpb z q * lfn z q 1.2 1.8+           ,blip AR (lfn z q 16 36) 3 * mce2 0.03 0.09]++rzblp :: UGen+rzblp = mk_f 'α' drand + mk_f 'β' dxrand++main :: IO ()+main = audition (out 0 rzblp)
+ Sound/SC3/Graph/RD_rzblp_hp.hs view
@@ -0,0 +1,32 @@+-- rzblp-hp (rd)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}+module Sound.SC3.Graph.RD_rzblp_hp where++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+    let g :: UId m => Int -> m UGen+        g _ = do blip AR #(lfn q 1330 1395) 24 *. lfn q 0.001 0.007+    in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+  q <- lfn 5.2 5.2 5.21+  a <- d dinf (mce [1,3,2,7,8])+  let freq = demand (impulse KR q 0) 0 a * 30 + 340+  s1 <- blip AR freq 3 *. lfn q 0.001 0.01+  s2 <- resonz (impulse AR q (mce2 0 0)) #(lfn 5 30 640) #(lfn q 0.1 0.5)+        *. lfn q 0.01 1.8+  s3 <- hpb q .*. lfn q 1.2 1.8+  let s4 = blip AR #(lfn q 16 36) 3 * mce2 0.03 0.09+  return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
+ Sound/SC3/Graph/RD_rzblp_m.hs view
@@ -0,0 +1,35 @@+-- rzblp-m (rd)+module Sound.SC3.Graph.RD_rzblp_m where++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+    let g :: UId m => Int -> m UGen+        g _ = do f <- lfn q 1330 1395+                 a <- lfn q 0.001 0.007+                 return (blip AR f 24 * a)+    in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+  q <- lfn 5.2 5.2 5.21+  a <- d dinf (mce [1,3,2,7,8])+  let freq = demand (impulse KR q 0) 0 a * 30 + 340+  s1 <- blip AR freq 3 *. lfn q 0.001 0.01+  s2 <- do f <- lfn 5 30 640+           bw <- lfn q 0.1 0.5+           resonz (impulse AR q (mce2 0 0)) f bw *. lfn q 0.01 1.8+  s3 <- hpb q .*. lfn q 1.2 1.8+  s4 <- do f <- lfn q 16 36+           return (blip AR f 3 * mce2 0.03 0.09)+  return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
+ Sound/SC3/Graph/RD_rzblp_u.hs view
@@ -0,0 +1,36 @@+-- rzblp-u (rd)+module Sound.SC3.Graph.RD_rzblp_u where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++lfn :: UGen -> UGen -> UGen -> UGen+lfn f l r = range l r (lfNoise0 KR f)++hpb :: UGen -> UGen+hpb q =+    let g :: Int -> UGen+        g _ = let f = lfn q 1330 1395+                  a = lfn q 0.001 0.007+              in blip AR f 24 * a+    in mixFill 2 g++mk_f :: (UGen -> UGen -> UGen) -> UGen+mk_f d =+    let q = lfn 5.2 5.2 5.21+        a = d dinf (mce [1,3,2,7,8])+        tr = impulse KR q 0+        freq = demand tr 0 a * 30 + 340+    in sum [blip AR freq 3 * lfn q 0.001 0.01+           ,resonz (impulse AR q (mce2 0 0))+                   (lfn 5 30 640)+                   (lfn q 0.1 0.5)+                   * lfn q 0.01 1.8+           ,hpb q * lfn q 1.2 1.8+           ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]++rzblp :: UGen+rzblp = mk_f drand + mk_f dxrand++main :: IO ()+main = audition (out 0 rzblp)
+ Sound/SC3/Graph/RD_s_chirp.hs view
@@ -0,0 +1,32 @@+-- s-chirp (rd)+module Sound.SC3.Graph.RD_s_chirp where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++s_chirp :: UGen+s_chirp =+  let x = mouseX KR 15 0 Linear 0.1+      y = mouseY KR 15 27 Linear 0.1+      t = dust 'α' KR 9+      b = tChoose 'β' t (mce [36,48,60,72])+      n = lfNoise1 'γ' KR (mce2 3 3.05) * 0.04+      d = tIRand 'δ' x y t+      e = decay2 t 0.005 (tRand 'ε' 0.02 0.15 t)+      o = let k = degreeToKey 0 d 12+              f = midiCPS (b + k + n)+              m = e * sinOsc AR f 0 * 0.2+              u = pulseDivider t 9 0+              r0 = tRand 'ζ' 0.0075 0.125 u+              r1 = tRand 'η' 0.05 0.15 u+          in m * 0.5 + allpassC m 0.15 r0 r1+  in out 0 o++act :: Transport m => m ()+act = do+  let scl = [0,2,3.2,5,7,9,10]+  _ <- async (b_alloc_setn1 0 0 scl)+  play s_chirp++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/RD_scritto.hs view
@@ -0,0 +1,48 @@+-- scritto (rd)+module Sound.SC3.Graph.RD_scritto where++import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Data.Vowel as V {- hsc3-lang -}++scritto_i :: UGen -> UGen+scritto_i bx =+    let 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+        n0 = lfNoise2 'α' KR 3+        v_filter_b i =+            let bi = linLin n0 (-1) 1 0 bx+                b = buf_at bi in v_filter i (b 0) (b 5) (b 10)+        t = impulse AR (n0 * 9 + 9) 0+        ble (e,d) =+            let n1 = tRand e 0.02 0.06 t+                n2 = tIRand e 30 52 t+                n3 = tIRand e 16 32 t+                p = pulseDivider t d 0+                b = blip AR (midiCPS n2) n3+            in (decay2 p 0.01 n1 * b * 12)+        voice = mix . v_filter_b+    in out 0 (mce (map (voice . ble) (zip "ab" [1,2])))++s_alloc :: Transport m => (V.Fdata Double,Int) -> m ()+s_alloc (s,b) = do+  let s_msg n (_,_,fr,am,bw) = b_setn1 n 0 (fr ++ am ++ bw)+  _ <- async (b_alloc b 15 1)+  send (s_msg b s)++s_init :: Transport m => m ()+s_init = mapM_ s_alloc (zip V.fdata_table [0..])++act :: Transport m => Bool -> m ()+act i = do+  when i s_init+  let n = constant (length (V.fdata_table::[V.Fdata Int]))+  play (scritto_i n)++main :: IO ()+main = withSC3 (act True)++{-+withSC3 (act False)+-}
+ Sound/SC3/Graph/RD_scritto_m.hs view
@@ -0,0 +1,29 @@+-- scritto (rd)+module Sound.SC3.Graph.RD_scritto_m where++import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Data.Vowel as V {- hsc3-lang -}++main :: IO ()+main =+  let s_msg n (_,_,f,a,b) = b_setn1 n 0 (f ++ a ++ b)+      s_alloc (s,b) = do _ <- async (b_alloc b 15 1)+                         send (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 (do mapM_ s_alloc (zip V.fdata_table [0..])+                 let n = constant (length V.fdata_table)+                 play =<< mk_instr n)
+ Sound/SC3/Graph/RD_seqr.hs view
@@ -0,0 +1,32 @@+-- seqr (rd)+module Sound.SC3.Graph.RD_seqr where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}++nrand :: ID z => Int -> z -> UGen -> UGen -> [UGen]+nrand n e l = mceChannels . randN n e l++nfreq :: ID a => a -> Int -> UGen -> UGen -> [UGen]+nfreq z n l r = map (midiCPS . floorE) (nrand n z l r)++seqr_f :: UGen -> [UGen] -> UGen+seqr_f f e =+    let n = constant (length e `div` 2)+    in select (lfSaw KR f 0 * n + n) (mce e)++-- > Sound.SC3.UGen.Dot.draw (seqr 12)+seqr :: Int -> UGen+seqr n =+  let f = rand 'α' 9 18 / constant n+      b = blip AR (mce2 (seqr_f f (nfreq 'β' n 72 96))+                        (seqr_f f (nfreq 'γ' n 72 84)))+                  (mce2 (seqr_f f (nrand n 'δ' 1 3))+                        (seqr_f f (nrand n 'ε' 3 6)))+      a = mce2 (seqr_f f (nrand n 'ζ' 0.05 0.10))+               (seqr_f f (nrand n 'η' 0.05 0.15))+  in b * a++-- n = rand 6 18+main :: IO ()+main = audition (out 0 (seqr 12))
+ Sound/SC3/Graph/RD_shifting_pulses_m.hs view
@@ -0,0 +1,53 @@+-- shifting pulses (rd)+module Sound.SC3.Graph.RD_shifting_pulses_m where++import Sound.SC3.Monad {- hsc3 -}++wrp :: UGen -> UGen -> UGen -> UGen+wrp i l r = linLin i (-1) 1 l r++prt :: UId m => UGen -> UGen -> m UGen+prt a f = do+  r0 <- rand 0.2 0.9+  r1 <- rand 0.95 1.05+  r2 <- clone 2 (rand 0.95 1.05)+  let f' = f * wrp (sinOsc KR r0 0) 1 1.01 * r1+      a' = a * r2+      o = sinOsc AR (mce2 f f') 0+  return (o * a')++-- audition . out 0 =<< prts 2 900 0.002+-- audition . out 0 =<< prts 9 40 0.006+prts :: UId m => UGen -> UGen -> UGen -> m UGen+prts n f a = fmap sum (mapM (prt a) [f,f + f .. f * n])++-- audition . out 0 =<< fmt+fmt :: UId m => m UGen+fmt = do+  n <- (lfNoise2 KR 2)+  return  (formant AR (mce2 20 21) (wrp n 10 100) 200 * 0.35)++-- audition . out 0 =<< pulses+pulses :: UId m => m UGen+pulses = do+  n0 <- clone 2 (brownNoise KR)+  n1 <- clone 2 (brownNoise KR)+  n2 <- clone 2 (brownNoise KR)+  t <- dust KR 0.75+  let warp i = linLin i (-1) 1+      l = latch t t+      p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1+      f = warp n1 300 1800+      rq = warp n2 0.01 2+  return (mrg2 (l * rlpf p f rq) (sendTrig t 0 t))++shifting_pulses :: UId m => m UGen+shifting_pulses = do+  p1 <- prts 2 900 0.008+  p2 <- prts 9 40 0.022+  f <- fmt+  s <- pulses+  return (p1 + p2 + f + s)++main :: IO ()+main = audition . out 0 =<< shifting_pulses
+ Sound/SC3/Graph/RD_sosc_lp_m.hs view
@@ -0,0 +1,50 @@+-- sosc-lp (rd)+module Sound.SC3.Graph.RD_sosc_lp_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+  n1 <- dwhite 1 lo hi+  n2 <- whiteNoise r+  d <- dseq dinf n1+  return (tDuty r d 0 DoNothing (abs n2) 1)++setup :: Transport m => m ()+setup = do+  let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]+      b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]+  _ <- async (b_alloc 10 9 1)+  _ <- async (b_alloc 11 9 1)+  send (b_setn1 10 0 a)+  send (b_setn1 11 0 b)++sosc_lp :: UGen -> UGen -> UGen+sosc_lp t n =+    let d_env = decay2 t 0.002 2.5+        idx = stepper t 0 0 15 1 0+        f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)+                 r = (bufRdL 1 KR 11 idx Loop - 24)+             in midiCPS (mce2 l r)+        f2 = f1 + n * 1.2+        o1 = sinOsc AR f1 0 * d_env+        o2 = sinOsc AR f2 0 * d_env+    in (o1 + o2) * 0.2++sosc_lp_m :: UId m => m UGen+sosc_lp_m = do+  clk <- dustR KR 0.2 0.9+  n <- lfNoise0 KR (mce2 1 3)+  return (sosc_lp clk n)++main :: IO ()+main = withSC3 (setup >> sosc_lp_m >>= play . out 0)++-- > withSC3 resetter+resetter :: Transport m => m ()+resetter = do+  let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]+      b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]+  send (b_setn1 10 0 a)+  send (b_setn1 11 0 b)
+ Sound/SC3/Graph/RD_tgb_m.hs view
@@ -0,0 +1,44 @@+-- tgb (rd)+module Sound.SC3.Graph.RD_tgb_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tgb :: UId m => UGen -> UGen -> m UGen+tgb b d = do+  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+      pm_t l r du t = let le = mkls l du+                          re = mkls r du+                      in tRand le re t+      wrp i = linLin i (-1) 1+      pm_n rt l du = do let le = mkls l du+                            re = mkls l du+                        n <- whiteNoise rt+                        return (wrp n le re)+  gps <- pm_n AR [(0,400),(1,900)] d+  let t = impulse AR gps 0+      pm_f (l,r) = pm_t l r d t+  du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]+             ,[(0,0.009),(0.5,0.020),(1,0.009)])+  pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]+             ,[(0,-0.5),(0.5,0.5),(1,1.0)])+  rt <- pm_f ([(0,6),(0.5,12),(1,6)]+             ,[(0,12),(0.5,12),(1,12)])+  cs <- pm_f ([(0,0),(1,0.95)]+             ,[(0,0),(1,1)])+  am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]+             ,[(0,0.5),(0.5,0.75),(1,0.25)])+  let cs' = cs * bufDur KR b+  return (tGrains 2 t b rt cs' du pn am 2)++tgb_10_12 :: UId m => m UGen+tgb_10_12 = tgb 10 12++act :: (UId m,Transport m) => m ()+act = do+  let fn = "/home/rohan/data/audio/pf-c5.aif"+  _ <- async (b_allocRead 10 fn 0 0)+  play . out 0 =<< tgb_10_12++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/RD_tgr_rpr_m.hs view
@@ -0,0 +1,63 @@+-- tgr-rpr (rd)+module Sound.SC3.Graph.RD_tgr_rpr_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+  n1 <- dwhite 1 lo hi+  n2 <- whiteNoise r+  d <- dseq dinf n1+  return (tDuty r d 0 DoNothing (abs n2) 1)++rpr :: UId m => UGen -> UGen -> m UGen+rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))++tgr_rpr :: (Functor m,UId m) => m UGen+tgr_rpr = do+  clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)+  rat <- rpr 2 clk+  dur <- rpr 4 clk+  pos <- fmap (* bufDur KR 10) (rpr 8 clk)+  pan <- rpr 10 clk+  amp <- rpr 6 clk+  return (tGrains 2 clk 10 rat pos dur pan amp 2)++preset :: [Double]+preset =+    [0.01,0.02+    ,0.95,1.05+    ,0.02,0.06+    ,0.6,0.7+    ,0.7,0.9+    ,-1.0,1.0]++rSet :: [(Double, Double)]+rSet =+    [(0.005,0.025),(0.05,0.25)+    ,(0.75,0.95),(1.05,1.25)+    ,(0.001,0.01),(0.02,0.04)+    ,(0.4,0.5),(0.7,0.8)+    ,(0.0,0.45),(0.55,1.0)+    ,(-1.0,0.0),(0.0,1.0)]++edit :: Transport m => m ()+edit = do+  s <- mapM (uncurry rrand) rSet+  send (c_setn [(0,s)])+  wait 0.35++run :: (UId m,Transport m) => m ()+run = do+  let sf = "/home/rohan/data/audio/pf-c5.snd"+  _ <- async (b_allocRead 10 sf 0 0)+  send (c_setn [(0,preset)])+  play . out 0 =<< tgr_rpr+  wait 0.3+  _ <- sequence (replicate 64 edit)+  reset++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_tgrn.hs view
@@ -0,0 +1,26 @@+-- tgrn (rd)+module Sound.SC3.Graph.RD_tgrn where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++-- > Sound.SC3.UGen.Dot.draw (tgrn 10)+tgrn :: UGen -> UGen+tgrn b =+  let trate = mouseY KR 2 120 Exponential 0.1+      dur = 1.2 / trate+      clk = impulse AR trate 0+      pos = mouseX KR 0 (bufDur KR b) Linear 0.1+      pan = whiteNoise 'α' KR * 0.6+      n = roundTo (whiteNoise 'β' KR * 3) 1+      rate = shiftLeft 1.2 n+  in tGrains 2 clk b rate pos dur pan 0.5 2++run :: Transport m => m ()+run = do+  let fn = "/home/rohan/data/audio/pf-c5.snd"+  _ <- async (b_allocRead 10 fn 0 0)+  play (out 0 (tgrn 10))++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_thb.hs view
@@ -0,0 +1,191 @@+-- thb (rd)+module Sound.SC3.Graph.RD_thb where++import Data.List+import qualified Music.Theory.Contour.Polansky_1992 as T {- hmt -}+import qualified Music.Theory.Pitch as T+import Sound.SC3 {- hsc3 -}+import qualified Sound.SC3.Lang.Math as M+import Sound.SC3.Lang.Pattern {- hsc3-lang -}+import Sound.OSC {- hosc -}++-- | Happy birthday+--+-- > nub hb == "hapy birtd"+-- > sort (nub hb) == " abdhiprty"+hb :: String+hb = "happy birthday"++-- | Scale degrees+hb_d :: Num n => [[n]]+hb_d =+    [[5,5,6,5,1,7]+    ,[5,5,6,5,2,1]+    ,[5,5,5,3,1,7,6]+    ,[4,4,3,1,2,1]]++-- | Octaves+hb_o :: Num n => [[n]]+hb_o =+    [[3,3,3,3,4,3]+    ,[3,3,3,3,4,4]+    ,[3,3,4,4,4,3,3]+    ,[4,4,4,4,4,4]]++-- | Durations+hb_t :: Num n => [[n]]+hb_t =+    [[3,1,4,4,4,8]+    ,[3,1,4,4,4,8]+    ,[3,1,4,4,4,4,4]+    ,[3,1,4,4,4,4]]++-- | Test typing+--+-- > withSC3 plain+plain :: Transport m => m ()+plain = do+  _ <- async (d_recv defaultSynthdef)+  let p :: [[Double]] -> P Field+      p = toP . map realToFrac . concat+  play (pbind [(K_degree,p hb_d - 1)+              ,(K_octave,p hb_o + 1)+              ,(K_dur,p hb_t / 16)])++-- | Pitch classes+--+-- > tail hb_k == [[7,7,9,7,2,0],[7,7,7,4,0,11,9],[5,5,4,0,2,0]]+hb_k :: Integral n => [[n]]+hb_k =+    let f = floor . M.degreeToKey [0,2,4,5,7,9,11] 12 . pred+    in map (map f) (hb_d :: [[Double]])++-- | Midi note numbers+--+-- > tail hb_m == [[55,55,57,55,62,60],[55,55,67,64,60,59,57],[65,65,64,60,62,60]]+hb_m :: [[Integer]]+hb_m = zipWith (\p q -> map T.octpc_to_midi (zip p q)) hb_o hb_k++-- | Transposition predicate.+is_trs :: (Eq a,Num a) => [a] -> [a] -> Bool+is_trs p q = T.all_equal (zipWith (-) p q)++-- | 'Enum' transposition predicate.+--+-- > e_is_trs "abc" "bcd" == True+e_is_trs :: Enum a => [a] -> [a] -> Bool+e_is_trs p q = is_trs (map fromEnum p) (map fromEnum q)++-- | Delete transpositions+--+-- > del_trs ["abc","bcd","bca"] == ["abc","bca"]+del_trs :: Enum a => [[a]] -> [[a]]+del_trs = nubBy e_is_trs++-- | All /n/ element combinations from /x/, degree is 'length' /x/ '^' /n/.+--+-- > all_n_cmb 3 "ab" == ["aaa","aab","aba","abb","baa","bab","bba","bbb"]+-- > length (nub hb) ^ maximum (map length hb_d) == 10000000+all_n_cmb :: Monad m => Int -> m a -> m [a]+all_n_cmb n = sequence . replicate n++-- | All non transpositionally equivalent combinations of elements of+-- list 'hb' that match the contour of /x/.+--+-- > filter ((== 'h') . head) (gen_c [0..5]) == ["hiprty"]+-- > sort (gen_c [0,1]) == [" a"," b"," d"," h"," i"," p"," r"," t"," y","ad","ah","ap","at","ay","bh","bp","br","bt","by","dy","hi","hp","hr","ht","hy","it","pr","pt","py","ty"]+gen_c :: Ord a => [a] -> [String]+gen_c x =+      let c = T.contour_description x+          p = all_n_cmb (length x) (nub hb)+          f q = T.contour_description q == c+      in del_trs (filter f p)++-- | Cache of 'map' 'gen_c' 'hb_m'+--+-- > gen_c_hb_m_cache == map gen_c hb_m+-- > map length gen_c_hb_m_cache == [209,209,210,209]+gen_c_hb_m_cache :: [[String]]+gen_c_hb_m_cache =+    [["hhphyr","hhphyt","hhphtr","hhihyp","hhihyr","hhihyt","hhihrp","hhihtp","hhihtr","hhrhyt","aahapi","aahayp","aahayi","aahayr","aahayt","aaharp","aahari","aahatp","aahati","aahatr","aapayr","aapayt","aapatr","aabahd","aabaph","aabapi","aabapd","aabayh","aabayp","aabayi","aabayr","aabayt","aabayd","aabaih","aabaid","aabarh","aabarp","aabard","aabath","aabatp","aabati","aabatr","aabatd","aaiayp","aaiayr","aaiayt","aaiarp","aaiatp","aaiatr","aarayt","aadaph","aadapi","aadayh","aadayp","aadayi","aadayr","aadayt","aadaih","aadarh","aadarp","aadari","aadath","aadatp","aadati","aadatr","pprpyt","  h pi","  h yp","  h yi","  h yr","  h yt","  h rp","  h ri","  h tp","  h ti","  h tr","  a hb","  a hd","  a ph","  a pb","  a pi","  a pd","  a yh","  a yp","  a yb","  a yi","  a yr","  a yt","  a yd","  a ih","  a ib","  a id","  a rh","  a rp","  a rb","  a ri","  a rd","  a th","  a tp","  a tb","  a ti","  a tr","  a td","  a db","  p yr","  p yt","  p tr","  b hd","  b ph","  b pi","  b pd","  b yh","  b yp","  b yi","  b yr","  b yt","  b yd","  b ih","  b id","  b rh","  b rp","  b ri","  b rd","  b th","  b tp","  b ti","  b tr","  b td","  i yp","  i yr","  i yt","  i rp","  i tp","  i tr","  r yt","  d ph","  d pi","  d yh","  d yp","  d yi","  d yr","  d yt","  d ih","  d rh","  d rp","  d ri","  d th","  d tp","  d ti","  d tr","bbhbpi","bbhbyp","bbhbyi","bbhbyr","bbhbyt","bbhbrp","bbhbri","bbhbtp","bbhbti","bbhbtr","bbpbyr","bbpbyt","bbpbtr","bbibyp","bbibyr","bbibyt","bbibrp","bbibtp","bbibtr","bbrbyt","bbdbph","bbdbpi","bbdbyh","bbdbyp","bbdbyi","bbdbyr","bbdbyt","bbdbih","bbdbrh","bbdbrp","bbdbri","bbdbth","bbdbtp","bbdbti","bbdbtr","iipiyr","iipiyt","iipitr","iiriyt","ddhdpi","ddhdyp","ddhdyi","ddhdyr","ddhdyt","ddhdrp","ddhdri","ddhdtp","ddhdti","ddhdtr","ddpdyr","ddpdyt","ddpdtr","ddidyp","ddidyr","ddidyt","ddidrp","ddidtp","ddidtr","ddrdyt"]+    ,["hhphyr","hhphyt","hhphtr","hhihyp","hhihyr","hhihyt","hhihrp","hhihtp","hhihtr","hhrhyt","aahapi","aahayp","aahayi","aahayr","aahayt","aaharp","aahari","aahatp","aahati","aahatr","aapayr","aapayt","aapatr","aabahd","aabaph","aabapi","aabapd","aabayh","aabayp","aabayi","aabayr","aabayt","aabayd","aabaih","aabaid","aabarh","aabarp","aabard","aabath","aabatp","aabati","aabatr","aabatd","aaiayp","aaiayr","aaiayt","aaiarp","aaiatp","aaiatr","aarayt","aadaph","aadapi","aadayh","aadayp","aadayi","aadayr","aadayt","aadaih","aadarh","aadarp","aadari","aadath","aadatp","aadati","aadatr","pprpyt","  h pi","  h yp","  h yi","  h yr","  h yt","  h rp","  h ri","  h tp","  h ti","  h tr","  a hb","  a hd","  a ph","  a pb","  a pi","  a pd","  a yh","  a yp","  a yb","  a yi","  a yr","  a yt","  a yd","  a ih","  a ib","  a id","  a rh","  a rp","  a rb","  a ri","  a rd","  a th","  a tp","  a tb","  a ti","  a tr","  a td","  a db","  p yr","  p yt","  p tr","  b hd","  b ph","  b pi","  b pd","  b yh","  b yp","  b yi","  b yr","  b yt","  b yd","  b ih","  b id","  b rh","  b rp","  b ri","  b rd","  b th","  b tp","  b ti","  b tr","  b td","  i yp","  i yr","  i yt","  i rp","  i tp","  i tr","  r yt","  d ph","  d pi","  d yh","  d yp","  d yi","  d yr","  d yt","  d ih","  d rh","  d rp","  d ri","  d th","  d tp","  d ti","  d tr","bbhbpi","bbhbyp","bbhbyi","bbhbyr","bbhbyt","bbhbrp","bbhbri","bbhbtp","bbhbti","bbhbtr","bbpbyr","bbpbyt","bbpbtr","bbibyp","bbibyr","bbibyt","bbibrp","bbibtp","bbibtr","bbrbyt","bbdbph","bbdbpi","bbdbyh","bbdbyp","bbdbyi","bbdbyr","bbdbyt","bbdbih","bbdbrh","bbdbrp","bbdbri","bbdbth","bbdbtp","bbdbti","bbdbtr","iipiyr","iipiyt","iipitr","iiriyt","ddhdpi","ddhdyp","ddhdyi","ddhdyr","ddhdyt","ddhdrp","ddhdri","ddhdtp","ddhdti","ddhdtr","ddpdyr","ddpdyt","ddpdtr","ddidyp","ddidyr","ddidyt","ddidrp","ddidtp","ddidtr","ddrdyt"]+    ,["hhytrpi","aapihdb","aayphdb","aaypihb","aaypihd","aaypidb","aayihdb","aayrhdb","aayrphb","aayrphd","aayrpih","aayrpib","aayrpid","aayrpdb","aayrihb","aayrihd","aayridb","aaythdb","aaytphb","aaytphd","aaytpih","aaytpib","aaytpid","aaytpdb","aaytihb","aaytihd","aaytidb","aaytrhb","aaytrhd","aaytrph","aaytrpb","aaytrpi","aaytrpd","aaytrih","aaytrib","aaytrid","aaytrdb","aarphdb","aarpihb","aarpihd","aarpidb","aarihdb","aatphdb","aatpihb","aatpihd","aatpidb","aatihdb","aatrhdb","aatrphb","aatrphd","aatrpih","aatrpib","aatrpid","aatrpdb","aatrihb","aatrihd","aatridb","  phdba","  pihba","  pihda","  pihdb","  pidba","  yhdba","  yphba","  yphda","  yphdb","  ypiha","  ypihb","  ypihd","  ypiba","  ypida","  ypidb","  ypdba","  yihba","  yihda","  yihdb","  yidba","  yrhba","  yrhda","  yrhdb","  yrpha","  yrphb","  yrphd","  yrpba","  yrpih","  yrpia","  yrpib","  yrpid","  yrpda","  yrpdb","  yriha","  yrihb","  yrihd","  yriba","  yrida","  yridb","  yrdba","  ythba","  ythda","  ythdb","  ytpha","  ytphb","  ytphd","  ytpba","  ytpih","  ytpia","  ytpib","  ytpid","  ytpda","  ytpdb","  ytiha","  ytihb","  ytihd","  ytiba","  ytida","  ytidb","  ytrha","  ytrhb","  ytrhd","  ytrph","  ytrpa","  ytrpb","  ytrpi","  ytrpd","  ytrba","  ytrih","  ytria","  ytrib","  ytrid","  ytrda","  ytrdb","  ytdba","  ihdba","  rhdba","  rphba","  rphda","  rphdb","  rpiha","  rpihb","  rpihd","  rpiba","  rpida","  rpidb","  rpdba","  rihba","  rihda","  rihdb","  ridba","  thdba","  tphba","  tphda","  tphdb","  tpiha","  tpihb","  tpihd","  tpiba","  tpida","  tpidb","  tpdba","  tihba","  tihda","  tihdb","  tidba","  trhba","  trhda","  trhdb","  trpha","  trphb","  trphd","  trpba","  trpih","  trpia","  trpib","  trpid","  trpda","  trpdb","  triha","  trihb","  trihd","  triba","  trida","  tridb","  trdba","bbypihd","bbyrphd","bbyrpih","bbyrpid","bbyrihd","bbytphd","bbytpih","bbytpid","bbytihd","bbytrhd","bbytrph","bbytrpi","bbytrpd","bbytrih","bbytrid","bbrpihd","bbtpihd","bbtrphd","bbtrpih","bbtrpid","bbtrihd","ddyrpih","ddytpih","ddytrph","ddytrpi","ddytrih","ddtrpih"]+    ,["hhb a ","hhdaba","hhd a ","hhd b ","pphaba","pphada","pph a ","pph b ","pph d ","pphbdb","ppb a ","ppiaha","ppiaba","ppiada","ppi h ","ppi a ","ppi b ","ppi d ","ppibhb","ppibdb","ppidhd","ppdaba","ppd a ","ppd b ","yyhaba","yyhada","yyh a ","yyh b ","yyh d ","yyhbdb","yyphih","yypaha","yypaba","yypaia","yypada","yyp h ","yyp a ","yyp b ","yyp i ","yyp d ","yypbhb","yypbib","yypbdb","yypdhd","yypdid","yyb a ","yyiaha","yyiaba","yyiada","yyi h ","yyi a ","yyi b ","yyi d ","yyibhb","yyibdb","yyidhd","yyrhph","yyrhih","yyraha","yyrapa","yyraba","yyraia","yyrada","yyr h ","yyr a ","yyr p ","yyr b ","yyr i ","yyr d ","yyrbhb","yyrbpb","yyrbib","yyrbdb","yyripi","yyrdhd","yyrdpd","yyrdid","yythph","yythih","yythrh","yytaha","yytapa","yytaba","yytaia","yytara","yytada","yytprp","yyt h ","yyt a ","yyt p ","yyt b ","yyt i ","yyt r ","yyt d ","yytbhb","yytbpb","yytbib","yytbrb","yytbdb","yytipi","yytiri","yytdhd","yytdpd","yytdid","yytdrd","yydaba","yyd a ","yyd b ","iihaba","iihada","iih a ","iih b ","iih d ","iihbdb","iib a ","iidaba","iid a ","iid b ","rrhaba","rrhada","rrh a ","rrh b ","rrh d ","rrhbdb","rrphih","rrpaha","rrpaba","rrpaia","rrpada","rrp h ","rrp a ","rrp b ","rrp i ","rrp d ","rrpbhb","rrpbib","rrpbdb","rrpdhd","rrpdid","rrb a ","rriaha","rriada","rri h ","rri a ","rri b ","rri d ","rribhb","rribdb","rridhd","rrdaba","rrd a ","rrd b ","tthaba","tthada","tth a ","tth b ","tth d ","tthbdb","ttphih","ttpaha","ttpaba","ttpaia","ttpada","ttp h ","ttp a ","ttp b ","ttp i ","ttp d ","ttpbhb","ttpbib","ttpbdb","ttpdhd","ttpdid","ttb a ","ttiaha","ttiaba","ttiada","tti h ","tti a ","tti b ","tti d ","ttibhb","ttibdb","ttidhd","ttrhph","ttrhih","ttraha","ttrapa","ttraba","ttraia","ttrada","ttr h ","ttr a ","ttr p ","ttr b ","ttr i ","ttr d ","ttrbhb","ttrbpb","ttrbib","ttrbdb","ttripi","ttrdhd","ttrdpd","ttrdid","ttdaba","ttd a ","ttd b ","ddb a "]]++-- | 'concat' of 'tail' of 'gen_c_hb_m_cache'.  The first two phrases+-- of 'hb' have the same contour.+--+-- > gen_c_hb_m_cache !! 0 == gen_c_hb_m_cache !! 1+-- > length gen_c_hb_m_cache' == 209 + 210 + 209+-- > gen_c_hb_m_cache' == nub gen_c_hb_m_cache'+gen_c_hb_m_cache' :: [String]+gen_c_hb_m_cache' = concat (tail gen_c_hb_m_cache)++-- | Multiply enumeration index of /c/ by /n/.+--+-- > map (unc 1) hb == [104,97,112,112,121,32,98,105,114,116,104,100,97,121]+-- > map (unc 1e-2) hb == [1.04,0.97,1.12,1.12,1.21,0.32,0.98,1.05,1.1400000000000001,1.16,1.04,1.0,0.97,1.21]+unc :: (Num a, Enum b) => a -> b -> a+unc n c = fromIntegral (fromEnum c) * n++-- | 'unc' variant for 'hb' such that minima is @0@ and maxima @1@.+--+-- > map hb_md " y" == [0,1]+hb_md :: (Ord a, Fractional a, Enum b) => b -> a+hb_md c =+    let i = map (unc 1) hb+        l = minimum i+        r = maximum i+        n = r - l+    in (unc 1 c - l) * (1 / n)++-- | /(frequency,amplitude,zero-one)/+type Cim n = (n,n,n)++-- | 'Cim' scaled variants of 'unc'.+--+-- > map cim " y" == [(320.0,1.6e-2,0.0),(1210.0,6.05e-2,1.0)]+cim :: (Fractional t,Ord t,Enum e) => e -> Cim t+cim c =+    let i = unc 1e-2 c+    in (i * 1e3, i * 5e-2,hb_md c)++-- | 'cim' of 'gen_c_hb_m_cache''.+ph :: [(Double,Double,Double)]+ph = concatMap (map cim) gen_c_hb_m_cache'++-- | Trivial 'impulse' instrument+--+-- > audition ins_s+ins_s :: Synthdef+ins_s =+    let f = control IR "freq" 440+        l = control IR "loc" 0+        a = control IR "amp" 0.1+        d = control IR "sustain" 0.1+        s = envSine d a+        e = envGen AR 1 1 0 1 RemoveSynth s+        i = impulse AR f 0+    in synthdef "ins" (out 0 (pan2 i l e))++-- | 'audition' 'ph' using pattern library.  /blur/ is @legato@.+--+-- > withSC3 (hear 1 (map cim "hiprty"))+-- > withSC3 (hear 9 (map cim hb))+hear :: Transport m => Double -> [Cim Double] -> m ()+hear blur x =+    let (f,d,c) = unzip3 x+        p = toP . map realToFrac+    in play (pbind [(K_instr,psynth ins_s)+                   ,(K_freq,p f)+                   ,(K_dur,p d)+                   ,(K_legato,p (repeat blur))+                   ,(K_amp,p c * 0.1 + 0.1)+                   ,(K_param "loc",p c * 2 - 1)])++main :: IO ()+main = withSC3 (hear 9 ph)++-- Local Variables:+-- truncate-lines:t+-- End:
+ Sound/SC3/Graph/RD_three_cpsw_m.hs view
@@ -0,0 +1,19 @@+-- three-cpsw (rd)+module Sound.SC3.Graph.RD_three_cpsw_m where++import Sound.SC3.Monad {- hsc3 -}++three_cpsw :: UId m => m UGen+three_cpsw = do+  t <- dust KR (mce2 12 18)+  f0 <- tRand 1 64 t+  f1 <- lfNoise0 KR f0+  a <- tRand 0.0 0.5 t+  dt <- tRand 0.975 1.025 t+  dh <- tRand 0.750 0.7505 t+  let f = f1 * mce2 9000 12000 + 9500+      o = saw AR f + saw AR (f * dh) + saw AR (f * dt)+  return (clip2 (o * a) 0.75)++main :: IO ()+main = audition . out 0 =<< three_cpsw
+ Sound/SC3/Graph/RD_tipnso.hs view
@@ -0,0 +1,20 @@+-- tipnso (rd)+module Sound.SC3.Graph.RD_tipnso where++import Sound.SC3.ID {- hsc3 -}++tipnso :: UGen+tipnso =+  let x = mouseX KR 1 32 Linear 0.1+      t = impulse AR x 0+      n1 = tIRand 'α' 16 72 t+      n2 = tIRand 'β' 0 1 t+      n3 = pinkNoise 'γ' AR+      e = decay2 t 0.01 (mce2 0.1 0.15)+      f = midiCPS (n1 + 36 + (12 * n2))+      s = sinOsc AR f 0 * e+      b = bpf (n3 * e) (36 + midiCPS n1) (175 / midiCPS n1)+  in (s + b) * mce2 0.15 0.1++main :: IO ()+main = audition (out 0 tipnso)
+ Sound/SC3/Graph/RD_tr_out_m.hs view
@@ -0,0 +1,33 @@+-- tr-out (rd)+module Sound.SC3.Graph.RD_tr_out_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tr_nd :: UId m => UGen -> m (UGen,UGen)+tr_nd n = do+  t <- dust KR 1.6+  r1 <- tRand 0 6 t+  r2 <- tRand 0 6 t+  r3 <- tRand 0 6 t+  let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)+      p = bufRdN 1 KR 1 r2 NoLoop+      a = bufRdN 1 KR 2 r3 NoLoop+  return (pan2 (sinOsc AR f 0) p a+         ,sendTrig t n (f / 660))++tr_out :: UId m => m UGen+tr_out = do+  ns <- mapM tr_nd [1..4]+  let o = sum (map fst ns)+  return (mrg (o : map snd ns))++act :: (UId m,Transport m) => m ()+act = do+  _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])+  _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])+  _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])+  play . out 0 =<< tr_out++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/RD_trkl_m.hs view
@@ -0,0 +1,36 @@+-- trkl (rd)+module Sound.SC3.Graph.RD_trkl_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+trkl d ul fu dy la fy = do+  let tf = xLine KR 1 ul d RemoveSynth+      st = impulse AR (tf * 8) 0+      t = impulse AR tf 0+  r0 <- rand (-1) 1+  r1 <- rand (-1) 1+  r2 <- tRand 0.05 1.0 t+  r3 <- tExpRand 0.001 0.25 st -- non-zero minima+  fh <- tRand 1.75 2.25 t+  let a = dbAmp (line KR 12 la d RemoveSynth)+      f = xLine KR fu 900 d RemoveSynth+      p = line KR r0 r1 d RemoveSynth+      o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)+      o2 = mix (saw AR (mce2 f (f * fh)))+  return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)++-- > audition . out 0 =<< trkl_r+trkl_r :: UId m => m UGen+trkl_r = do+  d <- rand 0.5 16+  ul <- rand 16 64+  fu <- rand 1200 9000+  dy <- rand 0.005 0.175+  la <- rand (-60) (-25)+  fy <- rand 0.015 0.125+  trkl d ul fu dy la fy++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
+ Sound/SC3/Graph/RD_trmlo.hs view
@@ -0,0 +1,52 @@+-- trmlo (rd)+module Sound.SC3.Graph.RD_trmlo where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+    let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+        mWrp1 i m = mWrp i m (m + 1)+        mWrpN i m n = mWrp i m (m + n)+        o1 = let f = 5+                 d = 3+                 s = envSine d 0.1+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = 65+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o2 = let f = iRand 'α' 5 9+                 d = iRand 'β' 5 9+                 s = envSine d (rand 'γ' 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 'δ' 69 72+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o3 = let f = iRand 'ε' 5 9+                 d = iRand 'ζ' 9 12+                 s = envSine d (rand 'η' 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 'θ' 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 'ι' 1 5) d DoNothing+             in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+        o4 = let f = iRand 'κ' 5 18+                 d = iRand 'λ' 12 15+                 s = envSine d (rand 'μ' 0.1 0.2)+                 e = envGen KR 1 5e-2 0 1 DoNothing s+                 n = iRand 'ν' 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 'ξ' 1 5) d RemoveSynth+                 fr = mWrpN m (n + l) (iRand 'ο' 1 5)+             in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 'π' 2 24))) m e+    in o1 + o2 + o3 + o4++main :: IO ()+main = do+  let s = synthdef "trmlo" (out 0 trmlo)+      p = pbind [(K_instr,psynth s)+                ,(K_dur,pxrand 'ρ' [0.25,0.5,1,2,4] inf)+                ,(K_legato,1.25)]+  audition p
+ Sound/SC3/Graph/RD_trmlo_u.hs view
@@ -0,0 +1,53 @@+-- trmlo-u (rd)+module Sound.SC3.Graph.RD_trmlo_u where++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+    let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+        mWrp1 i m = mWrp i m (m + 1)+        mWrpN i m n = mWrp i m (m + n)+        o1 = let f = 5+                 d = 3+                 s = envSine d 0.1+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = 65+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o2 = let f = iRand 5 9+                 d = iRand 5 9+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o3 = let f = iRand 5 9+                 d = iRand 9 12+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 1 5) d DoNothing+             in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+        o4 = let f = iRand 5 18+                 d = iRand 12 15+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 5e-2 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 1 5) d RemoveSynth+                 fr = mWrpN m (n + l) (iRand 1 5)+             in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+    in o1 + o2 + o3 + o4++main :: IO ()+main = do+  let s = synthdef "trmlo" (out 0 trmlo)+      p = pbind [(K_instr,psynth s)+                ,(K_dur,pxrand 'α' [0.25,0.5,1,2,4] inf)+                ,(K_legato,1.25)]+  audition p
+ Sound/SC3/Graph/RD_urandom.hs view
@@ -0,0 +1,46 @@+-- urandom (rd)+module Sound.SC3.Graph.RD_urandom where++import Control.Monad {- base -}+import qualified Data.ByteString.Lazy as B {- bytestring -}+import Sound.OSC.Coding.Byte {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import System.IO {- base -}++ur_bytes :: Int -> IO B.ByteString+ur_bytes n = withFile "/dev/urandom" ReadMode (flip B.hGet n)++ur_int :: IO Int+ur_int = fmap decode_i32 (ur_bytes 4)++ur_double :: IO Double+ur_double = fmap decode_f64 (ur_bytes 8)++ur_byte_set :: Int -> Int -> IO [B.ByteString]+ur_byte_set n k =+    let f h = replicateM k (B.hGet h n)+    in withFile "/dev/urandom" ReadMode f++-- > ur_int_set 3+ur_int_set :: Int -> IO [Int]+ur_int_set = fmap (map decode_i32) . ur_byte_set 4++-- > fmap (map int_to_normal) (ur_int_set 3)+int_to_normal :: Fractional n => Int -> n+int_to_normal n = fromIntegral (abs n) / fromIntegral (maxBound::Int)++ur_real_set :: Fractional n => Int -> IO [n]+ur_real_set = fmap (map int_to_normal) . ur_int_set++-- > audition =<< mk_node+mk_node :: IO UGen+mk_node = do+  [f,g,l] <- ur_real_set 3+  let f' = linLin f 0 1 440 660+      g' = linLin g 0 1 0.05 0.25+      l' = linLin l 0 1 (-1) 1+  return (pan2 (sinOsc AR f' 0) l' g')++main :: IO ()+main = overlapTextureM (3,3,9,maxBound) mk_node
+ Sound/SC3/Graph/RD_vla_addtn.hs view
@@ -0,0 +1,148 @@+-- vla-adttn (rd)+module Sound.SC3.Graph.RD_vla_addtn where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++type R = Double+type R2 = (R,R)++vla :: [R2]+vla =+    [(-49.43290,1.99165)+    ,(0.00000,1.09187)+    ,(-2.53835,-2.73340)+    ,(-8.55317,0.73919)+    ,(-7.58952,-0.75267)+    ,(-8.48353,1.70372)+    ,(-13.92700,1.64759)+    ,(-39.93130,-2.25142)+    ,(-19.87800,-3.12024)+    ,(-34.19660,-1.58899)+    ,(-18.82040,-1.39847)+    ,(-21.22520,2.04672)+    ,(-21.33070,-0.14754)+    ,(-31.08620,2.05345)+    ,(-42.51880,-0.55890)+    ,(-41.19730,0.23896)+    ,(-46.80570,1.71249)+    ,(-47.17510,2.37942)+    ,(-37.97520,-0.83005)+    ,(-38.32750,-2.49358)+    ,(-44.79280,-1.16301)+    ,(-49.11850,1.33082)+    ,(-45.26480,-0.45146)+    ,(-46.27050,-0.15578)+    ,(-63.14360,-3.13979)+    ,(-44.27590,-2.59826)+    ,(-40.19680,-2.16540)+    ,(-56.83330,0.48774)+    ,(-56.62160,-0.84155)+    ,(-55.76370,1.59076)+    ,(-59.36050,-0.99090)+    ,(-55.42520,-0.58264)+    ,(-64.99020,0.00110)+    ,(-63.45910,1.55117)+    ,(-64.77610,2.68228)+    ,(-68.27080,-1.82120)+    ,(-71.90240,1.80545)+    ,(-79.13910,2.99369)+    ,(-64.94640,-3.12388)+    ,(-59.41810,1.84679)+    ,(-86.33570,1.81713)+    ,(-88.53500,1.01834)+    ,(-64.17470,-1.52081)+    ,(-61.24430,1.45757)+    ,(-69.88980,-0.47708)+    ,(-65.39420,0.82882)+    ,(-73.84740,0.41623)+    ,(-72.26330,0.31856)+    ,(-73.88560,2.64035)+    ,(-70.86610,-0.43802)+    ,(-67.86130,-0.43389)+    ,(-80.76020,-2.50016)+    ,(-66.44520,2.26219)+    ,(-83.49810,2.57825)+    ,(-66.01220,-2.08254)+    ,(-65.30220,-2.83644)+    ,(-74.05780,0.21665)+    ,(-72.69060,-2.78729)+    ,(-75.49700,2.96210)+    ,(-69.45200,0.72293)+    ,(-75.36160,0.14687)+    ,(-70.21110,1.42155)+    ,(-79.34420,0.76044)+    ,(-81.56200,2.16997)+    ,(-84.20670,3.11095)+    ,(-74.40450,-2.98094)+    ,(-76.67820,1.96564)+    ,(-79.95980,2.68183)+    ,(-77.31420,-1.92260)+    ,(-74.60450,-1.89189)+    ,(-67.98670,1.99457)+    ,(-80.17960,-1.95013)+    ,(-79.44400,-2.70955)+    ,(-81.89010,3.12971)+    ,(-80.18220,1.76888)+    ,(-82.94420,2.77531)]++p_prep :: R2 -> R2+p_prep (a,p) = (dbAmp a,p)++unp :: R2 -> [R]+unp (i,j) = [i,j]++vla_prep :: [R]+vla_prep = concatMap (unp . p_prep) vla++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+    let m = n * 2+        ampl = bufRdN 1 KR 0 m NoLoop+        ph = bufRdN 1 KR 0 (m + 1) NoLoop+        o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0+            in fSinOsc AR (fr * (n + 1) * dt') ph+        e = linen (impulse KR 0 0)+                  (rise * rand 'β' 0.75 1.25)+                  ampl+                  (fall * rand 'γ' 0.75 1.25)+                  DoNothing+    in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+    let a = control KR "amp" 0.1+        f = control KR "freq" 129.897+        rs = control KR "rise" 0.1+        fa = control KR "fall" 0.5+        l = control KR "loc" 0.0+        dt = control KR "dt" 0.001+        s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+        e = detectSilence s 0.001 0.2 RemoveSynth+    in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: P_Bind+pattern =+    [(K_instr,pinstr "plyr36")+    ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+    ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+    ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+    ,(K_octave,prand 'η' [2,3] inf)+    ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+    ,(K_param "rise",pwhite 'ι' 1 2 inf)+    ,(K_param "fall",pwhite 'κ' 4 7 inf)+    ,(K_dur,5)]++act :: Transport m => m ()+act = do+  _ <- async (b_alloc_setn1 0 0 vla_prep)+  _ <- async (d_recv plyr36)+  play (pbind pattern)++main :: IO ()+main = withSC3 act
+ Sound/SC3/Graph/RD_vla_addtn_sharc.hs view
@@ -0,0 +1,79 @@+-- vla-adttn-sharc (rd)+module Sound.SC3.Graph.RD_vla_addtn_sharc where++import Data.List {- base -}+import Sound.Analysis.SHARC {- hsharc -}+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++type R = Double+type R3 = (R,R,R)++spectra :: [Instrument] -> String -> Int -> [R3]+spectra sh nm j =+  let Just i = find ((== nm) . instrument_id) sh+  in note_spectra (note_normalise (notes i !! j))++vla :: Transport m => FilePath -> m [R3]+vla fn = do+  Right sh <- liftIO (read_sharc fn)+  return (spectra sh "viola_vibrato" 0)++unp :: R3 -> [R]+unp (_,i,j) = [i,j]++vla_prep :: [R3] -> [R]+vla_prep = concatMap unp++-- fr = freq,dt = detune+vla_partial :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen+vla_partial fr rise fall dt n =+    let m = n * 2+        ampl = bufRdN 1 KR 0 m NoLoop+        ph = bufRdN 1 KR 0 (m + 1) NoLoop+        o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0+            in fSinOsc AR (fr * (n + 1) * dt') ph+        e = linen (impulse KR 0 0)+                  (rise * rand 'β' 0.75 1.25)+                  ampl+                  (fall * rand 'γ' 0.75 1.25)+                  DoNothing+    in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+    let a = control KR "amp" 0.1+        f = control KR "freq" 129.897+        rs = control KR "rise" 0.1+        fa = control KR "fall" 0.5+        l = control KR "loc" 0.0+        dt = control KR "dt" 0.001+        s = sum (map (vla_partial f rs fa dt) [0 .. n - 1])+        e = detectSilence s 0.001 0.2 RemoveSynth+    in mrg2 (pan2 s l a) e++plyr36 :: Synthdef+plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36))++pattern :: P_Bind+pattern =+    [(K_instr,pinstr "plyr36")+    ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+    ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+    ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+    ,(K_octave,prand 'η' [2,3] inf)+    ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+    ,(K_param "rise",pwhite 'ι' 1 2 inf)+    ,(K_param "fall",pwhite 'κ' 4 7 inf)+    ,(K_dur,prand 'λ' [3,5] inf)]++act :: Transport m => FilePath -> m ()+act fn = do+  v <- vla fn+  _ <- async (b_alloc_setn1 0 0 (vla_prep v))+  _ <- async (d_recv plyr36)+  play (pbind pattern)++main :: IO ()+main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
+ Sound/SC3/Graph/RD_vlc_distrtn_m.hs view
@@ -0,0 +1,150 @@+-- vlc-distrtn (rd)+-- caution - audio feedback graph+module Sound.SC3.Graph.RD_vlc_distrtn_m where++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}++prep :: (Double,Double) -> [Double]+prep (ampl,phase) = [dbAmp ampl,phase]++partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+partial b i freq detune fall n = do+  n0 <- lfNoise1 KR 1+  n1 <- rand 0.75 1.25+  let m = n * 2+      ampl = bufRdN 1 KR b m NoLoop+      f = freq * (n + 1) * (n0 * detune + 1)+  return (ringz i f (fall * n1) * ampl)++plyr :: UId m => UGen -> UGen -> m UGen+plyr i n = do+  let ctl = control KR+      buf = ctl "buf" 0+      iamp = ctl "iamp" 0.1+      ampl = ctl "ampl" 0.1+      freq = ctl "freq" 129.897+      fall = ctl "fall" 0.5+      loc = ctl "loc" 0.0+      detune = ctl "detune" 0.001+  s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]+  return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))++degree_to_key :: Int -> [Int] -> Int -> Int+degree_to_key degree scale steps =+    let scale_n = length scale+    in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))++getCps :: (Transport m,UnaryOp b) => [b] -> m b+getCps b = do+  b_ <- L.choose b+  d <- L.choose [0 .. 8]+  let k = degree_to_key d [0,2,3,5,7,8,10] 12+  return (midiCPS (b_ + realToFrac k))++pattern :: Transport m => m ()+pattern = do+  f <- getCps [24,36,48,55,60]+  ia <- L.rrand 0.05 0.75+  l <- L.rrand (-1) 1+  a <- L.rrand 0.05 0.1+  d <- L.rrand 0.001 0.005+  fl <- L.rrand 1 7+  send (n_set 1002 [("freq",f)+                   ,("iamp",ia)+                   ,("buf",0)+                   ,("loc",l)+                   ,("ampl",a)+                   ,("detune",d)+                   ,("fall",fl)])+  wait =<< L.choose [0.25,0.5,0.75,1.5]++run :: (Transport m,UId m) => m ()+run = do+  _ <- async (b_alloc 0 (length vlc * 2) 1)+  send (b_setn1 0 0 (concatMap prep vlc))+  let i = soundIn 4+  _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48+  send (s_new "plyr48" 1002 AddToTail 1 [])+  sequence_ (replicate 32 pattern)++main :: IO ()+main = withSC3 run++vlc :: [(Double,Double)]+vlc = [(0.00000,1.85550)+      ,(-9.92383,-0.65147)+      ,(-8.74205,-0.74728)+      ,(-3.70464,-1.39796)+      ,(-9.43435,-1.14812)+      ,(-25.84790,-1.03375)+      ,(-16.99500,-2.41724)+      ,(-29.17040,2.67419)+      ,(-26.82750,-1.61810)+      ,(-18.59870,1.34568)+      ,(-19.72160,-2.85972)+      ,(-29.43650,0.54603)+      ,(-23.63120,-1.47813)+      ,(-28.20100,-1.98501)+      ,(-41.20700,-1.11808)+      ,(-33.14310,-2.19369)+      ,(-31.54010,1.43134)+      ,(-47.62740,1.28571)+      ,(-28.79740,-1.03754)+      ,(-34.97950,0.37740)+      ,(-39.05770,-0.57557)+      ,(-38.84060,2.34836)+      ,(-40.18090,-0.96978)+      ,(-47.32150,2.14768)+      ,(-45.49290,2.52100)+      ,(-40.57100,-1.39905)+      ,(-47.19530,-2.23994)+      ,(-50.80920,2.97853)+      ,(-48.13640,0.46815)+      ,(-58.56890,-1.01821)+      ,(-57.81200,-3.08971)+      ,(-47.96870,-0.48657)+      ,(-43.96100,-0.10311)+      ,(-50.49810,-2.80977)+      ,(-50.61640,-0.17212)+      ,(-60.64640,-1.02433)+      ,(-58.03410,1.06921)+      ,(-55.46390,-2.04501)+      ,(-54.31000,-1.53512)+      ,(-52.78670,-1.49875)+      ,(-57.99380,0.17697)+      ,(-56.76990,2.28241)+      ,(-54.17450,-1.85553)+      ,(-62.58220,-2.40971)+      ,(-59.86460,1.04782)+      ,(-61.58570,1.56183)+      ,(-52.62080,1.68360)+      ,(-49.82940,-1.11019)+      ,(-56.18160,-0.78538)+      ,(-57.73320,-2.23918)+      ,(-49.87560,3.09604)+      ,(-51.00100,-0.53762)+      ,(-59.71530,0.99017)+      ,(-65.73280,2.43855)+      ,(-73.01270,-0.90664)+      ,(-61.81450,-0.53346)+      ,(-65.58980,1.51174)+      ,(-75.94320,-3.06072)+      ,(-65.22210,-1.49937)+      ,(-70.79970,-2.96199)+      ,(-64.72450,1.78172)+      ,(-73.24130,0.26939)+      ,(-66.17110,-0.23305)+      ,(-61.32910,-3.12592)+      ,(-66.98180,0.64700)+      ,(-65.23060,-2.94395)+      ,(-70.13430,1.29805)+      ,(-68.43470,-1.35906)+      ,(-71.33000,-2.71582)+      ,(-86.90080,2.11646)+      ,(-74.97450,2.76118)+      ,(-68.02520,0.94979)+      ,(-67.32960,3.05994)+      ,(-67.32140,-2.79905)+      ,(-68.22010,-2.33831)]
+ Sound/SC3/Graph/RD_voscil.hs view
@@ -0,0 +1,38 @@+-- voscil (rd)+module Sound.SC3.Graph.RD_voscil where++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+  let lfn z = lfNoise0 z KR+      hb = (constant b - 1) / 2+      rt = 6+      f = 600+      v = vOsc AR (lfn 'α' rt * hb + hb) (f * 2) 0+      o = let bf = lfn 'β' rt * 40 + 600+              nh = lfn 'γ' rt * 16 + 24+          in blip AR bf nh * (lfn 'δ' rt * 0.1 + 0.1)+      p = pan2 (v + o) (lfn 'ε' rt) (lfn 'ζ' rt * 0.5 + 0.5)+      w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+      q = pan2 w (lfn 'η' rt) (lfn 'θ' rt * 0.5 + 0.5)+  in p + q++run :: Transport m => m ()+run = do+  let bn = 8192 * 4+      b = 32+      r_set i =+          do m <- rrand 2 512+             j <- sequence (replicate m (rrand 0 bn))+             k <- sequence (replicate m (rrand (-1) 1))+             _ <- async (b_alloc i bn 1)+             send (b_set i (zip j k))+  mapM_ r_set [0 .. (b - 1)]+  play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_voscil_u.hs view
@@ -0,0 +1,39 @@+-- voscil-u (rd)+module Sound.SC3.Graph.RD_voscil_u where++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+  let lfn = lfNoise0 KR+      hb = (constant b - 1) / 2+      rt = 6+      f = 600+      v = vOsc AR (lfn rt * hb + hb) (f * 2) 0+      o = let bf = lfn rt * 40 + 600+              nh = lfn rt * 16 + 24+          in blip AR bf nh * (lfn rt * 0.1 + 0.1)+      p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+      w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+      q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+  in p + q++run :: Transport m => m ()+run = do+  let bn = 8192 * 4+      b = 32+      r_set i =+          do m <- rrand 2 512+             j <- sequence (replicate m (rrand 0 bn))+             k <- sequence (replicate m (rrand (-1) 1))+             _ <- async (b_alloc i bn 1)+             send (b_set i (zip j k))+  mapM_ r_set [0 .. (b - 1)]+  play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
+ Sound/SC3/Graph/RD_waveset.hs view
@@ -0,0 +1,155 @@+-- A simple waveset synthesiser (rd)+module Sound.SC3.Graph.RD_waveset where++import qualified Data.Array as A {- array -}+import Data.List {- base -}+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import System.Environment+import System.Random {- random -}++-- * Score model.++-- | Interval to schedule in advance.+latency :: Double+latency = 0.15++-- | Add t to timestamp.+offset :: Time -> Bundle -> Bundle+offset t (Bundle t0 m) = Bundle (t + t0) m++-- | Play non-empty set of osc bundles.+play_set :: Transport m => [Bundle] -> m ()+play_set [] = error "play_set:empty"+play_set (x:xs) = do+  let (Bundle t _) = x+  pauseThreadUntil (t - latency)+  mapM_ sendBundle (x:xs)++-- | Play grouped score.+play_sets :: Transport m => [[Bundle]] -> m ()+play_sets [] = return ()+play_sets s = do+  t <- time+  mapM_ (play_set . map (offset t)) s++-- | Split l into chunks of at most n elements.+form_sets :: Int -> [a] -> [[a]]+form_sets _ [] = []+form_sets n l =+    let (a,b) = splitAt n l+    in a : form_sets n b++-- | Play score, send in sets on indicated cardinality.+play_score :: Transport m => Int -> [Bundle] -> m ()+play_score n s = play_sets (form_sets n s)++-- * Waveset analysis++-- | Zero-crossing predicate.+is_zc :: (Num a, Ord a) => a -> a -> Bool+is_zc a b = a <= 0 && b > 0++-- | Locate fractional zero-crossing point.+locate_fzc :: (Ord a, Fractional a) => a -> a -> a+locate_fzc x y = (1.0 / (y - x)) * abs x++-- | Fractional zero-crossing constructor, n is the initial frame location.+fzc :: (Ord a, Fractional a) => a -> [a] -> [a]+fzc _ [] = []+fzc _ [_] = []+fzc n (x:y:z) = if is_zc x y+                then (n + locate_fzc x y) : fzc (n + 2.0) z+                else fzc (n + 1.0) (y : z)++-- | Remove zero crossings so that no waveset has length less than m.+prune :: (Ord a, Num a) => a -> a -> [a] -> [a]+prune _ _ [] = [] -- hmmm....+prune m n (x:xs) = if (x - n) < m+                   then prune m n xs+                   else x : prune m x xs++-- | zc -> ws+ws :: [a] -> [(a,a)]+ws [] = []+ws [_] = []+ws (x:y:z) = (x,y) : ws (y : z)++-- * Waveset instrument++-- | A trivial waveset instrument with unit envelope.+waveset :: UGen+waveset =+    let k = control KR+        o = k "out" 0+        b = k "bufnum" 0+        s = k "start" 0+        e = k "end" 0+        r = k "rate" 1+        d = k "dur" 1+        a = k "amp" 0.2+        rs = bufRateScale KR b * r+        ph = phasor AR 0 rs 0 (e - s) 0 + s+        e_data = Envelope [a, a, 0] [d, 0] [EnvLin] Nothing Nothing+        e_ugen = envGen AR 1 1 0 1 RemoveSynth e_data+    in offsetOut o (bufRdL 1 AR b ph Loop * e_ugen)++-- * Waveset synthesizer++-- | Construct s_new message for synthesiser.+mk_msg :: Double -> Double -> Double -> Double -> Message+mk_msg b sf ef d =+    let a = [("bufnum", b), ("start", sf), ("end", ef), ("dur", d)]+    in s_new "waveset" (-1) AddToTail 1 a++-- | Compare wavesets by duration.+dur_ord :: (Num t, Ord t) => (t, t) -> (t, t) -> Ordering+dur_ord (s0, e0) (s1, e1) = compare (e0 - s0) (e1 - s1)++-- | Generate score from waveset data.+mk_score :: Double -> [Double] -> [(Double, Double)] -> [Bundle]+mk_score sr repeats w =+    let durations = zipWith (\(s, e) r -> (e - s) * r / sr) w repeats+        start_times = scanl (+) 0 durations+        mk_elem (s,e) t d = Bundle t [mk_msg 10 s e d]+    in zipWith3 mk_elem w start_times durations++-- | n randomly chosen elements of w.+rchoose :: Int -> [a] -> [a]+rchoose n w =+    let (l, r) = (1, length w)+        a = A.listArray (l,r) w+    in take n (map (a A.!) (randomRs (l,r) (mkStdGen 1)))++-- | Load waveset instrument, allocate sound file buffer, do waveset+--   analysis, generate & play scores.+run_waveset :: Transport m => String -> m ()+run_waveset fn = do+  _ <- async (d_recv (synthdef "waveset" waveset))+  _ <- async (b_allocRead 10 fn 0 0)+  (hdr, cs) <- liftIO (F.read fn)+  let nc = F.channelCount hdr+      nf = F.frameCount hdr+      sr = fromIntegral (F.sampleRate hdr)+      b = cs !! 0+      w = ws (prune 64 0 (fzc 0 b))+      pl s = play_score 10 s >> wait 1+      post = liftIO . putStrLn+  post ("#f: " ++ show (nc, nf, sr))+  post ("#w: " ++ show (length w)) -- force w+  pl (mk_score sr (repeat 1) w)+  pl (mk_score sr (repeat 2) (reverse w))+  pl (mk_score sr (cycle [2,4,8]) (sortBy dur_ord w))+  pl (mk_score sr (randomRs (1,24) (mkStdGen 2)) (rchoose 512 w))++main :: IO ()+main = do+  a <- getArgs+  case a of+    [fn] -> withSC3 (run_waveset fn)+    _ -> error "audio file?"++{--+withSC3 (run_waveset "/home/rohan/data/audio/pf-c5.snd")+--}
+ Sound/SC3/Graph/RD_wial_m.hs view
@@ -0,0 +1,27 @@+-- wial (rd)+module Sound.SC3.Graph.RD_wial_m where++import Sound.SC3.Monad {- hsc3 -}++wial :: (Functor m,UId m) => m UGen+wial = do+  let pls c d f = do let t = pulseDivider c d 0+                         e = decay2 t 0.05 0.75+                         o = sinOsc AR (toggleFF t * f + f * 2) 0+                     n0 <- tIRand 0 1 t+                     return (o * e * n0 * 0.5)+      smpl f = [(4,6,f,0.75)+               ,(2,6,f * 2,0.75)+               ,(1,2,f * 16,0.025)+               ,(1,5,f * 64,0.005)+               ,(1,4,f * 128,0.035)+               ,(1,3,f * 256,0.15)+               ,(2,3,f * 512,0.35)]+      plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)+      clk = impulse AR 16 0+  n0 <- dust KR 2+  f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0+  fmap sum (mapM (plss clk) (smpl f))++main :: IO ()+main = audition . out 0 =<< wial
+ Sound/SC3/Graph/RD_xy_interference.hs view
@@ -0,0 +1,18 @@+-- xy-interference (rd)+module Sound.SC3.Graph.RD_xy_interference where++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++xy_interference :: UGen+xy_interference =+  let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)+      y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)+      nd = let n = lfNoise0 'α' KR (mce2 5 9)+               a = sinOsc AR (x + n) 0+               b = sinOsc AR y 0+           in a * b+  in mix (uclone 'β' 3 nd)++main :: IO ()+main = audition (out 0 xy_interference)
+ Sound/SC3/Graph/RD_xy_interference_m.hs view
@@ -0,0 +1,17 @@+-- xy-interference-m (rd)+module Sound.SC3.Graph.RD_xy_interference_m where++import Sound.SC3.Monad {- hsc3 -}++xy_interference :: UId m => m UGen+xy_interference = do+  let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)+      y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)+      nd = do n <- lfNoise0 KR (mce2 5 9)+              let a = sinOsc AR (x + n) 0+                  b = sinOsc AR y 0+              return (a * b)+  fmap sum (sequence (replicate 3 nd))++main :: IO ()+main = audition . out 0 =<< xy_interference
+ Sound/SC3/Graph/SC_bottle_m.hs view
@@ -0,0 +1,27 @@+-- bottle (sc)+module Sound.SC3.Graph.SC_bottle_m where++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++bottle :: UId m => m UGen+bottle = do+  freq <- rand 220 880+  wn <- whiteNoise AR+  pn <- pinkNoise AR+  let perc = envPerc 0.1 0.6+      ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02+      flute = ringz ex freq 0.3+      r = resonz pn (5 + (freq / 2)) 0.1+      breath = envGen KR 1 1 0 1 DoNothing perc * r+      rapf i = do x <- linRand 0.001 0.1 (-1)+                  return (i + allpassN i 0.1 x 1.0 * 0.5)+      cls i = let en = let c = EnvNum (-4) in (c,c,c)+                  l = envLinen' 0.01 3.0 1.0 1 en+                  z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l+              in mce2 z z+  f <- chainM 2 rapf flute+  return (cls f)++main :: IO ()+main = overlapTextureU (2,0,2,maxBound) =<< bottle
+ Sound/SC3/Graph/SP_insects_m.hs view
@@ -0,0 +1,22 @@+-- insects (sp)+module Sound.SC3.Graph.SP_insects_m where++import Sound.SC3.Monad {- hsc3 -}++insect :: UId m => m UGen+insect = do+  r1 <- rand 2000 3000+  r2 <- rand 0.05 0.1+  n1 <- lfNoise2 KR (r2 * 50 + 50)+  r4 <- rand 1 10+  r5 <- rand 0.05 0.1+  n2 <- lfNoise2 KR r5+  let a = sinOsc KR r4 0 * 0.5 + 0.5+      o = sinOsc AR (r1 + n1) r2 * 0.005 * a+  return (pan2 o n2 1)++insects :: UId m => m UGen+insects = fmap sum (sequence (replicate 60 insect))++main :: IO ()+main = audition . out 0 =<< insects
+ Sound/SC3/Graph/TM_drummer.hs view
@@ -0,0 +1,19 @@+-- drummer (tm)+module Sound.SC3.Graph.TM_drummer where++import Sound.SC3.ID {- hsc3 -}++drummer :: UGen+drummer =+  let n = whiteNoise 'α' AR+      tempo = 4+      tr = impulse AR tempo 0+      tr_2 = pulseDivider tr 4 2+      tr_4 = pulseDivider tr 4 0+      snare = n * decay2 tr_2 0.005 0.5+      bass = sinOsc AR 60 0 * decay2 tr_4 0.005 0.5+      hihat = hpf n 10000 * decay2 tr 0.005 0.5+  in pan2 (snare + bass + hihat) 0 0.4++main :: IO ()+main = audition (out 0 drummer)
+ css/emacs.css view
@@ -0,0 +1,16 @@+/* http://code.haskell.org/~malcolm/hscolour/emacs.css */+.hs-keyglyph { color: DarkGoldenrod;  }+.hs-layout   { color: Black;}+.hs-keyword  { color: PaleGreen;}+.hs-comment, .hs-comment a { color: Firebrick;}+.hs-str      { color: RosyBrown; }+.hs-chr      { color: RosyBrown;}+.hs-keyword  { color: BlueViolet; }+.hs-conid    { color: ForestGreen; }+.hs-varid    { color: black; }+.hs-num      { color: black; }+.hs-varop    { color: DarkGoldenrod; }+.hs-conop    { color: DarkGoldenrod; }+.hs-sel      { color: Red; }+.hs-cpp      { color: Red; }+.hs-definition { color: Blue; }
gr/1-1Ni.hs view
@@ -9,7 +9,7 @@ scr h n f d =     let (h0,h1) = h f         o z = sinOsc AR (expRand z h0 h1) 0 * 0.2-        m = mce (map o (take n ['a'..]))+        m = mce (map o (take n ['α'..]))         e = lfGauss AR d (1/4) 0 NoLoop RemoveSynth     in splay (m * e) 1 0.1 0 True @@ -17,14 +17,14 @@ -- > Sound.SC3.UGen.Dot.draw (b 8) b :: Int -> Synthdef b np =-    let f = midiCPS (lchoose 'a' [40,45,52])+    let f = midiCPS (lchoose 'β' [40,45,52])         h n = (n,n + (n / 64))     in synthdef "b" (out 0 (scr h np f 9))  -- > audition (c 12) c :: Int -> Synthdef c np =-    let f = midiCPS (choose 'a' (in' 3 KR 0))+    let f = midiCPS (choose 'γ' (in' 3 KR 0))         h n = (n - (n / 128),n + (n / 128))     in synthdef "c" (out 0 (scr h np f 6)) @@ -36,11 +36,10 @@ -- > mapM_ killThread t begin :: Int -> IO [ThreadId] begin n = do-  t0 <- forkIO (forever (audition (b n) >> pauseThread 4))+  t0 <- forkIO (forever (audition (b n) >> wait 4))   t1 <- forkIO (let set f = withSC3 (send (c_setn [(0,f)]))-                in mapM_ (\f -> set f >> pauseThread 10) (cycle x))-  t2 <- forkIO (do pauseThread 0.1-                   forever (audition (c n) >> pauseThread 0.5))+                in mapM_ (\f -> set f >> wait 10) (cycle x))+  t2 <- forkIO (wait 0.1 >> forever (audition (c n) >> wait 0.5))   return [t0,t1,t2]  main :: IO ()
gr/1-4Q6.hs view
@@ -1,12 +1,9 @@ -- http://sccode.org/1-4Q6 (f0)  import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  -- > audition risset--- > Sound.SC3.UGen.Dot.draw risset -- -- let set p = withSC3 (\fd -> send fd (n_set (-1) p)) -- set [("trig",1)]@@ -17,9 +14,9 @@ risset =     let k = control KR         pan = k "pan" 0-        freq = k "freq" 400+        f = k "freq" 400         ampl = k "amp" 0.1-        dur = k "sustain" 2+        d = k "sustain" 2         tr = tr_control "trig" 1         amps = [1,0.67,1,1.8,2.67,1.67,1.46,1.33,1.33,1,1.33]         durs = [1,0.9,0.65,0.55,0.325,0.35,0.25,0.2,0.15,0.1,0.075]@@ -27,21 +24,22 @@         dets = [0,1,0,1.7,0,0,0,0,0,0,0]         fn i =             let shp = let c = EnvNum (-4.5)-                      in envPerc' 0.005 (dur * durs!!i) (amps!!i) (c,c)+                      in envPerc' 0.005 (d * durs!!i) (amps!!i) (c,c)                 env = envGen AR tr 1 0 1 DoNothing shp-            in sinOsc AR (freq * frqs!!i + dets!!i) 0 * ampl * env+            in sinOsc AR (f * frqs!!i + dets!!i) 0 * ampl * env         src = mixFill 11 fn     in synthdef "risset" (out 0 (pan2 src pan 1)) -pattern :: P Event+pattern :: P_Bind pattern =-  let i = (InstrumentDef risset False)-  in pmono i 1000 [("note",prand 'a' [0,2,5,7,11] inf)-                  ,("octave",prand 'b' [4,5,6,7,9] inf)-                  ,("legato",1)-                  ,("dur",prand 'c' [2,3,5,7] inf)-                  ,("amp",pwhite 'd' 0.025 0.15 inf)-                  ,("trig",1)]+  [(K_instr,pinstr' (Instr_Def risset False))+  ,(K_id,1000)+  ,(K_note,prand 'α' [0,2,5,7,11] inf)+  ,(K_octave,prand 'β' [4,5,6,7,9] inf)+  ,(K_legato,1)+  ,(K_dur,prand 'γ' [2,3,5,7] inf)+  ,(K_amp,pwhite 'δ' 0.025 0.15 inf)+  ,(K_param "trig",1)]  main :: IO ()-main = audition pattern+main = audition (pmono pattern)
gr/1-4QM.hs view
@@ -4,25 +4,25 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}  type ST = (UGen,UGen,UGen)  n1 :: ST -> UGen -> UGen n1 (s1,s2,s3) a =-    let x = tScramble 'a' KR 1 (mce [60,67,75,79,94])-        rel = choose 'a' (mce [0,0,0,0,0,0,0,1])+    let x = tScramble 'α' KR 1 (mce [60,67,75,79,94])+        rel = choose 'β' (mce [0,0,0,0,0,0,0,1])         p = envPerc 0.01 (a + rel)         e = envGen AR 1 1 0 1 RemoveSynth p-        ta = midiCPS x * a * choose 'a' s1-        tb = x * midiCPS (choose 'a' s2)-        tc = a * midiCPS (choose 'a' s3)+        ta = midiCPS x * a * choose 'γ' s1+        tb = x * midiCPS (choose 'δ' s2)+        tc = a * midiCPS (choose 'ε' s3)     in out 0 (e * ay ta tb tc 0.25 3 15 10 7 4 1 0)  mk_e :: UGen -> UGen -> UGen mk_e m k =-    let g = let d = dseq 'a' dinf m-                l = dxrand 'a' dinf (mce2 0 1)+    let g = let d = dseq 'ζ' dinf m+                l = dxrand 'η' dinf (mce2 0 1)             in (duty KR d 0 DoNothing l)         p = envPerc 0.01 k     in envGen AR g 1 0 1 RemoveSynth p@@ -31,13 +31,13 @@ n2 a =   let n z = brownNoise z AR       e = mk_e (mce2 0.5 0.25) (a / 2)-  in out 0 (e * mce2 (n 'a') (n 'b') * 0.6)+  in out 0 (e * mce2 (n 'θ') (n 'ι') * 0.6)  n3 :: UGen -> UGen n3 a =   let n z = whiteNoise z AR       e = mk_e (mce2 0.25 0.5) (a / 4)-  in out 0 (e * lfNoise0 'a' KR 16 * mce2 (n 'a') (n 'b'))+  in out 0 (e * lfNoise0 'κ' KR 16 * mce2 (n 'λ') (n 'μ'))  c1_4QM :: Transport m => ST -> m () c1_4QM st = do@@ -46,7 +46,7 @@   play (n1 st a)   play (n2 a)   play (n3 a)-  liftIO (pauseThread dt)+  liftIO (wait dt)  main :: IO () main = do
gr/1-4QN.hs view
@@ -1,11 +1,10 @@ -- http://sccode.org/1-4QN  import Control.Concurrent {- base -}-import Control.Monad+import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} import qualified Sound.SC3.Lang.Random.IO as L  -- > withSC3 init_b@@ -14,7 +13,7 @@   _ <- async (b_alloc 0 512 1)   async (b_gen_sine1 0 [Normalise,Wavetable,Clear] (map recip [1,2,3,4])) --- > Sound.SC3.UGen.Dot.draw (mk_g (lfNoise0 'a'))+-- > Sound.SC3.UGen.Dot.draw (mk_g (lfNoise0 'α')) mk_g :: (Rate -> UGen -> UGen) -> Synthdef mk_g o =     let k = control KR@@ -26,32 +25,34 @@         ed = k "edens" 1         l = line KR sd ed d DoNothing         t = o AR l-        e_p = envPerc (rand 'a' 0.0001 0.1) (d * rand 'a' 0.5 4)+        e_p = envPerc (rand 'β' 0.0001 0.1) (d * rand 'γ' 0.5 4)         e = envGen KR 1 1 0 1 RemoveSynth e_p         g = grainBuf 2 t (1 / l) b r p 2 0 (-1) 512     in synthdef "g" (out 0 (g * e)) -p1 :: P Event-p1 = pbind-    [("dur",pseq [4] inf)-    ,("sdens",pseq [9000,1000,500] inf / 100)-    ,("edens",prand 'a' [pseq [9000,1000,500] 1 / 10,pseq [1] 3] inf)-    ,("rate",pwhite 'b' (-10) 10 inf)-    ,("pos",pwhite 'c' (-10) 10 inf)]+p1 :: P_Bind+p1 =+    [(K_dur,pseq [4] inf)+    ,(K_param "sdens",pseq [9000,1000,500] inf / 100)+    ,(K_param "edens",prand 'δ' [pseq [9000,1000,500] 1 / 10+                                ,pseq [1] 3] inf)+    ,(K_param "rate",pwhite 'ε' (-10) 10 inf)+    ,(K_param "pos",pwhite 'ζ' (-10) 10 inf)] -p2 :: P Event-p2 = pbind-     [("dur",pseq [4/3] inf)-     ,("sdens",pseq [9000,1000,500,25] inf)-     ,("edens",prand 'a' [pseq [9000,1000,500,25] 1,pseq [1] 4] inf)-     ,("rate",pwhite 'b' (-100) 100 inf)-     ,("pos",pwhite 'c' (-10) 10 inf)]+p2 :: P_Bind+p2 =+    [(K_dur,pseq [4/3] inf)+    ,(K_param "sdens",pseq [9000,1000,500,25] inf)+    ,(K_param "edens",prand 'η' [pseq [9000,1000,500,25] 1+                                ,pseq [1] 4] inf)+    ,(K_param "rate",pwhite 'θ' (-100) 100 inf)+    ,(K_param "pos",pwhite 'ι' (-10) 10 inf)]  push_g :: Transport m => m Message push_g = do   let ph u r f = u r f 0       wd u r f = u r f 0 0-      o_set = [lfNoise0 'a',ph sinOsc,ph impulse,wd lfPulse,ph lfSaw]+      o_set = [lfNoise0 'κ',ph sinOsc,ph impulse,wd lfPulse,ph lfSaw]   o <- L.choose o_set   async (d_recv (mk_g o)) @@ -59,9 +60,9 @@ update_g = do   _ <- push_g   dt <- L.choose [1,2,4,8,16,32]-  pauseThread dt+  wait dt  main :: IO () main = do   _ <- forkIO (withSC3 (reset >> init_b >> forever update_g))-  audition ("g",ppar [p1,p2])+  audition (p_with (K_instr,pinstr "g") (ppar (map pbind [p1,p2])))
gr/1-4Qx.hs view
@@ -1,7 +1,7 @@--- http://sccode.org/1-4Qx+-- http://sccode.org/1-4Qx (jar)+ import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw tw tw :: UGen tw =     let l = lfCub
gr/1-Td.hs view
@@ -3,44 +3,42 @@ import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Collection as C {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > audition one_td_u--- > Sound.SC3.UGen.Dot.draw one_td_u one_td_u :: UGen one_td_u =     let base = control IR "base" 2.6-        z1 = C.geom 5 2 2-        z2 = C.geom 4 (base / 2) 2-        z3 = C.geom 5 (base / 4) 2-        z4 = C.geom 5 (1/8) 2+        z1 = C.geom (5::Int) 2 2+        z2 = C.geom (4::Int) (base / 2) 2+        z3 = C.geom (5::Int) (base / 4) 2+        z4 = C.geom (5::Int) (1/8) 2         z5 = [4,6..24]         rand_sym z n = rand z (- n) n-        a = let fr = range 20 10000 (lfdNoise3 'a' KR (base / 4))-            in lfBrownNoise2 'a' AR fr 0.005 0-        b = let x = mouseX KR 0 (lchoose 'a' z1) Linear 0.2-            in gbmanL AR x (rand_sym 'a' 3) (rand_sym 'b' 3) / 3-        c = let y = mouseY KR 0 (lchoose 'b' z1) Linear 0.2-                fr = gbmanL AR y (rand_sym 'c' 3) (rand_sym 'd' 3)+        a = let fr = range 20 10000 (lfdNoise3 'α' KR (base / 4))+            in lfBrownNoise2 'β' AR fr 0.005 0+        b = let x = mouseX KR 0 (lchoose 'γ' z1) Linear 0.2+            in gbmanL AR x (rand_sym 'δ' 3) (rand_sym 'ε' 3) / 3+        c = let y = mouseY KR 0 (lchoose 'ζ' z1) Linear 0.2+                fr = gbmanL AR y (rand_sym 'η' 3) (rand_sym 'θ' 3)             in impulse AR (a2K fr * base / 4) 0 / 4-        d = dust 'j' AR (lchoose 'c' z2) / 4-        e = impulse AR (lchoose 'd' z2) 0 / 4-        g = let n = lfdNoise3 'b' KR base-                fr = range (rand 'e' 62 100) (rand 'f' 110 350) n+        d = dust 'ι' AR (lchoose 'κ' z2) / 4+        e = impulse AR (lchoose 'λ' z2) 0 / 4+        g = let n = lfdNoise3 'μ' KR base+                fr = range (rand 'ν' 62 100) (rand 'ξ' 110 350) n             in lfPulse AR fr 0 0.5 * 0.003-        amp = let n = dxrand 'a' dinf (mce z3)+        amp = let n = dxrand 'ο' dinf (mce z3)                   fr = demand (impulse KR (base / 16) 0) 0 n-                  g_f = lchoose 'e' z4-                  am = a2K (gbmanL AR g_f (rand_sym 'g' 3) (rand_sym 'h' 3))+                  g_f = lchoose 'π' z4+                  am = a2K (gbmanL AR g_f (rand_sym 'ρ' 3) (rand_sym 'σ' 3))               in sinOsc KR fr 0 * 0.1 * am + 0.1-        loc = let mu = rand 'i' 0.2 0.7-                  ad = rand 'j' 0 0.3-              in lfTri KR (base / lchoose 'f' z5) 0 * mu + ad-        klk = let fr = randN 30 'a' 50 10000-                  ph = randN 30 'a' 0 1-                  am = randN 30 'b' 0 1+        loc = let mu = rand 'τ' 0.2 0.7+                  ad = rand 'υ' 0 0.3+              in lfTri KR (base / lchoose 'φ' z5) 0 * mu + ad+        klk = let fr = randN 30 'χ' 50 10000+                  ph = randN 30 'ψ' 0 1+                  am = randN 30 'ω' 0 1                   l = klankSpec_mce fr ph am-              in klank (lchoose 'g' [a,b,c,d,e,g]) 1 0 1 l+              in klank (lchoose 'Α' [a,b,c,d,e,g]) 1 0 1 l         sig = pan2 klk loc amp     in out 0 sig @@ -49,7 +47,7 @@  postprocess_u :: UGen postprocess_u =-    let z = freeVerb (in' 2 AR 0) (rand 'a' 0.33 1) 0.5 0.5+    let z = freeVerb (in' 2 AR 0) (rand 'Β' 0.33 1) 0.5 0.5     in replaceOut 0 (limiter z 1 1e-2)  postprocess_s :: Synthdef
gr/acid-otophilia.hs view
@@ -1,6 +1,6 @@ -- 08091500Acid309 by_otophilia -import Data.List+import Data.List {- base -} import Data.Maybe import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}@@ -22,7 +22,7 @@         env1 = let d = mk_env [110,59,29] [0.005,0.29] [-4,-5]                in midiCPS (envGen AR 1 1 0 1 DoNothing d)         s = let p = lfPulse AR env1 0 0.5 - 0.5-                q = p + mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR)+                q = p + mce2 (whiteNoise 'α' AR) (whiteNoise 'β' AR)                 r = lpf q (env1 * 1.5) * env0             in clip2 (r + sinOsc AR env1 0.5 * env0 * 1.2) 1     in synthdef "kick" (out bus s)@@ -41,7 +41,7 @@                    q = lfPulse AR (env1 * 1.6) 0 0.5 * 0.5 - 0.25                    r = lpf (p + q) (env1 * 1.2) * env0                in r + sinOsc AR env1 0.8 * env0-        noise = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'b' AR) * 0.2+        noise = let p = mce2 (whiteNoise 'γ' AR) (whiteNoise 'δ' AR) * 0.2                     q = hpf p 200 * 2                     r = bpf q 6900 0.6 * 3 + p                 in r * env2@@ -58,10 +58,10 @@                in envGen AR 1 1 0 1 DoNothing d         env2 = let d = mk_env [0,1,0] [0.02,0.3] [0,-4]                in envGen AR 1 1 0 1 RemoveSynth d-        noise1 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env1+        noise1 = let p = mce2 (whiteNoise 'ε' AR) (whiteNoise 'ζ' AR) * env1                      q = hpf p 600                  in bpf q 2000 3-        noise2 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env2+        noise2 = let p = mce2 (whiteNoise 'η' AR) (whiteNoise 'θ' AR) * env2                      q = hpf p 1000                  in bpf q 1200 0.7 * 0.7         s = let p = noise1 + noise2@@ -84,7 +84,7 @@                     p = sum (map f [0..n1-1])                 in bHiPass p 1000 2 * env1         noise = let n2 = 8-                    p = whiteNoise 'a' AR+                    p = whiteNoise 'ι' AR                     f i = let t = 1 / midiCPS (linLin i 0 (n2-1) 40 50 + r2)                           in combN p 0.05 t 0.1                     q = sum (map f [0..n2-1]) * (1/n2) + p@@ -164,7 +164,7 @@  dr_seq_bundle :: Int -> Double -> D -> Bundle dr_seq_bundle fx_id t =-    Bundle (UTCr t) .+    bundle t .     mapMaybe (dr_msg fx_id) .     zip [0..] @@ -190,9 +190,9 @@                  m = if b0 == 1                      then [p,n_set acid_id [("gate",1)]]                      else [p]-             in Bundle (UTCr t) m+             in bundle t m         off = let end_t = t + (dt * b1 * 0.25 * 0.99)-              in Bundle (UTCr end_t) [n_set acid_id [("gate",0)]]+              in bundle end_t [n_set acid_id [("gate",0)]]     in if b1 > 0 then [on,off] else [on]  -- * Runtime@@ -216,7 +216,7 @@  ao_run_seq :: Transport m => (Int,Int) -> [D] -> [B] -> m () ao_run_seq (acid_id,fx_id) d_sq b_sq = do-  init_t <- utcr+  init_t <- time   let dt_seq' = dt_seq 130       t_seq = scanl1 (+) (init_t : dt_seq')       act (t,dt,d,b) =
gr/after-goeyvaerts.hs view
@@ -86,7 +86,7 @@ coinIO :: R -> IO Bool coinIO = getStdRandom . coin --- | 'R.wchoose' at 'R'+-- | 'R.wchoose'. wchoose :: RandomGen g => [a] -> [R] -> g -> (a,g) wchoose = R.wchoose @@ -118,11 +118,11 @@         pan = control KR "pan" 0         s = let p = mix (lfPar AR (freq * mce [0.999,1.001]) 0 * amp)                 l = [10000,2000,4000,1000]-                t = [0.005,rand 'a' 0.009 0.05,0.005]+                t = [0.005,rand 'α' 0.009 0.05,0.005]                 d = Envelope l t (replicate 3 EnvLin) Nothing Nothing             in lpf (distort p) (envGen KR 1 1 0 1 DoNothing d)         e = let l = [0,1,0.4,0.7,0]-                t = [rand 'b' 0.001 0.005,0.005,0.005,sustain]+                t = [rand 'β' 0.001 0.005,0.005,0.005,sustain]                 d = Envelope l t (replicate 4 EnvLin) Nothing Nothing             in envGen KR 1 1 0 1 RemoveSynth d     in out 0 (pan2 (s * e) pan 1)@@ -316,9 +316,9 @@ ag_run_note :: Transport t => t->Int->Int->R->R->R->(P,S,Int)->IO() ag_run_note fd o b a su pn (p,s,z) = do   let mn = ag_note s z o b-  print ('o',o,'b',b)-  print ('p',map (set_prec 2) (M.elems p))-  print ('s',M.elems s)+  print ('γ',o,'δ',b)+  print ('ε',map (set_prec 2) (M.elems p))+  print ('ζ',M.elems s)   send fd (nd_msg (midiCPS (fromIntegral mn)) a su pn)  ag_step :: Transport t => t -> AG -> IO AG@@ -338,7 +338,7 @@                 return (last p',last s')   dt <- ioi_row r   i <- ioi_mult_seq r-  pauseThread (dt * i)+  wait (dt * i)   return (r {probabilities = p',selections = s'})  ag_run :: Transport t => t -> Maybe Int -> IO ()@@ -353,7 +353,7 @@ main :: IO () main = do   i <- randomRIO (256,512)-  withSC3 (\fd -> ag_run fd (Just i) >> pauseThread 9 >> reset fd)+  withSC3 (\fd -> ag_run fd (Just i) >> wait 9 >> reset fd)  {- withSC3 ag_init
gr/aleatoric-quartet-m.hs view
@@ -2,7 +2,6 @@  import Sound.SC3.Monad {- hsc3 -} --- > aleatoric_quartet >>= Sound.SC3.UGen.Dot.draw aleatoric_quartet :: UId m => m UGen aleatoric_quartet = do   let base_mn = control KR "note" 66@@ -10,8 +9,6 @@       density = mouseX KR 0.01 1 Linear 0.1       dmul = recip density * 0.5 * amp       dadd = amp - dmul-      (>=>) f g x = f x >>= g-      chain n f = foldl (>=>) return (replicate n f)       rapf i = do r <- clone 2 (rand 0 0.05)                   return (allpassN i 0.05 r 1)       mk_f = do i0 <- iRand 0 2@@ -27,7 +24,7 @@                         n1 <- lfNoise1 KR 8                         return (n0 * max 0 (n1 * dmul + dadd))                 return (pan2 (combL x 0.02 f 3) r 1)-  g <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+  g <- chainM 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))   return (leakDC g 0.995)  main :: IO ()
gr/alien-froggies.hs view
@@ -5,8 +5,8 @@  alien_froggies :: UGen -> (UGen,UGen) alien_froggies r =-    let r' = fold (r * exp (linRand 'a' (-0.2) 0.2 0)) 1 30-        o = formant AR r' (expRand 'b' 200 3000) (rand 'c' 0 9 * r' + r')+    let r' = fold (r * exp (linRand 'α' (-0.2) 0.2 0)) 1 30+        o = formant AR r' (expRand 'β' 200 3000) (rand 'γ' 0 9 * r' + r')     in (o * 0.05,r')  main :: IO ()
gr/alien-meadow.hs view
@@ -3,7 +3,6 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw alien_meadow alien_meadow :: UGen alien_meadow =     let a = rand 'α' 0 20
gr/ambient1.hs view
@@ -1,11 +1,8 @@ -- http://sccode.org/1-1y -- some edits...... -import Control.Applicative import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  chain :: a -> [a -> a] -> a chain n ff =@@ -58,40 +55,45 @@ audition bass_u -} -pulse_i :: Instrument-pulse_i = InstrumentDef (synthdef "pulse" pulse_u) False+pulse_i :: Instr+pulse_i = Instr_Def (synthdef "pulse" pulse_u) False -drone_i :: Instrument-drone_i = InstrumentDef (synthdef "drone" drone_u) False+drone_i :: Instr+drone_i = Instr_Def (synthdef "drone" drone_u) False -bass_i :: Instrument-bass_i = InstrumentDef (synthdef "bass" bass_u) False+bass_i :: Instr+bass_i = Instr_Def (synthdef "bass" bass_u) False  dur_p :: Fractional a => P a dur_p = prand 'β' [3,0.7,1,0.5] inf -pulse_p :: P Event-pulse_p = pbind [("dur",dur_p * 10)-                ,("midinote",prand 'α' [59,72,76,79,81,88,90] inf)-                ,("amp",pwhite 'β' 0.2 0.27 inf)-                ,("attackTime",pwhite 'γ' 0 7 inf)-                ,("delayTime",0.02)]--drone_p :: P Event-drone_p = pbind [("dur",dur_p)-                ,("midinote",prand 'α' [31,40,45,64,68,69] inf)-                ,("amp",pwhite 'β' 0.03 0.08 inf * 0.7)-                ,("phase",pwrand 'γ' [0,4.7123] [0.5,0.5] inf)]+pulse_p :: P_Bind+pulse_p =+    [(K_instr,pinstr' pulse_i)+    ,(K_dur,dur_p * 10)+    ,(K_midinote,prand 'α' [59,72,76,79,81,88,90] inf)+    ,(K_amp,pwhite 'β' 0.2 0.27 inf)+    ,(K_param "attackTime",pwhite 'γ' 0 7 inf)+    ,(K_param "delayTime",0.02)] -bass_p :: P Event-bass_p = pbind [("dur",dur_p)-               ,("midinote",31)-               ,("amp",0.3)]+drone_p :: P_Bind+drone_p =+    [(K_instr,pinstr' drone_i)+    ,(K_dur,dur_p)+    ,(K_midinote,prand 'α' [31,40,45,64,68,69] inf)+    ,(K_amp,pwhite 'β' 0.03 0.08 inf * 0.7)+    ,(K_param "phase",pwrand 'γ' [0,4.7123] [0.5,0.5] inf)] -ambient1_p :: P Event-ambient1_p = ppar [pinstr (pure pulse_i) pulse_p-                  ,pinstr (pure drone_i) drone_p-                  ,pinstr (pure bass_i) bass_p]+bass_p :: P_Bind+bass_p =+    [(K_instr,pinstr' bass_i)+    ,(K_dur,dur_p)+    ,(K_midinote,31)+    ,(K_amp,0.3)]  main :: IO ()-main = audition ambient1_p+main = do+  let p = ppar [pbind pulse_p+               ,pbind drone_p+               ,pbind bass_p]+  audition p
gr/analog-bubbles.hs view
@@ -2,7 +2,6 @@  import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw (synthdef "analog-bubbles" analog_bubbles) analog_bubbles :: UGen analog_bubbles =   let o = lfSaw KR (mce2 8 7.23) 0 * 3 + 80
gr/arpeggio.hs view
@@ -2,10 +2,8 @@  import Control.Monad {- base -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw analogarpeggio analogarpeggio :: Synthdef analogarpeggio =     let k = control KR@@ -23,49 +21,53 @@     in synthdef "analogarpeggio" (out o (pan2 (e * s * a) p 0.25))  {--audition (analogarpeggio-         ,(pbind [("dur",pwrand 'a' [0.1,0.25] [2/3,1/2] inf)-                 ,("freq",pwhite 'b' 440.0 1600.0 inf)-                 ,("pan",pwhite 'c' (-1.0) 1.0 inf)-                 ,("amp",pwhite 'd' 0.0 0.5 inf)-                 ,("cutoffmult",pwhite 'e' 4.0 5.0 inf)-                 ,("res",pwhite 'f' 0.0 1.0 inf)]))+audition (pbind [(K_instr,psynth analogarpeggio)+                ,(K_dur,pstutter 8 (pwrand 'α' [0.1,0.25] [2/3,1/3] inf))+                ,(K_note,pwrand 'β' [0,2,4,5,7] [0.3,0.1,0.3,0.1,0.2] inf)+                ,(K_octave,pstutter 4 (prand 'γ' [4,5,6,7] inf))+                ,(K_param "pan",pbrown 'δ' (-1.0) 1.0 0.25 inf)+                ,(K_amp,pbrown 'ε' 0.1 0.5 0.15 inf)+                ,(K_param "cutoffmult",pbrown 'ζ' 4.0 5.0 0.1 inf)+                ,(K_param "res",pbrown 'η' 0.0 1.0 0.25 inf)]) -} +-- > pinterp 3 0 9 == toP' [0,3,6]+-- > pseries 6 ((15 - 3) / 6) 3 == toP' [6,8,10] pinterp :: (Fractional a) => Int -> a -> a -> P a pinterp n s e = pseries s ((e - s) / fromIntegral n) n  pinterp' :: (Fractional a) => P Int -> P a -> P a -> P a pinterp' n s e = join (pzipWith3 pinterp n s e) -arpeggio :: [(Key,P Double)]+arpeggio :: P_Bind arpeggio =-    [("dur"-     ,let d = pwrand 'n' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf+    [(K_instr,psynth analogarpeggio)+    ,(K_dur+     ,let d = pwrand 'α' [0.25,0.125,0.0625] [0.4875,0.4875,0.025] inf       in pstutter 32 d)-    ,("cutoffmult"-     ,let n = prand 'a' [8,16,24,32] inf-          s = pwhite 'b' 2.5 5.0 inf-          e = pwhite 'c' 1.5 7.0 inf+    ,(K_param "cutoffmult"+     ,let n = prand 'β' [8,16,24,32] inf+          s = pwhite 'γ' 2.5 5.0 inf+          e = pwhite 'δ' 1.5 7.0 inf       in pinterp' n s e)-    ,("res"-     ,let n = prand 'd' [8,16,24,32] inf-          s = pexprand 'e' 0.02 0.5 inf-          e = pexprand 'f' 0.02 1.0 inf+    ,(K_param "res"+     ,let n = prand 'ε' [8,16,24,32] inf+          s = pexprand 'ζ' 0.02 0.5 inf+          e = pexprand 'η' 0.02 1.0 inf       in pinterp' n s e)-    ,("pan"-     ,let n = prand 'g' [8,16] inf-          s = pwhite 'h' (-1.0) 1.0 inf+    ,(K_param "pan"+     ,let n = prand 'θ' [8,16] inf+          s = pwhite 'ι' (-1.0) 1.0 inf           s' = fmap (< 0) s-          e = pif s' (pwhite 'i' 0.0 1.0 inf) (pwhite 'i' (-1.0) 0.0 inf)+          e = pif s' (pwhite 'κ' 0.0 1.0 inf) (pwhite 'λ' (-1.0) 0.0 inf)       in pinterp' n s e)-    ,("amp"-     ,let n = prand 'j' [8,16,24,32] inf-          s = prand 'k' [0.25,0.05,0.5] inf-          e = prand 'l' [0.25,0.05,0.5,0.01] inf+    ,(K_amp+     ,let n = prand 'μ' [8,16,24,32] inf+          s = prand 'ν' [0.25,0.05,0.5] inf+          e = prand 'ξ' [0.25,0.05,0.5,0.01] inf       in pinterp' n s e)-    ,("note"-     ,let f x = pn (fromList x) 8+    ,(K_note+     ,let f x = pn (toP x) 8       in pseq (map f [[10,6,1,-2]                      ,[-3,1,6,9]                      ,[9,6,1,-3]@@ -74,11 +76,11 @@                      ,[-3,1,6,9]                      ,[8,6,1,-3]                      ,[-6,1,6,8]]) inf)-    ,("octave"+    ,(K_octave      ,pstutter 8 (pseq [7,6,5,4,4,5,6,7] inf))]  main :: IO () main = do   let n = 60/157-      p = pedit "dur" (* n) (pbind arpeggio)-  withSC3 (play (analogarpeggio,p))+      p = pedit K_dur (* n) (pbind arpeggio)+  withSC3 (play p)
gr/babbling-brook-m.hs view
@@ -1,8 +1,8 @@--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)+-- babbling brook (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html  import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< babbling_brook babbling_brook :: UId m => m UGen babbling_brook = do   let b f m a g = do n1 <- brownNoise AR
+ gr/birds-hp.hs view
@@ -0,0 +1,22 @@+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++node :: UId m => m UGen+node = do+  let f = lag (lfSaw AR (7 + #(rand (-1.5) 1.5)) #(rand 0 1) * #(rand 11 15)) 0.1 + #(rand 94 102)+  let a = lfPulse KR (1 / #(rand 12 15.6)) #(rand 0 1) 0.16 * 0.05+  let b = sinOsc AR (midiCPS f) #(rand 0 1) * a+  return (rotate2 b (silent 1) #(rand (-1) 1))++birds :: UId m => m UGen+birds = do+  d <- return . sum =<< sequence (replicate 6 node)+  let apf i = do return (allpassL i 0.07 #(rand 0 0.06) #(rand 0.7 2.0))+  w <- chainM 12 apf d+  return (d * 0.7 + w * 0.3)++main :: IO ()+main = audition . out 0 =<< birds
gr/birds-m.hs view
@@ -1,14 +1,8 @@--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)+-- birds (jmcc)+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html  import Sound.SC3.Monad {- hsc3 -} -composeM :: Monad m => [a -> m a] -> a -> m a-composeM fs i = foldr (=<<) (return i) fs--chainM :: Monad m => Int -> (a -> m a) -> a -> m a-chainM n f = composeM (replicate n f)---- > Sound.SC3.UGen.Dot.draw =<< birds birds :: UId m => m UGen birds = do   let node = do r1 <- rand 94.0 102.0
gr/bit-reduction.hs view
@@ -4,16 +4,16 @@  sample_rate_decrease :: UGen sample_rate_decrease =-  let f = lfNoise2 'a' KR 8-      nh = lfNoise2 'a' KR 3+  let f = lfNoise2 'α' KR 8+      nh = lfNoise2 'β' KR 3       src = blip AR (f * 200 + 300) (nh * 10 + 20)       sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2   in latch src (impulse AR sr 0)  bit_rate_decrease :: UGen bit_rate_decrease =-  let f = lfNoise2 'a' KR 8-      nh = lfNoise2 'a' KR 3+  let f = lfNoise2 'γ' KR 8+      nh = lfNoise2 'δ' KR 3       src = blip AR (f * 200 + 300) (nh * 10 + 20)       sr = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.2       bit_sz = mouseY KR 1 24 Exponential 0.2
gr/bitwise.hs view
@@ -6,7 +6,6 @@ (.%.) :: UGen -> UGen -> UGen (.%.) = modE --- > Sound.SC3.UGen.Dot.draw bitwise_operators bitwise_operators :: UGen bitwise_operators =     let t = pulseCount (impulse AR 8e3 0) 0
gr/black-atlantic-currents.hs view
@@ -2,7 +2,7 @@  import Data.Numbers.Primes {- primes -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.Protect {- hsc3 -} import System.Random {- random -} import System.Random.Shuffle {- random-shuffle -} @@ -33,9 +33,9 @@  bac :: UGen bac =-  let x = let ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR 1)+  let x = let ph = i yn * uclone 'α' 2 (lfdNoise3 'β' KR 1)           in out xn (mceReverse (sinOsc AR (60 * 2) ph))-      y = let ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR 0.3) * 4+      y = let ph = i xn * uclone 'γ' 2 (lfdNoise3 'δ' KR 0.3) * 4           in out yn (sinOsc AR (50 * 2) ph)   in mrg [inFeedback 2 xn,y,x] @@ -45,10 +45,10 @@ bac' :: UGen bac' =   let x = let f = c (nth_prime 23)-              ph = i yn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt 2))+              ph = i yn * uclone 'ε' 2 (lfdNoise3 'ζ' KR (sqrt 2))           in out xn (mceReverse (sinOsc AR f ph))       y = let f = c (chain 3 nth_prime 1)-              ph = i xn * uclone 'a' 2 (lfdNoise3 'a' KR (sqrt pi)) * pi+              ph = i xn * uclone 'η' 2 (lfdNoise3 'θ' KR (sqrt pi)) * pi           in out yn (tanh (sinOsc AR f ph))   in mrg [inFeedback 2 xn,y,x] @@ -67,7 +67,7 @@  bac''' :: UGen bac''' =-  let x = let j = range 1 30 (lfNoise0 's' KR (log 2 / 2))+  let x = let j = range 1 30 (lfNoise0 'ι' KR (log 2 / 2))               f = select j (mce (map (c . nth_prime) [1..30]))               ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"           in out xn (mceReverse (sinOsc AR f ph))@@ -86,9 +86,9 @@  bac'''' :: UGen bac'''' =-  let x = let j = range 1 30 (lfNoise2 's' KR (log 2 / 2))+  let x = let j = range 1 30 (lfNoise2 'κ' KR (log 2 / 2))               ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"-              f' = map (c . nth_prime) (scramble 'p' [1,3..61])+              f' = map (c . nth_prime) (scramble 'λ' [1,3..61])               o = map (\f -> mceReverse (sinOsc AR f ph)) f'           in out xn (mceChannel 1 (selectX j (mce o)))       y = let f = c (chain 3 nth_prime 1)
gr/bohlen-pierce-140.hs view
@@ -1,18 +1,19 @@ -- http://sccode.org/1-W (jj)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  bp140u :: UGen bp140u =     let f z n = n * (3 ** (rand z 0 17 / 13))         e = envGen AR 1 0.3 0 1 RemoveSynth (envPerc 0.01 1)-        o = pmOsc AR (f 'a' (mce2 438 442)) (f 'b' 880) (f 'c' e) 0+        o = pmOsc AR (f 'α' (mce2 438 442)) (f 'β' 880) (f 'γ' e) 0     in o * e --- > Sound.SC3.UGen.Dot.draw bp140u bp140 :: Synthdef bp140 = synthdef "bp140" (out 0 bp140u)  main :: IO ()-main = audition (bp140,pbind [("dur",prand 'a' [1/6,1/3] inf)])+main = do+  let p = pbind [(K_instr,psynth bp140),(K_dur,prand 'δ' [1/6,1/3] inf)]+  audition p
gr/bottle-m.hs view
@@ -8,9 +8,7 @@   freq <- rand 220 880   wn <- whiteNoise AR   pn <- pinkNoise AR-  let (>=>) f g x = f x >>= g-      chain n f = foldl (>=>) return (replicate n f)-      perc = envPerc 0.1 0.6+  let perc = envPerc 0.1 0.6       ex = envGen KR 1 1 0 1 DoNothing perc * wn * 0.02       flute = ringz ex freq 0.3       r = resonz pn (5 + (freq / 2)) 0.1@@ -21,7 +19,7 @@                   l = envLinen' 0.01 3.0 1.0 1 en                   z = (breath + i) * envGen KR 1 1 0 1 RemoveSynth l               in mce2 z z-  f <- chain 2 rapf flute+  f <- chainM 2 rapf flute   return (cls f)  main :: IO ()
gr/bowed-string-m.hs view
@@ -1,6 +1,5 @@ -- bowed string (jmcc) -import Control.Monad {- base -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import Sound.SC3.Monad {- hsc3 -} @@ -13,7 +12,7 @@   r0 <- expRand 0.125 0.5   r1 <- rand 0.7 0.9   r2 <- sequence (replicate 12 (rand 1.0 3.0))-  f <- liftM midiCPS (liftM2 (+) (lchoose scale) (lchoose oct))+  f <- midiCPS `fmap` (lchoose scale .+. lchoose oct)   n1 <- lfNoise1 KR r0   let x = n0 * 0.007 * max 0 (n1 * 0.6 + 0.4)       geom n i z = take n (iterate (* z) i)
+ gr/bs-070705-m.hs view
@@ -0,0 +1,73 @@+-- bs-070705 (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++-- | One step in a bubble sort with specified /greater than/ function.+bubble_p :: (a -> a -> Bool) -> [a] -> [a]+bubble_p gt l =+    case l of+      e:f:g -> if e `gt` f+               then f : bubble_p gt (e : g)+               else e : bubble_p gt (f : g)+      _ -> l++-- | 'bubble_p' '>'.+bubble :: (Ord a) => [a] -> [a]+bubble = bubble_p (>)++-- | One step in /odd even/ sorting, a bubble sort variant.+odd_even :: (Ord a) => [a] -> [a]+odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)++-- | Allocate required buffers to /n/ places.+alloc_data :: Transport m => Int -> m ()+alloc_data n = do+  let alloc m b = async (b_alloc b m 1)+  mapM_ (alloc n) [10, 11, 12]++-- | Simple synthesis renderer, r is the impulse frequency (trigger rate).+play_data :: (UId m,Transport m) => UGen -> m ()+play_data r = do+  let inf_sc = 9e8+  phase <- dseries inf_sc 0 1+  f' <- dbufrd 10 phase Loop+  a' <- dbufrd 11 phase Loop+  p' <- dbufrd 12 phase Loop+  let tr = impulse AR r 0+      f'' = demand tr 0 f'+      a'' = demand tr 0 a'+      p'' = demand tr 0 p'+  play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))++-- | Randomize initial data of /n/ places, /s/ sort for+--   /m/ steps, pause for i seconds between each step.+run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()+run_data s n m i = do+  f <- nrrand n 32 96+  a <- nrrand n 0.25 1+  p <- nrrand n (-1) 1+  let prepare l' = take m (iterate s l')+      f' = prepare f+      a' = prepare a+      p' = prepare p+      l i' (f'', a'', p'') = do+                     send (b_setn 10 [(0, f'')])+                     send (b_setn 11 [(0, a'')])+                     send (b_setn 12 [(0, p'')])+                     pauseThread i'+  mapM_ (l i) (zip3 f' a' p')++-- | Run 'odd_even' for 32 iterations at 1 second intervals.+main :: IO ()+main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)++{--+withSC3 (alloc_data 96)+withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)+withSC3 (play_data 24 >> run_data bubble 96 64 0.75)+withSC3 (play_data 24 >> run_data bubble 96 64 0.25)+withSC3 (play_data 24 >> run_data bubble 96 32 0.25)+withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)+--}
− gr/bs-070705.hs
@@ -1,73 +0,0 @@--- bs-070705 (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}---- | One step in a bubble sort with specified /greater than/ function.-bubble_p :: (a -> a -> Bool) -> [a] -> [a]-bubble_p gt l =-    case l of-      e:f:g -> if e `gt` f-               then f : bubble_p gt (e : g)-               else e : bubble_p gt (f : g)-      _ -> l---- | 'bubble_p' '>'.-bubble :: (Ord a) => [a] -> [a]-bubble = bubble_p (>)---- | One step in /odd even/ sorting, a bubble sort variant.-odd_even :: (Ord a) => [a] -> [a]-odd_even = reverse . bubble_p (<) . reverse . bubble_p (>)---- | Allocate required buffers to /n/ places.-alloc_data :: Transport m => Int -> m ()-alloc_data n = do-  let alloc m b = async (b_alloc b m 1)-  mapM_ (alloc n) [10, 11, 12]---- | Simple synthesis renderer, r is the impulse frequency (trigger rate).-play_data :: (UId m,Transport m) => UGen -> m ()-play_data r = do-  let inf_sc = 9e8-  phase <- dseries inf_sc 0 1-  f' <- dbufrd 10 phase Loop-  a' <- dbufrd 11 phase Loop-  p' <- dbufrd 12 phase Loop-  let tr = impulse AR r 0-      f'' = demand tr 0 f'-      a'' = demand tr 0 a'-      p'' = demand tr 0 p'-  play (out 0 (pan2 (ringz tr (midiCPS f'') 0.2) p'' a''))---- | Randomize initial data of /n/ places, /s/ sort for---   /m/ steps, pause for i seconds between each step.-run_data :: Transport m => ([Double] -> [Double]) -> Int -> Int -> Double -> m ()-run_data s n m i = do-  f <- nrrand n 32 96-  a <- nrrand n 0.25 1-  p <- nrrand n (-1) 1-  let prepare l' = take m (iterate s l')-      f' = prepare f-      a' = prepare a-      p' = prepare p-      l i' (f'', a'', p'') = do-                     send (b_setn 10 [(0, f'')])-                     send (b_setn 11 [(0, a'')])-                     send (b_setn 12 [(0, p'')])-                     pauseThread i'-  mapM_ (l i) (zip3 f' a' p')---- | Run 'odd_even' for 32 iterations at 1 second intervals.-main :: IO ()-main = withSC3 (alloc_data 96 >> play_data 24 >> run_data odd_even 96 32 1)--{---withSC3 (alloc_data 96)-withSC3 (play_data 24 >> run_data odd_even 96 96 0.35)-withSC3 (play_data 24 >> run_data bubble 96 64 0.75)-withSC3 (play_data 24 >> run_data bubble 96 64 0.25)-withSC3 (play_data 24 >> run_data bubble 96 32 0.25)-withSC3 (play_data 24 >> run_data odd_even 96 16 0.25)---}
gr/buffer-display.hs view
@@ -1,14 +1,13 @@ -- http://sccode.org/1-1HR (f0) -import Control.Concurrent-import Data.CG.Minus {- hcg-minus -}-import qualified Foreign.C.Math.Double as M {- cmath -}+import Control.Concurrent {- base -} import qualified Graphics.Rendering.Cairo as C {- cairo -} import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Cairo.Scope.Shell {- hsc3-cairo -}  -- * Type +type R = Double data BD_Type = BD_Line | BD_Warp | BD_Flower data BD = BD {gain :: R              ,theta :: R@@ -35,13 +34,16 @@   mapM_ f (zip [0..] d)   C.stroke -pt_rotate' :: Floating a => a -> a -> a -> (a,a)-pt_rotate' a x y = pt_xy (pt_rotate a (pt x y))+pt_rotate :: Floating a => a -> (a,a) -> (a,a)+pt_rotate a (x,y) =+    let s = sin a+        c = cos a+    in (x * c - y * s,y * c + x * s)  render_warp :: R -> R -> [R] -> C.Render () render_warp n a d = do   C.translate (n/2) (n/2)-  let f (x,y) = let (x',y') = pt_rotate' (y * 2 * pi) (x * a) (y * a)+  let f (x,y) = let (x',y') = pt_rotate (y * 2 * pi) (x * a,y * a)                 in if x == 0 then C.moveTo x' y' else C.lineTo x' y'   mapM_ f (zip [0..] d)   C.stroke@@ -51,8 +53,8 @@   let d0 = d !! 0   C.translate (n/2) (n/2)   C.moveTo (d0 * d0) 0-  let f (x,y) = let a = ((x `M.fmod` n) / n) * 2 * pi + t-                    (x',y') = pt_rotate' a (y * y) (x * y)+  let f (x,y) = let a = ((x `modE` n) / n) * 2 * pi + t+                    (x',y') = pt_rotate a (y * y,x * y)                 in C.lineTo x' y'   mapM_ f (zip [0..] d)   C.stroke@@ -102,7 +104,7 @@         v = varSaw AR x 0 0.5         f = bpf v y 0.5         s = sinOsc AR 0 f-        n = brownNoise 'a' AR * 0.1+        n = brownNoise 'α' AR * 0.1     in out 0 (mce2 s n)  bd_shell :: Int -> Shell BD
+ gr/ccomb-m.hs view
@@ -0,0 +1,21 @@+-- ccomb (rd)++import Sound.SC3.Monad {- hsc3 -}++ccomb :: (Functor m,UId m) => m UGen+ccomb = do+  let rng l r i = linLin i (-1) 1 l r+      lwr = 48+      flwr = midiCPS lwr+      spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)+                   e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)+                   x <- fmap (* e) (whiteNoise AR)+                   m <- lfNoise2 KR 0.1+                   let f = lag (midiCPS n) 0.25+                       m' = rng 1 8 m+                   return (combC x (recip flwr) (recip f) m')+  t <- dust KR (mce2 0.75 0.35)+  return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))++main :: IO ()+main = audition . out 0 =<< ccomb
− gr/ccomb.hs
@@ -1,21 +0,0 @@--- ccomb (rd)--import Sound.SC3.Monad {- hsc3 -}--ccomb :: (Functor m,UId m) => m UGen-ccomb = do-  let rng l r i = linLin i (-1) 1 l r-      lwr = 48-      flwr = midiCPS lwr-      spart t = do n <- fmap (rng lwr 72.0) (lfNoise2 KR 0.1)-                   e <- fmap (decay2 t 0.01) (tRand 0.05 0.75 t)-                   x <- fmap (* e) (whiteNoise AR)-                   m <- lfNoise2 KR 0.1-                   let f = lag (midiCPS n) 0.25-                       m' = rng 1 8 m-                   return (combC x (recip flwr) (recip f) m')-  t <- dust KR (mce2 0.75 0.35)-  return . (* 0.1) . sum =<< sequence (replicate 12 (spart t))--main :: IO ()-main = audition . out 0 =<< ccomb
+ gr/cds-070701-m.hs view
@@ -0,0 +1,111 @@+-- | cds-070701 (rd)+--+-- The 'source' data are breakpoint sets normalized over the time+-- interval (0,1).  There are a fixed number of 'locations' per cycle.+-- The data sets are sampled at these locations and loaded into+-- buffers.  The buffers are read using dbufrd.  One of the data sets+-- gives the time interval to step forward.++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++-- | Real+type R = Double++-- | Point+type P = (R,R)++-- | Data set+type D = [P]++-- | Points that bracket a time.+pts :: D -> R -> (P,P)+pts d n =+    case d of+      p0:p1:r -> let (t,_) = p1+                 in if n <= t+                    then (p0,p1)+                    else pts (p1:r) n+      _ -> error "pts"++-- | Linear interpolation.+--+-- > lerp 0.5 (0,0) (1,1) == (0.5,0.5)+-- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)+lerp :: R -> P -> P -> P+lerp n (t0,d0) (t1,d1) =+  let n' = (n - t0) / (t1 - t0)+      f i = d0 + ((d1 - d0) * i)+  in (n,f n')++-- | Linear interpolating lookup.+lerpd :: D -> R -> P+lerpd t n =+  let (p0,p1) = pts t n+  in lerp n p0 p1++-- | Linearize in time (ie. /t/ is in equal steps).+rescale :: D -> Int -> D+rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]++-- | Allocate data buffers for linearized envelopes.+alloc_data :: Int -> IO ()+alloc_data n = do+  let alloc b = async (b_alloc b n 1)+  withSC3 (mapM_ alloc [10,11,12,13])++-- | Data can be loaded while nodes are running, ie. edited online.+load_data :: Int -> (D,D,D,D) -> IO ()+load_data n (t,f,a,p) = do+  let setup d = map snd (rescale d n)+  withSC3 (do send (b_setn 10 [(0,setup t)])+              send (b_setn 11 [(0,setup f)])+              send (b_setn 12 [(0,setup a)])+              send (b_setn 13 [(0,setup p)]))++-- | Simple synthesis of data.+play_data :: IO ()+play_data = do+  let inf_sc = 9e8+  phase <- dseries inf_sc 0 1+  t' <- dbufrd 10 phase Loop+  f' <- dbufrd 11 phase Loop+  a' <- dbufrd 12 phase Loop+  p' <- dbufrd 13 phase Loop+  let tr = tDuty AR t' 0 DoNothing 1 0+      f'' = demand tr 0 f'+      a'' = demand tr 0 a'+      p'' = demand tr 0 p'+  audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))++-- | Sample data sets, load using 'load_data'.+data_1 :: (D,D,D,D)+data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]+         ,[(0,200),(0.35,8900),(1,200)]+         ,[(0,0.35),(0.65,0.65),(1,0.35)]+         ,[(0,-1),(0.3,1),(1,-1)])++data_2 :: (D,D,D,D)+data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]+         ,[(0,100),(0.5,13900),(1,200)]+         ,[(0,0.75),(0.5,0.25),(1,0.75)]+         ,[(0,1),(0.5,-1),(1,1)])++data_3 :: (D,D,D,D)+data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]+         ,[(0,770),(0.5,77),(1,770)]+         ,[(0,0.9),(0.5,0.6),(1,0.9)]+         ,[(0,0),(0.5,1),(1,0)])++-- | Switch between data sets at /dd/ at time interval /t/.+data_switch :: [(D,D,D,D)] -> R -> IO ()+data_switch dd t =+    let w d = load_data 64 d >> pauseThread t+    in mapM_ w dd >> data_switch dd t++main :: IO ()+main = do+  alloc_data 64+  load_data 64 data_1+  play_data+  data_switch [data_1,data_2,data_3] 4
− gr/cds-070701.hs
@@ -1,111 +0,0 @@--- | cds-070701 (rd)------ The 'source' data are breakpoint sets normalized over the time--- interval (0,1).  There are a fixed number of 'locations' per cycle.--- The data sets are sampled at these locations and loaded into--- buffers.  The buffers are read using dbufrd.  One of the data sets--- gives the time interval to step forward.--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}---- | Real-type R = Double---- | Point-type P = (R,R)---- | Data set-type D = [P]---- | Points that bracket a time.-pts :: D -> R -> (P,P)-pts d n =-    case d of-      p0:p1:r -> let (t,_) = p1-                 in if n <= t-                    then (p0,p1)-                    else pts (p1:r) n-      _ -> error "pts"---- | Linear interpolation.------ > lerp 0.5 (0,0) (1,1) == (0.5,0.5)--- > lerp 0.25 (0,0) (0.5,1) == (0.25,0.5)-lerp :: R -> P -> P -> P-lerp n (t0,d0) (t1,d1) =-  let n' = (n - t0) / (t1 - t0)-      f i = d0 + ((d1 - d0) * i)-  in (n,f n')---- | Linear interpolating lookup.-lerpd :: D -> R -> P-lerpd t n =-  let (p0,p1) = pts t n-  in lerp n p0 p1---- | Linearize in time (ie. /t/ is in equal steps).-rescale :: D -> Int -> D-rescale t n = map (lerpd t) [0,1 / fromIntegral n .. 1]---- | Allocate data buffers for linearized envelopes.-alloc_data :: Int -> IO ()-alloc_data n = do-  let alloc b = async (b_alloc b n 1)-  withSC3 (mapM_ alloc [10,11,12,13])---- | Data can be loaded while nodes are running, ie. edited online.-load_data :: Int -> (D,D,D,D) -> IO ()-load_data n (t,f,a,p) = do-  let setup d = map snd (rescale d n)-  withSC3 (do send (b_setn 10 [(0,setup t)])-              send (b_setn 11 [(0,setup f)])-              send (b_setn 12 [(0,setup a)])-              send (b_setn 13 [(0,setup p)]))---- | Simple synthesis of data.-play_data :: IO ()-play_data = do-  let inf_sc = 9e8-  phase <- dseries inf_sc 0 1-  t' <- dbufrd 10 phase Loop-  f' <- dbufrd 11 phase Loop-  a' <- dbufrd 12 phase Loop-  p' <- dbufrd 13 phase Loop-  let tr = tDuty AR t' 0 DoNothing 1 0-      f'' = demand tr 0 f'-      a'' = demand tr 0 a'-      p'' = demand tr 0 p'-  audition (out 0 (pan2 (ringz tr f'' 0.2) p'' a''))---- | Sample data sets, load using 'load_data'.-data_1 :: (D,D,D,D)-data_1 = ([(0,0.1),(0.65,0.025),(1,0.1)]-         ,[(0,200),(0.35,8900),(1,200)]-         ,[(0,0.35),(0.65,0.65),(1,0.35)]-         ,[(0,-1),(0.3,1),(1,-1)])--data_2 :: (D,D,D,D)-data_2 = ([(0,0.1),(0.5,0.005),(1,0.1)]-         ,[(0,100),(0.5,13900),(1,200)]-         ,[(0,0.75),(0.5,0.25),(1,0.75)]-         ,[(0,1),(0.5,-1),(1,1)])--data_3 :: (D,D,D,D)-data_3 = ([(0,0.01),(0.5,0.25),(1,0.01)]-         ,[(0,770),(0.5,77),(1,770)]-         ,[(0,0.9),(0.5,0.6),(1,0.9)]-         ,[(0,0),(0.5,1),(1,0)])---- | Switch between data sets at /dd/ at time interval /t/.-data_switch :: [(D,D,D,D)] -> R -> IO ()-data_switch dd t =-    let w d = load_data 64 d >> pauseThread t-    in mapM_ w dd >> data_switch dd t--main :: IO ()-main = do-  alloc_data 64-  load_data 64 data_1-  play_data-  data_switch [data_1,data_2,data_3] 4
+ gr/chain-saw-m.hs view
@@ -0,0 +1,46 @@+-- chain saw (jrhb)++-- this graph generates long chains of unit generators and may require+-- increasing the stack limit of the haskell run time system++import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++coinIf :: Double -> a -> a -> IO a+coinIf n a b = do+  r <- R.coin n+  return (if r then a else b)++exprange :: UGen -> UGen -> UGen -> UGen+exprange s = linExp s (-1) 1++mceProduct :: UGen -> UGen+mceProduct = mceEdit (\l -> [product l])++clipu :: BinaryOp a => a -> a+clipu s = clip2 s 1++dup :: UGen -> UGen+dup a = mce2 a a++chain_saw :: IO UGen+chain_saw = do+  let f s1 = do xr <- fmap dup (expRand 0.1 2)+                n1 <- lfNoise1 KR xr+                n2 <- lfNoise1 KR xr+                n3 <- lfNoise1 KR xr+                f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)+                s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)+                let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)+                    u1 = lfSaw KR f2 0+                    u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1+                return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)+      inp = lfSaw KR (0.2 * mce2 1 1.1) 0+      b_freq = mce [70, 800, 9000, 5242]+  ff <- chainM 8 f inp+  let c_saw = mceProduct (saw AR (exprange ff 6 11000))+      b_saw = dup (mix (bpf c_saw b_freq 0.2))+  return (b_saw * 0.3)++main :: IO ()+main = audition . out 0 =<< chain_saw
− gr/chain-saw.hs
@@ -1,50 +0,0 @@--- chain saw (jrhb)---- this graph generates long chains of unit generators and may require--- increasing the stack limit of the haskell run time system--import Control.Monad {- base -}-import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}-import Sound.SC3.Monad {- hsc3 -}--coinIf :: Double -> a -> a -> IO a-coinIf n a b = do-  r <- R.coin n-  return (if r then a else b)--exprange :: UGen -> UGen -> UGen -> UGen-exprange s = linExp s (-1) 1--chain :: Monad m => Int -> (b -> m b) -> b -> m b-chain n fn = foldr (<=<) return (replicate n fn)--mceProduct :: UGen -> UGen-mceProduct = mceEdit (\l -> [product l])--clipu :: BinaryOp a => a -> a-clipu s = clip2 s 1--dup :: UGen -> UGen-dup a = mce2 a a--chain_saw :: IO UGen-chain_saw = do-  let f s1 = do xr <- fmap dup (expRand 0.1 2)-                n1 <- lfNoise1 KR xr-                n2 <- lfNoise1 KR xr-                n3 <- lfNoise1 KR xr-                f1 <- coinIf 0.6 (exprange n1 0.01 10) (exprange n2 10 50)-                s2 <- coinIf 0.5 (1 - s1) (mceReverse s1)-                let f2 = linExp s1 (-1) 1 f1 (f1 * exprange n3 2 10)-                    u1 = lfSaw KR f2 0-                    u2 = lfSaw KR (f1 * 0.1) 0 * 0.1 + 1-                return . clipu =<< coinIf 0.5 (u1 * s2) (u1 * u2)-      inp = lfSaw KR (0.2 * mce2 1 1.1) 0-      b_freq = mce [70, 800, 9000, 5242]-  ff <- chain 8 f inp-  let c_saw = mceProduct (saw AR (exprange ff 6 11000))-      b_saw = dup (mix (bpf c_saw b_freq 0.2))-  return (b_saw * 0.3)--main :: IO ()-main = audition . out 0 =<< chain_saw
gr/choip.hs view
@@ -2,7 +2,7 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}  xl :: ID a => a -> a -> UGen -> UGen -> UGen -> UGen@@ -14,16 +14,16 @@ choip :: UGen choip =     let t = 12-        i = impulse AR (xl 'a' 'b' 1 30 t) 0-        f = xl 'c' 'd' 600 8000 t+        i = impulse AR (xl 'α' 'β' 1 30 t) 0+        f = xl 'γ' 'δ' 600 8000 t         a = sinOsc AR (decay2 i 0.05 0.5 * (-0.9 * f) + f) 0-        l = line KR (r2 'e' 1) (r2 'f' 1) t DoNothing-    in pan2 (decay2 (i * xl 'g' 'h' 0.01 0.5 t) 0.01 0.2 * a) l 1+        l = line KR (r2 'ε' 1) (r2 'ζ' 1) t DoNothing+    in pan2 (decay2 (i * xl 'η' 'θ' 0.01 0.5 t) 0.01 0.2 * a) l 1  choip_pp :: UGen -> UGen choip_pp =-    let f x = allpassN x 0.1 (randN 2 'a' 0 0.05) 4-    in useq 'a' 4 f+    let f x = allpassN x 0.1 (randN 2 'ι' 0 0.05) 4+    in useq 'κ' 4 f  main :: IO () main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp
+ gr/clustered-sines-m.hs view
@@ -0,0 +1,18 @@+-- clustered sines (jmcc)++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > fmap synthstat (clone 2 cs)+cs :: UId m => m UGen+cs = do+  let n = 80+  f1 <- rand 100 1100+  let f2 = 4 * f1+  y <- replicateM n (f1 +. rand 0 f2)+  let sp = klangSpec y (map (f1 /) y) (replicate n 0)+  return (klang AR 1 0 sp * (0.3 / fromIntegral n))++main :: IO ()+main = xfadeTextureU (4,4,maxBound) =<< clone 2 cs
gr/clustered-sines.hs view
@@ -4,7 +4,7 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw cs+-- > synthstat cs cs :: UGen cs =     let n = 80
gr/contamination-zone.hs view
@@ -2,27 +2,27 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}  cz :: UGen cz =     let f = expRand 'α' 800 8000-        p = let e = lfNoise1 'α' KR (rand 'α' 0 3) * 0.0008 + 0.0022-            in pinkNoise 'α' AR * e-        s = sinOsc KR (linRand 'α' 0 1 0) 0 * (0.7 * f) + f-        k = let sp = klankSpec_mce (randN 4 'α' 50 2000)+        p = let e = lfNoise1 'β' KR (rand 'γ' 0 3) * 0.0008 + 0.0022+            in pinkNoise 'δ' AR * e+        s = sinOsc KR (linRand 'ε' 0 1 0) 0 * (0.7 * f) + f+        k = let sp = klankSpec_mce (randN 4 'ζ' 50 2000)                                    (mce [1,1,1,1])-                                   (randN 4 'α' 0.2 4)-            in abs (klank p 1 0 1 sp) * choose 'α' (mce2 (-1) 1)+                                   (randN 4 'η' 0.2 4)+            in abs (klank p 1 0 1 sp) * choose 'θ' (mce2 (-1) 1)         r = rlpf k s 0.1-        a = lfPulse KR (linRand 'α' 0 150 0) 0 (rand 'α' 0.2 0.4)-    in pan2 r (lfNoise1 'α' KR (rand 'α' 0 1)) a+        a = lfPulse KR (linRand 'ι' 0 150 0) 0 (rand 'κ' 0.2 0.4)+    in pan2 r (lfNoise1 'λ' KR (rand 'μ' 0 1)) a  cz_pp :: UGen -> UGen cz_pp =-    let f x = allpassN x 0.04 (randN 2 'α' 0 0.04) 16-    in useq 'α' 6 f+    let f x = allpassN x 0.04 (randN 2 'ν' 0 0.04) 16+    in useq 'ξ' 6 f  main :: IO () main = overlapTextureU_pp (3,8,4,maxBound) cz 2 cz_pp
gr/coolant.hs view
@@ -4,14 +4,13 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw coolant coolant :: UGen coolant =     let p = 20-        s = onePole (uclone 'α' p (brownNoise 'α' AR) * 0.0015) 0.95+        s = onePole (uclone 'α' p (brownNoise 'β' AR) * 0.0015) 0.95         n = replicate p 1-        sp = mce [klankSpec (uclone' 'α' p (rand 'α' 40 2400)) n n-                 ,klankSpec (uclone' 'β' p (rand 'β' 40 2400)) n n]+        sp = mce [klankSpec (uclone' 'γ' p (rand 'δ' 40 2400)) n n+                 ,klankSpec (uclone' 'ε' p (rand 'ζ' 40 2400)) n n]     in klank s 1 0 1 (mceTranspose sp)  main :: IO ()
gr/crotale-sine.hs view
@@ -1,7 +1,7 @@--- crotale-sine+-- crotale-sine (rd)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  crotale_sine :: UGen crotale_sine =@@ -22,12 +22,16 @@             in pan2 o (sinOsc KR r2 r3) e'     in sum (zipWith (fn m) cf ca) * 0.1 +pattern :: P_Bind+pattern =+    [(K_param "m",pwhitei 'α' 0 12 inf)+    ,(K_dur,pxrand 'β' [1,2,3] inf)+    ,(K_sustain,6)]+ main :: IO () main = do   let s = synthdef "crotale-sine" (out 0 crotale_sine)-  audition (s,pbind [("m",pwhitei 'a' 0 12 inf)-                    ,("dur",pxrand 'b' [1,2,3] inf)-                    ,("sustain",6)])+  audition (p_with (K_instr,psynth s) (pbind pattern))  crotale_data :: ([Double],[Double]) crotale_data =
gr/crotale.hs view
@@ -6,13 +6,13 @@ crotale =     let (cf,ca,cd) = crotale_data         ps = mce [-12,-5,0,2,4,5,7,12]-        n = pinkNoise 'a' AR-        t = dust 'a' KR 3-        fs = select (tIRand 'a' 0 7 t) ps-        g = tRand 'a' 0 1 t-        fo = tRand 'b' 0 1 t-        ds = tRand 'c' 2 7 t-        p = tRand 'd' (-1) 1 t+        n = pinkNoise 'α' AR+        t = dust 'β' KR 3+        fs = select (tIRand 'γ' 0 7 t) ps+        g = tRand 'δ' 0 1 t+        fo = tRand 'ε' 0 1 t+        ds = tRand 'ζ' 2 7 t+        p = tRand 'η' (-1) 1 t         s = decay2 t 0.06 0.01 * n * g         ks = klankSpec' cf ca (map recip cd)         k = dynKlank s (midiRatio fs) fo ds ks
+ gr/cut-outs-m.hs view
@@ -0,0 +1,19 @@+-- cut-outs (rd)++import Sound.SC3.Monad {- hsc3 -}++cut_outs :: (Functor m,UId m) => m UGen+cut_outs = do+  let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)+      x = mouseX KR 0.005 0.12 Exponential 0.1+      y = mouseY KR 0.01 0.52 Exponential 0.1+      n = do n1 <- lfNoise0 KR 2+             n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)+             n3 <- tExpRand (mce2 500 900) 1600 t+             return (ringz n2 n3 x)+  s <- fmap sum (sequence (replicate 3 n))+  b <- tRand 0 1 =<< dust KR 8+  return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])++main :: IO ()+main = audition . out 0 =<< cut_outs
− gr/cut-outs.hs
@@ -1,20 +0,0 @@--- cut-outs (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< cut_outs-cut_outs :: (Functor m,UId m) => m UGen-cut_outs = do-  let t = impulse AR 22 0 * (sinOsc KR 0.5 0 + 1)-      x = mouseX KR 0.005 0.12 Exponential 0.1-      y = mouseY KR 0.01 0.52 Exponential 0.1-      n = do n1 <- lfNoise0 KR 2-             n2 <- coinGate (0.05 + n1 + y * 0.4 + t * 0.5) (t * 0.5)-             n3 <- tExpRand (mce2 500 900) 1600 t-             return (ringz n2 n3 x)-  s <- fmap sum (sequence (replicate 3 n))-  b <- tRand 0 1 =<< dust KR 8-  return (mrg [clip2 s (in' 1 KR 0) * 0.25,out 0 b])--main :: IO ()-main = audition . out 0 =<< cut_outs
gr/cymbalism-accelerando.hs view
@@ -13,9 +13,9 @@                 f = map (\e -> rand e f1 (f1 + f2)) (enumFromN n 15)                 rt = map (\e -> rand e 1 5) (enumFromN n 15)           in klankSpec f (replicate 15 1) rt-      z = mce2 (y 'a') (y 'A')-      w = whiteNoise 'α' AR * 0.02-      tf = xLine KR (linRand 'β' 0.5 4.5 0) (rand 'γ' 0.5 35.5) 12 DoNothing+      z = mce2 (y 'α') (y 'β')+      w = whiteNoise 'γ' AR * 0.02+      tf = xLine KR (linRand 'δ' 0.5 4.5 0) (rand 'ε' 0.5 35.5) 12 DoNothing       t = impulse AR tf 0       s = decay t 0.004 * w   in klank s 1 0 1 (mceTranspose z)
+ gr/dark-sea-horns-hp.hs view
@@ -0,0 +1,17 @@+-- http://sccode.org/1-j#c51 (jl)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.UGen.External.RDU.Monad {- sc3-rdu -}++dark_sea_horns :: UId m => m UGen+dark_sea_horns = do+  let n = lfNoise1+  let x = localIn 2 AR+  let a = tanh (sinOsc AR 65 (x * #(n AR 0.1) * 3) * #(n AR 3) * 6)+  let f i = do return (allpassN i 0.3 #(randN 2 0.1 0.3) 5)+  let o = tanh #(chainM 9 f a)+  return (mrg2 o (localOut o))++main :: IO ()+main = audition . out 0 =<< dark_sea_horns
gr/dark-sea-horns.hs view
@@ -2,16 +2,15 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw dark_sea_horns dark_sea_horns :: UGen dark_sea_horns =     let n = lfNoise1         x = localIn 2 AR-        a = tanh (sinOsc AR 65 (x * n 'a' AR 0.1 * 3) * (n 'a' AR 3 * 6))-        f i = allpassN i 0.3 (randN 2 'a' 0.1 0.3) 5-        o = tanh (useq 'a' 9 f a)+        a = tanh (sinOsc AR 65 (x * n 'α' AR 0.1 * 3) * n 'β' AR 3 * 6)+        f i = allpassN i 0.3 (randN 2 'γ' 0.1 0.3) 5+        o = tanh (useq 'δ' 9 f a)     in mrg2 o (localOut o)  main :: IO ()
+ gr/data-space-hp.hs view
@@ -0,0 +1,23 @@+-- data space (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++data_space :: UId m => m UGen+data_space = do+    let r = rand 0+    let p0 = lfPulse KR #(r 200) 0 #(r 1)+    p1 <- lfPulse KR #(r 40) 0 #(r 1) *. r 8000 .+. r 2000+    let p2 = lfPulse KR #(r 20) 0 #(r 1)+    p3 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+    let p4 = lfPulse KR #(r 20) 0 #(r 1)+    p5 <- lfPulse KR #(r 4) 0 #(r 1) *. r 8000 .+. r 2000+    let f = p0 * p1 + p2 * p3 + p4 * p5+    dt <- rand 0.15 0.35+    let o = lfPulse AR f 0 0.5 * 0.04+    l <- lfNoise0 KR #(r 3) .* 0.8+    return (combL (pan2 o l 1) dt dt 3)++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) =<< data_space
gr/data-space.hs view
@@ -3,22 +3,19 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} -randz :: ID a => a -> UGen -> UGen-randz e = rand e 0- data_space :: UGen data_space =-    let r = randz-        p0 = lfPulse KR (r 'a' 200) 0 (r 'b' 1)-        p1 = lfPulse KR (r 'c' 40) 0 (r 'd' 1) * r 'e' 8000 + r 'f' 2000-        p2 = lfPulse KR (r 'g' 20) 0 (r 'h' 1)-        p3 = lfPulse KR (r 'i' 4) 0 (r 'j' 1) * r 'k' 8000 + r 'l'  2000-        p4 = lfPulse KR (r 'm' 20) 0 (r 'n' 1)-        p5 = lfPulse KR (r 'o' 4) 0 (r 'p' 1) * r 'q' 8000 + r 'r'  2000+    let r e = rand e 0+        p0 = lfPulse KR (r 'α' 200) 0 (r 'β' 1)+        p1 = lfPulse KR (r 'γ' 40) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+        p2 = lfPulse KR (r 'η' 20) 0 (r 'θ' 1)+        p3 = lfPulse KR (r 'ι' 4) 0 (r 'κ' 1) * r 'λ' 8000 + r 'μ'  2000+        p4 = lfPulse KR (r 'ν' 20) 0 (r 'ξ' 1)+        p5 = lfPulse KR (r 'ο' 4) 0 (r 'π' 1) * r 'ρ' 8000 + r 'σ'  2000         f = p0 * p1 + p2 * p3 + p4 * p5-        dt = rand 's' 0.15 0.35+        dt = rand 'τ' 0.15 0.35         o = lfPulse AR f 0 0.5 * 0.04-        l = lfNoise0 't' KR (r 'u' 3) * 0.8+        l = lfNoise0 'υ' KR (r 'φ' 3) * 0.8     in combL (pan2 o l 1) dt dt 3  main :: IO ()
gr/deep-sea.hs view
@@ -1,14 +1,13 @@ -- deep sea (jrhb)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  rng :: UGen -> UGen -> UGen -> UGen rng s l r =     let m = (r - l) * 0.5     in mulAdd s m (m + l) --- > Sound.SC3.UGen.Dot.draw deep_sea deep_sea :: UGen deep_sea =     let amp = 1@@ -30,4 +29,5 @@ main :: IO () main = do   let s = synthdef "deep-sea" (out 0 deep_sea)-  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2] inf)])+      p = pbind [(K_instr,psynth s),(K_dur,pxrand 'ζ' [0.25,0.5,1,2] inf)]+  audition p
gr/deep-trip.hs view
@@ -1,19 +1,19 @@ -- deep trip (jmcc)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID  {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}  deep_trip :: UGen deep_trip =-    let f = midiCPS (lfNoise1 'a' KR (rand 'a' 0 0.3) * 60 + 70)-        a'' = sinOsc KR (rand 'b' 0 40) 0 * 0.1-        a' = max 0 (lfNoise1 'c' KR (rand 'd' 0 8) * a'')-        a = lfNoise2 'e' AR (f * rand 'f' 0 0.5) * a'+    let f = midiCPS (lfNoise1 'α' KR (rand 'β' 0 0.3) * 60 + 70)+        a'' = sinOsc KR (rand 'γ' 0 40) 0 * 0.1+        a' = max 0 (lfNoise1 'δ' KR (rand 'ε' 0 8) * a'')+        a = lfNoise2 'ζ' AR (f * rand 'η' 0 0.5) * a'         z = sinOsc AR f 0 * a-        s = pan2 z (lfNoise1 'g' KR (rand 'h' 0 5)) 1-        c0 = combN s 0.5 (randN 2 'i' 0.3 0.5) 20-        c1 = combN s 0.5 (randN 2 'j' 0.3 0.5) 20+        s = pan2 z (lfNoise1 'θ' KR (rand 'ι' 0 5)) 1+        c0 = combN s 0.5 (randN 2 'κ' 0.3 0.5) 20+        c1 = combN s 0.5 (randN 2 'λ' 0.3 0.5) 20         in s + c0 + c1  main :: IO ()
gr/default.hs view
@@ -1,24 +1,17 @@ -- default (jmcc) +import Data.Default {- data-default -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -} -defaultInstrument :: Synthdef-defaultInstrument =-    let f = control KR "freq" 440-        a = control KR "amp" 0.1-        p = control KR "pan" 0-        g = control KR "gate" 1-        e = linen g 0.01 0.7 0.3 RemoveSynth-        f3 = mce [f,f + rand 'a' (-0.4) 0,f + rand 'b' 0 0.4]-        l = xLine KR (rand 'c' 4000 5000) (rand 'd' 2500 3200) 1 DoNothing-        z = lpf (mix (varSaw AR f3 0 0.3 * 0.3)) l * e-    in synthdef "default" (out 0 (pan2 z p a))+pattern :: P_Bind+pattern =+    [(K_instr,psynth def)+    ,(K_note,pxrand 'α' [0,1,5,7,9] inf)+    ,(K_octave,prand 'β' [3,4,5,6] inf)+    ,(K_dur,pwrand 'γ' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)+    ,(K_amp,pbrown 'δ' 0.01 0.2 0.01 inf)+    ,(K_param "pan",pbrown 'ε' (-1) 1 0.25 inf)]  main :: IO ()-main = audition (defaultInstrument-                ,pbind [("note",pxrand 'a' [0,1,5,7,9] inf)-                       ,("octave",prand 'b' [3,4,5,6] inf)-                       ,("dur",pwrand 'c' [0.1,0.2,0.4] [0.5,0.4,0.1] inf)-                       ,("amp",pbrown 'd' 0.01 0.2 0.01 inf)-                       ,("pan",pbrown 'e' (-1) 1 0.25 inf)])+main = audition (pbind pattern)
gr/demanding-studies.hs view
@@ -4,9 +4,9 @@  demanding_studies :: UGen demanding_studies =-  let s1 = drand 'a' dinf (mce [72, 75, 79, 82])-      s2 = drand 'b' 1 (mce [82, 84, 86])-      s3 = dseq 'c' dinf (mce [72, 75, 79, s2])+  let s1 = drand 'α' dinf (mce [72, 75, 79, 82])+      s2 = drand 'β' 1 (mce [82, 84, 86])+      s3 = dseq 'γ' dinf (mce [72, 75, 79, s2])       x = mouseX KR 5 13 Linear 0.2       tr = impulse KR x 0       f = demand tr 0 (mce [midiCPS (s1 - 12), midiCPS s3])
+ gr/dial-history-m.hs view
@@ -0,0 +1,35 @@+-- dial history (jrhb)++import Data.List {- base -}+import Sound.SC3.Monad {- hsc3 -}++rng :: UGen -> UGen -> UGen -> UGen+rng s = linLin s 0 1++dial_history :: UId m => m UGen+dial_history = do+  let mfv = [[697,770,852,941],[1209,1336,1477,1633]]+      numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]+      mce_r = mce . map mce+  n <- dwhite dinf 7 12+  w <- dwhite 1 2 7+  b <- dbrown n 0.1 0.2 0.01+  rate <- dseq dinf (mce2 w b)+  q <- dseq dinf (mce [1..10])+  g1 <- grayNoise AR+  g2 <- grayNoise AR+  d <- lfdNoise3 KR 0.5+  let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09+      pat = latch tr tr+      x = mouseX KR 0 1 Linear 0.2+      h = hasher (pat * x)+      which = trunc (rng h 0 (constant (length numbers))) 1+      both = select which (mce_r numbers)+      dial = select both (mce_r (transpose mfv))+      sig = sinOsc AR dial 0 * 0.05 * tr+      dsig = delayN sig 0.2 (rng d 0 0.01)+      hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000+  return (dsig + hiss)++main :: IO ()+main = audition . out 0 =<< dial_history
− gr/dial-history.hs
@@ -1,36 +0,0 @@--- dial history (jrhb)--import Data.List {- base -}-import Sound.SC3.Monad {- hsc3 -}--rng :: UGen -> UGen -> UGen -> UGen-rng s = linLin s 0 1---- > Sound.SC3.UGen.Dot.draw =<< dial_history-dial_history :: UId m => m UGen-dial_history = do-  let mfv = [[697,770,852,941],[1209,1336,1477,1633]]-      numbers = [3,1] : [[a,b] | a <- [0..2],b <- [0..2]]-      mce_r = mce . map mce-  n <- dwhite dinf 7 12-  w <- dwhite 1 2 7-  b <- dbrown n 0.1 0.2 0.01-  rate <- dseq dinf (mce2 w b)-  q <- dseq dinf (mce [1..10])-  g1 <- grayNoise AR-  g2 <- grayNoise AR-  d <- lfdNoise3 KR 0.5-  let tr = trig (tDuty KR rate 0 DoNothing q 1) 0.09-      pat = latch tr tr-      x = mouseX KR 0 1 Linear 0.2-      h = hasher (pat * x)-      which = trunc (rng h 0 (constant (length numbers))) 1-      both = select which (mce_r numbers)-      dial = select both (mce_r (transpose mfv))-      sig = sinOsc AR dial 0 * 0.05 * tr-      dsig = delayN sig 0.2 (rng d 0 0.01)-      hiss = g1 * 0.01 + hpf (g2 * 0.02) 3000-  return (dsig + hiss)--main :: IO ()-main = audition . out 0 =<< dial_history
+ gr/diffraction-m.hs view
@@ -0,0 +1,28 @@+-- diffraction (rd)++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}++diffraction ::(Functor m,UId m) => m UGen+diffraction = do+  let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1+                 y = mouseY KR 120 400 Exponential 0.1+             f <- fmap (* mce2 32 64) (lfNoise0 KR 4)+             w <- fmap (* x) (lfNoise0 KR 32)+             z <- fmap (* 0.1) (lfNoise0 KR 2)+             m <- lfNoise0 KR 6+             let s = pulse AR f w+             return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)+      q = do n <- lfNoise0 KR 128+             s <- p+             return (combN s 0.2 (n * 0.1 + 0.1) 3)+      r = let x = mouseX KR 0.75 1.25 Exponential 0.1+              y = mouseY KR 0.25 1 Exponential 0.1+              f _ = do fr <- fmap (* x) (rand 50 59)+                       am <- fmap (* y) (rand 0.04 0.16)+                       return (sinOsc AR fr 0 * am)+          in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)+  fmap sum (sequence [p,q,r])++main :: IO ()+main = audition . out 0 =<< diffraction
− gr/diffraction.hs
@@ -1,28 +0,0 @@--- diffraction (rd)--import Control.Monad {- base -}-import Sound.SC3.Monad {- hsc3 -}--diffraction ::(Functor m, UId m) => m UGen-diffraction = do-  let p = do let x = mouseX KR 0.001 0.02 Exponential 0.1-                 y = mouseY KR 120 400 Exponential 0.1-             f <- fmap (* mce2 32 64) (lfNoise0 KR 4)-             w <- fmap (* x) (lfNoise0 KR 32)-             z <- fmap (* 0.1) (lfNoise0 KR 2)-             m <- lfNoise0 KR 6-             let s = pulse AR f w-             return (resonz s (y + z) (m * 0.4 + 0.8) * 0.5)-      q = do n <- lfNoise0 KR 128-             s <- p-             return (combN s 0.2 (n * 0.1 + 0.1) 3)-      r = let x = mouseX KR 0.75 1.25 Exponential 0.1-              y = mouseY KR 0.25 1 Exponential 0.1-              f _ = do fr <- fmap (* x) (rand 50 59)-                       am <- fmap (* y) (rand 0.04 0.16)-                       return (sinOsc AR fr 0 * am)-          in liftM2 mce2 (mixFillM 16 f) (mixFillM 12 f)-  return.sum =<< sequence [p, q, r]--main :: IO ()-main = audition . out 0 =<< diffraction
gr/discretion-m.hs view
@@ -2,7 +2,6 @@  import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< discretion discretion :: UId m => m UGen discretion = do   let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)
gr/discretion.hs view
@@ -2,21 +2,20 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw discretion discretion :: UGen discretion =   let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)-      part = let f1 = randN 2 'a' 50 55-                 f2 = randN 2 'c' 50 65-                 f3 = randN 2 'e' 50 55-                 a = randN 2 'g' 0.01 0.035+      part = let f1 = randN 2 'α' 50 55+                 f2 = randN 2 'β' 50 65+                 f3 = randN 2 'γ' 50 55+                 a = randN 2 'δ' 0.01 0.035                  t = 21                  f_ = mkls [(0,f1),(0.33,f2),(1,f3)] t                  a_ = mkls [(0,0),(0.33,a),(1,0)] t              in (saw AR f_ * a_)-  in mix (uclone 'a' 8 part)+  in mix (uclone 'ε' 8 part)  main :: IO () main = audition (out 0 discretion)
gr/doppler.hs view
@@ -26,5 +26,5 @@ main = do   let s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3   withSC3 (do play (out 0 (doppler (line_x 10 100 6) s))-              pauseThread 8+              wait 8               play (out 0 (doppler (ellipse 10 75 12) s)))
gr/drummer.hs view
@@ -1,4 +1,4 @@--- drummer (thor magnusson)+-- drummer (tm)  import Sound.SC3.ID {- hsc3 -} 
gr/e-lamell-p.hs view
@@ -1,8 +1,7 @@ -- e-lamell-p (rd)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  e_lamell :: UGen e_lamell =@@ -12,32 +11,32 @@         d = ctl "d" 0.1         n = ctl "n" 12         l = ctl "l" 0-        t = lchoose 'a' [1,32]+        t = lchoose 'α' [1,32]         h = line AR n t d DoNothing         s = blip AR f h         e_d = envPerc 0.005 d         e = envGen AR 1 a 0 1 RemoveSynth e_d     in pan2 s l e -pattern :: P Event-pattern =-  let p = pbind [("note",prand 'a' [0,2,5,7] inf)-                ,("octave",pwrand 'b' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)-                ,("dur",0.1)-                ,("d",pwhite 'c' 0.01 0.8 inf)-                ,("amp",pwhite 'd' 0 0.75 inf)-                ,("n",pwhite 'e' 2 36 inf)-                ,("l",pwhite 'f' (-1) 1 inf)]-      q = pbind [("note",prand 'g' [0] inf)-                ,("octave",prand 'h' [2,3] inf)-                ,("dur",0.1)-                ,("d",pwhite 'i' 0.01 1.2 inf)-                ,("amp",prand 'j' [0,0.25,0.5,1] inf)-                ,("n",pwhite 'k' 2 36 inf)-                ,("l",pwhite 'l' (-1) 1 inf)]-  in ppar [p,q]+patterns :: [P_Bind]+patterns =+    let i = psynth (synthdef "e-lamell" (out 0 e_lamell))+    in [[(K_instr,i)+        ,(K_note,prand 'β' [0,2,5,7] inf)+        ,(K_octave,pwrand 'γ' [2,3,4,5] [0.2,0.35,0.35,0.1] inf)+        ,(K_dur,0.1)+        ,(K_param "d",pwhite 'δ' 0.01 0.8 inf)+        ,(K_amp,pwhite 'ε' 0 0.75 inf)+        ,(K_param "n",pwhite 'ζ' 2 36 inf)+        ,(K_param "l",pwhite 'η' (-1) 1 inf)]+       ,[(K_instr,i)+        ,(K_note,prand 'θ' [0] inf)+        ,(K_octave,prand 'ι' [2,3] inf)+        ,(K_dur,0.1)+        ,(K_param "d",pwhite 'κ' 0.01 1.2 inf)+        ,(K_amp,prand 'λ' [0,0.25,0.5,1] inf)+        ,(K_param "n",pwhite 'μ' 2 36 inf)+        ,(K_param "l",pwhite 'ν' (-1) 1 inf)]]  main :: IO ()-main =-    let s = synthdef "e-lamell" (out 0 e_lamell)-    in audition (s,pattern)+main = audition (ppar (map pbind patterns))
gr/e-lamell.hs view
@@ -13,16 +13,13 @@         d = ctl "d" 0.1         l = ctl "l" 0         a = ctl "a" 1-        t = lchoose 'a' [1,32]+        t = lchoose 'α' [1,32]         h = line AR n t d DoNothing         s = blip AR f h         e_d = envPerc 0.005 d         e = envGen AR 1 a 0 1 RemoveSynth e_d     in pan2 s l e -now :: Time-now = NTPi 1- sendSynth :: Transport m => String -> UGen -> m Message sendSynth n u = async (d_recv (synthdef n u)) @@ -54,8 +51,8 @@           a <- R.choose [0,0.25,0.5,1]           l <- R.rrand (-1) 1           return (mk_s_new f n d a l)-  sendBundle (Bundle now [p,q])-  pauseThread 0.1+  sendBundle (bundle immediately [p,q])+  wait 0.1  run :: Transport m => m () run = do
gr/early-space-music-lp-side-two.hs view
@@ -3,35 +3,35 @@ import Sound.SC3.ID {- hsc3 -} import qualified Sound.SC3.Lang.Random.Gen as R {- hsc3-lang -} import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import qualified System.Random as R {- random -}  m1 :: UGen m1 =-    let a = rand 'a' 0 20-        b = rand 'b' 0 5000-        c = rand 'c' 0 20-        p = rand 'd' (-1) 1+    let a = rand 'α' 0 20+        b = rand 'β' 0 5000+        c = rand 'γ' 0 20+        p = rand 'δ' (-1) 1     in pan2 (sinOsc AR (sinOsc AR a 0 * 0.1 * b + b) 0 * sinOsc KR c 0 * 0.08 + 0.08) p 1  m2 :: UGen m2 =-    let a0 = rand 'a' 40 240-        a1 = a0 + rand 'b' (-1) 1+    let a0 = rand 'ε' 40 240+        a1 = a0 + rand 'ζ' (-1) 1         a = mce2 a0 a1-        b = expRand 'c' 50 2400-        c = mce2 (a0 + rand 'd' (-1) 1) (a1 + rand 'e' (-1) 1)-    in sinOsc AR (sinOsc AR a 0 * rand 'f' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025+        b = expRand 'η' 50 2400+        c = mce2 (a0 + rand 'θ' (-1) 1) (a1 + rand 'ι' (-1) 1)+    in sinOsc AR (sinOsc AR a 0 * rand 'κ' 0 1 * b + b) 0 * sinOsc KR c 0 * 0.025 + 0.025  m3 :: UGen m3 =-    let f = midiCPS (rand 'a' 60 100)-    in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1+    let f = midiCPS (rand 'λ' 60 100)+    in fSinOsc AR (mce2 f (f + 0.2)) 0 * lfNoise2 'μ' KR (f * mce2 0.15 0.16) * 0.1  -- audition (out 0 m4) m4 :: UGen m4 =-    let a = lfPulse KR (expRand 'a' 0.2 1.2) 0 (rand 'a' 0.1 0.2)+    let a = lfPulse KR (expRand 'ν' 0.2 1.2) 0 (rand 'ξ' 0.1 0.2)         o i = let r = let (p,q) = mce2c (expRandN 2 i 0.1 20)                       in xLine KR p q 25.6 DoNothing                   f = midiCPS (rand i 24 96)@@ -43,26 +43,25 @@ -- audition (out 0 (m6 * 0.5)) m6 :: UGen m6 =-    let f = midiCPS (lfNoise1 'a' KR (rand 'b' 0 0.3) * 60 + 70)-        a0 = lfNoise2 'c' AR (f * rand 'd' 0 0.5)-        a1 = max 0 (lfNoise1 'e' KR (rand 'f' 0 8) * sinOsc KR (rand 'g' 0 40) 0 * 0.1)+    let f = midiCPS (lfNoise1 'ο' KR (rand 'π' 0 0.3) * 60 + 70)+        a0 = lfNoise2 'ρ' AR (f * rand 'σ' 0 0.5)+        a1 = max 0 (lfNoise1 'τ' KR (rand 'υ' 0 8) * sinOsc KR (rand 'φ' 0 40) 0 * 0.1)         z = sinOsc AR f 0 * a0 * a1-    in pan2 z (lfNoise1 'h' KR (rand 'i' 0 5)) 1+    in pan2 z (lfNoise1 'χ' KR (rand 'ψ' 0 5)) 1  enumFromN :: Enum a => a -> Int -> [Int] enumFromN e i = let j = fromEnum e in [j .. j + i]  -- audition (out 0 m7)--- Sound.SC3.UGen.Dot.draw m7 m7 :: UGen m7 =     let p = 15         k = let y z = let fr = mceChannels (expRandN p z 100 6000)                           rt = mceChannels (randN p z 2 6)                       in klankSpec fr (replicate p 1) rt-            in mce2 (y 'α') (y 'β')-        f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing-        t = lfPulse AR f 0 (rand 'γ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'δ' KR (rand 'ε' 0 8))+            in mce2 (y 'ω') (y 'Α')+        f = xLine KR (expRand 'Β' 40 300) (expRand 'Γ' 40 300) 12 DoNothing+        t = lfPulse AR f 0 (rand 'Δ' 0.1 0.9) * 0.002 * max 0 (lfNoise2 'Ε' KR (rand 'Ζ' 0 8))     in distort (klank t 1 0 1 (mceTranspose k)) * 0.3  esmlp2 :: R.RandomGen g => g -> (UGen, g)@@ -72,7 +71,7 @@ esmlp2_pp :: UGen -> UGen esmlp2_pp i =     let c z = combN i 0.3 (mce2 (rand z 0.1 0.3) (rand z 0.12 0.32)) 8-    in sum (map c ['a'..'e']) * 0.3+    in sum (map c ['Η'..'Θ']) * 0.3  main :: IO () main = do
gr/eggcrate.hs view
@@ -11,9 +11,9 @@       sinu = sin . (* pi)       eggcrate_f u v = cosu u * sinu v       p = mce [64,72,96,128,256,6400,7200,8400,9600]-      (x,y) = atp (`brownNoise` KR) ('a','b')-      t = dust 'c' KR 2.4-      (f0,f1) = atp (\z -> tChoose z t p) ('a','b')+      (x,y) = atp (`brownNoise` KR) ('α','β')+      t = dust 'γ' KR 2.4+      (f0,f1) = atp (\z -> tChoose z t p) ('δ','ε')       f = linLin (eggcrate_f x y) (-1) 1 f0 f1       a = linLin x (-1) 1 0 0.1  in pan2 (mix (sinOsc AR f 0)) y a
+ gr/f-lets-m.hs view
@@ -0,0 +1,30 @@+-- f-lets (rd)++import Sound.SC3.Monad {- hsc3 -}++f_lets :: (Functor m,UId m) => m UGen+f_lets = do+  let f_let t g j n f = do+           let pd = pulseDivider t j 0+           r0 <- tIRand (mce2 2 1) n pd+           r1 <- tRand 0.01 0.04 pd+           r2 <- tRand 0.05 0.10 pd+           return (formlet pd (f * r0) r1 r2 * g)+      mk_n t = do+           r0 <- tRand 0 1 t+           r1 <- tRand 0 1 t+           r2 <- tRand 0 1 t+           r3 <- tRand 0 1 t+           r4 <- coinGate 0.2 t+           sequence [f_let t 0.15 2 9 (mce2 200 400)+                    ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))+                    ,f_let t 0.05 4 5 (mce2 25 50)+                    ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))+                    ,let lr = fmap (* latch r4 t)+                     in lr (f_let t 0.5 1 16 (mce2 300 600))]+      tr = impulse AR 24 0+  n <- lfNoise0 KR 2+  return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr++main :: IO ()+main = audition . out 0 =<< f_lets
− gr/f-lets.hs
@@ -1,30 +0,0 @@--- f-lets (rd)--import Sound.SC3.Monad {- hsc3 -}--f_lets :: (Functor m,UId m) => m UGen-f_lets = do-  let f_let t g j n f = do-           let pd = pulseDivider t j 0-           r0 <- tIRand (mce2 2 1) n pd-           r1 <- tRand 0.01 0.04 pd-           r2 <- tRand 0.05 0.10 pd-           return (formlet pd (f * r0) r1 r2 * g)-      mk_n t = do-           r0 <- tRand 0 1 t-           r1 <- tRand 0 1 t-           r2 <- tRand 0 1 t-           r3 <- tRand 0 1 t-           r4 <- coinGate 0.2 t-           sequence [f_let t 0.15 2 9 (mce2 200 400)-                    ,f_let t 0.25 2 9 (mce2 (200 + r0) (400 + r1))-                    ,f_let t 0.05 4 5 (mce2 25 50)-                    ,f_let t 0.15 4 5 (mce2 (25 + r2) (50 + r3))-                    ,let lr = fmap (* latch r4 t)-                     in lr (f_let t 0.5 1 16 (mce2 300 600))]-      tr = impulse AR 24 0-  n <- lfNoise0 KR 2-  return . (* (n * 0.25 + 0.25)) . sum =<< mk_n tr--main :: IO ()-main = audition . out 0 =<< f_lets
gr/f0-tw0028.hs view
@@ -12,7 +12,7 @@ f0_0028 :: UGen f0_0028 =     let n = map ((* 99) . (`mod` 8)) (sc3_fib 16)-        p = dseq 'a' dinf (dshuf 'a' 8 (mce (map fromInteger n)))+        p = dseq 'α' dinf (dshuf 'β' 8 (mce (map fromInteger n)))         q = combN (duty AR (1/8) 0 DoNothing p) 4 4 16         o = lfTri AR q 0 / 4         f = lfTri KR (1/16) 0 * 2e3 + 3e3
gr/f0-tw0045.hs view
gr/f0-tw0077.hs view
@@ -2,7 +2,6 @@  import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw f0_tw0077 f0_tw0077 :: UGen f0_tw0077 =     let a = sinOsc AR
gr/f0-tw0084.hs view
@@ -2,7 +2,6 @@  import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw f0_tw0084 f0_tw0084 :: UGen f0_tw0084 =     let a = saw AR
gr/fb-090531.hs view
@@ -1,8 +1,8 @@ -- fb-090531 (rd) +import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}-import Control.Monad import Sound.SC3.Lang.Random.IO {- hsc3-lang -}  fb_090531 :: UGen
gr/fbl-fbf.hs view
@@ -16,7 +16,7 @@  fbl_fbf :: UGen fbl_fbf =-  let n = brownNoise 'a' AR+  let n = brownNoise 'α' AR       e = decay (impulse AR 0.3 0) 0.1 * n * 0.2       c = 4       e' = replicate c e
+ gr/feedr-m.hs view
@@ -0,0 +1,36 @@+-- feedr (rd)+-- warning: input/output feedback loop++import Sound.OSC.FD {- hosc -}+import Sound.SC3.Monad.FD {- hsc3 -}++delayWr :: UGen -> UGen -> UGen+delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing++tap :: Int -> UGen -> UGen -> UGen+tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing++type State = (UGen,Double)++feedr :: (UId m) => State -> Int -> m UGen+feedr (ch,dl) n = do+  t <- sequence (replicate n (rand 0.0 (constant dl)))+  g <- sequence (replicate n (rand 0.4 1.0))+  f <- sequence (replicate n (rand 0.9 0.95))+  let d = zipWith (\p q -> tap 2 10 p * q) t g+      x = mouseX KR 0.02 1.0 Exponential 0.1+      s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1+      i = soundIn ch+      r = i + sum (map (* x) (zipWith (*) d f))+  return (mrg [out 0 s, delayWr 10 r])++run :: Transport t => State -> t -> IO ()+run (ch,dl) fd = do+  nf <- fmap (* dl) (serverSampleRateActual fd)+  send fd (b_alloc 10 (floor nf) 2)+  audition =<< feedr (ch,dl) 18++main :: IO ()+main = withSC3 (run (mce2 4 5,6))++-- withSC3 (\fd -> send fd (b_zero 10))
− gr/feedr.hs
@@ -1,36 +0,0 @@--- feedr (rd)--- warning: input/output feedback loop--import Sound.OSC.FD {- hosc -}-import Sound.SC3.Monad.FD {- hsc3 -}--delayWr :: UGen -> UGen -> UGen-delayWr b = recordBuf AR b 0 1 0 1 Loop 0 DoNothing--tap :: Int -> UGen -> UGen -> UGen-tap nc b dt = playBuf nc AR b 1 0 (dt * (- sampleRate)) Loop DoNothing--type State = (UGen,Double)--feedr :: (UId m) => State -> Int -> m UGen-feedr (ch,dl) n = do-  t <- sequence (replicate n (rand 0.0 (constant dl)))-  g <- sequence (replicate n (rand 0.4 1.0))-  f <- sequence (replicate n (rand 0.9 0.95))-  let d = zipWith (\p q -> tap 2 10 p * q) t g-      x = mouseX KR 0.02 1.0 Exponential 0.1-      s = clip2 (leakDC (hpf (sum d) 20) 0.995) 1-      i = soundIn ch-      r = i + sum (map (* x) (zipWith (*) d f))-  return (mrg [out 0 s, delayWr 10 r])--run :: Transport t => State -> t -> IO ()-run (ch,dl) fd = do-  nf <- fmap (* dl) (serverSampleRateActual fd)-  send fd (b_alloc 10 (floor nf) 2)-  audition =<< feedr (ch,dl) 18--main :: IO ()-main = withSC3 (run (mce2 4 5,6))---- withSC3 (\fd -> send fd (b_zero 10))
gr/fm-iter.hs view
@@ -1,15 +1,18 @@ -- fm-iter (rd)  import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} +-- audition (out 0 fm_iter) fm_iter :: UGen fm_iter =-  let t0 = impulse AR (recip 0.30) 0+  let f0 = recip (0.3 + whiteNoise 'α' AR * 0.01)+      t0 = impulse AR f0 0       t1 = tDelay t0 0.15       t = mce2 t0 t1-      k = tRand 'a' 56 57 t-      i = tRand 'a' 40 480 t-      j = tRand 'a' (-1) 1 t+      k = tRand 'β' 56 57 t+      i = tRand 'γ' 40 480 t+      j = tRand 'δ' (-1) 1 t       c = midiCPS k       m = midiCPS (k + 1 + j)       s = envPerc 0.01 0.9@@ -18,4 +21,4 @@   in sinOsc AR f 0 * e  main :: IO ()-main = audition (out 0 fm_iter)+main = overlapTextureU (3,3,6,maxBound) fm_iter
+ gr/fm-kltr-m.hs view
@@ -0,0 +1,59 @@+-- fm-kltr (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++fm_kltr :: UId m => m UGen+fm_kltr = do+  r1 <- U.rand 0.975 1.025+  r2 <- U.rand 0.5 1.5+  r3 <- U.rand 0.975 1.025+  r4 <- U.rand 0.75 1.25+  let o = control IR "out" 0+      a = control KR "amp" 0.1+      d = control KR "dur" 0.1+      f = control KR "freq" 400.0+      i = control KR "index" 40.0+      p = control KR "pan" 0.0+      f2 = control KR "freq2" 600+      ep = envPerc 0.01 d+      e = envGen AR 1 a 0 1 RemoveSynth ep+      so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0+      xl = xLine KR f2 (f2 * r3) d DoNothing+      m = so * line KR i (f * r2) d DoNothing + xl+      l = line KR p (p * r4) d DoNothing+  return (out o (pan2 (sinOsc AR m 0) l e))++type R = Double++fm :: Transport m => R -> R -> R -> R -> R -> m ()+fm f ff a d i = do+  r1 <- rrand (-1) 1+  r2 <- rrand (-1) 1+  let p = [("freq", midiCPS f)+          ,("freq2", midiCPS ff + r1)+          ,("amp", a)+          ,("dur", d)+          ,("index", i)+          ,("pan", r2)]+  send (s_new "fm_kltr" (-1) AddToTail 1 p)++nd :: Transport m => m ()+nd = do+  ff <- rrand 48 96+  a <- rrand 0.1 0.4+  d <- rrand 1.2 7.2+  i <- rrand 240 1480+  t <- rrand 0.15 1.25+  fm 53 ff a d i+  wait t++run :: (Transport m,UId m) => m ()+run = do+  u <- fm_kltr+  _ <- async (d_recv (synthdef "fm_kltr" u))+  sequence_ (replicate 32 nd)++main :: IO ()+main = withSC3 run
gr/fm-kltr-p.hs view
@@ -1,14 +1,14 @@ -- fm-kltr-p (rd)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  fm_kltr :: UGen fm_kltr =-  let r1 = rand 'a' 0.975 1.025-      r2 = rand 'b' 0.5 1.5-      r3 = rand 'c' 0.975 1.025-      r4 = rand 'd' 0.75 1.25+  let r1 = rand 'α' 0.975 1.025+      r2 = rand 'β' 0.5 1.5+      r3 = rand 'γ' 0.975 1.025+      r4 = rand 'δ' 0.75 1.25       o = control IR "out" 0       a = control KR "amp" 0.1       dt = control KR "sustain" 0.1@@ -24,15 +24,17 @@       l = line KR p (p * r4) dt DoNothing   in out o (pan2 (sinOsc AR m 0) l e) +pattern :: P_Bind+pattern =+    [(K_instr,psynth (synthdef "fm_kltr" fm_kltr))+    ,(K_freq,fmap midiCPS 53)+    ,(K_param "freq2",fmap midiCPS (pwhitei 'ε' 48 96 inf ++                                    pwhite 'ζ' (-1) 1 inf))+    ,(K_amp,pwhite 'η' 0.1 0.4 inf)+    ,(K_dur,pwhite 'θ' 0.15 1.25 inf)+    ,(K_sustain,pwhite 'ι' 5 6 inf)+    ,(K_param "index",pwhite 'κ' 240 1480 inf)+    ,(K_param "pan", pwhite 'λ' (-1) 1 inf)]+ main :: IO ()-main = do-  let s = synthdef "fm_kltr" fm_kltr-      p = pbind [("freq",fmap midiCPS 53)-                ,("freq2",fmap midiCPS (pwhitei 'a' 48 96 inf +-                                        pwhite 'b' (-1) 1 inf))-                ,("amp",pwhite 'c' 0.1 0.4 inf)-                ,("dur",pwhite 'd' 0.15 1.25 inf)-                ,("sustain",pwhite 'e' 5 6 inf)-                ,("index",pwhite 'f' 240 1480 inf)-                ,("pan", pwhite 'g' (-1) 1 inf)]-  audition (s,p)+main = audition (pbind pattern)
− gr/fm-kltr.hs
@@ -1,59 +0,0 @@--- fm-kltr (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad as U {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--fm_kltr :: UId m => m UGen-fm_kltr = do-  r1 <- U.rand 0.975 1.025-  r2 <- U.rand 0.5 1.5-  r3 <- U.rand 0.975 1.025-  r4 <- U.rand 0.75 1.25-  let o = control IR "out" 0-      a = control KR "amp" 0.1-      d = control KR "dur" 0.1-      f = control KR "freq" 400.0-      i = control KR "index" 40.0-      p = control KR "pan" 0.0-      f2 = control KR "freq2" 600-      ep = envPerc 0.01 d-      e = envGen AR 1 a 0 1 RemoveSynth ep-      so = sinOsc AR (xLine KR f (f * r1) d DoNothing) 0-      xl = xLine KR f2 (f2 * r3) d DoNothing-      m = so * line KR i (f * r2) d DoNothing + xl-      l = line KR p (p * r4) d DoNothing-  return (out o (pan2 (sinOsc AR m 0) l e))--type R = Double--fm :: Transport m => R -> R -> R -> R -> R -> m ()-fm f ff a d i = do-  r1 <- rrand (-1) 1-  r2 <- rrand (-1) 1-  let p = [("freq", midiCPS f)-          ,("freq2", midiCPS ff + r1)-          ,("amp", a)-          ,("dur", d)-          ,("index", i)-          ,("pan", r2)]-  send (s_new "fm_kltr" (-1) AddToTail 1 p)--nd :: Transport m => m ()-nd = do-  ff <- rrand 48 96-  a <- rrand 0.1 0.4-  d <- rrand 1.2 7.2-  i <- rrand 240 1480-  t <- rrand 0.15 1.25-  fm 53 ff a d i-  pauseThread t--run :: (Transport m,UId m) => m ()-run = do-  u <- fm_kltr-  _ <- async (d_recv (synthdef "fm_kltr" u))-  sequence_ (replicate 32 nd)--main :: IO ()-main = withSC3 run
gr/for-ann.hs view
@@ -1,4 +1,4 @@--- http://musicweb.ucsd.edu/~tre/wordpress/?p=131+-- http://musicweb.ucsd.edu/~tre/wordpress/?p=131 (rd)  import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}@@ -31,10 +31,9 @@  score :: Double -> NRT score z =-    let at t = Bundle (NTPr t)-        i = [d_recv (for_ann z),g_new [(1,AddToTail,0)]]-        s t = at t [s_new "for-ann" (-1) AddToTail 1 []]-    in NRT (at 0 i : map s [0,2.8 .. 669.2])+    let i = [d_recv (for_ann z),g_new [(1,AddToTail,0)]]+        s t = bundle t [s_new "for-ann" (-1) AddToTail 1 []]+    in NRT (bundle 0 i : map s [0,2.8 .. 669.2])  main :: IO () main = audition (score (sixth "just"))
+ gr/forest-sounds-m.hs view
@@ -0,0 +1,16 @@+-- sc-users, 2007-04-06 (pj) [paul jones]++import Sound.SC3.Monad {- hsc3 -}++insects :: UId m => m UGen+insects = do+  n1 <- brownNoise AR+  n2 <- lfNoise2 KR 50+  let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000+  return (bpf n1 o 0.001 * 10)++forest_sounds :: UId m => m UGen+forest_sounds = clone 2 insects++main :: IO ()+main = audition . out 0 =<< forest_sounds
− gr/forest-sounds.hs
@@ -1,16 +0,0 @@--- sc-users, 2007-04-06 (paul jones)--import Sound.SC3.Monad {- hsc3 -}--insects :: UId m => m UGen-insects = do-  n1 <- brownNoise AR-  n2 <- lfNoise2 KR 50-  let o = sinOsc KR (n2 * 50 + 50) 0 * 100 + 2000-  return (bpf n1 o 0.001 * 10)--forest_sounds :: UId m => m UGen-forest_sounds = clone 2 insects--main :: IO ()-main = audition . out 0 =<< forest_sounds
+ gr/fwalk-m.hs view
@@ -0,0 +1,39 @@+-- fwalk (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++fwalk' :: UId m => UGen -> m UGen+fwalk' r = do+  t <- dust KR 3+  r1 <- tIRand 0 6 t+  r2 <- tRand (-0.0001) 0.0001 t+  let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop+      f' = f + r2+      o1 = blip AR (midiCPS (r + f)) 12+      o2 = blip AR (midiCPS (r + f')) 12+  return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)++fwalk :: UId m => m UGen+fwalk = do+  f1 <- fwalk' 24+  f2 <- fwalk' 36+  return (f1 + f2)++run :: (UId m,Transport m) => m ()+run = do+  let n = [40,47,42,40,50+          ,43,35,43,40,47+          ,45,35,43,42,59+          ,48,40,47,52,45]+      m = [40,40,42,47,50+          ,35,43,43,40,45+          ,42,35,48,47,43+          ,40,59,45,47,52]+  _ <- async (b_alloc_setn1 0 0 n)+  _ <- async (b_alloc_setn1 1 0 m)+  f <- fwalk+  play (out 0 f)++main :: IO ()+main = withSC3 run
− gr/fwalk.hs
@@ -1,39 +0,0 @@--- fwalk (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--fwalk' :: UId m => UGen -> m UGen-fwalk' r = do-  t <- dust KR 3-  r1 <- tIRand 0 6 t-  r2 <- tRand (-0.0001) 0.0001 t-  let f = bufRdL 1 KR (mce2 0 1) r1 NoLoop-      f' = f + r2-      o1 = blip AR (midiCPS (r + f)) 12-      o2 = blip AR (midiCPS (r + f')) 12-  return ((o1 + o2) * decay2 t 0.3 1.2 * 0.1)--fwalk :: UId m => m UGen-fwalk = do-  f1 <- fwalk' 24-  f2 <- fwalk' 36-  return (f1 + f2)--run :: (UId m,Transport m) => m ()-run = do-  let n = [40,47,42,40,50-          ,43,35,43,40,47-          ,45,35,43,42,59-          ,48,40,47,52,45]-      m = [40,40,42,47,50-          ,35,43,43,40,45-          ,42,35,48,47,43-          ,40,59,45,47,52]-  _ <- async (b_alloc_setn1 0 0 n)-  _ <- async (b_alloc_setn1 1 0 m)-  f <- fwalk-  play (out 0 f)--main :: IO ()-main = withSC3 run
+ gr/h-chatter-m.hs view
@@ -0,0 +1,29 @@+-- h-chatter (rd)++import Sound.SC3.Monad {- hsc3 -}++h_chatter :: UId m => m UGen+h_chatter = do+  let mma m a = return . (+ a)  . (* m)+      h0 = do n <- mma 5 5 =<< lfNoise0 KR 1+              a <- mma 0.2 1.2 =<< lfNoise2 KR n+              b <- mma 0.15 0.15 =<< lfNoise2 KR n+              let f = 40+                  h = henonN AR (mce2 f (f * 0.5)) a b 0 0+              return (saw AR (h * 3200 + 1600) * 0.35)+      h1 = do n0 <- lfNoise0 KR 32+              n1 <- lfNoise0 KR 2+              let a = mouseX KR 1.2 1.4 Linear 0.1+                  b = mouseY KR 0.2 0.3 Linear 0.1+                  wrp i = linLin i (-1) 1+                  h = wrp n0 1 32+                  p = wrp n1 2400 3200+                  l = wrp n1 (-0.75) 0.75+                  g = wrp n1 0.55 0.85+                  f = 40+                  o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h+              return (pan2 o l g * 0.35)+  h0 .+. h1++main :: IO ()+main = audition . out 0 =<< h_chatter
− gr/h-chatter.hs
@@ -1,33 +0,0 @@--- h-chatter (rd)--import Control.Monad {- base -}-import Sound.SC3.Monad {- hsc3 -}--wrp :: UGen -> UGen -> UGen -> UGen-wrp i = linLin i (-1) 1---- > Sound.SC3.UGen.Dot.draw =<< h_chatter-h_chatter :: UId m => m UGen-h_chatter = do-  let mma m a = return . (+ a)  . (* m)-      h0 = do n <- mma 5 5 =<< lfNoise0 KR 1-              a <- mma 0.2 1.2 =<< lfNoise2 KR n-              b <- mma 0.15 0.15 =<< lfNoise2 KR n-              let f = 40-                  h = henonN AR (mce2 f (f * 0.5)) a b 0 0-              return (saw AR (h * 3200 + 1600) * 0.35)-      h1 = do n0 <- lfNoise0 KR 32-              n1 <- lfNoise0 KR 2-              let a = mouseX KR 1.2 1.4 Linear 0.1-                  b = mouseY KR 0.2 0.3 Linear 0.1-                  h = wrp n0 1 32-                  p = wrp n1 2400 3200-                  l = wrp n1 (-0.75) 0.75-                  g = wrp n1 0.55 0.85-                  f = 40-                  o = blip AR (wrp (henonN AR f a b 0 0) p (p * 2)) h-              return (pan2 o l g * 0.35)-  liftM2 (+) h0 h1--main :: IO ()-main = audition . out 0 =<< h_chatter
gr/half-life.hs view
@@ -7,7 +7,7 @@   let t_half = 1/3.92       n_atoms = 1e+5       n = max 0 (n_atoms - pulseCount (localIn 2 AR) 0)-      activity = dust 'a' AR (n * log 2 * t_half)+      activity = dust 'α' AR (n * log 2 * t_half)   in mrg [activity,localOut activity]  main :: IO ()
gr/hansm.hs view
@@ -101,5 +101,5 @@            ,pointy_beaked_beetlefiend            ,african_boojuboolubala            ,common_muckoink]-      fn x = bird_call x >> pauseThread 1.25+      fn x = bird_call x >> wait 1.25   withSC3 (mapM_ fn xs)
gr/harmonic-swimming.hs view
@@ -1,7 +1,7 @@ -- harmonic swimming (jmcc)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}  harmonic_swimming :: UGen harmonic_swimming =
+ gr/harmonic-tumbling-m.hs view
@@ -0,0 +1,17 @@+-- harmonic tumbling (jmcc)++import Sound.SC3.Monad {- hsc3 -}++harmonic_tumbling :: UId m => m UGen+harmonic_tumbling = do+  let f = 80+      p = 10+      t = xLine KR (mce2 10 11) 0.1 60 DoNothing+      o h = do n <- dust KR t+               r <- rand 0 0.5+               let e = decay2 (n * 0.02) 0.005 r+               return (fSinOsc AR (f * (h + 1)) 0 * e)+  fmap sum (mapM o [0..p])++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
− gr/harmonic-tumbling.hs
@@ -1,17 +0,0 @@--- harmonic tumbling (jmcc)--import Sound.SC3.Monad {- hsc3 -}--harmonic_tumbling :: UId m => m UGen-harmonic_tumbling = do-  let f = 80-      p = 10-      t = xLine KR (mce2 10 11) 0.1 60 DoNothing-      o h = do n <- dust KR t-               r <- rand 0 0.5-               let e = decay2 (n * 0.02) 0.005 r-               return (fSinOsc AR (f * (h + 1)) 0 * e)-  return.sum =<< mapM o [0..p]--main :: IO ()-main = audition . out 0 =<< harmonic_tumbling
gr/hell-is-busy.hs view
@@ -5,9 +5,9 @@  hib :: UGen hib =-    let o = fSinOsc AR (400 + rand 'a' 0 2000) 0-        a = lfPulse KR (1 + rand 'b' 0 10.0) (rand 'c' 0 0.7) 0.04-    in pan2 (o * a) (rand 'd' (-1) 1) 1+    let o = fSinOsc AR (400 + rand 'α' 0 2000) 0+        a = lfPulse KR (1 + rand 'β' 0 10.0) (rand 'γ' 0 0.7) 0.04+    in pan2 (o * a) (rand 'δ' (-1) 1) 1  main :: IO () main = overlapTextureU (4,4,8,maxBound) hib
gr/hh-808.hs view
@@ -1,4 +1,4 @@--- hh-808 (ryan at wabdo.com)+-- hh-808 (rb) -- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html  import Sound.SC3 {- hsc3 -}
+ gr/implosion-m.hs view
@@ -0,0 +1,34 @@+-- implosion (rd)++import Sound.SC3.Monad {- hsc3 -}++mkls :: [(UGen,UGen)] -> UGen -> UGen+mkls bp t =+    let e = envCoord bp t 1 EnvLin+    in envGen KR 1 1 0 1 RemoveSynth e++mkrmp :: UGen -> UGen -> UGen -> UGen+mkrmp l r = mkls [(0,l),(1,r)]++pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+pmr_n rt l0 l1 r0 r1 d = do+  let le = mkrmp l0 r0 d+      re = mkrmp l1 r1 d+      wrp i = linLin i (-1) 1+  n <- whiteNoise rt+  return (wrp n le re)++implosion :: UId m => m UGen+implosion = do+  n0 <- rand (-1) 0+  n1 <- rand 0 1+  d  <- rand 7.5 13.5+  f0 <- rand 10990 16220+  f1 <- rand  9440 19550+  f <- pmr_n AR 440 f0 f1 f1 d+  l <- pmr_n KR n0 n1 0 0 d+  a <- pmr_n KR 0.1 0.6 0 0 d+  return (pan2 (saw AR f) l a)++main :: IO ()+main = audition . out 0 =<< implosion
− gr/implosion.hs
@@ -1,36 +0,0 @@--- implosion (rd)--import Sound.SC3.Monad {- hsc3 -}--mkls :: [(UGen,UGen)] -> UGen -> UGen-mkls bp t =-    let e = envCoord bp t 1 EnvLin-    in envGen KR 1 1 0 1 RemoveSynth e--mkrmp :: UGen -> UGen -> UGen -> UGen-mkrmp l r = mkls [(0,l),(1,r)]--wrp :: UGen -> UGen -> UGen -> UGen-wrp i = linLin i (-1) 1--pmr_n :: UId m => Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-pmr_n rt l0 l1 r0 r1 d = do-  let le = mkrmp l0 r0 d-      re = mkrmp l1 r1 d-  n <- whiteNoise rt-  return (wrp n le re)--implosion :: UId m => m UGen-implosion = do-  n0 <- rand (-1) 0-  n1 <- rand 0 1-  d  <- rand 7.5 13.5-  f0 <- rand 10990 16220-  f1 <- rand  9440 19550-  f <- pmr_n AR 440 f0 f1 f1 d-  l <- pmr_n KR n0 n1 0 0 d-  a <- pmr_n KR 0.1 0.6 0 0 d-  return (pan2 (saw AR f) l a)--main :: IO ()-main = audition . out 0 =<< implosion
+ gr/insects-m.hs view
@@ -0,0 +1,21 @@+-- insects (sp)++import Sound.SC3.Monad {- hsc3 -}++insect :: UId m => m UGen+insect = do+  r1 <- rand 2000 3000+  r2 <- rand 0.05 0.1+  n1 <- lfNoise2 KR (r2 * 50 + 50)+  r4 <- rand 1 10+  r5 <- rand 0.05 0.1+  n2 <- lfNoise2 KR r5+  let a = sinOsc KR r4 0 * 0.5 + 0.5+      o = sinOsc AR (r1 + n1) r2 * 0.005 * a+  return (pan2 o n2 1)++insects :: UId m => m UGen+insects = fmap sum (sequence (replicate 60 insect))++main :: IO ()+main = audition . out 0 =<< insects
− gr/insects.hs
@@ -1,21 +0,0 @@--- insects (sam pluta)--import Sound.SC3.Monad {- hsc3 -}--insect :: UId m => m UGen-insect = do-  r1 <- rand 2000 3000-  r2 <- rand 0.05 0.1-  n1 <- lfNoise2 KR (r2 * 50 + 50)-  r4 <- rand 1 10-  r5 <- rand 0.05 0.1-  n2 <- lfNoise2 KR r5-  let a = sinOsc KR r4 0 * 0.5 + 0.5-      o = sinOsc AR (r1 + n1) r2 * 0.005 * a-  return (pan2 o n2 1)--insects :: UId m => m UGen-insects = return.sum =<< sequence (replicate 60 insect)--main :: IO ()-main = audition . out 0 =<< insects
gr/jl-1-Z.hs view
@@ -2,7 +2,6 @@  import Sound.SC3 {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw jl_z_1 jl_z_1 :: UGen jl_z_1 =     let a = lag (impulse KR 8 0) 0.1
gr/k-ppr-m.hs view
@@ -1,9 +1,7 @@ -- k-ppr-m (rd) -import Control.Monad {- base -} import Sound.SC3.Monad {- hsc3 -} --- > k_ppr_m >>= Sound.SC3.UGen.Dot.draw k_ppr_m :: UId m => m UGen k_ppr_m = do   let wrp i = linLin i (-1) 1@@ -20,7 +18,7 @@              return (ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g)       s1 = stream 3140 6240 0.050 0.005 0.15       s2 = stream 0400 9000 0.005 0.005 0.15-  liftM2 (+) (clone 2 s1) (clone 2 s2)+  clone 2 s1 .+. clone 2 s2  main :: IO () main = audition . out 0 =<< k_ppr_m
gr/k-ppr.hs view
@@ -3,7 +3,6 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect --- > Sound.SC3.UGen.Dot.draw k_ppr k_ppr :: UGen k_ppr =   let wrp i = linLin i (-1) 1@@ -18,9 +17,9 @@               r2 = tRand e lf (wrp ti lf rf) t'               r3 = tRand e ld rd t'           in ringz (decay2 t' 0.01 0.5) r2 (r3 * y) * g-      s1 = stream 'a' 3140 6240 0.050 0.005 0.15-      s2 = stream 'a' 0400 9000 0.005 0.005 0.15-  in uclone 'a' 2 s1 + uclone 'b' 2 s2+      s1 = stream 'α' 3140 6240 0.050 0.005 0.15+      s2 = stream 'β' 0400 9000 0.005 0.005 0.15+  in uclone 'γ' 2 s1 + uclone 'δ' 2 s2  main :: IO () main = audition (out 0 k_ppr)
+ gr/k2ws-hp.hs view
@@ -0,0 +1,18 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++k2ws :: UId m => m UGen+k2ws = do+  let fc = 400 + range 100 200 #(lfNoise2 AR (mce2 1 2))+  let fm = range 100 200 #(lfNoise0 AR 5)+  let i = range 1 20 #(lfNoise1 AR 10)+  let x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5+  let rf = range 1000 2000 (sinOsc AR (range 0.1 1 #(lfNoise1 AR 1)) 0)+  let rq = range 0.5 10 #(lfNoise1 AR 1)+  let ph = rlpf x rf rq * range 1.0 4.0 #(lfNoise1 AR 0.1) * 4 * pi+  return (sinOsc AR 0.2 ph * 0.5)++main :: IO ()+main = audition . out 0 =<< k2ws
gr/k2ws.hs view
@@ -5,17 +5,16 @@ rng :: (UGen,UGen) -> UGen -> UGen rng (i,j) = range i j --- > Sound.SC3.UGen.Dot.draw k2ws k2ws :: UGen k2ws =-    let fc = 400 + rng (100,200) (lfNoise2 'a' AR (mce2 1 2))-        fm = rng (100,200) (lfNoise0 'a' AR 5)-        i = rng (1,20) (lfNoise1 'a' AR 10)+    let fc = 400 + rng (100,200) (lfNoise2 'α' AR (mce2 1 2))+        fm = rng (100,200) (lfNoise0 'β' AR 5)+        i = rng (1,20) (lfNoise1 'γ' AR 10)         x = sinOsc AR (fc + (sinOsc AR fm 0 * i * fm)) 0 * 0.5-        rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'b' AR 1)) 0)-        rq = rng (0.5,10) (lfNoise1 'c' AR 1)+        rf = rng (1000,2000) (sinOsc AR (rng (0.1,1) (lfNoise1 'δ' AR 1)) 0)+        rq = rng (0.5,10) (lfNoise1 'ε' AR 1)         a = rlpf x rf rq-        ph = a * rng (1.0,4.0) (lfNoise1 'd' AR 0.1) * 4 * pi+        ph = a * rng (1.0,4.0) (lfNoise1 'ζ' AR 0.1) * 4 * pi     in sinOsc AR 0.2 ph * 0.5  main :: IO ()
gr/kabelscahden.hs view
@@ -7,11 +7,11 @@     let freq = 50         sustain = 1         amp = 0.5-        hum = let t = dust 'a' KR (7 ** lfNoise1 'a' KR 0.3)-                  h = toggleFF (coinGate 'b' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'b' KR 2 * 0.5 - 0.5)) 6000 0.15-                  n = trig t (tRand 'c' 0 0.01 (coinGate 'c' 0.4 t)) * whiteNoise 'c' AR-                  m = trig t (tRand 'd' 0 0.01 (coinGate 'd' 0.4 t)) * brownNoise 'd' AR-                  k = trig t (lfNoise1 'e' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'e' AR (lfNoise0 'e' KR 7 * 30 + 40)+        hum = let t = dust 'α' KR (7 ** lfNoise1 'β' KR 0.3)+                  h = toggleFF (coinGate 'γ' 0.4 t) * rlpf (lfPulse AR freq 0 0.5 + (lfNoise1 'δ' KR 2 * 0.5 - 0.5)) 6000 0.15+                  n = trig t (tRand 'ε' 0 0.01 (coinGate 'ζ' 0.4 t)) * whiteNoise 'η' AR+                  m = trig t (tRand 'θ' 0 0.01 (coinGate 'ι' 0.4 t)) * brownNoise 'κ' AR+                  k = trig t (lfNoise1 'λ' KR (mce2 4 4.2) * 0.1 + 0.11) * lfClipNoise 'μ' AR (lfNoise0 'ν' KR 7 * 30 + 40)               in distort (leakDC ((h + n + m + k) * 10) 0.995)         e = envGen KR 1 1 0 1 RemoveSynth (Envelope [amp,amp,0] [sustain,0] [] Nothing Nothing)     in out 0 (clip2 hum 1 * e * 0.25)
gr/karplus-strong.hs view
@@ -13,8 +13,8 @@         x = mouseX KR 0 0.01 Linear 0.1         y = mouseY KR 0.85 1 Linear 0.1         ugenIf a b c = (a * b) + ((1 - a) * c)-        n = whiteNoise 'a' AR-        d = dust 'a' KR 4+        n = whiteNoise 'α' AR+        d = dust 'β' KR 4         n0 = (n * 0.5) + 0.5         probSwitch i prob = ugenIf (n0 >* prob) i (negate i)         laggedDelay = lag x 0.01
gr/klink.hs view
@@ -4,15 +4,15 @@  klink :: UGen klink =-  let n1 = lfNoise0 'a' KR (mce2 0.5 1.5)+  let n1 = lfNoise0 'α' KR (mce2 0.5 1.5)       o = sinOsc KR n1 0       a = abs (slope o) * mce2 2 3       t = impulse AR a 0       i = decay2 t 0.01 0.1       x = mouseX KR 960 3620 Exponential 0.2       y = mouseY KR 0.5 2.0 Linear 0.2-      n2 = tRand 'a' x 3940 t-      n3 = tRand 'a' 0.005 0.275 t+      n2 = tRand 'β' x 3940 t+      n3 = tRand 'γ' 0.005 0.275 t   in ringz i n2 (n3 * y)  main :: IO ()
gr/laser-bubble.hs view
@@ -13,7 +13,7 @@  laser_bubble :: Int -> UGen laser_bubble n =-    let f = mce (map laser_bubble_f (take n ['a'..]))+    let f = mce (map laser_bubble_f (take n ['α'..]))         [s0,s1] = mceChannels (splay (sinOsc AR f 0) 1 1 0 True)     in limiter (rotate2 s0 s1 (lfSaw KR 0.1 0)) 1 1e-2 
gr/lf-pulses.hs view
@@ -4,8 +4,8 @@  lf_pulses :: UGen lf_pulses =-  let n0 = lfNoise0 'a' AR (mce2 20 40)-      n1 = lfNoise0 'a' AR (mce2 5 10)+  let n0 = lfNoise0 'α' AR (mce2 20 40)+      n1 = lfNoise0 'β' AR (mce2 5 10)       x = mouseX KR 0.012 0.19 Exponential 0.1       f = formlet (blip AR 10 12) (n0 * 43 + 700) 0.005 x       o = sinOsc AR 40 0 * n1
+ gr/lg-timed-m.hs view
@@ -0,0 +1,24 @@+-- lg-timed (rd)++import Sound.SC3.Monad {- hsc3 -}++lg_timed :: UId m => m UGen+lg_timed = do+  let timed r y p =+          do d0 <- dser r p+             d1 <- dcons 0 d0+             d2 <- dser r y+             let t = tDuty AR d1 0 RemoveSynth d2 1+             return (latch t t)+      lg u = return (lag u 0.03)+      n = mce [52,76,66,67,68,69]+      a = mce [0.35,0.15,0.04,0.05,0.16,0.07]+      d = mce [0.1,0.5,0.09,0.08,0.07,0.3]+      x = mouseX KR 0.5 1.25 Linear 0.2+  tn <- lg =<< timed dinf n (d * x)+  ta <- lg =<< timed dinf a (d * x)+  return (sinOsc AR (midiCPS tn) 0 * ta)++main :: IO ()+main = audition . out 0 =<< lg_timed+
− gr/lg-timed.hs
@@ -1,25 +0,0 @@--- lg-timed (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< lg_timed-lg_timed :: UId m => m UGen-lg_timed = do-  let timed r y p =-          do d0 <- dser r p-             d1 <- dcons 0 d0-             d2 <- dser r y-             let t = tDuty AR d1 0 RemoveSynth d2 1-             return (latch t t)-      lg u = return (lag u 0.03)-      n = mce [52,76,66,67,68,69]-      a = mce [0.35,0.15,0.04,0.05,0.16,0.07]-      d = mce [0.1,0.5,0.09,0.08,0.07,0.3]-      x = mouseX KR 0.5 1.25 Linear 0.2-  tn <- lg =<< timed dinf n (d * x)-  ta <- lg =<< timed dinf a (d * x)-  return (sinOsc AR (midiCPS tn) 0 * ta)--main :: IO ()-main = audition . out 0 =<< lg_timed-
gr/lin-sosc.hs view
@@ -1,7 +1,7 @@ -- lin-sosc (rd) -import Control.Concurrent-import Control.Monad+import Control.Concurrent {- base -}+import Control.Monad {- base -} import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -} import qualified Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}
+ gr/lso-061101-m.hs view
@@ -0,0 +1,110 @@+-- | L-System oscillator (rd), 2006-11-01++import Control.Monad {- base -}+import Graphics.PS {- hps -}+import qualified LSystem.LSystem as L {- hls -}+import qualified LSystem.Systems as L+import qualified LSystem.Turtle as L+import qualified Sound.File.NeXT as F {- hsc3-sf -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}+import System.Directory {- directory -}+import qualified System.FilePath as P {- filepath -}++-- | Normalise to lie in (0,1).+--+-- > normalise [1,4,2,5] == [0.2,0.8,0.4,1]+normalise :: (Fractional a,Ord a) => [a] -> [a]+normalise s =+    let n = 1 / maximum (map abs s)+    in map (* n) s++-- | 'L.render' rule.+plain :: [Double] -> Pt Double -> Pt Double -> [Double]+plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d++-- | Render 'L.LSystem' to 'plain' data.+lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]+lsys_run (l,ta,lls) i =+    let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 lls []+    in L.render [] plain (L.expand l i) a++-- | 'normalise' '.' 'lsys_run'+--+-- > length (gen_d L.l0d 3)+gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]+gen_d l = normalise . lsys_run l++-- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.+gen_f :: FilePath -> [Double] -> IO ()+gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]++-- | Rendered L-system data sets.+lsys_data :: [[Double]]+lsys_data =+    [gen_d L.l0d 3+    ,gen_d L.l1d 3+    ,gen_d L.l2d 5+    ,gen_d L.l3d 12+    ,gen_d L.l4d 6+    ,gen_d L.l5d 4+    ,gen_d L.l6d 7+    ,gen_d L.l7d 4+    ,gen_d L.l8d 6+    ,gen_d L.l9d 10+    ,gen_d L.lAd 11+    ,gen_d L.lBd 6+    ,gen_d L.lCd 5]++-- | Exceeds UDP limits.+lsys_send :: IO ()+lsys_send = do+  let alloc (n,d) = async (b_alloc_setn1 n 0 d)+  withSC3 (mapM_ alloc (zip [0..] lsys_data))+++-- | Filename for 'lsys_data'.+lsys_fn :: FilePath  -> [FilePath]+lsys_fn d =+    let n = length lsys_data+        nm i = d P.</> show i P.<.> "snd"+    in map nm [0 .. n - 1]++-- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.+lsys_write :: FilePath -> IO ()+lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data++-- | Load 'lsys_fn' at /scsynth/.+lsys_load :: FilePath -> IO ()+lsys_load d = do+  let alloc (n,nm) = async (b_allocRead n nm 0 0)+  withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))++-- | Oscillator instrument+oi :: IO UGen+oi = do+  let rng i = linLin i (-1) 1+      exprng i = linExp i (-1) 1+  c <- R.choose [0.25, 0.55, 0.75, 1.25]+  let t = impulse KR c 0+  b <- tIRand 0 12 t+  let n  = bufFrames KR b+      m  = n / 4+      i  = floorE (rng (lfSaw AR c 0) 0 m) * 4+      tt = impulse AR (m / c) 0+      x0 = bufRdL 1 AR b i       NoLoop+      y0 = bufRdL 1 AR b (i + 1) NoLoop+      x1 = bufRdL 1 AR b (i + 2) NoLoop+      y1 = bufRdL 1 AR b (i + 3) NoLoop+  f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]+  let f1 = 22000+      o x y = let f = exprng x f0 f1+              in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)+  return (o x0 y0 + o x1 y1)++main :: IO ()+main = do+  t <- getTemporaryDirectory+  lsys_write t+  lsys_load t+  oi >>= audition . out 0
− gr/lso-061101.hs
@@ -1,111 +0,0 @@--- | L-System oscillator (rd, 2006-11-01)--import Control.Monad {- base -}-import Graphics.PS.Pt {- hps -}-import Graphics.PS.Unit-import qualified LSystem.LSystem as L {- hls -}-import qualified LSystem.Systems as L-import qualified LSystem.Turtle as L-import qualified Sound.File.NeXT as F {- hsc3-sf -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO as R {- hsc3-lang -}-import System.Directory {- directory -}-import qualified System.FilePath as P {- filepath -}---- | Normalise to lie in (0,1).------ > normalise [1,4,2,5] == [0.2,0.8,0.4,1]-normalise :: (Fractional a,Ord a) => [a] -> [a]-normalise s =-    let n = 1 / maximum (map abs s)-    in map (* n) s---- | 'L.render' rule.-plain :: [Double] -> Pt -> Pt -> [Double]-plain d (Pt x0 y0) (Pt x1 y1) = [x0,y0,x1,y1] ++ d---- | Render 'L.LSystem' to 'plain' data.-lsys_run :: (L.LSystem,Double,Double) -> Int -> [Double]-lsys_run (l,ta,ls) i =-    let a = L.Turtle (radians ta) 1 (Pt 0 0) (pi/2) 1 ls []-    in L.render [] plain (L.expand l i) a---- | 'normalise' '.' 'lsys_run'------ > length (gen_d L.l0d 3)-gen_d :: (L.LSystem,Double,Double) -> Int -> [Double]-gen_d l = normalise . lsys_run l---- | Write 'gen_d' to 'FilePath' as /NeXT/ sound file.-gen_f :: FilePath -> [Double] -> IO ()-gen_f nm d = F.write nm (F.Header (length d) F.Float 44100 1) [d]---- | Rendered L-system data sets.-lsys_data :: [[Double]]-lsys_data =-    [gen_d L.l0d 3-    ,gen_d L.l1d 3-    ,gen_d L.l2d 5-    ,gen_d L.l3d 12-    ,gen_d L.l4d 6-    ,gen_d L.l5d 4-    ,gen_d L.l6d 7-    ,gen_d L.l7d 4-    ,gen_d L.l8d 6-    ,gen_d L.l9d 10-    ,gen_d L.lAd 11-    ,gen_d L.lBd 6-    ,gen_d L.lCd 5]---- | Exceeds UDP limits.-lsys_send :: IO ()-lsys_send = do-  let alloc (n,d) = async (b_alloc_setn1 n 0 d)-  withSC3 (mapM_ alloc (zip [0..] lsys_data))----- | Filename for 'lsys_data'.-lsys_fn :: FilePath  -> [FilePath]-lsys_fn d =-    let n = length lsys_data-        nm i = d P.</> show i P.<.> "snd"-    in map nm [0 .. n - 1]---- | Write 'lsys_data' to 'lsys_fn' using 'gen_f'.-lsys_write :: FilePath -> IO ()-lsys_write d = zipWithM_ gen_f (lsys_fn d) lsys_data---- | Load 'lsys_fn' at /scsynth/.-lsys_load :: FilePath -> IO ()-lsys_load d = do-  let alloc (n,nm) = async (b_allocRead n nm 0 0)-  withSC3 (mapM_ alloc (zip [0..] (lsys_fn d)))---- | Oscillator instrument-oi :: IO UGen-oi = do-  let rng i = linLin i (-1) 1-      exprng i = linExp i (-1) 1-  c <- R.choose [0.25, 0.55, 0.75, 1.25]-  let t = impulse KR c 0-  b <- tIRand 0 12 t-  let n  = bufFrames KR b-      m  = n / 4-      i  = floorE (rng (lfSaw AR c 0) 0 m) * 4-      tt = impulse AR (m / c) 0-      x0 = bufRdL 1 AR b i       NoLoop-      y0 = bufRdL 1 AR b (i + 1) NoLoop-      x1 = bufRdL 1 AR b (i + 2) NoLoop-      y1 = bufRdL 1 AR b (i + 3) NoLoop-  f0 <- R.choose [16, 32, 64, 128, 256, 512, 8192]-  let f1 = 22000-      o x y = let f = exprng x f0 f1-              in pan2 (blip AR f (rng y 1 64)) y0 (decay tt 0.005)-  return (o x0 y0 + o x1 y1)--main :: IO ()-main = do-  t <- getTemporaryDirectory-  lsys_write t-  lsys_load t-  oi >>= audition . out 0
gr/m21360.hs view
@@ -13,15 +13,15 @@ -- > audition (m21360 (mce [0,1])) m21360 :: UGen -> UGen m21360 b =-    let del = mce [0.2,0.3,0.4,0.5] * rand 'a' 0.15 0.35+    let del = mce [0.2,0.3,0.4,0.5] * rand 'α' 0.15 0.35         loc = mce [-1,-0.7,0.6,1]-        hpp = mce [rand 'a' 300 600,rand 'a' 900 1200]+        hpp = mce [rand 'β' 300 600,rand 'γ' 900 1200]         avg = mce [8000,14000]         sdt = mce [300,400]-        lpp = mce [rand 'a' 4300 4500,rand 'a' 4000 4200]+        lpp = mce [rand 'δ' 4300 4500,rand 'ε' 4000 4200]         sr = sampleRate         local = localIn 2 AR-        wn = line KR 0 1 0.1 DoNothing * whiteNoise 'a' AR * 0.03+        wn = line KR 0 1 0.1 DoNothing * whiteNoise 'ζ' AR * 0.03         ph = delTapWr AR b (wn + local)         fb = delTapRd b ph del 1         p_fb = mix (pan2 fb loc 1)
gr/microhelix.hs view
@@ -2,18 +2,10 @@  import Sound.SC3.ID {- hsc3 -} -rng :: UGen -> UGen -> UGen -> UGen-rng l r =-    let m = (r - l) * 0.5-        a = m + l-    in (+ a) . (* m)- offset_id :: Enum a => Int -> a -> Int offset_id n e = n + fromEnum e  -- mce...........................------ > Sound.SC3.UGen.Dot.draw microhelix microhelix :: UGen microhelix =     let rp = replicate@@ -21,21 +13,21 @@             let z = offset_id z_                 i = mce (rp 8 (1/8) ++                          rp 8 (1/4) ++-                         [dseq (z 'a') (drand (z 'b') dinf (mce2 1 2)) (mce2 (1/16) (1/16))])-                d = dxrand (z 'c') dinf (mceMap (* 1.25) i)-            in tDuty AR d 0 DoNothing (dwhite (z 'd') dinf 0.5 1) 0+                         [dseq (z 'α') (drand (z 'β') dinf (mce2 1 2)) (mce2 (1/16) (1/16))])+                d = dxrand (z 'γ') dinf (mceMap (* 1.25) i)+            in tDuty AR d 0 DoNothing (dwhite (z 'δ') dinf 0.5 1) 0         ctrigs = mce2 (ctrigs_ 0) (ctrigs_ 12)         clicks =-            let n = pinkNoise 'e' AR * decay ctrigs (0.001 * abs (lfNoise1 'f' AR 4))-            in fold (bpf n 15000 0.9 * (25 * rng 0 1 (lfNoise1 'g' AR 8))) (-1) 1+            let n = pinkNoise 'ε' AR * decay ctrigs (0.001 * abs (lfNoise1 'ζ' AR 4))+            in fold (bpf n 15000 0.9 * (25 * range 0 1 (lfNoise1 'η' AR 8))) (-1) 1         snd1 =             let o = sinOsc AR (midiCPS 44) 0 * 0.5 + sinOsc AR (midiCPS 90) 0 * 0.6-            in lpf o (midiCPS 32) * 2 + hpf (lpf (whiteNoise 'h' AR * 0.008) 12000) 2400+            in lpf o (midiCPS 32) * 2 + hpf (lpf (whiteNoise 'θ' AR * 0.008) 12000) 2400         hiNoise =-            let n = whiteNoise 'i' AR-                e = decay2 (ctrigs * (lfNoise1 'j' AR 8 * 0.5 + 0.5)) 0.02 0.1 * 0.05-            in bpf (n * e) (tRand 'k' 12000 15000 ctrigs) 0.9-        trigMod = roundTo (lfNoise0 'l' AR 8) 1+            let n = whiteNoise 'ι' AR+                e = decay2 (ctrigs * (lfNoise1 'κ' AR 8 * 0.5 + 0.5)) 0.02 0.1 * 0.05+            in bpf (n * e) (tRand 'λ' 12000 15000 ctrigs) 0.9+        trigMod = roundTo (lfNoise0 'μ' AR 8) 1         bass =             let t = mceChannel 0 ctrigs * trigMod                 ph = sweep t (2 * pi * mce2 52.8 740) + (pi/3)@@ -48,8 +40,8 @@         snd1' =             let t = mceChannel 0 ctrigs                 d = Envelope [0, 1, 0.6, 0] [0.0001, 0.4, 0.01] [EnvNum (-4)] Nothing Nothing-                e = envGen AR (t * lfNoise0 'm' AR 8) 1 0 1 DoNothing d-            in pan2 (snd1 * e) (tRand 'n' (-1) 1 t) 1+                e = envGen AR (t * lfNoise0 'ν' AR 8) 1 0 1 DoNothing d+            in pan2 (snd1 * e) (tRand 'ξ' (-1) 1 t) 1     in limiter (midEQ (clicks + snd1' + hiNoise + bass) 14000 0.7 8) 1 0.01  main :: IO ()
gr/modal-space.hs view
@@ -17,7 +17,7 @@  modal_space :: UGen modal_space =-    let n = uclone 'α' 2 (lfNoise1 'α' KR 3)+    let n = uclone 'α' 2 (lfNoise1 'β' KR 3)     in (ms n 48 + ms n 72) * 0.25  run :: Transport m => m ()
gr/mridangam.hs view
@@ -2,12 +2,12 @@  import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  spe3_mridangam :: Synthdef spe3_mridangam =     let t_amp = tr_control "t_amp" 1-        n = whiteNoise 'a' AR * 70+        n = whiteNoise 'α' AR * 70         e = decay2 t_amp 0.002 0.1         o = distort (resonz (n * e) (midiCPS 60) 0.02 * 4) * 0.4     in synthdef "mridangam" (out 0 o)@@ -19,7 +19,7 @@         o = lpf (s1 + s2) (midiCPS 108) * 0.007     in synthdef "drone" (out 0 o) -p :: [P Double]+p :: Fractional n => [P n] p =     [pseq [0.0] 10     -- intro@@ -28,7 +28,7 @@     ,pseq [0.9,0.0,0.0,0.2,0.0,0.2,0.0,0.2,0.0,0.0] 2     ,pseq [0.9,0.0,0.0,0.2,0.0,0.0,0.0,0.2,0.0,0.2] 2     -- solo-    ,prand 'a' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1+    ,prand 'β' [pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1                ,pseq [0.9,0.2,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.0] 1                ,pseq [0.9,0.0,0.0,0.7,0.0,0.2,0.0,0.7,0.0,0.2] 1                ,pseq [0.9,0.0,0.0,0.7,0.2,0.2,0.0,0.7,0.0,0.0] 1@@ -53,8 +53,9 @@ act = do   play spe3_drone   _ <- async (d_recv spe3_mridangam)-  let p' = pmono_d spe3_mridangam 100 [("t_amp",pseq p 1),("dur",1/8)]-  play p'+  let i = Instr_Def spe3_mridangam False+  play (pmono [(K_instr,pinstr' i),(K_id,100)+              ,(K_param "t_amp",pseq p 1),(K_dur,1/8)])  main :: IO () main = withSC3 act
gr/music-box.hs view
@@ -3,8 +3,7 @@  import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  chain :: a -> [a -> a] -> a chain n c =@@ -27,33 +26,34 @@         dy = decay2 tr ea ed * 1         i = mix (ringz dy (f * mce2 1 2) es)         r = chain i [\s -> let e = decay2 tr 0.01 hd-                               fr = mce [rand 'a' 1 1.1-                                        ,rand 'a' 1.4 1.6-                                        ,rand 'a' 1.9 2.1-                                        ,rand 'a' 3.9 4.1]+                               fr = mce [rand 'α' 1 1.1+                                        ,rand 'β' 1.4 1.6+                                        ,rand 'γ' 1.9 2.1+                                        ,rand 'δ' 3.9 4.1]                            in s + mix (sinOsc AR (f * fr) 0 * e)                     ,\s -> bLowPass s (ff * linExp dy 0 1 1 fa) 0.1-                    ,\s -> let e = envLinen 0 (es / rand 'a' 1 4) 0.1 1+                    ,\s -> let e = envLinen 0 (es / rand 'ε' 1 4) 0.1 1                            in s * envGen AR 1 1 0 1 RemoveSynth e]     in offsetOut o (r * mce2 a a) -pattern :: P Event+pattern :: P_Bind pattern =-    let o = prand 'a' [6,7] inf-    in pbind [("degree",place [[0,1,2,3,4]-                              ,[2,3,4,5,6]-                              ,[4,3,4,3,6,7]-                              ,[0,2,1,2,1,4,3,3,5]] inf)-             ,("detune",pwhite 'b' (-2) 2 inf)-             ,("octave",o)-             ,("dur",prand 'c' [0.5,1,2] inf + pwhite 'd' (-0.1) 0.1 inf)-             ,("amp",pwhite 'e' 0.01 0.1 inf)-             ,("attack",pwhite 'f' 0.0005 0.001 inf)-             ,("sustain",(o / 4) + pwhite 'g' 0.01 0.5 inf)-             ,("ffreq",pwhite 'h' 200 2000 inf)-             ,("famt",pwhite 'i' 3 6 inf)-             ,("hdur",pwhite 'j' 0.05 0.3 inf)-             ,("impdecay",pwhite 'k' 0.001 0.01 inf)]+    let o = prand 'ζ' [6,7] inf+    in [(K_instr,psynth (synthdef "ping" ping))+       ,(K_degree,place [[0,1,2,3,4]+                        ,[2,3,4,5,6]+                        ,[4,3,4,3,6,7]+                        ,[0,2,1,2,1,4,3,3,5]] inf)+       ,(K_detune,pwhite 'η' (-2) 2 inf)+       ,(K_octave,o)+       ,(K_dur,prand 'θ' [0.5,1,2] inf + pwhite 'ι' (-0.1) 0.1 inf)+       ,(K_amp,pwhite 'κ' 0.01 0.1 inf)+       ,(K_param "attack",pwhite 'λ' 0.0005 0.001 inf)+       ,(K_sustain,(o / 4) + pwhite 'μ' 0.01 0.5 inf)+       ,(K_param "ffreq",pwhite 'ν' 200 2000 inf)+       ,(K_param "famt",pwhite 'ξ' 3 6 inf)+       ,(K_param "hdur",pwhite 'ο' 0.05 0.3 inf)+       ,(K_param "impdecay",pwhite 'π' 0.001 0.01 inf)]  amplitude_mod :: (ID a, Enum a) => a -> UGen -> UGen amplitude_mod z i =@@ -73,7 +73,6 @@  main :: IO () main = do-  let s = synthdef "ping" ping-  withSC3 (do post "amplitude_mod" 2 0 (amplitude_mod 'a')+  withSC3 (do post "amplitude_mod" 2 0 (amplitude_mod 'ρ')               post "limiting" 2 0 limiting)-  audition (s,pattern)+  audition (pbind pattern)
+ gr/nharm-m.hs view
@@ -0,0 +1,35 @@+-- nharm (rd)++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.Monad as U {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++nharm :: (Num b, Integral a) => a -> b -> [b]+nharm n f = map ((* f) . fromIntegral) [1..n]++klg :: UId m => UGen -> Int -> m UGen+klg m u = do+    n <- rrand 4 u+    d <- iRand 9 12+    f <- iRand m (m + 2)+    l <- sequence (replicate n (U.rand 0.01 0.02))+    p <- U.rand (-1.0) 1.0+    let a = 0.5+        e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)+        nh = nharm n (midiCPS f)+        s = klangSpec nh l (replicate n 0.0)+    return (pan2 (klang AR 1 0 s) p e)++ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()+ply n (l,r) m u = do+  let a = do pauseThread =<< rrand l r+             audition . out 0 =<< klg m u+  replicateM_ n a++main :: IO ()+main = do+  _ <- forkIO (ply 32 (0.25,0.75) 92 24)+  _ <- forkIO (ply 8 (1.25,1.75) 12 54)+  return ()
gr/nharm-p.hs view
@@ -1,9 +1,8 @@--- nharm-p+-- nharm-p (rd)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  nharm :: Num n => Int -> n -> [n] nharm n f = map ((* f) . fromIntegral) [1..n]@@ -20,7 +19,7 @@         s = klangSpec nh l (replicate n 0.0)     in out 0 (pan2 (klang AR 1 0 s) p e) -type Range = (Double,Double)+type Range = (Field,Field)  {- Note that the dur key is used only to schedule the nodes. Both it, and any gate message, are ignored by the UGen graph, which manages@@ -28,10 +27,10 @@  pN :: Int -> Range -> Range -> P Event pN n (m0,m1) (d0,d1) =-    let i = synthdef ("klg" ++ show n) (klg n)-        p = pbind [("midinote",pwhite 'α' m0 m1 inf)-                  ,("dur",pwhite 'β' d0 d1 inf)]-    in pinstr_d (return (i,False)) p+    let s = synthdef ("klg" ++ show n) (klg n)+    in pbind [(K_instr,psynth s)+             ,(K_midinote,pwhite 'α' m0 m1 inf)+             ,(K_dur,pwhite 'β' d0 d1 inf)]  main :: IO () main = audition (pmerge (pN 24 (90,92) (0.25,0.75))
− gr/nharm.hs
@@ -1,35 +0,0 @@---nharm (rd)--import Control.Concurrent {- base -}-import Control.Monad-import Sound.OSC {- hosc -}-import Sound.SC3.Monad as U {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--nharm :: (Num b, Integral a) => a -> b -> [b]-nharm n f = map ((* f) . fromIntegral) [1..n]--klg :: UId m => UGen -> Int -> m UGen-klg m u = do-    n <- rrand 4 u-    d <- iRand 9 12-    f <- iRand m (m + 2)-    l <- sequence (replicate n (U.rand 0.01 0.02))-    p <- U.rand (-1.0) 1.0-    let a = 0.5-        e = envGen KR 1 0.9 0 1 RemoveSynth (envSine d a)-        nh = nharm n (midiCPS f)-        s = klangSpec nh l (replicate n 0.0)-    return (pan2 (klang AR 1 0 s) p e)--ply :: Int -> (Double,Double) -> UGen -> Int -> IO ()-ply n (l,r) m u = do-  let a = do pauseThread =<< rrand l r-             audition . out 0 =<< klg m u-  replicateM_ n a--main :: IO ()-main = do-  _ <- forkIO (ply 32 (0.25,0.75) 92 24)-  _ <- forkIO (ply 8 (1.25,1.75) 12 54)-  return ()
gr/noise-modulated-sines.hs view
@@ -5,9 +5,9 @@  nms :: UGen nms =-    let f = midiCPS (rand 'a' 60 100)+    let f = midiCPS (rand 'α' 60 100)         o = fSinOsc AR (mce2 f (f + 0.2)) 0-        a = lfNoise2 'b' KR (f * mce2 0.15 0.16) * 0.1+        a = lfNoise2 'β' KR (f * mce2 0.15 0.16) * 0.1     in o * a  nms_pp :: (UGen -> UGen)
gr/nokia.hs view
@@ -2,53 +2,48 @@ -- partial...  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Control.Instrument-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  grain :: UGen grain =     let o = control KR "out" 0-        freq' = control KR "freq" 100+        f = control KR "freq" 100         attack = control KR "attack" 0         decay' = control KR "decay" 1-        sustain' = control KR "sustain" 0.1+        sus = control KR "sustain" 0.1         distort' = control KR "distort" 0         fTime = control KR "fTime" 0.1         fFac = control KR "fFac" 1.2         amp' = control KR "amp" 1         delay = control KR "delay" 0-        startFreq = fFac * freq'-        endFreq = freq'+        startFreq = fFac * f+        endFreq = f         env l t = Envelope l t [] Nothing Nothing         aEnv = let e = envPerc attack decay'-               in envGen AR 1 amp' 0 sustain' RemoveSynth e+               in envGen AR 1 amp' 0 sus RemoveSynth e         fEnv = let e = env [startFreq,endFreq] [fTime]                in envGen AR 1 1 0 1 DoNothing e         src = wrap2 (sinOsc AR fEnv 1 * (1 + distort')) 1     in out o (delayN (src * mce2 aEnv aEnv) 0.1 delay) -pattern :: Enum e => (Value, e) -> P Event+pattern :: Enum e => (Field,e) -> P_Bind pattern (f,z) =-    let f_mul = prand 'a' [4,1,2,3,4,8] inf-    in pbind [("freq",return f * f_mul * pwhite z 0.99 1 (12 * 4))-             ,("dur",pseq [pseq [10,0.1,10] 1,pseq [0.1] 6-                          ,pseq [1,pseq [0.1] 6,1] inf] 1)-             ,("fTime",0.0125)-             ,("fFac",5)-             ,("sustain",0.1)-             ,("attack",0.0005)-             ,("decay",2)-             ,("amp",0.1)-             ,("delay",pwhite z 0.01 0.1 1 * 0.1)]--grain_ip :: P Instrument-grain_ip =-    let n = "grain"-        s = synthdef n grain-    in pcons (InstrumentDef s False) (prepeat (InstrumentName n False))+    let f_mul = prand 'α' [4,1,2,3,4,8] inf+    in [(K_instr,pinstr "grain")+       ,(K_freq,prepeat f * f_mul * phold (pwhite z 0.99 1 inf))+       ,(K_dur,pseq [pseq [10,0.1,10] 1+                    ,pseq [0.1] 6+                    ,pseq [1,pseq [0.1] 6,1] inf] 1)+       ,(K_param "fTime",0.0125)+       ,(K_param "fFac",5)+       ,(K_sustain,0.1)+       ,(K_param "attack",0.0005)+       ,(K_param "decay",2)+       ,(K_amp,0.1)+       ,(K_param "delay",phold (pwhite z 0.01 0.1 inf * 0.1))]  main :: IO () main =     let f = concat (replicate 12 [1200, 800, 600, 200])-    in audition (pinstr grain_ip (ppar (map pattern (zip f ['a'..]))))+        p = ppar (map (pbind . pattern) (zip f ['β'..]))+    in withSC3 (async (d_recv (synthdef "grain" grain)) >> play p)
gr/non-real-time.hs view
@@ -13,12 +13,11 @@ -- > audition score score :: NRT score =-    let at t = Bundle (NTPr t)-        mk_instr = d_recv (synthdef "test" graph)+    let mk_instr = d_recv (synthdef "test" graph)         mk_group = g_new [(1, AddToTail, 0)]-        mk_synth t f = at t [s_new "test" (-1) AddToTail 1 [("freq", f)]]+        mk_synth t f = bundle t [s_new "test" (-1) AddToTail 1 [("freq",f)]]         notes = take 128 (zipWith mk_synth [1.0, 1.05 ..] [330, 350 ..])-    in NRT (at 0.0 [mk_instr, mk_group] : notes)+    in NRT (bundle 0.0 [mk_instr, mk_group] : notes)  render :: NRT -> IO () render s = do
gr/nv-tw-1.hs view
@@ -5,12 +5,12 @@  nv_tw_1 :: UGen nv_tw_1 =-    let a = uclone 'a' 2 (pinkNoise 'a' AR)+    let a = uclone 'α' 2 (pinkNoise 'β' AR)         nd z =-            let n = lfNoise1 'a' KR (rand 'a' 0 0.05)+            let n = lfNoise1 'γ' KR (rand 'δ' 0 0.05)                 f = linExp n (-1) 1 40 15000-            in bBandStop z f (expRand 'a' 0.1 2)-    in lpf (useq 'a' 50 nd a) 1e5+            in bBandStop z f (expRand 'ε' 0.1 2)+    in lpf (useq 'ζ' 50 nd a) 1e5  main :: IO () main = audition (out 0 nv_tw_1)
gr/nv-tw-54.hs view
@@ -1,7 +1,7 @@ -- http://sccode.org/1-V (nv)  import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  fF :: Double -> Double -> Double fF i f =@@ -23,6 +23,9 @@     in synthdef "nvi" (out 0 o)  main :: IO ()-main = audition (nvi,pbind [("f",fromList fS)-                           ,("i",pseries 0 1 inf)-                           ,("dur",0.3)])+main =+    let fS' = map realToFrac fS+    in audition (pbind [(K_instr,psynth nvi)+                       ,(K_param "f",toP fS')+                       ,(K_param "i",pseries 0 1 inf)+                       ,(K_dur,0.3)])
gr/nx102.hs view
@@ -3,18 +3,17 @@ import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw nx102 -- > audition (out 0 nx102) nx102 :: UGen nx102 =-    let r = rand 'a' 50 100+    let r = rand 'α' 50 100         b = playBuf 1 KR 1 r 1 0 Loop DoNothing-        f = clip (b * rand 'a' 100 1000) (rand 'a' 5 12) (rand 'a' 12 20)+        f = clip (b * rand 'β' 100 1000) (rand 'γ' 5 12) (rand 'δ' 12 20)         o = pulse AR f 0.5-        lrf = rand 'a' 100 5000-        lrq = rand 'a' 0.005 0.1-        hrf = rand 'a' 5000 20000-        hrq = rand 'b' 0.005 0.1+        lrf = rand 'ε' 100 5000+        lrq = rand 'ζ' 0.005 0.1+        hrf = rand 'η' 5000 20000+        hrq = rand 'θ' 0.005 0.1         s = rhpf (rlpf o lrf lrq) hrf hrq         v = freeVerb s 0 0 0         pk i n k = bPeakEQ i n 6.0 k
gr/one-line.hs view
@@ -1,4 +1,4 @@--- one-line (lance putnam)+-- one-line (ljp)  import Sound.SC3 {- hsc3 -} 
+ gr/oscillator-cluster-m.hs view
@@ -0,0 +1,35 @@+-- oscillator cluster++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++oscillator_cluster :: (Functor m,UId m) => m UGen+oscillator_cluster = do+  let ln a b d = line KR a b d RemoveSynth+      rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)+      prt d a cf = do r1 <- rand cf (cf + 2)+                      r2 <- rln 1 5 0.01 d+                      r3 <- rln 10 20 0 d+                      r4 <- rand 0.1 0.2+                      let f = mce2 cf r1 + sinOsc KR r2 0 * r3+                          o = fSinOsc AR f 0+                          e = decay2 (impulse AR 0 0) r4 d * a+                      return (o * e)+      np = 12+      fp = sequence (replicate np (rand 220 660))+  d <- rand 4 7+  a <- rand 0.01 0.05+  fmap sum (mapM (prt d a) =<< fp)++main :: IO ()+main = do+  u <- oscillator_cluster+  let s = synthdef "oscillator_cluster" (out 0 u)+      p = pbind [(K_instr,psynth s),(K_dur,prand 'α' [0.25,0.5,1,3,5] inf)]+  audition p++{-+audition . (out 0) =<< oscillator_cluster+let otu = Sound.SC3.Lang.Control.OverlapTexture.overlapTextureU+otu (0,6,3,maxBound) =<< oscillator_cluster+-}
− gr/oscillator-cluster.hs
@@ -1,34 +0,0 @@--- oscillator cluster--import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}--oscillator_cluster :: (Functor m,UId m) => m UGen-oscillator_cluster = do-  let ln a b d = line KR a b d RemoveSynth-      rln r a b d = fmap (\n -> ln (a + n) b d) (rand 0 r)-      prt d a cf = do r1 <- rand cf (cf + 2)-                      r2 <- rln 1 5 0.01 d-                      r3 <- rln 10 20 0 d-                      r4 <- rand 0.1 0.2-                      let f = mce2 cf r1 + sinOsc KR r2 0 * r3-                          o = fSinOsc AR f 0-                          e = decay2 (impulse AR 0 0) r4 d * a-                      return (o * e)-      np = 12-      fp = sequence (replicate np (rand 220 660))-  d <- rand 4 7-  a <- rand 0.01 0.05-  return.sum =<< mapM (prt d a) =<< fp--main :: IO ()-main = do-  u <- oscillator_cluster-  let s = synthdef "oscillator_cluster" (out 0 u)-  audition (s,pbind [("dur",prand 'a' [0.25,0.5,1,3,5] inf)])--{--audition . (out 0) =<< oscillator_cluster-let otu = Sound.SC3.Lang.Control.OverlapTexture.overlapTextureU-otu (0,6,3,maxBound) =<< oscillator_cluster--}
gr/overlap-add.hs view
@@ -1,20 +1,19 @@--- overlap-add (jmcc, rd)+-- overlap-add (jmcc)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  sine :: UGen sine =     let r0 = expRand 'α' 500 1400-        r1 = rand 'α' (-1) 1+        r1 = rand 'β' (-1) 1     in pan2 (sinOsc AR r0 0) r1 0.01  noise :: UGen noise =-    let n0 = whiteNoise 'α' AR-        r0 = expRand 'α' 800 8400-        r1 = rand 'α' (-1) 1+    let n0 = whiteNoise 'γ' AR+        r0 = expRand 'δ' 800 8400+        r1 = rand 'ε' (-1) 1     in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25  main :: IO ()
+ gr/pattern-buffer-m.hs view
@@ -0,0 +1,54 @@+-- pattern buffer (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++tseq :: [UGen] -> UGen+tseq l =+    let n = fromIntegral (length l) / 2.0+    in select (lfSaw KR 0.5 0 * n + n) (mce l)++pattern_buffer :: UId m => Int -> m UGen+pattern_buffer c = do+  let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0+      t = bufRdC 1 AR 10 p Loop+  r1 <- sequence (replicate c (rrand 36 96))+  r2 <- sequence (replicate c (rrand (-1.0) 1.0))+  r3 <- rrand 0 1+  n1 <- tRand 0.02 0.08 t+  let e = decay2 t 0.01 n1+      f = midiCPS (tseq r1)+      l = tseq r2+      o = [sinOsc AR f 0, saw AR f] !! r3+  return (pan2 o l e)++set_pattern :: Transport m => Int -> Int -> m ()+set_pattern nf c = do+  let rs = do r0 <- rrand 0 nf+              r1 <- rrand 0.0 1.0+              send (b_set1 10 r0 r1)+  sequence_ (replicate c rs)++fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b+fill_clr nf c dt n = do+  let go i = if i == 0+             then do send (b_zero 10)+                     go n+             else do set_pattern nf c+                     pauseThread dt+                     go (i - 1)+  go n++run :: (UId m,Transport m) => m ()+run = do+  let nf = 2 * 48000+      c = 24+      n = 16+      dt = 2.6+  _ <- async (b_alloc 10 (nf * 2) 1)+  play . out 0 =<< pattern_buffer c+  fill_clr nf c dt n++main :: IO ()+main = withSC3 run
− gr/pattern-buffer.hs
@@ -1,54 +0,0 @@--- pattern buffer (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--tseq :: [UGen] -> UGen-tseq l =-    let n = fromIntegral (length l) / 2.0-    in select (lfSaw KR 0.5 0 * n + n) (mce l)--pattern_buffer :: UId m => Int -> m UGen-pattern_buffer c = do-  let p = phasor AR 0 (bufRateScale KR 10) 0 (bufFrames KR 10) 0-      t = bufRdC 1 AR 10 p Loop-  r1 <- sequence (replicate c (rrand 36 96))-  r2 <- sequence (replicate c (rrand (-1.0) 1.0))-  r3 <- rrand 0 1-  n1 <- tRand 0.02 0.08 t-  let e = decay2 t 0.01 n1-      f = midiCPS (tseq r1)-      l = tseq r2-      o = [sinOsc AR f 0, saw AR f] !! r3-  return (pan2 o l e)--set_pattern :: Transport m => Int -> Int -> m ()-set_pattern nf c = do-  let rs = do r0 <- rrand 0 nf-              r1 <- rrand 0.0 1.0-              send (b_set1 10 r0 r1)-  sequence_ (replicate c rs)--fill_clr :: (Transport m) => Int -> Int -> Double -> Int -> m b-fill_clr nf c dt n = do-  let go i = if i == 0-             then do send (b_zero 10)-                     go n-             else do set_pattern nf c-                     pauseThread dt-                     go (i - 1)-  go n--run :: (UId m,Transport m) => m ()-run = do-  let nf = 2 * 48000-      c = 24-      n = 16-      dt = 2.6-  _ <- async (b_alloc 10 (nf * 2) 1)-  play . out 0 =<< pattern_buffer c-  fill_clr nf c dt n--main :: IO ()-main = withSC3 run
+ gr/pkt-00.scd view
@@ -0,0 +1,9 @@+{+var f0 = [100,200,300] + SinOsc.ar([0.11,0.22,0.33]);+var ph0 = SinOsc.ar([0.1,0.2,0.3],0,2pi);+var a0 = 0.1 + SinOsc.ar([0.01,0.02,0.03],0,0.05);+var i = SinOsc.ar(f0,ph0,a0);+var w = SinOsc.ar(SinOsc.ar(SinOsc.ar(0.13,0,5,6),0,8,50),0,1,1);+var s = Splay.ar(i,w,0.7,SinOsc.ar(1.2,0,0.6));+GVerb.ar(s,20,5,1,0.5,25,0,1,1);+}.play
+ gr/pkt-07.scd view
@@ -0,0 +1,37 @@+{GVerb.ar(+ LeakDC.ar(+  SinOsc.ar(+   SinOsc.ar(+    SinOsc.ar(+     SinOsc.ar(+      SinOsc.ar(+       SinOsc.ar(+        SinOsc.ar(+         1,+         0,+         2,+         SinOsc.ar(1/2).exprange(1,2)+        ),+        0,+        8,+        SinOsc.ar(1/4).exprange(4,8)+       ),+       0,+       32,+       SinOsc.ar(1/8).exprange(16,32)+      ),+      0,+      128,+      SinOsc.ar(1/16).exprange(64,128)+     ),+     0,+     512,+     SinOsc.ar(1/32).exprange(256,512)+    ),+    0,+    2048,+    SinOsc.ar(1/64).exprange(1024,2048)+   ),0,0.1+  )+ ),16,8,0.75,0.5)+}.play
+ gr/plucked-strings-m.hs view
@@ -0,0 +1,27 @@+-- plucked strings (jmcc)++import Sound.SC3.Monad {- hsc3 -}++plucked_strings :: UId m => m UGen+plucked_strings = do+  let dt = do r0 <- rand 60 90+              return (1 / midiCPS (floorE r0))+      i = do r0 <- rand 2 2.2+             n0 <- dust AR 0.5+             r1 <- rand 0.05 0.15+             r2 <- rand 0 (pi * 2)+             r3 <- iRand 0 2+             let s0 = impulse AR r0 0.3+                 s1 = n0 * 0.3+                 s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3+             return (select r3 (mce [s0,s1,s2]))+      s = do n0 <- pinkNoise AR+             r1 <- rand (-1) 1+             im <- i+             dt' <- dt+             let t = decay im 0.1 * n0 * 0.1+             return (pan2 (combL t dt' dt' 4) r1 1)+  fmap sum (sequence (replicate 5 s))++main :: IO ()+main = audition . out 0 =<< plucked_strings
− gr/plucked-strings.hs
@@ -1,27 +0,0 @@--- plucked strings (jmcc)--import Sound.SC3.Monad {- hsc3 -}--plucked_strings :: UId m => m UGen-plucked_strings = do-  let dt = do r0 <- rand 60 90-              return (1 / midiCPS (floorE r0))-      i = do r0 <- rand 2 2.2-             n0 <- dust AR 0.5-             r1 <- rand 0.05 0.15-             r2 <- rand 0 (pi * 2)-             r3 <- iRand 0 2-             let s0 = impulse AR r0 0.3-                 s1 = n0 * 0.3-                 s2 = impulse AR (sinOsc KR r1 r2 * 5 + 5.2) 0.3-             return (select r3 (mce [s0,s1,s2]))-      s = do n0 <- pinkNoise AR-             r1 <- rand (-1) 1-             im <- i-             dt' <- dt-             let t = decay im 0.1 * n0 * 0.1-             return (pan2 (combL t dt' dt' 4) r1 1)-  return.sum =<< sequence (replicate 5 s)--main :: IO ()-main = audition . out 0 =<< plucked_strings
+ gr/police-state-m.hs view
@@ -0,0 +1,24 @@+-- police state (jmcc)++import Sound.SC3.Monad {- hsc3 -}++police_state :: UId m => m UGen+police_state = do+  let nd = do r0 <- rand 0.02 0.12+              r1 <- rand 0 (pi * 2)+              r2 <- rand 0 600+              r3 <- rand 700 1300+              r4 <- rand (-1) 1+              r5 <- rand 80 120+              n0 <- lfNoise2 AR r5+              let f = sinOsc KR r0 r1 * r2 + r3+              return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)+  ns <- clone 4 nd+  n0 <- clone 2 (lfNoise2 KR 0.4)+  n1 <- lfNoise2 AR (n0 * 90 + 620)+  n2 <- lfNoise2 KR (mce2 0.3 0.301)+  let e = n1 * (n2 * 0.15 + 0.18)+  return (combL (mix ns + e) 0.3 0.3 3)++main :: IO ()+main = audition . out 0 =<< police_state
gr/police-state.hs view
@@ -1,24 +1,24 @@ -- police state (jmcc) -import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect {- hsc3 -} -police_state :: UId m => m UGen-police_state = do-  let nd = do r0 <- rand 0.02 0.12-              r1 <- rand 0 (pi*2)-              r2 <- rand 0 600-              r3 <- rand 700 1300-              r4 <- rand (-1) 1-              r5 <- rand 80 120-              n0 <- lfNoise2 AR r5-              let f = sinOsc KR r0 r1 * r2 + r3-              return (pan2 (sinOsc AR f 0 * n0 * 0.1) r4 1)-  ns <- clone 4 nd-  n0 <- clone 2 (lfNoise2 KR 0.4)-  n1 <- lfNoise2 AR (n0 * 90 + 620)-  n2 <- lfNoise2 KR (mce2 0.3 0.301)-  let e = n1 * (n2 * 0.15 + 0.18)-  return (combL (mix ns + e) 0.3 0.3 3)+nd :: UGen+nd =+    let n = lfNoise2 'α' AR (rand 'β' 80 120)+        f = sinOsc KR (rand 'γ' 0.02 0.12) (rand 'δ' 0 (pi * 2)) *+            rand 'ε' 0 600 ++            rand 'ζ' 700 1300+    in pan2 (sinOsc AR f 0 * n * 0.1) (rand 'η' (-1) 1) 1 +police_state :: UGen+police_state =+  let ns = uclone 'θ' 4 nd+      n0 = uclone 'ι' 2 (lfNoise2 'κ' KR 0.4)+      n1 = lfNoise2 'λ' AR (n0 * 90 + 620)+      n2 = lfNoise2 'μ' KR (mce2 0.3 0.301)+      e = n1 * (n2 * 0.15 + 0.18)+  in combL (mix ns + e) 0.3 0.3 3+ main :: IO ()-main = audition . out 0 =<< police_state+main = audition (out 0 police_state)
+ gr/pond-life-hp.hs view
@@ -0,0 +1,16 @@+-- pond life (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++pond_life :: UId m => m UGen+pond_life = do+  let f = fSinOsc KR (20 + #(rand 0 30)) 0+          * #(rand 100 400)+          + #(linRand 500 2500 0)+  let a = lfPulse KR (3 / #(rand 1 9)) #(rand 0.2 0.5) 0.04+  return (pan2 (sinOsc AR f 0 * a) #(rand (-1) 1) 0.5)++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) =<< pond_life
gr/pond-life.hs view
@@ -5,10 +5,10 @@  pond_life :: UGen pond_life =-    let f0 = 20 + rand 'a' 0 30-        f1 = fSinOsc KR f0 0 * rand 'b' 100 400 + linRand 'c' 500 2500 0-        a = lfPulse KR (3 / rand 'd' 1 9) (rand 'e' 0.2 0.5) 0.04-    in pan2 (sinOsc AR f1 0 * a) (rand 'f' (-1) 1) 0.5+    let f0 = 20 + rand 'α' 0 30+        f1 = fSinOsc KR f0 0 * rand 'β' 100 400 + linRand 'γ' 500 2500 0+        a = lfPulse KR (3 / rand 'δ' 1 9) (rand 'ε' 0.2 0.5) 0.04+    in pan2 (sinOsc AR f1 0 * a) (rand 'ζ' (-1) 1) 0.5  main :: IO () main = overlapTextureU (8,8,4,maxBound) pond_life
gr/proxy-mixer-m.hs view
@@ -13,7 +13,6 @@ mce_scramble :: UGen -> IO UGen mce_scramble u = fmap mce (L.scramble (mceChannels u)) --- > pm >>= Sound.SC3.UGen.Dot.draw pm :: IO UGen pm = do   e <- mk_e
gr/proxy-mixer.hs view
@@ -1,7 +1,7 @@ -- > Sound.SC3.UGen.Help.viewSC3Help "ProxyMixer"  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}  randN_l :: ID z => Int -> z -> UGen -> UGen -> [UGen] randN_l k z l = mceChannels . randN k z l@@ -9,15 +9,14 @@ iScramble :: ID z => z -> UGen -> UGen iScramble z = tScramble z KR 1 --- > Sound.SC3.UGen.Dot.draw pm pm :: UGen pm =-    let e = let l = randN_l 11 'a' (-1) 1-                t = randN_l 10 'a' 0 1+    let e = let l = randN_l 11 'α' (-1) 1+                t = randN_l 10 'β' 0 1             in Envelope l t [EnvNum 0] (Just 9) (Just 0)         env = envGen KR 1 1 0 1 DoNothing e         p = midiRatio (env * mce [1, 0.33, -1] * 19) * 250-        o = formant AR p (iScramble 'a' p * 2) (iScramble 'b' p)+        o = formant AR p (iScramble 'γ' p * 2) (iScramble 'δ' p)     in out 0 (splay o 1 1 0 True * 0.1)  main :: IO ()
gr/pulsing-bottles-m.hs view
@@ -15,7 +15,7 @@              p <- rand 0 (pi * 2)              return (sinOsc KR f p)       u = liftM2 (\x y -> pan2 x y 1) r s-  return.sum =<< sequence (replicate 6 u)+  fmap sum (sequence (replicate 6 u))  main :: IO () main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
gr/pwm-crossfade.hs view
@@ -5,12 +5,11 @@ urangeM :: UGen -> UGen -> UGen urangeM u = let [u0,u1] = mceChannels u in urange u0 u1 --- > Sound.SC3.UGen.Dot.draw pwm_crossfade pwm_crossfade :: UGen pwm_crossfade =     let n = mce [400,500,450,376,600]         d = 1/20-        f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'a' dinf n)+        f = demand (impulse KR d (mce2 0 0.5)) 0 (dseq 'α' dinf n)         f_ = urangeM f (lfPulse KR 8 0 (range 0 1 (lfTri KR d 1)))     in lpf (saw AR (max 376 f_ * mce2 1 0.99) * 0.5) 8000 
gr/rails.hs view
@@ -7,16 +7,15 @@ rand2 :: ID a => a -> UGen -> UGen rand2 e n = rand e (-n) n --- > Sound.SC3.UGen.Dot.draw rails rails :: UGen rails =     let n = 20 -- resonant modes-        e = dust 'a' AR 100 * 0.04 -- excitation+        e = dust 'α' AR 100 * 0.04 -- excitation         f = xLine KR 3000 300 8 DoNothing -- sweep filter down-        l = line KR (rand2 'b' 1) (rand2 'c' 1) 8 DoNothing -- sweep pan-        r = uclone' 'a' n (200 + linRand 'd' 0 3000 0) -- resonant frequencies+        l = line KR (rand2 'β' 1) (rand2 'γ' 1) 8 DoNothing -- sweep pan+        r = uclone' 'δ' n (200 + linRand 'ε' 0 3000 0) -- resonant frequencies         a = replicate n 1-        t = uclone' 'b' n (0.2 + rand 'e' 0 1) -- ring times+        t = uclone' 'ζ' n (0.2 + rand 'η' 0 1) -- ring times         k = klank (resonz e f 0.2) 1 0 1 (klankSpec r a t)     in pan2 k l 1 
gr/rain-thunder.hs view
@@ -2,16 +2,15 @@  import Sound.SC3.ID {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw rain_thunder rain_thunder :: UGen rain_thunder =-    let n0 = pinkNoise 'a' AR * (0.08 + lfNoise1 'a' KR 0.3 * 0.02)-        d0 = lpf (dust2 'b' AR (range 40 50 (lfNoise1 'b' KR 0.2))) 7000+    let n0 = pinkNoise 'α' AR * (0.08 + lfNoise1 'β' KR 0.3 * 0.02)+        d0 = lpf (dust2 'γ' AR (range 40 50 (lfNoise1 'δ' KR 0.2))) 7000         e0 = line KR 0 1 10 DoNothing         p0 = tanh (3 * gVerb (hpf (n0+d0) 400) 250 100 0.25 0.5 15 0.3 0.7 0.5 300 * e0)         lfNoise1C e r f = clip (lfNoise1 e r f) 0 1-        n1 = pinkNoise 'c' AR * ((lfNoise1C 'c' KR 3 * lfNoise1C 'c' KR 2) ** 1.8)-        f1 = linExp (lfNoise1 'd' KR 1) (-1) 1 100 2500+        n1 = pinkNoise 'ε' AR * ((lfNoise1C 'ζ' KR 3 * lfNoise1C 'η' KR 2) ** 1.8)+        f1 = linExp (lfNoise1 'θ' KR 1) (-1) 1 100 2500         e1 = line KR 0 0.7 30 DoNothing         p1 = gVerb (tanh (lpf (10 * hpf n1 20) f1)) 270 30 0.7 0.5 15 0.5 0.7 0.5 300 * e1     in limiter (p0 + p1) 1 0.01
gr/random-panning-sines-m.hs view
@@ -3,7 +3,6 @@ import Sound.SC3.Monad {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw =<< rps rps :: UId m => m UGen rps = do   let nd = do r0 <- linRand 80 2000 0
gr/random-panning-sines.hs view
@@ -4,14 +4,13 @@ import Sound.SC3.UGen.Protect import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw rps rps :: UGen rps =-    let nd = let o = fSinOsc AR (linRand 'a' 80 2000 0) 0-                 l = lfNoise1 'b' KR (rand 'b' 0.8 1.2)-                 a = lfNoise1 'c' KR (rand 'c' 0.82 0.98)+    let nd = let o = fSinOsc AR (linRand 'α' 80 2000 0) 0+                 l = lfNoise1 'β' KR (rand 'γ' 0.8 1.2)+                 a = lfNoise1 'δ' KR (rand 'ε' 0.82 0.98)              in pan2 o l a-    in mix (uclone 'a' 8 nd) * (0.4 / 8)+    in mix (uclone 'ζ' 8 nd) * (0.4 / 8)  main :: IO () main = overlapTextureU (8,8,2,maxBound) rps
+ gr/random-sine-waves-hp.hs view
@@ -0,0 +1,10 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+  let rsw = pan2 (fSinOsc AR #(rand 0 2000) 0 * 0.02) #(rand (-1) 1) 1+  overlapTextureU (2,5,12,maxBound) rsw
+ gr/random-sine-waves-she.hs view
@@ -0,0 +1,11 @@+-- random sine waves (jmcc)+{-# OPTIONS_GHC -F -pgmF she #-}++import Control.Applicative {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++main :: IO ()+main = do+  s <- (|pan2 ((|fSinOsc ~AR (rand 0 2000) ~0|) .* 0.02) (rand (-1) 1) ~1|)+  overlapTextureU (2,5,12,maxBound) s
gr/random-sine-waves.hs view
@@ -5,9 +5,9 @@  rsw :: UGen rsw =-    let f = rand 'a' 0 2000+    let f = rand 'α' 0 2000         o = fSinOsc AR f 0 * 0.02-    in pan2 o (rand 'b' (-1) 1) 1+    in pan2 o (rand 'β' (-1) 1) 1  main :: IO () main = overlapTextureU (2,5,12,maxBound) rsw
gr/record-scratcher.hs view
@@ -1,4 +1,4 @@--- record scratcher (josh parmenter)+-- record scratcher (jp)  import Sound.OSC {- hosc -} import Sound.SC3 {- hsc3 -}
+ gr/red-frik-m.hs view
@@ -0,0 +1,24 @@+-- red_frik (f0)++import Sound.SC3.Monad {- hsc3 -}++red :: UId m => UGen -> UGen -> m UGen+red tr n = do+  r1 <- tRand 0.3 3 tr+  r2 <- tRand 0.3 5 tr+  r3 <- tRand 0 0.5 tr+  r4 <- tRand 0.49 0.56 tr+  r5 <- tRand 0.3 0.6 tr+  r6 <- tRand 0.3 0.5 tr+  let o1 = fSinOsc KR r2 0 * r3 + r4+      o2 = fSinOsc KR o1 r5 * r6+  return (rhpf n r1 o2)++red_frik :: UId m => m UGen+red_frik = do+  n <- clone 2 (brownNoise AR)+  let tr = impulse KR 0.1 0+  red tr n++main :: IO ()+main = audition . out 0 =<< red_frik
− gr/red-frik.hs
@@ -1,25 +0,0 @@--- red_frik (f0)--import Sound.SC3.Monad {- hsc3 -}--red :: UId m => UGen -> UGen -> m UGen-red tr n = do-  r1 <- tRand 0.3 3 tr-  r2 <- tRand 0.3 5 tr-  r3 <- tRand 0 0.5 tr-  r4 <- tRand 0.49 0.56 tr-  r5 <- tRand 0.3 0.6 tr-  r6 <- tRand 0.3 0.5 tr-  let o1 = fSinOsc KR r2 0 * r3 + r4-      o2 = fSinOsc KR o1 r5 * r6-  return (rhpf n r1 o2)---- > Sound.SC3.UGen.Dot.draw =<< red_frik-red_frik :: UId m => m UGen-red_frik = do-  n <- clone 2 (brownNoise AR)-  let tr = impulse KR 0.1 0-  red tr n--main :: IO ()-main = audition . out 0 =<< red_frik
+ gr/resonant-dust-hp.hs view
@@ -0,0 +1,15 @@+-- resonant dust (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++resonant_dust :: UId m => m UGen+resonant_dust = do+  st <- rand 80 2080+  let en = st + (st * #(rand (-0.5) 0.5))+      rf = xLine KR st en 9 DoNothing+  return (pan2 (resonz (#(dust AR #(rand 50 850)) * 0.3) rf 0.1) #(rand (-1) 1) 1)++main :: IO ()+main = overlapTextureU (5,2,9,maxBound) =<< resonant_dust
gr/resonant-dust.hs view
@@ -6,10 +6,10 @@ resonant_dust :: UGen resonant_dust =     let rf = let st = rand 'α' 80 2080-                 en = st + (rand 'α' (-0.5) 0.5 * st)+                 en = st + (rand 'β' (-0.5) 0.5 * st)              in xLine KR st en 9 DoNothing-        d = dust 'α' AR (rand 'α' 50 850) * 0.3-    in pan2 (resonz d rf 0.1) (rand 'α' (-1) 1) 1+        d = dust 'γ' AR (rand 'δ' 50 850) * 0.3+    in pan2 (resonz d rf 0.1) (rand 'ε' (-1) 1) 1  main :: IO () main = overlapTextureU (5,2,9,maxBound) resonant_dust
+ gr/reverberated-sine-percussion-hp.hs view
@@ -0,0 +1,20 @@+-- reverberated sine percussion (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+  let d = 6+      c = 5+      a = 4+      s_ = do return (resonz (#(dust AR (2 / constant d)) * 50) (200 + #(rand 0 3000)) 0.003)+      x_ i = do return (allpassN i 0.05 #(clone 2 (rand 0 0.05)) 1)+  s <- fmap sum (sequence (replicate d s_))+  y <- do let z = delayN s 0.048 0.48+          return (mix (combL z 0.1 (#(lfNoise1 KR #(clone c (rand 0 0.1))) * 0.04 + 0.05) 15))+  x <- chainM a x_ y+  return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
+ gr/reverberated-sine-percussion-m.hs view
@@ -0,0 +1,24 @@+-- reverberated sine percussion (jmcc)++import Sound.SC3.Monad {- hsc3 -}++reverberated_sine_percussion :: (Functor m,UId m) => m UGen+reverberated_sine_percussion = do+  let d = 6+      c = 5+      a = 4+      s_ = do n <- dust AR (2 / constant d)+              r <- rand 0 3000+              return (resonz (n * 50) (200 + r) 0.003)+      x_ i = do r <- clone 2 (rand 0 0.05)+                return (allpassN i 0.05 r 1)+  s <- fmap sum (sequence (replicate d s_))+  y <- do let z = delayN s 0.048 0.48+          r <- clone c (rand 0 0.1)+          n <- lfNoise1 KR r+          return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))+  x <- chainM a x_ y+  return (s + x * 0.2)++main :: IO ()+main = audition . out 0 =<< reverberated_sine_percussion
− gr/reverberated-sine-percussion.hs
@@ -1,27 +0,0 @@--- reverberated sine percussion (jmcc)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< reverberated_sine_percussion-reverberated_sine_percussion :: (Functor m,UId m) => m UGen-reverberated_sine_percussion = do-  let d = 6-      c = 5-      a = 4-      s_ = do n <- dust AR (2 / constant d)-              r <- rand 0 3000-              return (resonz (n * 50) (200 + r) 0.003)-      x_ i = do r <- clone 2 (rand 0 0.05)-                return (allpassN i 0.05 r 1)-      (>=>) f g x = f x >>= g-      chain n f = foldl (>=>) return (replicate n f)-  s <- fmap sum (sequence (replicate d s_))-  y <- do let z = delayN s 0.048 0.48-          r <- clone c (rand 0 0.1)-          n <- lfNoise1 KR r-          return (mix (combL z 0.1 (n * 0.04 + 0.05) 15))-  x <- chain a x_ y-  return (s + x * 0.2)--main :: IO ()-main = audition . out 0 =<< reverberated_sine_percussion
gr/ring-modulated-klank.hs view
@@ -1,7 +1,7 @@ -- ring modulated klank (jmcc)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}  rmk :: UGen
gr/rm-octaver.hs view
@@ -1,4 +1,4 @@--- rm-octaver (andrea valle, miller puckette)+-- rm-octaver (av), courtesy miller puckette  import Sound.SC3 {- hsc3 -} 
+ gr/rzblp-hp.hs view
@@ -0,0 +1,31 @@+-- rzblp-hp (rd)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+    let g :: UId m => Int -> m UGen+        g _ = do blip AR #(lfn q 1330 1395) 24 *. lfn q 0.001 0.007+    in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+  q <- lfn 5.2 5.2 5.21+  a <- d dinf (mce [1,3,2,7,8])+  let freq = demand (impulse KR q 0) 0 a * 30 + 340+  s1 <- blip AR freq 3 *. lfn q 0.001 0.01+  s2 <- resonz (impulse AR q (mce2 0 0)) #(lfn 5 30 640) #(lfn q 0.1 0.5)+        *. lfn q 0.01 1.8+  s3 <- hpb q .*. lfn q 1.2 1.8+  let s4 = blip AR #(lfn q 16 36) 3 * mce2 0.03 0.09+  return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
+ gr/rzblp-m.hs view
@@ -0,0 +1,34 @@+-- rzblp-m (rd)++import Sound.SC3.Monad {- hsc3 -}++lfn :: UId m => UGen -> UGen -> UGen -> m UGen+lfn f l r = fmap (range l r) (lfNoise0 KR f)++hpb :: UId m => UGen -> m UGen+hpb q =+    let g :: UId m => Int -> m UGen+        g _ = do f <- lfn q 1330 1395+                 a <- lfn q 0.001 0.007+                 return (blip AR f 24 * a)+    in mixFillM 2 g++mk_f :: UId m => (UGen -> UGen -> m UGen) -> m UGen+mk_f d = do+  q <- lfn 5.2 5.2 5.21+  a <- d dinf (mce [1,3,2,7,8])+  let freq = demand (impulse KR q 0) 0 a * 30 + 340+  s1 <- blip AR freq 3 *. lfn q 0.001 0.01+  s2 <- do f <- lfn 5 30 640+           bw <- lfn q 0.1 0.5+           resonz (impulse AR q (mce2 0 0)) f bw *. lfn q 0.01 1.8+  s3 <- hpb q .*. lfn q 1.2 1.8+  s4 <- do f <- lfn q 16 36+           return (blip AR f 3 * mce2 0.03 0.09)+  return (sum [s1,s2,s3,s4])++rzblp :: UId m => m UGen+rzblp = mk_f drand .+. mk_f dxrand++main :: IO ()+main = audition . out 0 =<< rzblp
gr/rzblp-u.hs view
@@ -3,25 +3,33 @@ import Sound.SC3 {- hsc3 -} import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -} +lfn :: UGen -> UGen -> UGen -> UGen+lfn f l r = range l r (lfNoise0 KR f)++hpb :: UGen -> UGen+hpb q =+    let g :: Int -> UGen+        g _ = let f = lfn q 1330 1395+                  a = lfn q 0.001 0.007+              in blip AR f 24 * a+    in mixFill 2 g++mk_f :: (UGen -> UGen -> UGen) -> UGen+mk_f d =+    let q = lfn 5.2 5.2 5.21+        a = d dinf (mce [1,3,2,7,8])+        tr = impulse KR q 0+        freq = demand tr 0 a * 30 + 340+    in sum [blip AR freq 3 * lfn q 0.001 0.01+           ,resonz (impulse AR q (mce2 0 0))+                   (lfn 5 30 640)+                   (lfn q 0.1 0.5)+                   * lfn q 0.01 1.8+           ,hpb q * lfn q 1.2 1.8+           ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]+ rzblp :: UGen-rzblp =-  let wrp i l r = let m = (r - l) / 2-                  in i * m + l + m-      lfn f = wrp (lfNoise0 KR f)-      hpb q = mixFill 2 (\_ -> let f = lfn q 1330 1395-                                   a = lfn q 0.001 0.007-                               in blip AR f 24 * a)-      mk_f d = let q = lfn 5.2 5.2 5.21-                   a = d dinf (mce [1,3,2,7,8])-                   tr = impulse KR q 0-                   freq = demand tr 0 a * 30 + 340-               in sum [blip AR freq 3 * lfn q 0.001 0.01-                      ,resonz (impulse AR q (mce2 0 0))-                                  (lfn 5 30 640)-                                  (lfn q 0.1 0.5) * lfn q 0.01 1.8-                      ,hpb q * lfn q 1.2 1.8-                      ,blip AR (lfn q 16 36) 3 * mce2 0.03 0.09]-  in mk_f drand + mk_f dxrand+rzblp = mk_f drand + mk_f dxrand  main :: IO () main = audition (out 0 rzblp)
gr/rzblp.hs view
@@ -2,15 +2,10 @@  import Sound.SC3.ID {- hsc3 -} -wrp :: Fractional a => a -> a -> a -> a-wrp i l r =-    let m = (r - l) / 2-    in i * m + l + m- lfn :: ID a => a -> UGen -> UGen -> UGen -> UGen lfn z f l r =     let z' = z `joinID` l `joinID` r-    in wrp (lfNoise0 z' KR f) l r+    in range l r (lfNoise0 z' KR f)  hpb :: (ID a) => a -> UGen -> UGen hpb z q =@@ -35,7 +30,7 @@            ,blip AR (lfn z q 16 36) 3 * mce2 0.03 0.09]  rzblp :: UGen-rzblp = mk_f 'a' drand + mk_f 'b' dxrand+rzblp = mk_f 'α' drand + mk_f 'β' dxrand  main :: IO () main = audition (out 0 rzblp)
gr/s-chirp.hs view
@@ -7,17 +7,17 @@ s_chirp =   let x = mouseX KR 15 0 Linear 0.1       y = mouseY KR 15 27 Linear 0.1-      t = dust 'a' KR 9-      b = tChoose 'a' t (mce [36,48,60,72])-      n = lfNoise1 'a' KR (mce2 3 3.05) * 0.04-      d = tIRand 'a' x y t-      e = decay2 t 0.005 (tRand 'a' 0.02 0.15 t)+      t = dust 'α' KR 9+      b = tChoose 'β' t (mce [36,48,60,72])+      n = lfNoise1 'γ' KR (mce2 3 3.05) * 0.04+      d = tIRand 'δ' x y t+      e = decay2 t 0.005 (tRand 'ε' 0.02 0.15 t)       o = let k = degreeToKey 0 d 12               f = midiCPS (b + k + n)               m = e * sinOsc AR f 0 * 0.2               u = pulseDivider t 9 0-              r0 = tRand 'a' 0.0075 0.125 u-              r1 = tRand 'a' 0.05 0.15 u+              r0 = tRand 'ζ' 0.0075 0.125 u+              r1 = tRand 'η' 0.05 0.15 u           in m * 0.5 + allpassC m 0.15 r0 r1   in out 0 o 
gr/sam-i-am.hs view
@@ -2,11 +2,10 @@  import Control.Monad.Random {- MonadRandom -} import Data.List {- base -}-import Data.Maybe+import Data.Maybe {- base -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Random.Monad-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Random.Monad {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  text :: [String] text =@@ -34,19 +33,22 @@         o = sinOsc AR f1 0 * pulse AR f2 0.5 * saw AR f3 * e     in synthdef "sam" (out 0 o) -b :: RandomGen g => g -> [(String,[(String,Double)])]+b :: (RandomGen g,Floating n,Random n) => g -> [(String,[(Key,n)])] b g =     let mk w = do           f1 <- exprand 200 9000           f2 <- exprand 20 9000           f3 <- exprand 20 9000           let d = 0.1 * fromIntegral (length w)-          return (w,[("freq1",f1),("freq2",f2),("freq3",f3),("dur",d)])+          return (w,[(K_param "freq1",f1)+                    ,(K_param "freq2",f2)+                    ,(K_param "freq3",f3)+                    ,(K_dur,d)])     in evalRand (mapM mk a) g  main :: IO () main = do   g <- getStdGen   let t = b g-      ae = mapMaybe (\w -> fmap event (lookup w t)) (concat x)-  audition (sam,pseq (map return ae) 1)+      ae = mapMaybe (\w -> fmap e_from_list (lookup w t)) (concat x)+  audition (p_with (K_instr,psynth sam) (pseq (map return ae) 1))
gr/saucer-base.hs view
@@ -6,9 +6,9 @@ saucer_base :: UGen saucer_base =     let a = rand 'α' 0 20-        b = rand 'α' 0 1000-        c = rand 'α' 0 5000-        p = rand 'α' (-1) 1+        b = rand 'β' 0 1000+        c = rand 'γ' 0 5000+        p = rand 'δ' (-1) 1         o = sinOsc AR a 0 * b + (1.1 * b)         o' = sinOsc AR o 0 * c + (1.1 * c)     in pan2 (sinOsc AR o' 0 * 0.1) p 1
gr/scritto.hs view
@@ -9,7 +9,7 @@ scritto_i bx =     let 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-        n0 = lfNoise2 'a' KR 3+        n0 = lfNoise2 'α' KR 3         v_filter_b i =             let bi = linLin n0 (-1) 1 0 bx                 b = buf_at bi in v_filter i (b 0) (b 5) (b 10)
gr/seqr.hs view
@@ -1,7 +1,7 @@ -- seqr (rd)  import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}  nrand :: ID z => Int -> z -> UGen -> UGen -> [UGen] nrand n e l = mceChannels . randN n e l@@ -17,13 +17,13 @@ -- > Sound.SC3.UGen.Dot.draw (seqr 12) seqr :: Int -> UGen seqr n =-  let f = rand 'a' 9 18 / constant n-      b = blip AR (mce2 (seqr_f f (nfreq 'a' n 72 96))-                        (seqr_f f (nfreq 'b' n 72 84)))-                  (mce2 (seqr_f f (nrand n 'c' 1 3))-                        (seqr_f f (nrand n 'd' 3 6)))-      a = mce2 (seqr_f f (nrand n 'e' 0.05 0.10))-               (seqr_f f (nrand n 'f' 0.05 0.15))+  let f = rand 'α' 9 18 / constant n+      b = blip AR (mce2 (seqr_f f (nfreq 'β' n 72 96))+                        (seqr_f f (nfreq 'γ' n 72 84)))+                  (mce2 (seqr_f f (nrand n 'δ' 1 3))+                        (seqr_f f (nrand n 'ε' 3 6)))+      a = mce2 (seqr_f f (nrand n 'ζ' 0.05 0.10))+               (seqr_f f (nrand n 'η' 0.05 0.15))   in b * a  -- n = rand 6 18
+ gr/shifting-pulses-m.hs view
@@ -0,0 +1,52 @@+-- shifting pulses (rd)++import Sound.SC3.Monad {- hsc3 -}++wrp :: UGen -> UGen -> UGen -> UGen+wrp i l r = linLin i (-1) 1 l r++prt :: UId m => UGen -> UGen -> m UGen+prt a f = do+  r0 <- rand 0.2 0.9+  r1 <- rand 0.95 1.05+  r2 <- clone 2 (rand 0.95 1.05)+  let f' = f * wrp (sinOsc KR r0 0) 1 1.01 * r1+      a' = a * r2+      o = sinOsc AR (mce2 f f') 0+  return (o * a')++-- audition . out 0 =<< prts 2 900 0.002+-- audition . out 0 =<< prts 9 40 0.006+prts :: UId m => UGen -> UGen -> UGen -> m UGen+prts n f a = fmap sum (mapM (prt a) [f,f + f .. f * n])++-- audition . out 0 =<< fmt+fmt :: UId m => m UGen+fmt = do+  n <- (lfNoise2 KR 2)+  return  (formant AR (mce2 20 21) (wrp n 10 100) 200 * 0.35)++-- audition . out 0 =<< pulses+pulses :: UId m => m UGen+pulses = do+  n0 <- clone 2 (brownNoise KR)+  n1 <- clone 2 (brownNoise KR)+  n2 <- clone 2 (brownNoise KR)+  t <- dust KR 0.75+  let warp i = linLin i (-1) 1+      l = latch t t+      p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1+      f = warp n1 300 1800+      rq = warp n2 0.01 2+  return (mrg2 (l * rlpf p f rq) (sendTrig t 0 t))++shifting_pulses :: UId m => m UGen+shifting_pulses = do+  p1 <- prts 2 900 0.008+  p2 <- prts 9 40 0.022+  f <- fmt+  s <- pulses+  return (p1 + p2 + f + s)++main :: IO ()+main = audition . out 0 =<< shifting_pulses
− gr/shifting-pulses.hs
@@ -1,20 +0,0 @@--- shifting pulses (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< shifting_pulses-shifting_pulses :: UId m => m UGen-shifting_pulses = do-  n0 <- clone 2 (brownNoise KR)-  n1 <- clone 2 (brownNoise KR)-  n2 <- clone 2 (brownNoise KR)-  t <- dust KR 0.75-  let warp i = linLin i (-1) 1-      l = latch t t-      p = pulse AR (warp n0 2 (mce2 11 15)) 0.01 * 0.1-      f = warp n1 300 1800-      rq = warp n2 0.01 2-  return (l * rlpf p f rq)--main :: IO ()-main = audition . out 0 =<< shifting_pulses
+ gr/sidereal-time-hp.hs view
@@ -0,0 +1,28 @@+-- sidereal time (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Control.Monad {- base -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++sidereal_time :: UId m => m UGen+sidereal_time = do+  let p = 15+  z <- let y = do+             fr <- replicateM p (expRand 100 6000)+             rt <- replicateM p (rand 2 6)+             return (klankSpec fr (replicate p 1) rt)+       in clone 2 y+  let f = xLine KR #(expRand 40 300) #(expRand 40 300) 12 DoNothing+  let t = lfPulse AR f 0 #(rand 0.1 0.9)+          * max 0 #(lfNoise2 KR #(rand 0 8))+          * 0.002+      o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1+  return (combN o 0.6 #(rand 0.1 0.6) 8 + mceReverse o)++main :: IO ()+main = overlapTextureU (4,4,6,maxBound) =<< sidereal_time++{-+audition (out 0 sidereal_time)+-}
gr/sidereal-time.hs view
@@ -7,15 +7,15 @@ sidereal_time :: UGen sidereal_time =   let p = 15-      z = let y = let fr = uclone' 'α' p (expRand 'α' 100 6000)-                      rt = uclone' 'α' p (rand 'α' 2 6)+      z = let y = let fr = uclone' 'α' p (expRand 'β' 100 6000)+                      rt = uclone' 'γ' p (rand 'δ' 2 6)                   in klankSpec fr (replicate p 1) rt-          in uclone 'α' 2 y-      f = xLine KR (expRand 'α' 40 300) (expRand 'β' 40 300) 12 DoNothing-      t = let e = lfNoise2 'γ' KR (rand 'δ' 0 8)-          in lfPulse AR f 0 (rand 'ε' 0.1 0.9) * 0.002 * max 0 e+          in uclone 'ε' 2 y+      f = xLine KR (expRand 'ζ' 40 300) (expRand 'η' 40 300) 12 DoNothing+      t = let e = lfNoise2 'θ' KR (rand 'ι' 0 8)+          in lfPulse AR f 0 (rand 'κ' 0.1 0.9) * 0.002 * max 0 e       o = distort (klank t 1 0 1 (mceTranspose z)) * 0.1-  in combN o 0.6 (rand 'ζ' 0.1 0.6) 8 + mceReverse o+  in combN o 0.6 (rand 'λ' 0.1 0.6) 8 + mceReverse o  main :: IO () main = overlapTextureU (4,4,6,maxBound) sidereal_time
gr/sinusdeklinationen.hs view
@@ -2,8 +2,7 @@  import Data.List.Split {- split -} import Sound.SC3 {- hsc3 -}-import Sound.SC3.Lang.Control.Event {- hsc3-lang -}-import Sound.SC3.Lang.Pattern.ID+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  sinuscell :: UGen sinuscell =@@ -20,20 +19,22 @@         s = sinOsc AR fre 0     in out b (pan2 s p e) -pattern :: Enum e => (Double,[e]) -> P Event+pattern :: Enum e => (Field,[e]) -> P_Bind pattern (c,z) =     case z of       [z0,z1,z2,z3] ->           let a = pwhite z0 0 1 inf               s = 0.2               r = pwhite z1 0 1 inf-          in pbind [("fre",pwhite z2 0 1100 inf)-                   ,("atk",a)-                   ,("sus",s)-                   ,("rel",r)-                   ,("dur",a+s+r)-                   ,("amp",pwhite z3 0 1 inf)-                   ,("pan",prepeat c)]+              i = psynth (synthdef "sinuscell" sinuscell)+          in [(K_instr,i)+             ,(K_dur,a+s+r)+             ,(K_amp,pwhite z3 0 1 inf)+             ,(K_param "fre",pwhite z2 0 1100 inf)+             ,(K_param "atk",a)+             ,(K_param "sus",s)+             ,(K_param "rel",r)+             ,(K_param "pan",prepeat c)]       _ -> undefined  cells :: Fractional n => [n]@@ -41,6 +42,5 @@  main :: IO () main =-    let s = synthdef "sinuscell" sinuscell-        c = zip cells (chunksOf 4 ['a'..])-    in audition (s,ppar (map pattern c))+    let c = zip cells (chunksOf 4 ['α'..])+    in audition (ppar (map (pbind . pattern) c))
gr/snare-909.hs view
@@ -4,8 +4,8 @@  snare_909 :: UGen -> UGen snare_909 tr =-  let n = whiteNoise 'a' AR-      v = tRand 'a' 0.25 1.0 tr+  let n = whiteNoise 'α' AR+      v = tRand 'β' 0.25 1.0 tr       e a b = envGen AR tr 1 0 1 DoNothing (envPerc a b)       e1 = e 0.0005 0.055       e2 = e 0.0005 0.075
+ gr/sosc-lp-m.hs view
@@ -0,0 +1,49 @@+-- sosc-lp (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+  n1 <- dwhite 1 lo hi+  n2 <- whiteNoise r+  d <- dseq dinf n1+  return (tDuty r d 0 DoNothing (abs n2) 1)++setup :: Transport m => m ()+setup = do+  let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]+      b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]+  _ <- async (b_alloc 10 9 1)+  _ <- async (b_alloc 11 9 1)+  send (b_setn1 10 0 a)+  send (b_setn1 11 0 b)++sosc_lp :: UGen -> UGen -> UGen+sosc_lp t n =+    let d_env = decay2 t 0.002 2.5+        idx = stepper t 0 0 15 1 0+        f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)+                 r = (bufRdL 1 KR 11 idx Loop - 24)+             in midiCPS (mce2 l r)+        f2 = f1 + n * 1.2+        o1 = sinOsc AR f1 0 * d_env+        o2 = sinOsc AR f2 0 * d_env+    in (o1 + o2) * 0.2++sosc_lp_m :: UId m => m UGen+sosc_lp_m = do+  clk <- dustR KR 0.2 0.9+  n <- lfNoise0 KR (mce2 1 3)+  return (sosc_lp clk n)++main :: IO ()+main = withSC3 (setup >> sosc_lp_m >>= play . out 0)++-- > withSC3 resetter+resetter :: Transport m => m ()+resetter = do+  let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]+      b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]+  send (b_setn1 10 0 a)+  send (b_setn1 11 0 b)
− gr/sosc-lp.hs
@@ -1,50 +0,0 @@--- sosc-lp (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--dustR :: UId m => Rate -> UGen -> UGen -> m UGen-dustR r lo hi = do-  n1 <- dwhite 1 lo hi-  n2 <- whiteNoise r-  d <- dseq dinf n1-  return (tDuty r d 0 DoNothing (abs n2) 1)--setup :: Transport m => m ()-setup = do-  let a = [60, 71, 89, 65, 36, 57, 92, 97, 92, 97]-      b = [71, 89, 60, 57, 65, 36, 95, 92, 93, 97]-  _ <- async (b_alloc 10 9 1)-  _ <- async (b_alloc 11 9 1)-  send (b_setn1 10 0 a)-  send (b_setn1 11 0 b)--sosc_lp :: UGen -> UGen -> UGen-sosc_lp t n =-    let d_env = decay2 t 0.002 2.5-        idx = stepper t 0 0 15 1 0-        f1 = let l = (bufRdL 1 KR 10 idx Loop - 24)-                 r = (bufRdL 1 KR 11 idx Loop - 24)-             in midiCPS (mce2 l r)-        f2 = f1 + n * 1.2-        o1 = sinOsc AR f1 0 * d_env-        o2 = sinOsc AR f2 0 * d_env-    in (o1 + o2) * 0.2---- > Sound.SC3.UGen.Dot.draw =<< sosc_lp_m-sosc_lp_m :: UId m => m UGen-sosc_lp_m = do-  clk <- dustR KR 0.2 0.9-  n <- lfNoise0 KR (mce2 1 3)-  return (sosc_lp clk n)--main :: IO ()-main = withSC3 (setup >> sosc_lp_m >>= play . out 0)---- > withSC3 resetter-resetter :: Transport m => m ()-resetter = do-  let a = [71, 60, 65, 89, 36, 57, 95, 97, 92, 97]-      b = [89, 71, 60, 65, 57, 36, 92, 95, 93, 97]-  send (b_setn1 10 0 a)-  send (b_setn1 11 0 b)
gr/spe-m.hs view
@@ -3,12 +3,9 @@  import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< spe spe :: UId m => m UGen spe = do-  let (>=>) f g x = f x >>= g-      chain n f = foldl (>=>) return (replicate n f)-      rapf i = do r <- clone 2 (rand 0 0.05)+  let rapf i = do r <- clone 2 (rand 0 0.05)                   return (allpassN i 0.05 r 4)       src = do let t = impulse KR 9 0                    e = envGen KR t 0.1 0 1 DoNothing (envPerc 0.1 1)@@ -21,7 +18,7 @@                    o = lfSaw AR f 0 * e                    rq = midiCPS (n * 36 + 110)                return (rlpf o rq 0.1)-  chain 4 rapf =<< src+  chainM 4 rapf =<< src  main :: IO () main = audition . out 0 =<< spe
gr/spe-p.hs view
@@ -1,30 +1,28 @@ -- spe-p (jmcc)  import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  spe3_allpass6 :: UId m => m Synthdef spe3_allpass6 = do   n <- lfNoise1 KR 1-  let freq = control KR "freq" 440-      (>=>) f g x = f x >>= g-      chain i f = foldl (>=>) return (replicate i f)+  let fr = control KR "freq" 440       rapf i = do r <- clone 2 (rand 0 0.05)                   return (allpassN i 0.05 r 4)       e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.1 1)       rq = midiCPS (n * 36 + 110)-      o = rlpf (lfSaw AR freq 0 * e) rq 0.1-  u <- fmap (out 0) (chain 4 rapf o)+      o = rlpf (lfSaw AR fr 0 * e) rq 0.1+  u <- fmap (out 0) (chainM 4 rapf o)   return (synthdef "spe" u) -notes :: P Double+notes :: Num n => P n notes =-    let n = [prand' 'a' [pempty,fromList [24,31,36,43,48,55]] inf-            ,pflop [60,prand 'b' [63,65] inf,67,prand 'c' [70,72,74] inf]-            ,psplitPlaces (pwhite 'd' 3 9 inf) (fromList [74,75,77,79,81])]+    let n = [prand' 'α' [pempty,toP [24,31,36,43,48,55]] inf+            ,pflop [60,prand 'β' [63,65] inf,67,prand 'γ' [70,72,74] inf]+            ,psplitPlaces (pwhite 'δ' 3 9 inf) (toP [74,75,77,79,81])]     in pjoin (pseq1 n inf)  main :: IO () main = do   i <- spe3_allpass6-  audition (i,pbind [("midinote",notes),("dur",0.13)])+  audition (pbind [(K_instr,psynth i),(K_midinote,notes),(K_dur,0.13)])
gr/synthetic-piano-m.hs view
@@ -3,7 +3,6 @@ import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< synthetic_piano synthetic_piano :: UId m => m UGen synthetic_piano = do   n <- iRand 36 90
+ gr/tank-hp.hs view
@@ -0,0 +1,36 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}++pling :: UId m => m UGen+pling = do+  let s = decay2 #(dust AR 0.2) 0.1 0.5+          * cubed (fSinOsc AR #(expRand 300 2200) 0)+          * 0.1+  return (pan2 s #(rand (-1) 1) 1)++bang :: UId m => m UGen+bang = do return (pan2 (decay2 #(dust AR 0.01) 0.04 0.3 * #(brownNoise AR)) 0 1)++r_allpass :: UId m => UGen -> m UGen+r_allpass i = do return (allpassN i 0.03 #(clone 2 (rand 0.005 0.02)) 1)++tank_f :: UId m => UGen -> m UGen+tank_f i = do+  let [l,r] = mceChannels (onePole (localIn 2 AR * 0.98) 0.33)+  let a = allpassN (rotate2 l r 0.23) 0.05 #(clone 2 (rand 0.01 0.05)) 2+      b = delayN a 0.3 (mce [0.17,0.23])+  let c = leakDC (allpassN b 0.05 #(clone 2 (rand 0.03 0.15)) 2) 0.995 + i+  return (mrg [c,localOut c])++tank :: UId m => m UGen+tank = do+  s <- bang .+. mixFillM 8 (const pling :: UId m => Int -> m UGen)+  s' <- chainM 4 r_allpass s+  tank_f s'++main :: IO ()+main = do+  t <- tank+  audition (out 0 t)
gr/tank-m.hs view
@@ -1,6 +1,6 @@--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html -import Control.Monad {- base -} import Sound.SC3.Monad {- hsc3 -}  pling :: UId m => m UGen@@ -18,9 +18,6 @@   n <- brownNoise AR   return (pan2 (decay2 d 0.04 0.3 * n) 0 1) -chain :: Monad m => Int -> (b -> m b) -> b -> m b-chain n f = foldl (>=>) return (replicate n f)- r_allpass :: UId m => UGen -> m UGen r_allpass i = do   r <- clone 2 (rand 0.005 0.02)@@ -41,14 +38,8 @@       l7 = l6 + i   return (mrg [l7,localOut l7]) --- > tank >>= Sound.SC3.UGen.Dot.draw tank :: UId m => m UGen-tank = do-  s <- liftM2 (+) bang (mixFillM 8 (const pling))-  s' <- chain 4 r_allpass s-  tank_f s'+tank = tank_f =<< chainM 4 r_allpass =<< bang .+. mixFillM 8 (const pling)  main :: IO ()-main = do-  t <- tank-  audition (out 0 t)+main = audition . out 0 =<< tank
gr/tank.hs view
@@ -1,8 +1,9 @@--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)+-- tank (jmcc)+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -}  pling :: ID a => a -> UGen pling e =@@ -39,11 +40,10 @@         l7 = l6 + i     in mrg [l7,localOut l7] --- > Sound.SC3.UGen.Dot.draw tank tank :: UGen tank =-  let s = bang 'α' + mix (uclone 'β' 8 (pling 'β'))-  in tank_f 'γ' (useq 'δ' 4 (r_allpass 'δ') s)+  let s = bang 'α' + mix (uclone 'β' 8 (pling 'γ'))+  in tank_f 'δ' (useq 'ε' 4 (r_allpass 'ζ') s)  main :: IO () main = audition (out 0 tank)
+ gr/tgb-m.hs view
@@ -0,0 +1,43 @@+-- tgb (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tgb :: UId m => UGen -> UGen -> m UGen+tgb b d = do+  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)+      pm_t l r du t = let le = mkls l du+                          re = mkls r du+                      in tRand le re t+      wrp i = linLin i (-1) 1+      pm_n rt l du = do let le = mkls l du+                            re = mkls l du+                        n <- whiteNoise rt+                        return (wrp n le re)+  gps <- pm_n AR [(0,400),(1,900)] d+  let t = impulse AR gps 0+      pm_f (l,r) = pm_t l r d t+  du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]+             ,[(0,0.009),(0.5,0.020),(1,0.009)])+  pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]+             ,[(0,-0.5),(0.5,0.5),(1,1.0)])+  rt <- pm_f ([(0,6),(0.5,12),(1,6)]+             ,[(0,12),(0.5,12),(1,12)])+  cs <- pm_f ([(0,0),(1,0.95)]+             ,[(0,0),(1,1)])+  am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]+             ,[(0,0.5),(0.5,0.75),(1,0.25)])+  let cs' = cs * bufDur KR b+  return (tGrains 2 t b rt cs' du pn am 2)++tgb_10_12 :: UId m => m UGen+tgb_10_12 = tgb 10 12++act :: (UId m,Transport m) => m ()+act = do+  let fn = "/home/rohan/data/audio/pf-c5.aif"+  _ <- async (b_allocRead 10 fn 0 0)+  play . out 0 =<< tgb_10_12++main :: IO ()+main = withSC3 act
− gr/tgb.hs
@@ -1,41 +0,0 @@--- tgb (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< tgb 10 12-tgb :: UId m => UGen -> UGen -> m UGen-tgb b d = do-  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)-      pm_t l r du t = let le = mkls l du-                          re = mkls r du-                      in tRand le re t-      wrp i = linLin i (-1) 1-      pm_n rt l du = do let le = mkls l du-                            re = mkls l du-                        n <- whiteNoise rt-                        return (wrp n le re)-  gps <- pm_n AR [(0,400),(1,900)] d-  let t = impulse AR gps 0-      pm_f (l,r) = pm_t l r d t-  du <- pm_f ([(0,0.005),(0.5,0.015),(1,0.005)]-             ,[(0,0.009),(0.5,0.020),(1,0.009)])-  pn <- pm_f ([(0,-1.0),(0.5,-0.5),(1,0.5)]-             ,[(0,-0.5),(0.5,0.5),(1,1.0)])-  rt <- pm_f ([(0,6),(0.5,12),(1,6)]-             ,[(0,12),(0.5,12),(1,12)])-  cs <- pm_f ([(0,0),(1,0.95)]-             ,[(0,0),(1,1)])-  am <- pm_f ([(0,0.25),(0.5,0.55),(1,0.15)]-             ,[(0,0.5),(0.5,0.75),(1,0.25)])-  let cs' = cs * bufDur KR b-  return (tGrains 2 t b rt cs' du pn am 2)--act :: (UId m,Transport m) => m ()-act = do-  let fn = "/home/rohan/data/audio/pf-c5.aif"-  _ <- async (b_allocRead 10 fn 0 0)-  play . out 0 =<< tgb 10 12--main :: IO ()-main = withSC3 act
+ gr/tgr-rpr-m.hs view
@@ -0,0 +1,62 @@+-- tgr-rpr (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}++dustR :: UId m => Rate -> UGen -> UGen -> m UGen+dustR r lo hi = do+  n1 <- dwhite 1 lo hi+  n2 <- whiteNoise r+  d <- dseq dinf n1+  return (tDuty r d 0 DoNothing (abs n2) 1)++rpr :: UId m => UGen -> UGen -> m UGen+rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))++tgr_rpr :: (Functor m,UId m) => m UGen+tgr_rpr = do+  clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)+  rat <- rpr 2 clk+  dur <- rpr 4 clk+  pos <- fmap (* bufDur KR 10) (rpr 8 clk)+  pan <- rpr 10 clk+  amp <- rpr 6 clk+  return (tGrains 2 clk 10 rat pos dur pan amp 2)++preset :: [Double]+preset =+    [0.01,0.02+    ,0.95,1.05+    ,0.02,0.06+    ,0.6,0.7+    ,0.7,0.9+    ,-1.0,1.0]++rSet :: [(Double, Double)]+rSet =+    [(0.005,0.025),(0.05,0.25)+    ,(0.75,0.95),(1.05,1.25)+    ,(0.001,0.01),(0.02,0.04)+    ,(0.4,0.5),(0.7,0.8)+    ,(0.0,0.45),(0.55,1.0)+    ,(-1.0,0.0),(0.0,1.0)]++edit :: Transport m => m ()+edit = do+  s <- mapM (uncurry rrand) rSet+  send (c_setn [(0,s)])+  wait 0.35++run :: (UId m,Transport m) => m ()+run = do+  let sf = "/home/rohan/data/audio/pf-c5.snd"+  _ <- async (b_allocRead 10 sf 0 0)+  send (c_setn [(0,preset)])+  play . out 0 =<< tgr_rpr+  wait 0.3+  _ <- sequence (replicate 64 edit)+  reset++main :: IO ()+main = withSC3 run
− gr/tgr-rpr.hs
@@ -1,63 +0,0 @@--- tgr-rpr (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import Sound.SC3.Lang.Random.IO {- hsc3-lang -}--dustR :: UId m => Rate -> UGen -> UGen -> m UGen-dustR r lo hi = do-  n1 <- dwhite 1 lo hi-  n2 <- whiteNoise r-  d <- dseq dinf n1-  return (tDuty r d 0 DoNothing (abs n2) 1)--rpr :: UId m => UGen -> UGen -> m UGen-rpr n = tRand (in' 1 KR n) (in' 1 KR (n + 1))---- > Sound.SC3.UGen.Dot.draw =<< tgr_rpr-tgr_rpr :: (Functor m,UId m) => m UGen-tgr_rpr = do-  clk <- dustR AR (in' 1 KR 0) (in' 1 KR 1)-  rat <- rpr 2 clk-  dur <- rpr 4 clk-  pos <- fmap (* bufDur KR 10) (rpr 8 clk)-  pan <- rpr 10 clk-  amp <- rpr 6 clk-  return (tGrains 2 clk 10 rat pos dur pan amp 2)--preset :: [Double]-preset =-    [0.01,0.02-    ,0.95,1.05-    ,0.02,0.06-    ,0.6,0.7-    ,0.7,0.9-    ,-1.0,1.0]--rSet :: [(Double, Double)]-rSet =-    [(0.005,0.025),(0.05,0.25)-    ,(0.75,0.95),(1.05,1.25)-    ,(0.001,0.01),(0.02,0.04)-    ,(0.4,0.5),(0.7,0.8)-    ,(0.0,0.45),(0.55,1.0)-    ,(-1.0,0.0),(0.0,1.0)]--edit :: Transport m => m ()-edit = do-  s <- mapM (uncurry rrand) rSet-  send (c_setn [(0,s)])-  pauseThread 0.35--run :: (UId m,Transport m) => m ()-run = do-  let sf = "/home/rohan/data/audio/pf-c5.snd"-  _ <- async (b_allocRead 10 sf 0 0)-  send (c_setn [(0,preset)])-  play . out 0 =<< tgr_rpr-  pauseThread 0.3-  _ <- sequence (replicate 64 edit)-  reset--main :: IO ()-main = withSC3 run
gr/thb.hs view
@@ -4,10 +4,8 @@ import qualified Music.Theory.Contour.Polansky_1992 as T {- hmt -} import qualified Music.Theory.Pitch as T import Sound.SC3 {- hsc3 -}-import qualified Sound.SC3.Lang.Control.Event as L {- hsc3-lang -}-import qualified Sound.SC3.Lang.Control.Instrument as L-import qualified Sound.SC3.Lang.Control.Pitch as L-import qualified Sound.SC3.Lang.Pattern.ID as L+import qualified Sound.SC3.Lang.Math as M+import Sound.SC3.Lang.Pattern {- hsc3-lang -} import Sound.OSC {- hosc -}  -- | Happy birthday@@ -46,18 +44,19 @@ -- > withSC3 plain plain :: Transport m => m () plain = do-  _ <- async (d_recv L.defaultInstrument)-  let p = L.toP . concat-  play (L.pbind [("degree",p hb_d - 1)-                ,("octave",p hb_o + 1)-                ,("dur",p hb_t / 16)])+  _ <- async (d_recv defaultSynthdef)+  let p :: [[Double]] -> P Field+      p = toP . map realToFrac . concat+  play (pbind [(K_degree,p hb_d - 1)+              ,(K_octave,p hb_o + 1)+              ,(K_dur,p hb_t / 16)])  -- | Pitch classes -- -- > tail hb_k == [[7,7,9,7,2,0],[7,7,7,4,0,11,9],[5,5,4,0,2,0]] hb_k :: Integral n => [[n]] hb_k =-    let f = floor . L.degree_to_key [0,2,4,5,7,9,11] 12 . pred+    let f = floor . M.degreeToKey [0,2,4,5,7,9,11] 12 . pred     in map (map f) (hb_d :: [[Double]])  -- | Midi note numbers@@ -172,14 +171,16 @@ -- -- > withSC3 (hear 1 (map cim "hiprty")) -- > withSC3 (hear 9 (map cim hb))-hear :: Transport m => L.P L.Value -> [Cim L.Value] -> m ()+hear :: Transport m => Double -> [Cim Double] -> m () hear blur x =-    let (freq,dur,c) = unzip3 x-    in play (ins_s,L.pbind [("freq",L.toP freq)-                           ,("dur",L.toP dur)-                           ,("legato",blur)-                           ,("amp",L.toP c * 0.1 + 0.1)-                           ,("loc",L.toP c * 2 - 1)])+    let (f,d,c) = unzip3 x+        p = toP . map realToFrac+    in play (pbind [(K_instr,psynth ins_s)+                   ,(K_freq,p f)+                   ,(K_dur,p d)+                   ,(K_legato,p (repeat blur))+                   ,(K_amp,p c * 0.1 + 0.1)+                   ,(K_param "loc",p c * 2 - 1)])  main :: IO () main = withSC3 (hear 9 ph)
+ gr/three-cpsw-m.hs view
@@ -0,0 +1,18 @@+-- three-cpsw (rd)++import Sound.SC3.Monad {- hsc3 -}++three_cpsw :: UId m => m UGen+three_cpsw = do+  t <- dust KR (mce2 12 18)+  f0 <- tRand 1 64 t+  f1 <- lfNoise0 KR f0+  a <- tRand 0.0 0.5 t+  dt <- tRand 0.975 1.025 t+  dh <- tRand 0.750 0.7505 t+  let f = f1 * mce2 9000 12000 + 9500+      o = saw AR f + saw AR (f * dh) + saw AR (f * dt)+  return (clip2 (o * a) 0.75)++main :: IO ()+main = audition . out 0 =<< three_cpsw
− gr/three-cpsw.hs
@@ -1,19 +0,0 @@--- three-cpsw (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< three_cpsw-three_cpsw :: UId m => m UGen-three_cpsw = do-  t <- dust KR (mce2 12 18)-  f0 <- tRand 1 64 t-  f1 <- lfNoise0 KR f0-  a <- tRand 0.0 0.5 t-  dt <- tRand 0.975 1.025 t-  dh <- tRand 0.750 0.7505 t-  let f = f1 * mce2 9000 12000 + 9500-      o = saw AR f + saw AR (f * dh) + saw AR (f * dt)-  return (clip2 (o * a) 0.75)--main :: IO ()-main = audition . out 0 =<< three_cpsw
gr/tipnso.hs view
@@ -6,9 +6,9 @@ tipnso =   let x = mouseX KR 1 32 Linear 0.1       t = impulse AR x 0-      n1 = tIRand 'a' 16 72 t-      n2 = tIRand 'a' 0 1 t-      n3 = pinkNoise 'a' AR+      n1 = tIRand 'α' 16 72 t+      n2 = tIRand 'β' 0 1 t+      n3 = pinkNoise 'γ' AR       e = decay2 t 0.01 (mce2 0.1 0.15)       f = midiCPS (n1 + 36 + (12 * n2))       s = sinOsc AR f 0 * e
+ gr/tr-out-m.hs view
@@ -0,0 +1,32 @@+-- tr-out (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}++tr_nd :: UId m => UGen -> m (UGen,UGen)+tr_nd n = do+  t <- dust KR 1.6+  r1 <- tRand 0 6 t+  r2 <- tRand 0 6 t+  r3 <- tRand 0 6 t+  let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)+      p = bufRdN 1 KR 1 r2 NoLoop+      a = bufRdN 1 KR 2 r3 NoLoop+  return (pan2 (sinOsc AR f 0) p a+         ,sendTrig t n (f / 660))++tr_out :: UId m => m UGen+tr_out = do+  ns <- mapM tr_nd [1..4]+  let o = sum (map fst ns)+  return (mrg (o : map snd ns))++act :: (UId m,Transport m) => m ()+act = do+  _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])+  _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])+  _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])+  play . out 0 =<< tr_out++main :: IO ()+main = withSC3 act
− gr/tr-out.hs
@@ -1,33 +0,0 @@--- tr-out (rd)--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}--tr_nd :: UId m => UGen -> m (UGen,UGen)-tr_nd n = do-  t <- dust KR 1.6-  r1 <- tRand 0 6 t-  r2 <- tRand 0 6 t-  r3 <- tRand 0 6 t-  let f = midiCPS (bufRdN 1 KR 0 r1 NoLoop)-      p = bufRdN 1 KR 1 r2 NoLoop-      a = bufRdN 1 KR 2 r3 NoLoop-  return (pan2 (sinOsc AR f 0) p a-         ,sendTrig t n (f / 660))---- > Sound.SC3.UGen.Dot.draw =<< tr_out-tr_out :: UId m => m UGen-tr_out = do-  ns <- mapM tr_nd [1..4]-  let o = sum (map fst ns)-  return (mrg (o : map snd ns))--act :: (UId m,Transport m) => m ()-act = do-  _ <- async (b_alloc_setn1 0 0 [60,62,64,65,67,69])-  _ <- async (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])-  _ <- async (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])-  play . out 0 =<< tr_out--main :: IO ()-main = withSC3 act
gr/train.hs view
@@ -24,9 +24,9 @@     let time = 24         loc = let e = Envelope [-0.8,0.8] [time + 2] [EnvSin,EnvSin] Nothing Nothing               in envGen AR 1 1 0 1 RemoveSynth e-        n1 = whiteNoise 'a' AR-        n2 = pinkNoise 'b' AR-        n3 = whiteNoise 'c' AR+        n1 = whiteNoise 'α' AR+        n2 = pinkNoise 'β' AR+        n3 = whiteNoise 'γ' AR     in pan2 (steam time n1 n2 + whistle time n3) loc 1  main :: IO ()
+ gr/tremulate-hp.hs view
@@ -0,0 +1,17 @@+-- tremulate (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++tremulate :: UId m => m UGen+tremulate = do+  let o = fSinOsc AR (#(rand 500 900) * mce [1,1.2,1.5,1.8]) 0+  n <- clone 4 (lfNoise2 KR #(rand 30 90))+  return (mix (pan2 o #(clone 4 (rand (-1) 1)) (max 0 (n * 0.1))))++tremulate_pp :: UGen -> UGen+tremulate_pp i = combN i 0.1 0.1 1++main :: IO ()+main = do xfadeTextureU_pp (0.5,2,maxBound) #(tremulate) 2 tremulate_pp
gr/tremulate-m.hs view
@@ -3,7 +3,6 @@ import Sound.SC3.Monad {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} --- > Sound.SC3.UGen.Dot.draw =<< tremulate tremulate :: UId m => m UGen tremulate = do   f <- rand 500 900
gr/tremulate.hs view
@@ -2,16 +2,15 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw tremulate tremulate :: UGen tremulate =-    let f = rand 'a' 500 900+    let f = rand 'α' 500 900         o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0-        r = randN 4 'a' 30 90-        a = max 0 (lfNoise2 'a' KR r) * 0.1-        l = randN 4 'a' (-1) 1+        r = randN 4 'β' 30 90+        a = max 0 (lfNoise2 'γ' KR r) * 0.1+        l = randN 4 'δ' (-1) 1     in mix (pan2 o l a)  tremulate_pp :: UGen -> UGen
+ gr/trkl-m.hs view
@@ -0,0 +1,35 @@+-- trkl (rd)++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Monad {- hsc3 -}++trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+trkl d ul fu dy la fy = do+  let tf = xLine KR 1 ul d RemoveSynth+      st = impulse AR (tf * 8) 0+      t = impulse AR tf 0+  r0 <- rand (-1) 1+  r1 <- rand (-1) 1+  r2 <- tRand 0.05 1.0 t+  r3 <- tExpRand 0.001 0.25 st -- non-zero minima+  fh <- tRand 1.75 2.25 t+  let a = dbAmp (line KR 12 la d RemoveSynth)+      f = xLine KR fu 900 d RemoveSynth+      p = line KR r0 r1 d RemoveSynth+      o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)+      o2 = mix (saw AR (mce2 f (f * fh)))+  return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)++-- > audition . out 0 =<< trkl_r+trkl_r :: UId m => m UGen+trkl_r = do+  d <- rand 0.5 16+  ul <- rand 16 64+  fu <- rand 1200 9000+  dy <- rand 0.005 0.175+  la <- rand (-60) (-25)+  fy <- rand 0.015 0.125+  trkl d ul fu dy la fy++main :: IO ()+main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
− gr/trkl.hs
@@ -1,36 +0,0 @@--- trkl (rd)--import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}-import Sound.SC3.Monad {- hsc3 -}--trkl :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-trkl d ul fu dy la fy = do-  let tf = xLine KR 1 ul d RemoveSynth-      st = impulse AR (tf * 8) 0-      t = impulse AR tf 0-  r0 <- rand (-1) 1-  r1 <- rand (-1) 1-  r2 <- tRand 0.05 1.0 t-  r3 <- tExpRand 0.001 0.25 st -- non-zero minima-  fh <- tRand 1.75 2.25 t-  let a = dbAmp (line KR 12 la d RemoveSynth)-      f = xLine KR fu 900 d RemoveSynth-      p = line KR r0 r1 d RemoveSynth-      o1 = mix (ringz (decay2 t 0.01 dy) (mce2 f (f * fh)) fy)-      o2 = mix (saw AR (mce2 f (f * fh)))-  return (pan2 (o1 + o2 * decay2 t 0.1 r2 * r3) p a)---- > Sound.SC3.UGen.Dot.draw =<< trkl_r--- > audition . out 0 =<< trkl_r-trkl_r :: UId m => m UGen-trkl_r = do-  d <- rand 0.5 16-  ul <- rand 16 64-  fu <- rand 1200 9000-  dy <- rand 0.005 0.175-  la <- rand (-60) (-25)-  fy <- rand 0.015 0.125-  trkl d ul fu dy la fy--main :: IO ()-main = overlapTextureU (5,2,12,maxBound) =<< trkl_r
+ gr/trmlo-u.hs view
@@ -0,0 +1,52 @@+-- trmlo-u (rd)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}++-- > audition (out 0 trmlo)+trmlo :: UGen+trmlo =+    let mWrp i l r = linLin i (-1) 1 (midiCPS l) (midiCPS r)+        mWrp1 i m = mWrp i m (m + 1)+        mWrpN i m n = mWrp i m (m + n)+        o1 = let f = 5+                 d = 3+                 s = envSine d 0.1+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = 65+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o2 = let f = iRand 5 9+                 d = iRand 5 9+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+             in pan2 (sinOsc AR (mWrp1 m n) 0) m e+        o3 = let f = iRand 5 9+                 d = iRand 9 12+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 1 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 1 5) d DoNothing+             in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e+        o4 = let f = iRand 5 18+                 d = iRand 12 15+                 s = envSine d (rand 0.1 0.2)+                 e = envGen KR 1 5e-2 0 1 DoNothing s+                 n = iRand 69 72+                 m = sinOsc KR f 0+                 l = line KR 0 (iRand 1 5) d RemoveSynth+                 fr = mWrpN m (n + l) (iRand 1 5)+             in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+    in o1 + o2 + o3 + o4++main :: IO ()+main = do+  let s = synthdef "trmlo" (out 0 trmlo)+      p = pbind [(K_instr,psynth s)+                ,(K_dur,pxrand 'α' [0.25,0.5,1,2,4] inf)+                ,(K_legato,1.25)]+  audition p
gr/trmlo.hs view
@@ -1,8 +1,7 @@--- trmlo+-- trmlo (rd) -import Sound.SC3 {- hsc3 -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  -- > audition (out 0 trmlo) trmlo :: UGen@@ -17,33 +16,36 @@                  n = 65                  m = sinOsc KR f 0              in pan2 (sinOsc AR (mWrp1 m n) 0) m e-        o2 = let f = iRand 5 9-                 d = iRand 5 9-                 s = envSine d (rand 0.1 0.2)+        o2 = let f = iRand 'α' 5 9+                 d = iRand 'β' 5 9+                 s = envSine d (rand 'γ' 0.1 0.2)                  e = envGen KR 1 1 0 1 DoNothing s-                 n = iRand 69 72+                 n = iRand 'δ' 69 72                  m = sinOsc KR f 0              in pan2 (sinOsc AR (mWrp1 m n) 0) m e-        o3 = let f = iRand 5 9-                 d = iRand 9 12-                 s = envSine d (rand 0.1 0.2)+        o3 = let f = iRand 'ε' 5 9+                 d = iRand 'ζ' 9 12+                 s = envSine d (rand 'η' 0.1 0.2)                  e = envGen KR 1 1 0 1 DoNothing s-                 n = iRand 69 72+                 n = iRand 'θ' 69 72                  m = sinOsc KR f 0-                 l = line KR 0 (iRand 1 5) d DoNothing+                 l = line KR 0 (iRand 'ι' 1 5) d DoNothing              in pan2 (blip AR (mWrp1 m (n + l)) (linLin m (-1) 1 1 2)) m e-        o4 = let f = iRand 5 18-                 d = iRand 12 15-                 s = envSine d (rand 0.1 0.2)+        o4 = let f = iRand 'κ' 5 18+                 d = iRand 'λ' 12 15+                 s = envSine d (rand 'μ' 0.1 0.2)                  e = envGen KR 1 5e-2 0 1 DoNothing s-                 n = iRand 69 72+                 n = iRand 'ν' 69 72                  m = sinOsc KR f 0-                 l = line KR 0 (iRand 1 5) d RemoveSynth-                 fr = mWrpN m (n + l) (iRand 1 5)-             in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 2 24))) m e+                 l = line KR 0 (iRand 'ξ' 1 5) d RemoveSynth+                 fr = mWrpN m (n + l) (iRand 'ο' 1 5)+             in pan2 (blip AR fr (linLin m (-1) 1 1 (iRand 'π' 2 24))) m e     in o1 + o2 + o3 + o4  main :: IO () main = do   let s = synthdef "trmlo" (out 0 trmlo)-  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2,4] inf)])+      p = pbind [(K_instr,psynth s)+                ,(K_dur,pxrand 'ρ' [0.25,0.5,1,2,4] inf)+                ,(K_legato,1.25)]+  audition p
@@ -0,0 +1,17 @@+-- uplink (jmcc)+{-# OPTIONS_GHC -F -pgmF hsc3-hash-paren #-}++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++uplink :: UId m => m UGen+uplink = do+  let p0 = do return (lfPulse KR #(rand 0 20) 0 #(rand 0 1))+  let p1 = do return (lfPulse KR #(rand 0 4) 0 #(rand 0 1)+                      * #(rand 0 8000)+                      + #(rand 0 2000))+  f <- fmap mix (clone 2 (p0 .*. p1))+  return (pan2 (lfPulse AR f 0 0.5 * 0.04) #(rand (-0.8) 0.8) 1)++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) =<< uplink
gr/uplink.hs view
@@ -7,14 +7,13 @@ randz :: ID a => a -> UGen -> UGen randz e = rand e 0 --- > Sound.SC3.UGen.Dot.draw uplink uplink :: UGen uplink =     let r = randz-        p0 = lfPulse KR (r 'α' 20) 0 (r 'α' 1)-        p1 = lfPulse KR (r 'β' 4) 0 (r 'β' 1) * r 'β' 8000 + r 'β' 2000-        f = mix (uclone 'γ' 2 (p0 * p1))-    in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'δ' (-0.8) 0.8) 1+        p0 = lfPulse KR (r 'α' 20) 0 (r 'β' 1)+        p1 = lfPulse KR (r 'γ' 4) 0 (r 'δ' 1) * r 'ε' 8000 + r 'ζ' 2000+        f = mix (uclone 'η' 2 (p0 * p1))+    in pan2 (lfPulse AR f 0 0.5 * 0.04) (rand 'θ' (-0.8) 0.8) 1  main :: IO () main = overlapTextureU (4,1,5,maxBound) uplink
gr/urandom.hs view
@@ -2,7 +2,7 @@  import Control.Monad {- base -} import qualified Data.ByteString.Lazy as B {- bytestring -}-import Sound.OpenSoundControl.Coding.Byte {- hosc -}+import Sound.OSC.Coding.Byte {- hosc -} import Sound.SC3 {- hsc3 -} import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -} import System.IO {- base -}
gr/vla-addtn-sharc.hs view
@@ -1,10 +1,10 @@ -- vla-adttn-sharc (rd) -import Data.List+import Data.List {- base -} import Sound.Analysis.SHARC {- hsharc -} import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  type R = Double type R3 = (R,R,R)@@ -31,18 +31,18 @@     let m = n * 2         ampl = bufRdN 1 KR 0 m NoLoop         ph = bufRdN 1 KR 0 (m + 1) NoLoop-        o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+        o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0             in fSinOsc AR (fr * (n + 1) * dt') ph         e = linen (impulse KR 0 0)-                  (rise * rand 'a' 0.75 1.25)+                  (rise * rand 'β' 0.75 1.25)                   ampl-                  (fall * rand 'b' 0.75 1.25)+                  (fall * rand 'γ' 0.75 1.25)                   DoNothing     in o * e  vla_plyr :: UGen -> UGen vla_plyr n =-    let a = control KR "ampl" 0.1+    let a = control KR "amp" 0.1         f = control KR "freq" 129.897         rs = control KR "rise" 0.1         fa = control KR "fall" 0.5@@ -55,22 +55,24 @@ plyr36 :: Synthdef plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36)) -pattern :: [(String,P Double)]+pattern :: P_Bind pattern =-    [("loc",pwhite 'a' (-1) 1 inf)-    ,("ampl",pwhite 'b' 0.05 0.1 inf)-    ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)-    ,("octave",prand 'd' [2,3] inf)-    ,("dt",pwhite 'e' 0.001 0.005 inf)-    ,("rise",pwhite 'f' 1 2 inf)-    ,("fall",pwhite 'g' 4 7 inf)-    ,("dur",prand 'h' [3,5] inf)]+    [(K_instr,pinstr "plyr36")+    ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+    ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+    ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+    ,(K_octave,prand 'η' [2,3] inf)+    ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+    ,(K_param "rise",pwhite 'ι' 1 2 inf)+    ,(K_param "fall",pwhite 'κ' 4 7 inf)+    ,(K_dur,prand 'λ' [3,5] inf)]  act :: Transport m => FilePath -> m () act fn = do   v <- vla fn   _ <- async (b_alloc_setn1 0 0 (vla_prep v))-  play (plyr36,pbind pattern)+  _ <- async (d_recv plyr36)+  play (pbind pattern)  main :: IO () main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
gr/vla-addtn.hs view
@@ -2,7 +2,7 @@  import Sound.OSC {- hosc -} import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}+import Sound.SC3.Lang.Pattern {- hsc3-lang -}  type R = Double type R2 = (R,R)@@ -101,18 +101,18 @@     let m = n * 2         ampl = bufRdN 1 KR 0 m NoLoop         ph = bufRdN 1 KR 0 (m + 1) NoLoop-        o = let dt' = lfNoise1 'a' KR 1 * dt + 1.0+        o = let dt' = lfNoise1 'α' KR 1 * dt + 1.0             in fSinOsc AR (fr * (n + 1) * dt') ph         e = linen (impulse KR 0 0)-                  (rise * rand 'a' 0.75 1.25)+                  (rise * rand 'β' 0.75 1.25)                   ampl-                  (fall * rand 'b' 0.75 1.25)+                  (fall * rand 'γ' 0.75 1.25)                   DoNothing     in o * e  vla_plyr :: UGen -> UGen vla_plyr n =-    let a = control KR "ampl" 0.1+    let a = control KR "amp" 0.1         f = control KR "freq" 129.897         rs = control KR "rise" 0.1         fa = control KR "fall" 0.5@@ -125,21 +125,23 @@ plyr36 :: Synthdef plyr36 = synthdef "plyr36" (out 0 (vla_plyr 36)) -pattern :: [(String,P Double)]+pattern :: P_Bind pattern =-    [("loc",pwhite 'a' (-1) 1 inf)-    ,("ampl",pwhite 'b' 0.05 0.1 inf)-    ,("degree",prand 'c' [0,1,2,3,4,5,6,7,8] inf)-    ,("octave",prand 'd' [2,3] inf)-    ,("dt",pwhite 'e' 0.001 0.005 inf)-    ,("rise",pwhite 'f' 1 2 inf)-    ,("fall",pwhite 'g' 4 7 inf)-    ,("dur",5)]+    [(K_instr,pinstr "plyr36")+    ,(K_param "loc",pwhite 'δ' (-1) 1 inf)+    ,(K_amp,pwhite 'ε' 0.05 0.1 inf)+    ,(K_degree,prand 'ζ' [0,1,2,3,4,5,6,7,8] inf)+    ,(K_octave,prand 'η' [2,3] inf)+    ,(K_param "dt",pwhite 'θ' 0.001 0.005 inf)+    ,(K_param "rise",pwhite 'ι' 1 2 inf)+    ,(K_param "fall",pwhite 'κ' 4 7 inf)+    ,(K_dur,5)]  act :: Transport m => m () act = do   _ <- async (b_alloc_setn1 0 0 vla_prep)-  play (plyr36,pbind pattern)+  _ <- async (d_recv plyr36)+  play (pbind pattern)  main :: IO () main = withSC3 act
+ gr/vlc-distrtn-m.hs view
@@ -0,0 +1,149 @@+-- vlc-distrtn (rd)+-- caution - audio feedback graph++import Sound.OSC {- hosc -}+import Sound.SC3.Monad {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}++prep :: (Double,Double) -> [Double]+prep (ampl,phase) = [dbAmp ampl,phase]++partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen+partial b i freq detune fall n = do+  n0 <- lfNoise1 KR 1+  n1 <- rand 0.75 1.25+  let m = n * 2+      ampl = bufRdN 1 KR b m NoLoop+      f = freq * (n + 1) * (n0 * detune + 1)+  return (ringz i f (fall * n1) * ampl)++plyr :: UId m => UGen -> UGen -> m UGen+plyr i n = do+  let ctl = control KR+      buf = ctl "buf" 0+      iamp = ctl "iamp" 0.1+      ampl = ctl "ampl" 0.1+      freq = ctl "freq" 129.897+      fall = ctl "fall" 0.5+      loc = ctl "loc" 0.0+      detune = ctl "detune" 0.001+  s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]+  return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))++degree_to_key :: Int -> [Int] -> Int -> Int+degree_to_key degree scale steps =+    let scale_n = length scale+    in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))++getCps :: (Transport m,UnaryOp b) => [b] -> m b+getCps b = do+  b_ <- L.choose b+  d <- L.choose [0 .. 8]+  let k = degree_to_key d [0,2,3,5,7,8,10] 12+  return (midiCPS (b_ + realToFrac k))++pattern :: Transport m => m ()+pattern = do+  f <- getCps [24,36,48,55,60]+  ia <- L.rrand 0.05 0.75+  l <- L.rrand (-1) 1+  a <- L.rrand 0.05 0.1+  d <- L.rrand 0.001 0.005+  fl <- L.rrand 1 7+  send (n_set 1002 [("freq",f)+                   ,("iamp",ia)+                   ,("buf",0)+                   ,("loc",l)+                   ,("ampl",a)+                   ,("detune",d)+                   ,("fall",fl)])+  wait =<< L.choose [0.25,0.5,0.75,1.5]++run :: (Transport m,UId m) => m ()+run = do+  _ <- async (b_alloc 0 (length vlc * 2) 1)+  send (b_setn1 0 0 (concatMap prep vlc))+  let i = soundIn 4+  _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48+  send (s_new "plyr48" 1002 AddToTail 1 [])+  sequence_ (replicate 32 pattern)++main :: IO ()+main = withSC3 run++vlc :: [(Double,Double)]+vlc = [(0.00000,1.85550)+      ,(-9.92383,-0.65147)+      ,(-8.74205,-0.74728)+      ,(-3.70464,-1.39796)+      ,(-9.43435,-1.14812)+      ,(-25.84790,-1.03375)+      ,(-16.99500,-2.41724)+      ,(-29.17040,2.67419)+      ,(-26.82750,-1.61810)+      ,(-18.59870,1.34568)+      ,(-19.72160,-2.85972)+      ,(-29.43650,0.54603)+      ,(-23.63120,-1.47813)+      ,(-28.20100,-1.98501)+      ,(-41.20700,-1.11808)+      ,(-33.14310,-2.19369)+      ,(-31.54010,1.43134)+      ,(-47.62740,1.28571)+      ,(-28.79740,-1.03754)+      ,(-34.97950,0.37740)+      ,(-39.05770,-0.57557)+      ,(-38.84060,2.34836)+      ,(-40.18090,-0.96978)+      ,(-47.32150,2.14768)+      ,(-45.49290,2.52100)+      ,(-40.57100,-1.39905)+      ,(-47.19530,-2.23994)+      ,(-50.80920,2.97853)+      ,(-48.13640,0.46815)+      ,(-58.56890,-1.01821)+      ,(-57.81200,-3.08971)+      ,(-47.96870,-0.48657)+      ,(-43.96100,-0.10311)+      ,(-50.49810,-2.80977)+      ,(-50.61640,-0.17212)+      ,(-60.64640,-1.02433)+      ,(-58.03410,1.06921)+      ,(-55.46390,-2.04501)+      ,(-54.31000,-1.53512)+      ,(-52.78670,-1.49875)+      ,(-57.99380,0.17697)+      ,(-56.76990,2.28241)+      ,(-54.17450,-1.85553)+      ,(-62.58220,-2.40971)+      ,(-59.86460,1.04782)+      ,(-61.58570,1.56183)+      ,(-52.62080,1.68360)+      ,(-49.82940,-1.11019)+      ,(-56.18160,-0.78538)+      ,(-57.73320,-2.23918)+      ,(-49.87560,3.09604)+      ,(-51.00100,-0.53762)+      ,(-59.71530,0.99017)+      ,(-65.73280,2.43855)+      ,(-73.01270,-0.90664)+      ,(-61.81450,-0.53346)+      ,(-65.58980,1.51174)+      ,(-75.94320,-3.06072)+      ,(-65.22210,-1.49937)+      ,(-70.79970,-2.96199)+      ,(-64.72450,1.78172)+      ,(-73.24130,0.26939)+      ,(-66.17110,-0.23305)+      ,(-61.32910,-3.12592)+      ,(-66.98180,0.64700)+      ,(-65.23060,-2.94395)+      ,(-70.13430,1.29805)+      ,(-68.43470,-1.35906)+      ,(-71.33000,-2.71582)+      ,(-86.90080,2.11646)+      ,(-74.97450,2.76118)+      ,(-68.02520,0.94979)+      ,(-67.32960,3.05994)+      ,(-67.32140,-2.79905)+      ,(-68.22010,-2.33831)]
− gr/vlc-distrtn.hs
@@ -1,149 +0,0 @@--- vlc-distrtn (rd)--- caution - audio feedback graph--import Sound.OSC {- hosc -}-import Sound.SC3.Monad {- hsc3 -}-import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}--prep :: (Double,Double) -> [Double]-prep (ampl,phase) = [dbAmp ampl,phase]--partial :: UId m => UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> m UGen-partial b i freq detune fall n = do-  n0 <- lfNoise1 KR 1-  n1 <- rand 0.75 1.25-  let m = n * 2-      ampl = bufRdN 1 KR b m NoLoop-      f = freq * (n + 1) * (n0 * detune + 1)-  return (ringz i f (fall * n1) * ampl)--plyr :: UId m => UGen -> UGen -> m UGen-plyr i n = do-  let ctl = control KR-      buf = ctl "buf" 0-      iamp = ctl "iamp" 0.1-      ampl = ctl "ampl" 0.1-      freq = ctl "freq" 129.897-      fall = ctl "fall" 0.5-      loc = ctl "loc" 0.0-      detune = ctl "detune" 0.001-  s <- mapM (partial buf (i * iamp) freq detune fall) [0 .. n-1]-  return (out 0 (clip2 (pan2 (sum s) loc ampl) 0.1))--degree_to_key :: Int -> [Int] -> Int -> Int-degree_to_key degree scale steps =-    let scale_n = length scale-    in (steps * (degree `div` scale_n)) + (scale !! (degree `mod` scale_n))--getCps :: (Transport m,UnaryOp b) => [b] -> m b-getCps b = do-  b_ <- L.choose b-  d <- L.choose [0 .. 8]-  let k = degree_to_key d [0,2,3,5,7,8,10] 12-  return (midiCPS (b_ + realToFrac k))--pattern :: Transport m => m ()-pattern = do-  f <- getCps [24,36,48,55,60]-  ia <- L.rrand 0.05 0.75-  l <- L.rrand (-1) 1-  a <- L.rrand 0.05 0.1-  d <- L.rrand 0.001 0.005-  fl <- L.rrand 1 7-  send (n_set 1002 [("freq",f)-                   ,("iamp",ia)-                   ,("buf",0)-                   ,("loc",l)-                   ,("ampl",a)-                   ,("detune",d)-                   ,("fall",fl)])-  pauseThread =<< L.choose [0.25,0.5,0.75,1.5]--run :: (Transport m,UId m) => m ()-run = do-  _ <- async (b_alloc 0 (length vlc * 2) 1)-  send (b_setn1 0 0 (concatMap prep vlc))-  let i = soundIn 4-  _ <- async . d_recv . synthdef "plyr48" =<< plyr i 48-  send (s_new "plyr48" 1002 AddToTail 1 [])-  sequence_ (replicate 32 pattern)--main :: IO ()-main = withSC3 run--vlc :: [(Double,Double)]-vlc = [(0.00000,1.85550)-      ,(-9.92383,-0.65147)-      ,(-8.74205,-0.74728)-      ,(-3.70464,-1.39796)-      ,(-9.43435,-1.14812)-      ,(-25.84790,-1.03375)-      ,(-16.99500,-2.41724)-      ,(-29.17040,2.67419)-      ,(-26.82750,-1.61810)-      ,(-18.59870,1.34568)-      ,(-19.72160,-2.85972)-      ,(-29.43650,0.54603)-      ,(-23.63120,-1.47813)-      ,(-28.20100,-1.98501)-      ,(-41.20700,-1.11808)-      ,(-33.14310,-2.19369)-      ,(-31.54010,1.43134)-      ,(-47.62740,1.28571)-      ,(-28.79740,-1.03754)-      ,(-34.97950,0.37740)-      ,(-39.05770,-0.57557)-      ,(-38.84060,2.34836)-      ,(-40.18090,-0.96978)-      ,(-47.32150,2.14768)-      ,(-45.49290,2.52100)-      ,(-40.57100,-1.39905)-      ,(-47.19530,-2.23994)-      ,(-50.80920,2.97853)-      ,(-48.13640,0.46815)-      ,(-58.56890,-1.01821)-      ,(-57.81200,-3.08971)-      ,(-47.96870,-0.48657)-      ,(-43.96100,-0.10311)-      ,(-50.49810,-2.80977)-      ,(-50.61640,-0.17212)-      ,(-60.64640,-1.02433)-      ,(-58.03410,1.06921)-      ,(-55.46390,-2.04501)-      ,(-54.31000,-1.53512)-      ,(-52.78670,-1.49875)-      ,(-57.99380,0.17697)-      ,(-56.76990,2.28241)-      ,(-54.17450,-1.85553)-      ,(-62.58220,-2.40971)-      ,(-59.86460,1.04782)-      ,(-61.58570,1.56183)-      ,(-52.62080,1.68360)-      ,(-49.82940,-1.11019)-      ,(-56.18160,-0.78538)-      ,(-57.73320,-2.23918)-      ,(-49.87560,3.09604)-      ,(-51.00100,-0.53762)-      ,(-59.71530,0.99017)-      ,(-65.73280,2.43855)-      ,(-73.01270,-0.90664)-      ,(-61.81450,-0.53346)-      ,(-65.58980,1.51174)-      ,(-75.94320,-3.06072)-      ,(-65.22210,-1.49937)-      ,(-70.79970,-2.96199)-      ,(-64.72450,1.78172)-      ,(-73.24130,0.26939)-      ,(-66.17110,-0.23305)-      ,(-61.32910,-3.12592)-      ,(-66.98180,0.64700)-      ,(-65.23060,-2.94395)-      ,(-70.13430,1.29805)-      ,(-68.43470,-1.35906)-      ,(-71.33000,-2.71582)-      ,(-86.90080,2.11646)-      ,(-74.97450,2.76118)-      ,(-68.02520,0.94979)-      ,(-67.32960,3.05994)-      ,(-67.32140,-2.79905)-      ,(-68.22010,-2.33831)]
+ gr/voscil-u.hs view
@@ -0,0 +1,38 @@+-- voscil-u (rd)++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Random.IO {- hsc3-lang -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++-- > Sound.SC3.UGen.Dot.draw (voscil 32)+voscil :: Real a => a -> UGen+voscil b =+  let lfn = lfNoise0 KR+      hb = (constant b - 1) / 2+      rt = 6+      f = 600+      v = vOsc AR (lfn rt * hb + hb) (f * 2) 0+      o = let bf = lfn rt * 40 + 600+              nh = lfn rt * 16 + 24+          in blip AR bf nh * (lfn rt * 0.1 + 0.1)+      p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+      w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0+      q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+  in p + q++run :: Transport m => m ()+run = do+  let bn = 8192 * 4+      b = 32+      r_set i =+          do m <- rrand 2 512+             j <- sequence (replicate m (rrand 0 bn))+             k <- sequence (replicate m (rrand (-1) 1))+             _ <- async (b_alloc i bn 1)+             send (b_set i (zip j k))+  mapM_ r_set [0 .. (b - 1)]+  play (out 0 (voscil b))++main :: IO ()+main = withSC3 run
gr/voscil.hs view
@@ -1,24 +1,23 @@ -- voscil (rd)  import Sound.OSC {- hosc -}-import Sound.SC3 {- hsc3 -}+import Sound.SC3.ID {- hsc3 -} import Sound.SC3.Lang.Random.IO {- hsc3-lang -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}  -- > Sound.SC3.UGen.Dot.draw (voscil 32) voscil :: Real a => a -> UGen voscil b =-  let lfn = lfNoise0 KR+  let lfn z = lfNoise0 z KR       hb = (constant b - 1) / 2       rt = 6       f = 600-      v = vOsc AR (lfn rt * hb + hb) (f * 2) 0-      o = let bf = lfn rt * 40 + 600-              nh = lfn rt * 16 + 24-          in blip AR bf nh * (lfn rt * 0.1 + 0.1)-      p = pan2 (v + o) (lfn rt) (lfn rt * 0.5 + 0.5)+      v = vOsc AR (lfn 'α' rt * hb + hb) (f * 2) 0+      o = let bf = lfn 'β' rt * 40 + 600+              nh = lfn 'γ' rt * 16 + 24+          in blip AR bf nh * (lfn 'δ' rt * 0.1 + 0.1)+      p = pan2 (v + o) (lfn 'ε' rt) (lfn 'ζ' rt * 0.5 + 0.5)       w = vOsc AR (lfSaw KR (1 / rt) 0 * hb + hb) f 0-      q = pan2 w (lfn rt) (lfn rt * 0.5 + 0.5)+      q = pan2 w (lfn 'η' rt) (lfn 'θ' rt * 0.5 + 0.5)   in p + q  run :: Transport m => m ()
gr/waveset.hs view
@@ -15,17 +15,14 @@ latency = 0.15  -- | Add t to timestamp.-offset :: Double -> Bundle -> Bundle-offset t b =-    case b of-      Bundle (UTCr t0) m -> Bundle (UTCr (t + t0)) m-      _ -> error "offset:non-UTCr bundle"+offset :: Time -> Bundle -> Bundle+offset t (Bundle t0 m) = Bundle (t + t0) m  -- | Play non-empty set of osc bundles. play_set :: Transport m => [Bundle] -> m () play_set [] = error "play_set:empty" play_set (x:xs) = do-  let (Bundle (UTCr t) _) = x+  let (Bundle t _) = x   pauseThreadUntil (t - latency)   mapM_ sendBundle (x:xs) @@ -33,7 +30,7 @@ play_sets :: Transport m => [[Bundle]] -> m () play_sets [] = return () play_sets s = do-  t <- utcr+  t <- time   mapM_ (play_set . map (offset t)) s  -- | Split l into chunks of at most n elements.@@ -114,7 +111,7 @@ mk_score sr repeats w =     let durations = zipWith (\(s, e) r -> (e - s) * r / sr) w repeats         start_times = scanl (+) 0 durations-        mk_elem (s,e) t d = Bundle (UTCr t) [mk_msg 10 s e d]+        mk_elem (s,e) t d = Bundle t [mk_msg 10 s e d]     in zipWith3 mk_elem w start_times durations  -- | n randomly chosen elements of w.@@ -136,7 +133,7 @@       sr = fromIntegral (F.sampleRate hdr)       b = cs !! 0       w = ws (prune 64 0 (fzc 0 b))-      pl s = play_score 10 s >> pauseThread 1+      pl s = play_score 10 s >> wait 1       post = liftIO . putStrLn   post ("#f: " ++ show (nc, nf, sr))   post ("#w: " ++ show (length w)) -- force w
+ gr/what-was-i-thinking-m.hs view
@@ -0,0 +1,24 @@+-- what was i thinking? (jmcc)++import Sound.SC3.Monad {- hsc3 -}++what_was_i_thinking :: UId m => m UGen+what_was_i_thinking = do+  n0 <- lfNoise1 KR 0.2+  n1 <- lfNoise1 KR 0.157+  let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04+      i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500+      d = decay i 2+      f = max (sinOsc KR 4 0 + 80) d+      z = rlpf p (n0 * 2000 + 2400) 0.2+      c x = do r <- rand 0 0.3+               n <- lfNoise1 KR r+               return (combL x 0.06 (n * 0.025 + 0.035) 1)+      y = z * 0.6+  z0 <- clone 2 (c y)+  z1 <- clone 2 (c y)+  return (z + mce [mix z0,mix z1])++main :: IO ()+main = audition . out 0 =<< what_was_i_thinking+
− gr/what-was-i-thinking.hs
@@ -1,25 +0,0 @@--- what was i thinking? (jmcc)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< what_was_i_thinking-what_was_i_thinking :: UId m => m UGen-what_was_i_thinking = do-  n0 <- lfNoise1 KR 0.2-  n1 <- lfNoise1 KR 0.157-  let p = pulse AR f (n1 * 0.4 + 0.5) * 0.04-      i = lfPulse AR 0.1 0 0.05 * impulse AR 8 0 * 500-      d = decay i 2-      f = max (sinOsc KR 4 0 + 80) d-      z = rlpf p (n0 * 2000 + 2400) 0.2-      c x = do r <- rand 0 0.3-               n <- lfNoise1 KR r-               return (combL x 0.06 (n * 0.025 + 0.035) 1)-      y = z * 0.6-  z0 <- clone 2 (c y)-  z1 <- clone 2 (c y)-  return (z + mce [mix z0,mix z1])--main :: IO ()-main = audition . out 0 =<< what_was_i_thinking-
gr/why-supercollider.hs view
@@ -2,18 +2,17 @@  import Sound.SC3.ID {- hsc3 -} import Sound.SC3.UGen.Protect-import Sound.SC3.UGen.External.RDU {- sc3-rdu -}+import Sound.SC3.UGen.External.RDU.ID {- sc3-rdu -} --- > Sound.SC3.UGen.Dot.draw why_supercollider why_supercollider :: UGen why_supercollider =-    let r = resonz (dust 'α' AR 0.2 * 50) (rand 'α' 200 3200) 0.003-        s = mix (uclone 'α' 10 r)+    let r = resonz (dust 'α' AR 0.2 * 50) (rand 'β' 200 3200) 0.003+        s = mix (uclone 'γ' 10 r)         z = delayN s 0.048 0.048-        c = combL z 0.1 (lfNoise1 'α' KR (rand 'α' 0 0.1) * 0.04 + 0.05) 15-        y = mix (uclone 'α' 7 c)-        f i = allpassN i 0.050 (randN 2 'α' 0 0.05) 1-        x = useq 'α' 4 f y+        c = combL z 0.1 (lfNoise1 'δ' KR (rand 'ε' 0 0.1) * 0.04 + 0.05) 15+        y = mix (uclone 'ζ' 7 c)+        f i = allpassN i 0.050 (randN 2 'η' 0 0.05) 1+        x = useq 'θ' 4 f y     in out 0 (s + 0.2 * x)  main :: IO ()
+ gr/wial-m.hs view
@@ -0,0 +1,26 @@+-- wial (rd)++import Sound.SC3.Monad {- hsc3 -}++wial :: (Functor m,UId m) => m UGen+wial = do+  let pls c d f = do let t = pulseDivider c d 0+                         e = decay2 t 0.05 0.75+                         o = sinOsc AR (toggleFF t * f + f * 2) 0+                     n0 <- tIRand 0 1 t+                     return (o * e * n0 * 0.5)+      smpl f = [(4,6,f,0.75)+               ,(2,6,f * 2,0.75)+               ,(1,2,f * 16,0.025)+               ,(1,5,f * 64,0.005)+               ,(1,4,f * 128,0.035)+               ,(1,3,f * 256,0.15)+               ,(2,3,f * 512,0.35)]+      plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)+      clk = impulse AR 16 0+  n0 <- dust KR 2+  f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0+  fmap sum (mapM (plss clk) (smpl f))++main :: IO ()+main = audition . out 0 =<< wial
− gr/wial.hs
@@ -1,27 +0,0 @@--- wial (rd)--import Sound.SC3.Monad {- hsc3 -}---- > Sound.SC3.UGen.Dot.draw =<< wial-wial :: (Functor m,UId m) => m UGen-wial = do-  let pls c d f = do let t = pulseDivider c d 0-                         e = decay2 t 0.05 0.75-                         o = sinOsc AR (toggleFF t * f + f * 2) 0-                     n0 <- tIRand 0 1 t-                     return (o * e * n0 * 0.5)-      smpl f = [(4,6,f,0.75)-               ,(2,6,f * 2,0.75)-               ,(1,2,f * 16,0.025)-               ,(1,5,f * 64,0.005)-               ,(1,4,f * 128,0.035)-               ,(1,3,f * 256,0.15)-               ,(2,3,f * 512,0.35)]-      plss c (d0,d1,f,a) = fmap (* a) (pls c (mce2 d0 d1) f)-      clk = impulse AR 16 0-  n0 <- dust KR 2-  f <- tWChoose n0 (mce2 (20 * 0.66) 20) (mce2 0.25 0.75) 0-  return.sum =<< mapM (plss clk) (smpl f)--main :: IO ()-main = audition . out 0 =<< wial
gr/wind-metals-m.hs view
@@ -4,7 +4,6 @@ import Sound.SC3.Monad {- hsc3 -}  -- > audition . out 0 =<< wind_metals--- > Sound.SC3.UGen.Dot.draw =<< wind_metals wind_metals :: UId m => m UGen wind_metals = do   let n = 6
gr/xy-interference-m.hs view
@@ -2,7 +2,6 @@  import Sound.SC3.Monad {- hsc3 -} --- > Sound.SC3.UGen.Dot.draw =<< xy_interference xy_interference :: UId m => m UGen xy_interference = do   let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)@@ -11,7 +10,7 @@               let a = sinOsc AR (x + n) 0                   b = sinOsc AR y 0               return (a * b)-  return.sum =<< sequence (replicate 3 nd)+  fmap sum (sequence (replicate 3 nd))  main :: IO () main = audition . out 0 =<< xy_interference
gr/xy-interference.hs view
@@ -7,11 +7,11 @@ xy_interference =   let x = mouseX KR 20 22000 Linear (mce2 0.005 0.025)       y = mouseY KR 20 22000 Linear (mce2 0.005 0.075)-      nd = let n = lfNoise0 'a' KR (mce2 5 9)+      nd = let n = lfNoise0 'α' KR (mce2 5 9)                a = sinOsc AR (x + n) 0                b = sinOsc AR y 0            in a * b-  in mix (uclone 'a' 3 nd)+  in mix (uclone 'β' 3 nd)  main :: IO () main = audition (out 0 xy_interference)
+ hs/L.hs view
@@ -0,0 +1,13 @@+module L where++import Data.Maybe {- base -}+import Data.List {- base -}++stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]+stripSuffix s l = fmap reverse (stripPrefix (reverse s) (reverse l))++strip_suffix_or_id :: Eq a => [[a]] -> [a] -> [a]+strip_suffix_or_id s l =+    case s of+      [] -> l+      e:s' -> strip_suffix_or_id s' (fromMaybe l (stripSuffix e l))
+ hs/hsc3-graphs.hs view
@@ -0,0 +1,428 @@+import System.Environment {- base -}++import qualified Sound.SC3.Graph.ADC_bit_reduction+import qualified Sound.SC3.Graph.ADC_kabelscahden+import qualified Sound.SC3.Graph.ADC_shepard_tones+import qualified Sound.SC3.Graph.AM_karplus_strong+import qualified Sound.SC3.Graph.AV_rm_octaver+import qualified Sound.SC3.Graph.F0_sinusdeklinationen+import qualified Sound.SC3.Graph.F0_f0_tw0051+import qualified Sound.SC3.Graph.F0_pkt_07+import qualified Sound.SC3.Graph.F0_f0_tw0030+import qualified Sound.SC3.Graph.F0_f0_tw0011+import qualified Sound.SC3.Graph.F0_f0_tw0033+import qualified Sound.SC3.Graph.F0_f0_2012_04_19+import qualified Sound.SC3.Graph.F0_f0_tw0077+import qualified Sound.SC3.Graph.F0_1_4Q6+import qualified Sound.SC3.Graph.F0_red_frik_m+import qualified Sound.SC3.Graph.F0_pkt_26+import qualified Sound.SC3.Graph.F0_f0_tw0020+import qualified Sound.SC3.Graph.F0_pkt_28+import qualified Sound.SC3.Graph.F0_hansm+import qualified Sound.SC3.Graph.F0_pkt_00+import qualified Sound.SC3.Graph.F0_f0_tw0045+import qualified Sound.SC3.Graph.F0_f0_tw0049+import qualified Sound.SC3.Graph.F0_f0_tw0014+import qualified Sound.SC3.Graph.F0_f0_tw0084+import qualified Sound.SC3.Graph.F0_buffer_display+import qualified Sound.SC3.Graph.F0_f0_tw0028+import qualified Sound.SC3.Graph.JAR_1_4Qx+import qualified Sound.SC3.Graph.JJ_bohlen_pierce_140+import qualified Sound.SC3.Graph.JL_dark_sea_horns_hp+import qualified Sound.SC3.Graph.JL_pwm_crossfade+import qualified Sound.SC3.Graph.JL_rain_thunder+import qualified Sound.SC3.Graph.JL_jl_1_Z+import qualified Sound.SC3.Graph.JL_bitwise+import qualified Sound.SC3.Graph.JL_dark_sea_horns+import qualified Sound.SC3.Graph.JMCC_tsort+import qualified Sound.SC3.Graph.JMCC_police_state+import qualified Sound.SC3.Graph.JMCC_wind_metals_m+import qualified Sound.SC3.Graph.JMCC_babbling_brook_m+import qualified Sound.SC3.Graph.JMCC_random_pulsations+import qualified Sound.SC3.Graph.JMCC_moto_rev+import qualified Sound.SC3.Graph.JMCC_sprinkler_m+import qualified Sound.SC3.Graph.JMCC_demanding_studies+import qualified Sound.SC3.Graph.JMCC_why_supercollider+import qualified Sound.SC3.Graph.JMCC_deep_trip+import qualified Sound.SC3.Graph.JMCC_alien_meadow+import qualified Sound.SC3.Graph.JMCC_snare_909+import qualified Sound.SC3.Graph.JMCC_uplink_hp+import qualified Sound.SC3.Graph.JMCC_noise_burst_sweep+import qualified Sound.SC3.Graph.JMCC_random_sine_waves_she+import qualified Sound.SC3.Graph.JMCC_data_space+import qualified Sound.SC3.Graph.JMCC_police_state_m+import qualified Sound.SC3.Graph.JMCC_default+import qualified Sound.SC3.Graph.JMCC_hell_is_busy+import qualified Sound.SC3.Graph.JMCC_noise_modulated_sines+import qualified Sound.SC3.Graph.JMCC_clustered_sines_m+import qualified Sound.SC3.Graph.JMCC_coolant+import qualified Sound.SC3.Graph.JMCC_harmonic_tumbling_m+import qualified Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines+import qualified Sound.SC3.Graph.JMCC_tremulate_hp+import qualified Sound.SC3.Graph.JMCC_resonant_dust+import qualified Sound.SC3.Graph.JMCC_harmonic_swimming_m+import qualified Sound.SC3.Graph.JMCC_synthetic_piano_m+import qualified Sound.SC3.Graph.JMCC_sawed_cymbals+import qualified Sound.SC3.Graph.JMCC_tank_m+import qualified Sound.SC3.Graph.JMCC_clustered_sines+import qualified Sound.SC3.Graph.JMCC_scratchy_m+import qualified Sound.SC3.Graph.JMCC_aleatoric_quartet_m+import qualified Sound.SC3.Graph.JMCC_spe_m+import qualified Sound.SC3.Graph.JMCC_what_was_i_thinking_m+import qualified Sound.SC3.Graph.JMCC_pond_life_hp+import qualified Sound.SC3.Graph.JMCC_slow_beating_sines+import qualified Sound.SC3.Graph.JMCC_spe_p+import qualified Sound.SC3.Graph.JMCC_pulsing_bottles_m+import qualified Sound.SC3.Graph.JMCC_early_space_music_lp_side_two+import qualified Sound.SC3.Graph.JMCC_random_panning_sines_m+import qualified Sound.SC3.Graph.JMCC_bowed_string_m+import qualified Sound.SC3.Graph.JMCC_random_panning_sines+import qualified Sound.SC3.Graph.JMCC_sidereal_time_hp+import qualified Sound.SC3.Graph.JMCC_string_wander_cluster+import qualified Sound.SC3.Graph.JMCC_alien_froggies+import qualified Sound.SC3.Graph.JMCC_pulsing_bottles+import qualified Sound.SC3.Graph.JMCC_strummable_guitar+import qualified Sound.SC3.Graph.JMCC_overlap_add+import qualified Sound.SC3.Graph.JMCC_choip+import qualified Sound.SC3.Graph.JMCC_sprinkler+import qualified Sound.SC3.Graph.JMCC_rails+import qualified Sound.SC3.Graph.JMCC_pond_life+import qualified Sound.SC3.Graph.JMCC_comb_delay_sweeps+import qualified Sound.SC3.Graph.JMCC_tank_hp+import qualified Sound.SC3.Graph.JMCC_harmonic_swimming+import qualified Sound.SC3.Graph.JMCC_random_sine_waves+import qualified Sound.SC3.Graph.JMCC_modal_space+import qualified Sound.SC3.Graph.JMCC_lfo_modulation+import qualified Sound.SC3.Graph.JMCC_cymbalism_accelerando+import qualified Sound.SC3.Graph.JMCC_plucked_strings_m+import qualified Sound.SC3.Graph.JMCC_uplink+import qualified Sound.SC3.Graph.JMCC_sweepy_noise+import qualified Sound.SC3.Graph.JMCC_random_sine_waves_hp+import qualified Sound.SC3.Graph.JMCC_analog_bubbles+import qualified Sound.SC3.Graph.JMCC_resonant_dust_hp+import qualified Sound.SC3.Graph.JMCC_birds_hp+import qualified Sound.SC3.Graph.JMCC_ring_modulated_klank+import qualified Sound.SC3.Graph.JMCC_tremulate_m+import qualified Sound.SC3.Graph.JMCC_tank+import qualified Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp+import qualified Sound.SC3.Graph.JMCC_theremin+import qualified Sound.SC3.Graph.JMCC_data_space_hp+import qualified Sound.SC3.Graph.JMCC_mridangam+import qualified Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m+import qualified Sound.SC3.Graph.JMCC_doppler+import qualified Sound.SC3.Graph.JMCC_scratchy+import qualified Sound.SC3.Graph.JMCC_sidereal_time+import qualified Sound.SC3.Graph.JMCC_birds_m+import qualified Sound.SC3.Graph.JMCC_sample_and_hold_liquidities+import qualified Sound.SC3.Graph.JMCC_tremulate+import qualified Sound.SC3.Graph.JMCC_contamination_zone+import qualified Sound.SC3.Graph.JMCC_saucer_base+import qualified Sound.SC3.Graph.JMCC_cymbalism_m+import qualified Sound.SC3.Graph.JP_record_scratcher+import qualified Sound.SC3.Graph.JRHB_chain_saw_m+import qualified Sound.SC3.Graph.JRHB_black_atlantic_currents+import qualified Sound.SC3.Graph.JRHB_deep_sea+import qualified Sound.SC3.Graph.JRHB_half_life+import qualified Sound.SC3.Graph.JRHB_dial_history_m+import qualified Sound.SC3.Graph.JRHB_sam_i_am+import qualified Sound.SC3.Graph.LJP_one_line+import qualified Sound.SC3.Graph.MN_k2ws+import qualified Sound.SC3.Graph.MN_k2ws_hp+import qualified Sound.SC3.Graph.NC_after_goeyvaerts+import qualified Sound.SC3.Graph.NC_arpeggio+import qualified Sound.SC3.Graph.NC_ellipse_based_synthesis+import qualified Sound.SC3.Graph.NP_pebble_beach+import qualified Sound.SC3.Graph.NV_nv_tw_54+import qualified Sound.SC3.Graph.NV_nv_tw_41+import qualified Sound.SC3.Graph.NV_nv_tw_1+import qualified Sound.SC3.Graph.PC_thx+import qualified Sound.SC3.Graph.PJ_forest_sounds_m+import qualified Sound.SC3.Graph.RB_hh_808+import qualified Sound.SC3.Graph.RD_bs_070705_m+import qualified Sound.SC3.Graph.RD_scritto+import qualified Sound.SC3.Graph.RD_ccomb_m+import qualified Sound.SC3.Graph.RD_adso+import qualified Sound.SC3.Graph.RD_lg_timed_m+import qualified Sound.SC3.Graph.RD_three_cpsw_m+import qualified Sound.SC3.Graph.RD_vlc_distrtn_m+import qualified Sound.SC3.Graph.RD_implosion_m+import qualified Sound.SC3.Graph.RD_discretion_m+import qualified Sound.SC3.Graph.RD_diffraction_m+import qualified Sound.SC3.Graph.RD_e_lamell_p+import qualified Sound.SC3.Graph.RD_tgb_m+import qualified Sound.SC3.Graph.RD_discretion+import qualified Sound.SC3.Graph.RD_s_chirp+import qualified Sound.SC3.Graph.RD_lso_061101_m+import qualified Sound.SC3.Graph.RD_vla_addtn_sharc+import qualified Sound.SC3.Graph.RD_cut_outs_m+import qualified Sound.SC3.Graph.RD_vla_addtn+import qualified Sound.SC3.Graph.RD_chrd_t+import qualified Sound.SC3.Graph.RD_tr_out_m+import qualified Sound.SC3.Graph.RD_crotale_sine+import qualified Sound.SC3.Graph.RD_fm_kltr_p+import qualified Sound.SC3.Graph.RD_fm_kltr_m+import qualified Sound.SC3.Graph.RD_rzblp_hp+import qualified Sound.SC3.Graph.RD_mouse_clatter_m+import qualified Sound.SC3.Graph.RD_xy_interference+import qualified Sound.SC3.Graph.RD_waveset+import qualified Sound.SC3.Graph.RD_cds_070701_m+import qualified Sound.SC3.Graph.RD_fb_090531+import qualified Sound.SC3.Graph.RD_fbl_fbf+import qualified Sound.SC3.Graph.RD_k_ppr+import qualified Sound.SC3.Graph.RD_tipnso+import qualified Sound.SC3.Graph.RD_thb+import qualified Sound.SC3.Graph.RD_nharm_m+import qualified Sound.SC3.Graph.RD_wial_m+import qualified Sound.SC3.Graph.RD_fwalk_m+import qualified Sound.SC3.Graph.RD_trmlo_u+import qualified Sound.SC3.Graph.RD_chrd_m+import qualified Sound.SC3.Graph.RD_h_chatter_m+import qualified Sound.SC3.Graph.RD_sosc_lp_m+import qualified Sound.SC3.Graph.RD_feedr_m+import qualified Sound.SC3.Graph.RD_crotale+import qualified Sound.SC3.Graph.RD_rzblp+import qualified Sound.SC3.Graph.RD_cricket_m+import qualified Sound.SC3.Graph.RD_tgr_rpr_m+import qualified Sound.SC3.Graph.RD_for_ann+import qualified Sound.SC3.Graph.RD_fm_iter+import qualified Sound.SC3.Graph.RD_k_ppr_m+import qualified Sound.SC3.Graph.RD_klink+import qualified Sound.SC3.Graph.RD_f_lets_m+import qualified Sound.SC3.Graph.RD_urandom+import qualified Sound.SC3.Graph.RD_lf_pulses+import qualified Sound.SC3.Graph.RD_trkl_m+import qualified Sound.SC3.Graph.RD_xy_interference_m+import qualified Sound.SC3.Graph.RD_voscil_u+import qualified Sound.SC3.Graph.RD_voscil+import qualified Sound.SC3.Graph.RD_eggcrate_m+import qualified Sound.SC3.Graph.RD_rzblp_u+import qualified Sound.SC3.Graph.RD_shifting_pulses_m+import qualified Sound.SC3.Graph.RD_scritto_m+import qualified Sound.SC3.Graph.RD_rzblp_m+import qualified Sound.SC3.Graph.RD_eggcrate+import qualified Sound.SC3.Graph.RD_tgrn+import qualified Sound.SC3.Graph.RD_seqr+import qualified Sound.SC3.Graph.RD_pattern_buffer_m+import qualified Sound.SC3.Graph.RD_nharm_p+import qualified Sound.SC3.Graph.RD_trmlo+import qualified Sound.SC3.Graph.RD_lin_sosc+import qualified Sound.SC3.Graph.RD_e_lamell+import qualified Sound.SC3.Graph.SC_bottle_m+import qualified Sound.SC3.Graph.SP_insects_m+import qualified Sound.SC3.Graph.TM_drummer++main :: IO ()+main = do+  a <- getArgs+  case a of+    ["bit-reduction"] -> Sound.SC3.Graph.ADC_bit_reduction.main+    ["kabelscahden"] -> Sound.SC3.Graph.ADC_kabelscahden.main+    ["shepard-tones"] -> Sound.SC3.Graph.ADC_shepard_tones.main+    ["karplus-strong"] -> Sound.SC3.Graph.AM_karplus_strong.main+    ["rm-octaver"] -> Sound.SC3.Graph.AV_rm_octaver.main+    ["sinusdeklinationen"] -> Sound.SC3.Graph.F0_sinusdeklinationen.main+    ["f0-tw0051"] -> Sound.SC3.Graph.F0_f0_tw0051.main+    ["pkt-07"] -> Sound.SC3.Graph.F0_pkt_07.main+    ["f0-tw0030"] -> Sound.SC3.Graph.F0_f0_tw0030.main+    ["f0-tw0011"] -> Sound.SC3.Graph.F0_f0_tw0011.main+    ["f0-tw0033"] -> Sound.SC3.Graph.F0_f0_tw0033.main+    ["f0-2012-04-19"] -> Sound.SC3.Graph.F0_f0_2012_04_19.main+    ["f0-tw0077"] -> Sound.SC3.Graph.F0_f0_tw0077.main+    ["1-4Q6"] -> Sound.SC3.Graph.F0_1_4Q6.main+    ["red-frik-m"] -> Sound.SC3.Graph.F0_red_frik_m.main+    ["pkt-26"] -> Sound.SC3.Graph.F0_pkt_26.main+    ["f0-tw0020"] -> Sound.SC3.Graph.F0_f0_tw0020.main+    ["pkt-28"] -> Sound.SC3.Graph.F0_pkt_28.main+    ["hansm"] -> Sound.SC3.Graph.F0_hansm.main+    ["pkt-00"] -> Sound.SC3.Graph.F0_pkt_00.main+    ["f0-tw0045"] -> Sound.SC3.Graph.F0_f0_tw0045.main+    ["f0-tw0049"] -> Sound.SC3.Graph.F0_f0_tw0049.main+    ["f0-tw0014"] -> Sound.SC3.Graph.F0_f0_tw0014.main+    ["f0-tw0084"] -> Sound.SC3.Graph.F0_f0_tw0084.main+    ["buffer-display"] -> Sound.SC3.Graph.F0_buffer_display.main+    ["f0-tw0028"] -> Sound.SC3.Graph.F0_f0_tw0028.main+    ["1-4Qx"] -> Sound.SC3.Graph.JAR_1_4Qx.main+    ["bohlen-pierce-140"] -> Sound.SC3.Graph.JJ_bohlen_pierce_140.main+    ["dark-sea-horns-hp"] -> Sound.SC3.Graph.JL_dark_sea_horns_hp.main+    ["pwm-crossfade"] -> Sound.SC3.Graph.JL_pwm_crossfade.main+    ["rain-thunder"] -> Sound.SC3.Graph.JL_rain_thunder.main+    ["jl-1-Z"] -> Sound.SC3.Graph.JL_jl_1_Z.main+    ["bitwise"] -> Sound.SC3.Graph.JL_bitwise.main+    ["dark-sea-horns"] -> Sound.SC3.Graph.JL_dark_sea_horns.main+    ["tsort"] -> Sound.SC3.Graph.JMCC_tsort.main+    ["police-state"] -> Sound.SC3.Graph.JMCC_police_state.main+    ["wind-metals-m"] -> Sound.SC3.Graph.JMCC_wind_metals_m.main+    ["babbling-brook-m"] -> Sound.SC3.Graph.JMCC_babbling_brook_m.main+    ["random-pulsations"] -> Sound.SC3.Graph.JMCC_random_pulsations.main+    ["moto-rev"] -> Sound.SC3.Graph.JMCC_moto_rev.main+    ["sprinkler-m"] -> Sound.SC3.Graph.JMCC_sprinkler_m.main+    ["demanding-studies"] -> Sound.SC3.Graph.JMCC_demanding_studies.main+    ["why-supercollider"] -> Sound.SC3.Graph.JMCC_why_supercollider.main+    ["deep-trip"] -> Sound.SC3.Graph.JMCC_deep_trip.main+    ["alien-meadow"] -> Sound.SC3.Graph.JMCC_alien_meadow.main+    ["snare-909"] -> Sound.SC3.Graph.JMCC_snare_909.main+    ["uplink-hp"] -> Sound.SC3.Graph.JMCC_uplink_hp.main+    ["noise-burst-sweep"] -> Sound.SC3.Graph.JMCC_noise_burst_sweep.main+    ["random-sine-waves-she"] -> Sound.SC3.Graph.JMCC_random_sine_waves_she.main+    ["data-space"] -> Sound.SC3.Graph.JMCC_data_space.main+    ["police-state-m"] -> Sound.SC3.Graph.JMCC_police_state_m.main+    ["default"] -> Sound.SC3.Graph.JMCC_default.main+    ["hell-is-busy"] -> Sound.SC3.Graph.JMCC_hell_is_busy.main+    ["noise-modulated-sines"] -> Sound.SC3.Graph.JMCC_noise_modulated_sines.main+    ["clustered-sines-m"] -> Sound.SC3.Graph.JMCC_clustered_sines_m.main+    ["coolant"] -> Sound.SC3.Graph.JMCC_coolant.main+    ["harmonic-tumbling-m"] -> Sound.SC3.Graph.JMCC_harmonic_tumbling_m.main+    ["slow-beating-harmonic-sines"] -> Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines.main+    ["tremulate-hp"] -> Sound.SC3.Graph.JMCC_tremulate_hp.main+    ["resonant-dust"] -> Sound.SC3.Graph.JMCC_resonant_dust.main+    ["harmonic-swimming-m"] -> Sound.SC3.Graph.JMCC_harmonic_swimming_m.main+    ["synthetic-piano-m"] -> Sound.SC3.Graph.JMCC_synthetic_piano_m.main+    ["sawed-cymbals"] -> Sound.SC3.Graph.JMCC_sawed_cymbals.main+    ["tank-m"] -> Sound.SC3.Graph.JMCC_tank_m.main+    ["clustered-sines"] -> Sound.SC3.Graph.JMCC_clustered_sines.main+    ["scratchy-m"] -> Sound.SC3.Graph.JMCC_scratchy_m.main+    ["aleatoric-quartet-m"] -> Sound.SC3.Graph.JMCC_aleatoric_quartet_m.main+    ["spe-m"] -> Sound.SC3.Graph.JMCC_spe_m.main+    ["what-was-i-thinking-m"] -> Sound.SC3.Graph.JMCC_what_was_i_thinking_m.main+    ["pond-life-hp"] -> Sound.SC3.Graph.JMCC_pond_life_hp.main+    ["slow-beating-sines"] -> Sound.SC3.Graph.JMCC_slow_beating_sines.main+    ["spe-p"] -> Sound.SC3.Graph.JMCC_spe_p.main+    ["pulsing-bottles-m"] -> Sound.SC3.Graph.JMCC_pulsing_bottles_m.main+    ["early-space-music-lp-side-two"] -> Sound.SC3.Graph.JMCC_early_space_music_lp_side_two.main+    ["random-panning-sines-m"] -> Sound.SC3.Graph.JMCC_random_panning_sines_m.main+    ["bowed-string-m"] -> Sound.SC3.Graph.JMCC_bowed_string_m.main+    ["random-panning-sines"] -> Sound.SC3.Graph.JMCC_random_panning_sines.main+    ["sidereal-time-hp"] -> Sound.SC3.Graph.JMCC_sidereal_time_hp.main+    ["string-wander-cluster"] -> Sound.SC3.Graph.JMCC_string_wander_cluster.main+    ["alien-froggies"] -> Sound.SC3.Graph.JMCC_alien_froggies.main+    ["pulsing-bottles"] -> Sound.SC3.Graph.JMCC_pulsing_bottles.main+    ["strummable-guitar"] -> Sound.SC3.Graph.JMCC_strummable_guitar.main+    ["overlap-add"] -> Sound.SC3.Graph.JMCC_overlap_add.main+    ["choip"] -> Sound.SC3.Graph.JMCC_choip.main+    ["sprinkler"] -> Sound.SC3.Graph.JMCC_sprinkler.main+    ["rails"] -> Sound.SC3.Graph.JMCC_rails.main+    ["pond-life"] -> Sound.SC3.Graph.JMCC_pond_life.main+    ["comb-delay-sweeps"] -> Sound.SC3.Graph.JMCC_comb_delay_sweeps.main+    ["tank-hp"] -> Sound.SC3.Graph.JMCC_tank_hp.main+    ["harmonic-swimming"] -> Sound.SC3.Graph.JMCC_harmonic_swimming.main+    ["random-sine-waves"] -> Sound.SC3.Graph.JMCC_random_sine_waves.main+    ["modal-space"] -> Sound.SC3.Graph.JMCC_modal_space.main+    ["lfo-modulation"] -> Sound.SC3.Graph.JMCC_lfo_modulation.main+    ["cymbalism-accelerando"] -> Sound.SC3.Graph.JMCC_cymbalism_accelerando.main+    ["plucked-strings-m"] -> Sound.SC3.Graph.JMCC_plucked_strings_m.main+    ["uplink"] -> Sound.SC3.Graph.JMCC_uplink.main+    ["sweepy-noise"] -> Sound.SC3.Graph.JMCC_sweepy_noise.main+    ["random-sine-waves-hp"] -> Sound.SC3.Graph.JMCC_random_sine_waves_hp.main+    ["analog-bubbles"] -> Sound.SC3.Graph.JMCC_analog_bubbles.main+    ["resonant-dust-hp"] -> Sound.SC3.Graph.JMCC_resonant_dust_hp.main+    ["birds-hp"] -> Sound.SC3.Graph.JMCC_birds_hp.main+    ["ring-modulated-klank"] -> Sound.SC3.Graph.JMCC_ring_modulated_klank.main+    ["tremulate-m"] -> Sound.SC3.Graph.JMCC_tremulate_m.main+    ["tank"] -> Sound.SC3.Graph.JMCC_tank.main+    ["reverberated-sine-percussion-hp"] -> Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp.main+    ["theremin"] -> Sound.SC3.Graph.JMCC_theremin.main+    ["data-space-hp"] -> Sound.SC3.Graph.JMCC_data_space_hp.main+    ["mridangam"] -> Sound.SC3.Graph.JMCC_mridangam.main+    ["reverberated-sine-percussion-m"] -> Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m.main+    ["doppler"] -> Sound.SC3.Graph.JMCC_doppler.main+    ["scratchy"] -> Sound.SC3.Graph.JMCC_scratchy.main+    ["sidereal-time"] -> Sound.SC3.Graph.JMCC_sidereal_time.main+    ["birds-m"] -> Sound.SC3.Graph.JMCC_birds_m.main+    ["sample-and-hold-liquidities"] -> Sound.SC3.Graph.JMCC_sample_and_hold_liquidities.main+    ["tremulate"] -> Sound.SC3.Graph.JMCC_tremulate.main+    ["contamination-zone"] -> Sound.SC3.Graph.JMCC_contamination_zone.main+    ["saucer-base"] -> Sound.SC3.Graph.JMCC_saucer_base.main+    ["cymbalism-m"] -> Sound.SC3.Graph.JMCC_cymbalism_m.main+    ["record-scratcher"] -> Sound.SC3.Graph.JP_record_scratcher.main+    ["chain-saw-m"] -> Sound.SC3.Graph.JRHB_chain_saw_m.main+    ["black-atlantic-currents"] -> Sound.SC3.Graph.JRHB_black_atlantic_currents.main+    ["deep-sea"] -> Sound.SC3.Graph.JRHB_deep_sea.main+    ["half-life"] -> Sound.SC3.Graph.JRHB_half_life.main+    ["dial-history-m"] -> Sound.SC3.Graph.JRHB_dial_history_m.main+    ["sam-i-am"] -> Sound.SC3.Graph.JRHB_sam_i_am.main+    ["one-line"] -> Sound.SC3.Graph.LJP_one_line.main+    ["k2ws"] -> Sound.SC3.Graph.MN_k2ws.main+    ["k2ws-hp"] -> Sound.SC3.Graph.MN_k2ws_hp.main+    ["after-goeyvaerts"] -> Sound.SC3.Graph.NC_after_goeyvaerts.main+    ["arpeggio"] -> Sound.SC3.Graph.NC_arpeggio.main+    ["ellipse-based-synthesis"] -> Sound.SC3.Graph.NC_ellipse_based_synthesis.main+    ["pebble-beach"] -> Sound.SC3.Graph.NP_pebble_beach.main+    ["nv-tw-54"] -> Sound.SC3.Graph.NV_nv_tw_54.main+    ["nv-tw-41"] -> Sound.SC3.Graph.NV_nv_tw_41.main+    ["nv-tw-1"] -> Sound.SC3.Graph.NV_nv_tw_1.main+    ["thx"] -> Sound.SC3.Graph.PC_thx.main+    ["forest-sounds-m"] -> Sound.SC3.Graph.PJ_forest_sounds_m.main+    ["hh-808"] -> Sound.SC3.Graph.RB_hh_808.main+    ["bs-070705-m"] -> Sound.SC3.Graph.RD_bs_070705_m.main+    ["scritto"] -> Sound.SC3.Graph.RD_scritto.main+    ["ccomb-m"] -> Sound.SC3.Graph.RD_ccomb_m.main+    ["adso"] -> Sound.SC3.Graph.RD_adso.main+    ["lg-timed-m"] -> Sound.SC3.Graph.RD_lg_timed_m.main+    ["three-cpsw-m"] -> Sound.SC3.Graph.RD_three_cpsw_m.main+    ["vlc-distrtn-m"] -> Sound.SC3.Graph.RD_vlc_distrtn_m.main+    ["implosion-m"] -> Sound.SC3.Graph.RD_implosion_m.main+    ["discretion-m"] -> Sound.SC3.Graph.RD_discretion_m.main+    ["diffraction-m"] -> Sound.SC3.Graph.RD_diffraction_m.main+    ["e-lamell-p"] -> Sound.SC3.Graph.RD_e_lamell_p.main+    ["tgb-m"] -> Sound.SC3.Graph.RD_tgb_m.main+    ["discretion"] -> Sound.SC3.Graph.RD_discretion.main+    ["s-chirp"] -> Sound.SC3.Graph.RD_s_chirp.main+    ["lso-061101-m"] -> Sound.SC3.Graph.RD_lso_061101_m.main+    ["vla-addtn-sharc"] -> Sound.SC3.Graph.RD_vla_addtn_sharc.main+    ["cut-outs-m"] -> Sound.SC3.Graph.RD_cut_outs_m.main+    ["vla-addtn"] -> Sound.SC3.Graph.RD_vla_addtn.main+    ["chrd-t"] -> Sound.SC3.Graph.RD_chrd_t.main+    ["tr-out-m"] -> Sound.SC3.Graph.RD_tr_out_m.main+    ["crotale-sine"] -> Sound.SC3.Graph.RD_crotale_sine.main+    ["fm-kltr-p"] -> Sound.SC3.Graph.RD_fm_kltr_p.main+    ["fm-kltr-m"] -> Sound.SC3.Graph.RD_fm_kltr_m.main+    ["rzblp-hp"] -> Sound.SC3.Graph.RD_rzblp_hp.main+    ["mouse-clatter-m"] -> Sound.SC3.Graph.RD_mouse_clatter_m.main+    ["xy-interference"] -> Sound.SC3.Graph.RD_xy_interference.main+    ["waveset"] -> Sound.SC3.Graph.RD_waveset.main+    ["cds-070701-m"] -> Sound.SC3.Graph.RD_cds_070701_m.main+    ["fb-090531"] -> Sound.SC3.Graph.RD_fb_090531.main+    ["fbl-fbf"] -> Sound.SC3.Graph.RD_fbl_fbf.main+    ["k-ppr"] -> Sound.SC3.Graph.RD_k_ppr.main+    ["tipnso"] -> Sound.SC3.Graph.RD_tipnso.main+    ["thb"] -> Sound.SC3.Graph.RD_thb.main+    ["nharm-m"] -> Sound.SC3.Graph.RD_nharm_m.main+    ["wial-m"] -> Sound.SC3.Graph.RD_wial_m.main+    ["fwalk-m"] -> Sound.SC3.Graph.RD_fwalk_m.main+    ["trmlo-u"] -> Sound.SC3.Graph.RD_trmlo_u.main+    ["chrd-m"] -> Sound.SC3.Graph.RD_chrd_m.main+    ["h-chatter-m"] -> Sound.SC3.Graph.RD_h_chatter_m.main+    ["sosc-lp-m"] -> Sound.SC3.Graph.RD_sosc_lp_m.main+    ["feedr-m"] -> Sound.SC3.Graph.RD_feedr_m.main+    ["crotale"] -> Sound.SC3.Graph.RD_crotale.main+    ["rzblp"] -> Sound.SC3.Graph.RD_rzblp.main+    ["cricket-m"] -> Sound.SC3.Graph.RD_cricket_m.main+    ["tgr-rpr-m"] -> Sound.SC3.Graph.RD_tgr_rpr_m.main+    ["for-ann"] -> Sound.SC3.Graph.RD_for_ann.main+    ["fm-iter"] -> Sound.SC3.Graph.RD_fm_iter.main+    ["k-ppr-m"] -> Sound.SC3.Graph.RD_k_ppr_m.main+    ["klink"] -> Sound.SC3.Graph.RD_klink.main+    ["f-lets-m"] -> Sound.SC3.Graph.RD_f_lets_m.main+    ["urandom"] -> Sound.SC3.Graph.RD_urandom.main+    ["lf-pulses"] -> Sound.SC3.Graph.RD_lf_pulses.main+    ["trkl-m"] -> Sound.SC3.Graph.RD_trkl_m.main+    ["xy-interference-m"] -> Sound.SC3.Graph.RD_xy_interference_m.main+    ["voscil-u"] -> Sound.SC3.Graph.RD_voscil_u.main+    ["voscil"] -> Sound.SC3.Graph.RD_voscil.main+    ["eggcrate-m"] -> Sound.SC3.Graph.RD_eggcrate_m.main+    ["rzblp-u"] -> Sound.SC3.Graph.RD_rzblp_u.main+    ["shifting-pulses-m"] -> Sound.SC3.Graph.RD_shifting_pulses_m.main+    ["scritto-m"] -> Sound.SC3.Graph.RD_scritto_m.main+    ["rzblp-m"] -> Sound.SC3.Graph.RD_rzblp_m.main+    ["eggcrate"] -> Sound.SC3.Graph.RD_eggcrate.main+    ["tgrn"] -> Sound.SC3.Graph.RD_tgrn.main+    ["seqr"] -> Sound.SC3.Graph.RD_seqr.main+    ["pattern-buffer-m"] -> Sound.SC3.Graph.RD_pattern_buffer_m.main+    ["nharm-p"] -> Sound.SC3.Graph.RD_nharm_p.main+    ["trmlo"] -> Sound.SC3.Graph.RD_trmlo.main+    ["lin-sosc"] -> Sound.SC3.Graph.RD_lin_sosc.main+    ["e-lamell"] -> Sound.SC3.Graph.RD_e_lamell.main+    ["bottle-m"] -> Sound.SC3.Graph.SC_bottle_m.main+    ["insects-m"] -> Sound.SC3.Graph.SP_insects_m.main+    ["drummer"] -> Sound.SC3.Graph.TM_drummer.main+    _ -> putStrLn "hsc3-graphs graph\n1-4Q6, 1-4Qx, adso, after-goeyvaerts, aleatoric-quartet-m, alien-froggies, alien-meadow, analog-bubbles, arpeggio, babbling-brook-m, birds-hp, birds-m, bit-reduction, bitwise, black-atlantic-currents, bohlen-pierce-140, bottle-m, bowed-string-m, bs-070705-m, buffer-display, ccomb-m, cds-070701-m, chain-saw-m, choip, chrd-m, chrd-t, clustered-sines, clustered-sines-m, comb-delay-sweeps, contamination-zone, coolant, cricket-m, crotale, crotale-sine, cut-outs-m, cymbalism-accelerando, cymbalism-m, dark-sea-horns, dark-sea-horns-hp, data-space, data-space-hp, deep-sea, deep-trip, default, demanding-studies, dial-history-m, diffraction-m, discretion, discretion-m, doppler, drummer, e-lamell, e-lamell-p, early-space-music-lp-side-two, eggcrate, eggcrate-m, ellipse-based-synthesis, f-lets-m, f0-2012-04-19, f0-tw0011, f0-tw0014, f0-tw0020, f0-tw0028, f0-tw0030, f0-tw0033, f0-tw0045, f0-tw0049, f0-tw0051, f0-tw0077, f0-tw0084, fb-090531, fbl-fbf, feedr-m, fm-iter, fm-kltr-m, fm-kltr-p, for-ann, forest-sounds-m, fwalk-m, h-chatter-m, half-life, hansm, harmonic-swimming, harmonic-swimming-m, harmonic-tumbling-m, hell-is-busy, hh-808, implosion-m, insects-m, jl-1-Z, k-ppr, k-ppr-m, k2ws, k2ws-hp, kabelscahden, karplus-strong, klink, lf-pulses, lfo-modulation, lg-timed-m, lin-sosc, lso-061101-m, modal-space, moto-rev, mouse-clatter-m, mridangam, nharm-m, nharm-p, noise-burst-sweep, noise-modulated-sines, nv-tw-1, nv-tw-41, nv-tw-54, one-line, overlap-add, pattern-buffer-m, pebble-beach, pkt-00, pkt-07, pkt-26, pkt-28, plucked-strings-m, police-state, police-state-m, pond-life, pond-life-hp, pulsing-bottles, pulsing-bottles-m, pwm-crossfade, rails, rain-thunder, random-panning-sines, random-panning-sines-m, random-pulsations, random-sine-waves, random-sine-waves-hp, random-sine-waves-she, record-scratcher, red-frik-m, resonant-dust, resonant-dust-hp, reverberated-sine-percussion-hp, reverberated-sine-percussion-m, ring-modulated-klank, rm-octaver, rzblp, rzblp-hp, rzblp-m, rzblp-u, s-chirp, sam-i-am, sample-and-hold-liquidities, saucer-base, sawed-cymbals, scratchy, scratchy-m, scritto, scritto-m, seqr, shepard-tones, shifting-pulses-m, sidereal-time, sidereal-time-hp, sinusdeklinationen, slow-beating-harmonic-sines, slow-beating-sines, snare-909, sosc-lp-m, spe-m, spe-p, sprinkler, sprinkler-m, string-wander-cluster, strummable-guitar, sweepy-noise, synthetic-piano-m, tank, tank-hp, tank-m, tgb-m, tgr-rpr-m, tgrn, thb, theremin, three-cpsw-m, thx, tipnso, tr-out-m, tremulate, tremulate-hp, tremulate-m, trkl-m, trmlo, trmlo-u, tsort, uplink, uplink-hp, urandom, vla-addtn, vla-addtn-sharc, vlc-distrtn-m, voscil, voscil-u, waveset, what-was-i-thinking-m, why-supercollider, wial-m, wind-metals-m, xy-interference, xy-interference-m"
+ hs/mk-ix.hs view
@@ -0,0 +1,75 @@+import Data.List {- base -}+import Data.Maybe {- base -}+import System.Directory  {- directory -}+import System.Environment  {- base -}+import System.FilePath  {- filepath -}+import Text.Printf {- base -}++import L++-- (home,hs-project,use-html?,use-scm?)+type State = (FilePath,FilePath,Bool,Bool)++link :: FilePath -> FilePath -> String -> IO (Maybe String)+link h p c = do+  e <- doesFileExist (h </> p)+  let r = if e then Just (printf "[%s](%s)" c p) else Nothing+  return r++type M_Str = Maybe String+type HS_LN = [M_Str]++alternates :: [String]+alternates = ["m","u","hp","she","p"]++alternates' :: [String]+alternates' = map ('-':) alternates++hs_plain :: State -> FilePath -> IO HS_LN+hs_plain (hm,pr,_,_) nm = do+  let gr = pr </> "gr"+      alt k = link hm (gr </> nm ++ "-" ++ k <.> "hs") (k </> "hs")+  hs <- link hm (gr </> nm <.> "hs") "hs"+  a <- mapM alt alternates+  return (hs : a)++hs_html :: State -> FilePath -> IO HS_LN+hs_html (hm,pr,_,_) nm = do+  let ht = pr </> "html"+      alt k = link hm (ht </> nm ++ "-" ++ k <.> "hs.html") (k </> "hs")+  hs <- link hm (ht </> nm <.> "hs.html") "hs"+  a <- mapM alt alternates+  return (hs : a)++entry :: State -> String -> IO String+entry st nm = do+  let (hm,pr,use_html,use_scm) = st+  hs <- if use_html+        then hs_html st nm+        else hs_plain st nm+  scd <- link hm (pr </> "gr" </> nm <.> "scd") "scd"+  scm <- if use_scm+         then link hm ("sw/rsc3/help/graph" </> nm <.> "scm") "scm"+         else return Nothing+  dot <- link hm (pr </> "dot" </> nm <.> "dot") "dot"+  pdf <- link hm (pr </> "pdf" </> nm <.> "pdf") "pdf"+  svg <- link hm (pr </> "svg" </> nm <.> "svg") "svg"+  let ln = intercalate "," (catMaybes (hs ++ [scd,scm,dot,pdf,svg]))+  return (printf "- %s [%s]" nm ln)++-- > mk_ix ("/home/rohan","sw/hsc3-graphs",True,True)+mk_ix :: State -> IO ()+mk_ix st = do+  let (hm,pr,_,_) = st+  d <- getDirectoryContents (hm </> pr </> "gr")+  let hs = mapMaybe (stripSuffix ".hs") (filter (".hs" `isSuffixOf`) d)+      nm = map (strip_suffix_or_id alternates') hs+  e <- mapM (entry st)(nub (sort nm))+  writeFile (hm </> pr </> "md/ix.md") (unlines e)++main :: IO ()+main = do+  [pr] <- getArgs+  hm <- getHomeDirectory+  let st = (hm,pr,True,True)+  mk_ix st
+ hs/mk-lib.hs view
@@ -0,0 +1,89 @@+import Data.Char {- base -}+import Data.Function {- base -}+import Data.List {- base -}+import Data.Maybe {- base -}+import System.Directory  {- directory -}+import System.FilePath  {- filepath -}+import System.IO {- base -}+import Text.Printf {- base -}+import Text.Regex {- regex-compat -}++import L++dir :: FilePath+dir = "sw/hsc3-graphs"++-- (Name,Author)+type GR = (String,String)++gr_name :: FilePath -> FilePath -> FilePath+gr_name h nm = h </> dir </> "gr" </> nm <.> "hs"++author :: FilePath -> String -> IO (Maybe GR)+author h nm = do+  let nm' = fromMaybe (error "not hs") (stripSuffix ".hs" nm)+  fd <- openFile (gr_name h nm') ReadMode+  ln <- hGetLine fd+  hClose fd+  let r = mkRegex "[^(]*\\(([^)]*)"+  case matchRegex r ln of+    Just [au] -> return (Just (nm',au))+    _ -> return Nothing++to_underscore :: Char -> Char+to_underscore c =+    case c of+      '-' -> '_'+      _ -> c++fix_gr :: GR -> GR+fix_gr (nm,au) =+    let au' = map toUpper au+        nm' = map to_underscore nm+    in (nm',au')++mod_name :: GR -> String+mod_name gr =+    let (nm,au) = fix_gr gr+    in printf "Sound.SC3.Graph.%s_%s" au nm++gen_mod :: FilePath -> GR -> IO ()+gen_mod h gr = do+  let m_nm = mod_name gr+      (nm,_) = gr+      (nm',au') = fix_gr gr+      m = au' ++ "_" ++ nm'+  putStrLn ("                   " ++ m_nm ++ ",")+  c <- readFile (gr_name h nm)+  let (p,q) = span (not . null) (lines c)+      c' = unlines (p ++ [printf "module %s where" m_nm] ++ q)+  writeFile (h </> dir </> "Sound/SC3/Graph" </> m <.> "hs") c'++gen_hsc3_graphs :: [GR] -> String+gen_hsc3_graphs gr_seq =+    let mk_import gr = "import qualified " ++ mod_name gr+        mk_case_stmt gr = let (nm,_) = gr+                              m_nm = mod_name gr+                          in printf "    [\"%s\"] -> %s.main" nm m_nm+        usage = "hsc3-graphs graph\\n" +++                intercalate ", " (sort (map fst gr_seq))+    in unlines (["import System.Environment {- base -}"+                ,""] +++                map mk_import gr_seq +++                [""+                ,"main :: IO ()"+                ,"main = do"+                ,"  a <- getArgs"+                ,"  case a of"] +++                map mk_case_stmt gr_seq +++                [printf "    _ -> putStrLn \"%s\"" usage])++main :: IO ()+main = do+  h <- getHomeDirectory+  d <- getDirectoryContents (h </> dir </> "gr")+  let hs = filter (".hs" `isSuffixOf`) d+  au <- mapM (author h) hs+  let au' = sortBy (compare `on` snd) (catMaybes au)+  mapM_ (gen_mod h) au'+  writeFile (h </> dir </> "hs/hsc3-graphs.hs") (gen_hsc3_graphs au')
hsc3-graphs.cabal view
@@ -1,648 +1,1405 @@ Name:              hsc3-graphs-Version:           0.12-Synopsis:          Haskell SuperCollider Graphs-Description:       hsc3-graphs provides a collection of illustrative-                   unit generator graphs for hsc3.-License:           GPL-Category:          Sound-Copyright:         (c) Rohan Drape and others, 2006-2012-Author:            Rohan Drape-Maintainer:        rd@slavepianos.org-Stability:         Experimental-Homepage:          http://rd.slavepianos.org/?t=hsc3-graphs-Tested-With:       GHC == 7.6.1-Build-Type:        Simple-Cabal-Version:     >= 1.8--Data-files:        README-                   gr/*.scd--Source-Repository  head-  Type:            darcs-  Location:        http://rd.slavepianos.org/sw/hsc3-graphs/---- Auto-generated: Tue Aug 21 14:50:33 EST 2012-Executable hsc3-1-1Ni- main-is: gr/1-1Ni.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-1-4Q6- main-is: gr/1-4Q6.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-1-4QM- main-is: gr/1-4QM.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-1-4QN- main-is: gr/1-4QN.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-1-4Qx- main-is: gr/1-4Qx.hs- build-depends: base==4.*,hsc3-Executable hsc3-1-Td- main-is: gr/1-Td.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-acid-otophilia- main-is: gr/acid-otophilia.hs- build-depends: base==4.*,hosc,hsc3,random-Executable hsc3-adso- main-is: gr/adso.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-after-goeyvaerts- main-is: gr/after-goeyvaerts.hs- build-depends: base==4.*,split,containers,hosc,hsc3,hsc3-lang,random-Executable hsc3-aleatoric-quartet-m- main-is: gr/aleatoric-quartet-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-alien-froggies- main-is: gr/alien-froggies.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-alien-meadow- main-is: gr/alien-meadow.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-ambient1- main-is: gr/ambient1.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-analog-bubbles- main-is: gr/analog-bubbles.hs- build-depends: base==4.*,hsc3-Executable hsc3-arpeggio- main-is: gr/arpeggio.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-babbling-brook-m- main-is: gr/babbling-brook-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-birds-m- main-is: gr/birds-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-bit-reduction- main-is: gr/bit-reduction.hs- build-depends: base==4.*,hsc3-Executable hsc3-bitwise- main-is: gr/bitwise.hs- build-depends: base==4.*,hsc3-Executable hsc3-black-atlantic-currents- main-is: gr/black-atlantic-currents.hs- build-depends: base==4.*,primes,hsc3,random,random-shuffle-Executable hsc3-bohlen-pierce-140- main-is: gr/bohlen-pierce-140.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-bottle-m- main-is: gr/bottle-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-bowed-string-m- main-is: gr/bowed-string-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-bs-070705- main-is: gr/bs-070705.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-buffer-display- main-is: gr/buffer-display.hs- build-depends: base==4.*,hcg-minus,cmath,cairo,hsc3,hsc3-cairo-Executable hsc3-ccomb- main-is: gr/ccomb.hs- build-depends: base==4.*,hsc3-Executable hsc3-cds-070701- main-is: gr/cds-070701.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-chain-saw- main-is: gr/chain-saw.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-choip- main-is: gr/choip.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-chrd-m- main-is: gr/chrd-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-chrd-t- main-is: gr/chrd-t.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-clustered-sines- main-is: gr/clustered-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-comb-delay-sweeps- main-is: gr/comb-delay-sweeps.hs- build-depends: base==4.*,hsc3,hsc3-lang,random-Executable hsc3-contamination-zone- main-is: gr/contamination-zone.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-coolant- main-is: gr/coolant.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cricket-m- main-is: gr/cricket-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-crotale- main-is: gr/crotale.hs- build-depends: base==4.*,hsc3-Executable hsc3-crotale-sine- main-is: gr/crotale-sine.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cut-outs- main-is: gr/cut-outs.hs- build-depends: base==4.*,hsc3-Executable hsc3-cymbalism-accelerando- main-is: gr/cymbalism-accelerando.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-cymbalism-m- main-is: gr/cymbalism-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-dark-sea-horns- main-is: gr/dark-sea-horns.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-data-space- main-is: gr/data-space.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-deep-sea- main-is: gr/deep-sea.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-deep-trip- main-is: gr/deep-trip.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-default- main-is: gr/default.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-demanding-studies- main-is: gr/demanding-studies.hs- build-depends: base==4.*,hsc3-Executable hsc3-dial-history- main-is: gr/dial-history.hs- build-depends: base==4.*,hsc3-Executable hsc3-diffraction- main-is: gr/diffraction.hs- build-depends: base==4.*,hsc3-Executable hsc3-discretion- main-is: gr/discretion.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-discretion-m- main-is: gr/discretion-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-doppler- main-is: gr/doppler.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-drummer- main-is: gr/drummer.hs- build-depends: base==4.*,hsc3-Executable hsc3-early-space-music-lp-side-two- main-is: gr/early-space-music-lp-side-two.hs- build-depends: base==4.*,hsc3,hsc3-lang,sc3-rdu,random-Executable hsc3-eggcrate- main-is: gr/eggcrate.hs- build-depends: base==4.*,hsc3-Executable hsc3-eggcrate-m- main-is: gr/eggcrate-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-e-lamell- main-is: gr/e-lamell.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-e-lamell-p- main-is: gr/e-lamell-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-ellipse-based-synthesis- main-is: gr/ellipse-based-synthesis.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-2012-04-19- main-is: gr/f0-2012-04-19.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0011- main-is: gr/f0-tw0011.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0014- main-is: gr/f0-tw0014.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0020- main-is: gr/f0-tw0020.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0028- main-is: gr/f0-tw0028.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0030- main-is: gr/f0-tw0030.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0033- main-is: gr/f0-tw0033.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0045- main-is: gr/f0-tw0045.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0049- main-is: gr/f0-tw0049.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0051- main-is: gr/f0-tw0051.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0077- main-is: gr/f0-tw0077.hs- build-depends: base==4.*,hsc3-Executable hsc3-f0-tw0084- main-is: gr/f0-tw0084.hs- build-depends: base==4.*,hsc3-Executable hsc3-fb-090531- main-is: gr/fb-090531.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-fbl-fbf- main-is: gr/fbl-fbf.hs- build-depends: base==4.*,hsc3-Executable hsc3-feedr- main-is: gr/feedr.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-f-lets- main-is: gr/f-lets.hs- build-depends: base==4.*,hsc3-Executable hsc3-fm-iter- main-is: gr/fm-iter.hs- build-depends: base==4.*,hsc3-Executable hsc3-fm-kltr- main-is: gr/fm-kltr.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-fm-kltr-p- main-is: gr/fm-kltr-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-for-ann- main-is: gr/for-ann.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-forest-sounds- main-is: gr/forest-sounds.hs- build-depends: base==4.*,hsc3-Executable hsc3-fwalk- main-is: gr/fwalk.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-half-life- main-is: gr/half-life.hs- build-depends: base==4.*,hsc3-Executable hsc3-hansm- main-is: gr/hansm.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-harmonic-swimming- main-is: gr/harmonic-swimming.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-harmonic-swimming-m- main-is: gr/harmonic-swimming-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-harmonic-tumbling- main-is: gr/harmonic-tumbling.hs- build-depends: base==4.*,hsc3-Executable hsc3-h-chatter- main-is: gr/h-chatter.hs- build-depends: base==4.*,hsc3-Executable hsc3-hell-is-busy- main-is: gr/hell-is-busy.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-hh-808- main-is: gr/hh-808.hs- build-depends: base==4.*,hsc3-Executable hsc3-implosion- main-is: gr/implosion.hs- build-depends: base==4.*,hsc3-Executable hsc3-insects- main-is: gr/insects.hs- build-depends: base==4.*,hsc3-Executable hsc3-jl-1-Z- main-is: gr/jl-1-Z.hs- build-depends: base==4.*,hsc3-Executable hsc3-k2ws- main-is: gr/k2ws.hs- build-depends: base==4.*,hsc3-Executable hsc3-kabelscahden- main-is: gr/kabelscahden.hs- build-depends: base==4.*,hsc3-Executable hsc3-karplus-strong- main-is: gr/karplus-strong.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-klink- main-is: gr/klink.hs- build-depends: base==4.*,hsc3-Executable hsc3-k-ppr- main-is: gr/k-ppr.hs- build-depends: base==4.*,hsc3-Executable hsc3-k-ppr-m- main-is: gr/k-ppr-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-laser-bubble- main-is: gr/laser-bubble.hs- build-depends: base==4.*,hsc3-Executable hsc3-lfo-modulation- main-is: gr/lfo-modulation.hs- build-depends: base==4.*,hsc3-Executable hsc3-lf-pulses- main-is: gr/lf-pulses.hs- build-depends: base==4.*,hsc3-Executable hsc3-lg-timed- main-is: gr/lg-timed.hs- build-depends: base==4.*,hsc3-Executable hsc3-lin-sosc- main-is: gr/lin-sosc.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-lso-061101- main-is: gr/lso-061101.hs- build-depends: base==4.*,hps,hls,hsc3-sf,hsc3,hsc3-lang,directory,filepath-Executable hsc3-lucier- main-is: gr/lucier.hs- build-depends: base==4.*,hsc3-Executable hsc3-m21360- main-is: gr/m21360.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-microhelix- main-is: gr/microhelix.hs- build-depends: base==4.*,hsc3-Executable hsc3-modal-space- main-is: gr/modal-space.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-moto-rev- main-is: gr/moto-rev.hs- build-depends: base==4.*,hsc3-Executable hsc3-mouse-clatter-m- main-is: gr/mouse-clatter-m.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-mridangam- main-is: gr/mridangam.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-music-box- main-is: gr/music-box.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-nharm- main-is: gr/nharm.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-nharm-p- main-is: gr/nharm-p.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-noise-burst-sweep- main-is: gr/noise-burst-sweep.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-noise-modulated-sines- main-is: gr/noise-modulated-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-nokia- main-is: gr/nokia.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-non-real-time- main-is: gr/non-real-time.hs- build-depends: base==4.*,hosc,hsc3,process-Executable hsc3-nv-tw-1- main-is: gr/nv-tw-1.hs- build-depends: base==4.*,hsc3-Executable hsc3-nv-tw-41- main-is: gr/nv-tw-41.hs- build-depends: base==4.*,hsc3-Executable hsc3-nv-tw-54- main-is: gr/nv-tw-54.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-nx102- main-is: gr/nx102.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-one-line- main-is: gr/one-line.hs- build-depends: base==4.*,hsc3-Executable hsc3-oscillator-cluster- main-is: gr/oscillator-cluster.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-overlap-add- main-is: gr/overlap-add.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pattern-buffer- main-is: gr/pattern-buffer.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-pebble-beach- main-is: gr/pebble-beach.hs- build-depends: base==4.*,hsc3-Executable hsc3-pkt-26- main-is: gr/pkt-26.hs- build-depends: base==4.*,hsc3-Executable hsc3-pkt-28- main-is: gr/pkt-28.hs- build-depends: base==4.*,hsc3-Executable hsc3-plucked-strings- main-is: gr/plucked-strings.hs- build-depends: base==4.*,hsc3-Executable hsc3-police-state- main-is: gr/police-state.hs- build-depends: base==4.*,hsc3-Executable hsc3-pond-life- main-is: gr/pond-life.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-proxy-mixer- main-is: gr/proxy-mixer.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-proxy-mixer-m- main-is: gr/proxy-mixer-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pulsing-bottles- main-is: gr/pulsing-bottles.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pulsing-bottles-m- main-is: gr/pulsing-bottles-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-pwm-crossfade- main-is: gr/pwm-crossfade.hs- build-depends: base==4.*,hsc3-Executable hsc3-rails- main-is: gr/rails.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-rain-thunder- main-is: gr/rain-thunder.hs- build-depends: base==4.*,hsc3-Executable hsc3-random-panning-sines- main-is: gr/random-panning-sines.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-panning-sines-m- main-is: gr/random-panning-sines-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-pulsations- main-is: gr/random-pulsations.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-random-sine-waves- main-is: gr/random-sine-waves.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-record-scratcher- main-is: gr/record-scratcher.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-red-frik- main-is: gr/red-frik.hs- build-depends: base==4.*,hsc3-Executable hsc3-reset- main-is: gr/reset.hs- build-depends: base==4.*,hsc3-Executable hsc3-resonant-dust- main-is: gr/resonant-dust.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-reverberated-sine-percussion- main-is: gr/reverberated-sine-percussion.hs- build-depends: base==4.*,hsc3-Executable hsc3-ring-modulated-klank- main-is: gr/ring-modulated-klank.hs- build-depends: base==4.*,hsc3,sc3-rdu,hsc3-lang-Executable hsc3-rm-octaver- main-is: gr/rm-octaver.hs- build-depends: base==4.*,hsc3-Executable hsc3-rzblp- main-is: gr/rzblp.hs- build-depends: base==4.*,hsc3-Executable hsc3-rzblp-u- main-is: gr/rzblp-u.hs- build-depends: base==4.*,hsc3,hsc3-unsafe-Executable hsc3-sam-i-am- main-is: gr/sam-i-am.hs- build-depends: base==4.*,MonadRandom,base==4.*,hsc3,hsc3-lang-Executable hsc3-sample-and-hold-liquidities- main-is: gr/sample-and-hold-liquidities.hs- build-depends: base==4.*,hsc3-Executable hsc3-saucer-base- main-is: gr/saucer-base.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sawed-cymbals- main-is: gr/sawed-cymbals.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-s-chirp- main-is: gr/s-chirp.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-scratchy- main-is: gr/scratchy.hs- build-depends: base==4.*,hsc3-Executable hsc3-scratchy-m- main-is: gr/scratchy-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-scritto- main-is: gr/scritto.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-scritto-m- main-is: gr/scritto-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-seqr- main-is: gr/seqr.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-shepard-tones- main-is: gr/shepard-tones.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-shifting-pulses- main-is: gr/shifting-pulses.hs- build-depends: base==4.*,hsc3-Executable hsc3-sidereal-time- main-is: gr/sidereal-time.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sinusdeklinationen- main-is: gr/sinusdeklinationen.hs- build-depends: base==4.*,split,hsc3,hsc3-lang-Executable hsc3-slow-beating-harmonic-sines- main-is: gr/slow-beating-harmonic-sines.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-slow-beating-sines- main-is: gr/slow-beating-sines.hs- build-depends: base==4.*,MonadRandom,hsc3,hsc3-lang-Executable hsc3-snare-909- main-is: gr/snare-909.hs- build-depends: base==4.*,hsc3-Executable hsc3-sosc-lp- main-is: gr/sosc-lp.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-spe-m- main-is: gr/spe-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-spe-p- main-is: gr/spe-p.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-sprinkler- main-is: gr/sprinkler.hs- build-depends: base==4.*,hsc3-Executable hsc3-sprinkler-m- main-is: gr/sprinkler-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-string-wander-cluster- main-is: gr/string-wander-cluster.hs- build-depends: base==4.*,hsc3,hsc3-lang,random-Executable hsc3-strummable-guitar- main-is: gr/strummable-guitar.hs- build-depends: base==4.*,hsc3-Executable hsc3-sweepy-noise- main-is: gr/sweepy-noise.hs- build-depends: base==4.*,hsc3-Executable hsc3-synthetic-piano-m- main-is: gr/synthetic-piano-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-tank- main-is: gr/tank.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-tank-m- main-is: gr/tank-m.hs- build-depends: base==4.*,hsc3-Executable hsc3-tgb- main-is: gr/tgb.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tgrn- main-is: gr/tgrn.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tgr-rpr- main-is: gr/tgr-rpr.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-thb- main-is: gr/thb.hs- build-depends: base==4.*,hmt,hsc3,hsc3-lang,hosc-Executable hsc3-theremin- main-is: gr/theremin.hs- build-depends: base==4.*,hsc3-Executable hsc3-three-cpsw- main-is: gr/three-cpsw.hs- build-depends: base==4.*,hsc3-Executable hsc3-thx- main-is: gr/thx.hs- build-depends: base==4.*,hsc3,random-Executable hsc3-tipnso- main-is: gr/tipnso.hs- build-depends: base==4.*,hsc3-Executable hsc3-train- main-is: gr/train.hs- build-depends: base==4.*,hsc3-Executable hsc3-tremulate- main-is: gr/tremulate.hs- build-depends: base==4.*,hsc3,hsc3-lang,sc3-rdu-Executable hsc3-tremulate-m- main-is: gr/tremulate-m.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-trkl- main-is: gr/trkl.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-trmlo- main-is: gr/trmlo.hs- build-depends: base==4.*,hsc3,hsc3-unsafe,hsc3-lang-Executable hsc3-tr-out- main-is: gr/tr-out.hs- build-depends: base==4.*,hosc,hsc3-Executable hsc3-tsort- main-is: gr/tsort.hs- build-depends: base==4.*,hsc3-Executable hsc3-uplink- main-is: gr/uplink.hs- build-depends: base==4.*,hsc3,hsc3-lang-Executable hsc3-urandom- main-is: gr/urandom.hs- build-depends: base==4.*,bytestring,hosc,hsc3,hsc3-lang,base-Executable hsc3-vla-addtn- main-is: gr/vla-addtn.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-vla-addtn-sharc- main-is: gr/vla-addtn-sharc.hs- build-depends: base==4.*,hsharc,hosc,hsc3,hsc3-lang-Executable hsc3-vlc-distrtn- main-is: gr/vlc-distrtn.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang-Executable hsc3-voscil- main-is: gr/voscil.hs- build-depends: base==4.*,hosc,hsc3,hsc3-lang,hsc3-unsafe-Executable hsc3-waveset- main-is: gr/waveset.hs- build-depends: base==4.*,array,base==4.*,hsc3-sf,hosc,hsc3,random-Executable hsc3-what-was-i-thinking- main-is: gr/what-was-i-thinking.hs- build-depends: base==4.*,hsc3-Executable hsc3-why-supercollider- main-is: gr/why-supercollider.hs- build-depends: base==4.*,hsc3,sc3-rdu-Executable hsc3-wial- main-is: gr/wial.hs- build-depends: base==4.*,hsc3-Executable hsc3-wind-metals-m- main-is: gr/wind-metals-m.hs- build-depends: base==4.*,hsc3-lang,hsc3-Executable hsc3-xy-interference- main-is: gr/xy-interference.hs- build-depends: base==4.*,hsc3-Executable hsc3-xy-interference-m- main-is: gr/xy-interference-m.hs- build-depends: base==4.*,hsc3+Version:           0.14+Synopsis:          Haskell SuperCollider Graphs+Description:       hsc3-graphs provides a collection of illustrative+                   unit generator graphs for hsc3.+License:           GPL+Category:          Sound+Copyright:         (c) Rohan Drape and others, 2006-2013+Author:            Rohan Drape+Maintainer:        rd@slavepianos.org+Stability:         Experimental+Homepage:          http://rd.slavepianos.org/?t=hsc3-graphs+Tested-With:       GHC == 7.6.1+Build-Type:        Simple+Cabal-Version:     >= 1.8++Data-Files:        README+                   Makefile+                   css/*.css+                   gr/*.scd+                   hs/*.hs+                   sh/*.sh++Library+  Build-Depends:   array,+                   base == 4.*,+                   bytestring,+                   cairo,+                   containers,+                   data-default,+                   directory,+                   filepath,+                   hls == 0.14.*,+                   hmt == 0.14.*,+                   hosc == 0.14.*,+                   hps == 0.14.*,+                   hsc3 == 0.14.*,+                   hsc3-cairo == 0.14.*,+                   hsc3-lang == 0.14.*,+                   hsc3-sf == 0.14.*,+                   hsc3-unsafe == 0.14.*,+                   hsharc == 0.14.*,+                   MonadRandom,+                   primes,+                   random,+                   random-shuffle,+                   sc3-rdu == 0.14.*,+                   split+  GHC-Options:     -Wall -fwarn-tabs+  -- Auto-generated: Fri Apr 5 14:49:03 EST 2013+  Exposed-Modules: Sound.SC3.Graph.ADC_bit_reduction,+                   Sound.SC3.Graph.ADC_kabelscahden,+                   Sound.SC3.Graph.ADC_shepard_tones,+                   Sound.SC3.Graph.AM_karplus_strong,+                   Sound.SC3.Graph.AV_rm_octaver,+                   Sound.SC3.Graph.F0_sinusdeklinationen,+                   Sound.SC3.Graph.F0_f0_tw0051,+                   Sound.SC3.Graph.F0_f0_tw0030,+                   Sound.SC3.Graph.F0_f0_tw0011,+                   Sound.SC3.Graph.F0_f0_tw0033,+                   Sound.SC3.Graph.F0_f0_2012_04_19,+                   Sound.SC3.Graph.F0_f0_tw0077,+                   Sound.SC3.Graph.F0_1_4Q6,+                   Sound.SC3.Graph.F0_red_frik_m,+                   Sound.SC3.Graph.F0_pkt_26,+                   Sound.SC3.Graph.F0_f0_tw0020,+                   Sound.SC3.Graph.F0_pkt_28,+                   Sound.SC3.Graph.F0_hansm,+                   Sound.SC3.Graph.F0_f0_tw0045,+                   Sound.SC3.Graph.F0_f0_tw0049,+                   Sound.SC3.Graph.F0_f0_tw0014,+                   Sound.SC3.Graph.F0_f0_tw0084,+                   Sound.SC3.Graph.F0_buffer_display,+                   Sound.SC3.Graph.F0_f0_tw0028,+                   Sound.SC3.Graph.JJ_bohlen_pierce_140,+                   Sound.SC3.Graph.JL_dark_sea_horns_hp,+                   Sound.SC3.Graph.JL_pwm_crossfade,+                   Sound.SC3.Graph.JL_rain_thunder,+                   Sound.SC3.Graph.JL_jl_1_Z,+                   Sound.SC3.Graph.JL_bitwise,+                   Sound.SC3.Graph.JL_dark_sea_horns,+                   Sound.SC3.Graph.JMCC_tsort,+                   Sound.SC3.Graph.JMCC_police_state,+                   Sound.SC3.Graph.JMCC_wind_metals_m,+                   Sound.SC3.Graph.JMCC_babbling_brook_m,+                   Sound.SC3.Graph.JMCC_random_pulsations,+                   Sound.SC3.Graph.JMCC_moto_rev,+                   Sound.SC3.Graph.JMCC_sprinkler_m,+                   Sound.SC3.Graph.JMCC_demanding_studies,+                   Sound.SC3.Graph.JMCC_why_supercollider,+                   Sound.SC3.Graph.JMCC_deep_trip,+                   Sound.SC3.Graph.JMCC_alien_meadow,+                   Sound.SC3.Graph.JMCC_snare_909,+                   Sound.SC3.Graph.JMCC_uplink_hp,+                   Sound.SC3.Graph.JMCC_noise_burst_sweep,+                   Sound.SC3.Graph.JMCC_random_sine_waves_she,+                   Sound.SC3.Graph.JMCC_data_space,+                   Sound.SC3.Graph.JMCC_police_state_m,+                   Sound.SC3.Graph.JMCC_default,+                   Sound.SC3.Graph.JMCC_hell_is_busy,+                   Sound.SC3.Graph.JMCC_noise_modulated_sines,+                   Sound.SC3.Graph.JMCC_clustered_sines_m,+                   Sound.SC3.Graph.JMCC_coolant,+                   Sound.SC3.Graph.JMCC_harmonic_tumbling_m,+                   Sound.SC3.Graph.JMCC_slow_beating_harmonic_sines,+                   Sound.SC3.Graph.JMCC_tremulate_hp,+                   Sound.SC3.Graph.JMCC_resonant_dust,+                   Sound.SC3.Graph.JMCC_harmonic_swimming_m,+                   Sound.SC3.Graph.JMCC_synthetic_piano_m,+                   Sound.SC3.Graph.JMCC_sawed_cymbals,+                   Sound.SC3.Graph.JMCC_tank_m,+                   Sound.SC3.Graph.JMCC_clustered_sines,+                   Sound.SC3.Graph.JMCC_scratchy_m,+                   Sound.SC3.Graph.JMCC_aleatoric_quartet_m,+                   Sound.SC3.Graph.JMCC_spe_m,+                   Sound.SC3.Graph.JMCC_what_was_i_thinking_m,+                   Sound.SC3.Graph.JMCC_pond_life_hp,+                   Sound.SC3.Graph.JMCC_slow_beating_sines,+                   Sound.SC3.Graph.JMCC_spe_p,+                   Sound.SC3.Graph.JMCC_pulsing_bottles_m,+                   Sound.SC3.Graph.JMCC_early_space_music_lp_side_two,+                   Sound.SC3.Graph.JMCC_random_panning_sines_m,+                   Sound.SC3.Graph.JMCC_bowed_string_m,+                   Sound.SC3.Graph.JMCC_random_panning_sines,+                   Sound.SC3.Graph.JMCC_sidereal_time_hp,+                   Sound.SC3.Graph.JMCC_string_wander_cluster,+                   Sound.SC3.Graph.JMCC_alien_froggies,+                   Sound.SC3.Graph.JMCC_pulsing_bottles,+                   Sound.SC3.Graph.JMCC_strummable_guitar,+                   Sound.SC3.Graph.JMCC_choip,+                   Sound.SC3.Graph.JMCC_sprinkler,+                   Sound.SC3.Graph.JMCC_rails,+                   Sound.SC3.Graph.JMCC_pond_life,+                   Sound.SC3.Graph.JMCC_comb_delay_sweeps,+                   Sound.SC3.Graph.JMCC_tank_hp,+                   Sound.SC3.Graph.JMCC_harmonic_swimming,+                   Sound.SC3.Graph.JMCC_random_sine_waves,+                   Sound.SC3.Graph.JMCC_modal_space,+                   Sound.SC3.Graph.JMCC_lfo_modulation,+                   Sound.SC3.Graph.JMCC_cymbalism_accelerando,+                   Sound.SC3.Graph.JMCC_plucked_strings_m,+                   Sound.SC3.Graph.JMCC_uplink,+                   Sound.SC3.Graph.JMCC_sweepy_noise,+                   Sound.SC3.Graph.JMCC_random_sine_waves_hp,+                   Sound.SC3.Graph.JMCC_analog_bubbles,+                   Sound.SC3.Graph.JMCC_resonant_dust_hp,+                   Sound.SC3.Graph.JMCC_birds_hp,+                   Sound.SC3.Graph.JMCC_ring_modulated_klank,+                   Sound.SC3.Graph.JMCC_tremulate_m,+                   Sound.SC3.Graph.JMCC_tank,+                   Sound.SC3.Graph.JMCC_reverberated_sine_percussion_hp,+                   Sound.SC3.Graph.JMCC_theremin,+                   Sound.SC3.Graph.JMCC_data_space_hp,+                   Sound.SC3.Graph.JMCC_mridangam,+                   Sound.SC3.Graph.JMCC_reverberated_sine_percussion_m,+                   Sound.SC3.Graph.JMCC_doppler,+                   Sound.SC3.Graph.JMCC_scratchy,+                   Sound.SC3.Graph.JMCC_sidereal_time,+                   Sound.SC3.Graph.JMCC_birds_m,+                   Sound.SC3.Graph.JMCC_sample_and_hold_liquidities,+                   Sound.SC3.Graph.JMCC_tremulate,+                   Sound.SC3.Graph.JMCC_contamination_zone,+                   Sound.SC3.Graph.JMCC_saucer_base,+                   Sound.SC3.Graph.JMCC_cymbalism_m,+                   Sound.SC3.Graph.JMCC_overlap_add,+                   Sound.SC3.Graph.JP_record_scratcher,+                   Sound.SC3.Graph.JRHB_chain_saw_m,+                   Sound.SC3.Graph.JRHB_black_atlantic_currents,+                   Sound.SC3.Graph.JRHB_deep_sea,+                   Sound.SC3.Graph.JRHB_half_life,+                   Sound.SC3.Graph.JRHB_dial_history_m,+                   Sound.SC3.Graph.JRHB_sam_i_am,+                   Sound.SC3.Graph.LJP_one_line,+                   Sound.SC3.Graph.MN_k2ws,+                   Sound.SC3.Graph.MN_k2ws_hp,+                   Sound.SC3.Graph.NC_after_goeyvaerts,+                   Sound.SC3.Graph.NC_arpeggio,+                   Sound.SC3.Graph.NC_ellipse_based_synthesis,+                   Sound.SC3.Graph.NP_pebble_beach,+                   Sound.SC3.Graph.NV_nv_tw_54,+                   Sound.SC3.Graph.NV_nv_tw_41,+                   Sound.SC3.Graph.NV_nv_tw_1,+                   Sound.SC3.Graph.PC_thx,+                   Sound.SC3.Graph.PJ_forest_sounds_m,+                   Sound.SC3.Graph.RB_hh_808,+                   Sound.SC3.Graph.RD_bs_070705_m,+                   Sound.SC3.Graph.RD_scritto,+                   Sound.SC3.Graph.RD_ccomb_m,+                   Sound.SC3.Graph.RD_adso,+                   Sound.SC3.Graph.RD_lg_timed_m,+                   Sound.SC3.Graph.RD_three_cpsw_m,+                   Sound.SC3.Graph.RD_vlc_distrtn_m,+                   Sound.SC3.Graph.RD_implosion_m,+                   Sound.SC3.Graph.RD_discretion_m,+                   Sound.SC3.Graph.RD_diffraction_m,+                   Sound.SC3.Graph.RD_e_lamell_p,+                   Sound.SC3.Graph.RD_tgb_m,+                   Sound.SC3.Graph.RD_discretion,+                   Sound.SC3.Graph.RD_s_chirp,+                   Sound.SC3.Graph.RD_vla_addtn_sharc,+                   Sound.SC3.Graph.RD_cut_outs_m,+                   Sound.SC3.Graph.RD_vla_addtn,+                   Sound.SC3.Graph.RD_chrd_t,+                   Sound.SC3.Graph.RD_tr_out_m,+                   Sound.SC3.Graph.RD_crotale_sine,+                   Sound.SC3.Graph.RD_fm_kltr_p,+                   Sound.SC3.Graph.RD_fm_kltr_m,+                   Sound.SC3.Graph.RD_rzblp_hp,+                   Sound.SC3.Graph.RD_mouse_clatter_m,+                   Sound.SC3.Graph.RD_xy_interference,+                   Sound.SC3.Graph.RD_waveset,+                   Sound.SC3.Graph.RD_cds_070701_m,+                   Sound.SC3.Graph.RD_fb_090531,+                   Sound.SC3.Graph.RD_fbl_fbf,+                   Sound.SC3.Graph.RD_k_ppr,+                   Sound.SC3.Graph.RD_tipnso,+                   Sound.SC3.Graph.RD_thb,+                   Sound.SC3.Graph.RD_nharm_m,+                   Sound.SC3.Graph.RD_wial_m,+                   Sound.SC3.Graph.RD_fwalk_m,+                   Sound.SC3.Graph.RD_trmlo_u,+                   Sound.SC3.Graph.RD_chrd_m,+                   Sound.SC3.Graph.RD_h_chatter_m,+                   Sound.SC3.Graph.RD_sosc_lp_m,+                   Sound.SC3.Graph.RD_feedr_m,+                   Sound.SC3.Graph.RD_crotale,+                   Sound.SC3.Graph.RD_rzblp,+                   Sound.SC3.Graph.RD_cricket_m,+                   Sound.SC3.Graph.RD_tgr_rpr_m,+                   Sound.SC3.Graph.RD_fm_iter,+                   Sound.SC3.Graph.RD_k_ppr_m,+                   Sound.SC3.Graph.RD_klink,+                   Sound.SC3.Graph.RD_f_lets_m,+                   Sound.SC3.Graph.RD_urandom,+                   Sound.SC3.Graph.RD_lf_pulses,+                   Sound.SC3.Graph.RD_trkl_m,+                   Sound.SC3.Graph.RD_xy_interference_m,+                   Sound.SC3.Graph.RD_voscil_u,+                   Sound.SC3.Graph.RD_voscil,+                   Sound.SC3.Graph.RD_eggcrate_m,+                   Sound.SC3.Graph.RD_rzblp_u,+                   Sound.SC3.Graph.RD_shifting_pulses_m,+                   Sound.SC3.Graph.RD_scritto_m,+                   Sound.SC3.Graph.RD_rzblp_m,+                   Sound.SC3.Graph.RD_eggcrate,+                   Sound.SC3.Graph.RD_tgrn,+                   Sound.SC3.Graph.RD_seqr,+                   Sound.SC3.Graph.RD_pattern_buffer_m,+                   Sound.SC3.Graph.RD_nharm_p,+                   Sound.SC3.Graph.RD_trmlo,+                   Sound.SC3.Graph.RD_lin_sosc,+                   Sound.SC3.Graph.RD_e_lamell,+                   Sound.SC3.Graph.RD_lso_061101_m,+                   Sound.SC3.Graph.SC_bottle_m,+                   Sound.SC3.Graph.SP_insects_m,+                   Sound.SC3.Graph.TM_drummer++Source-Repository  head+ Type:             darcs+ Location:         http://rd.slavepianos.org/sw/hsc3-graphs/++Executable hsc3-graphs+ hs-source-dirs: hs+ main-is: hsc3-graphs.hs+ build-depends: base,hsc3-graphs++Flag build-exec+ default:          False++-- Auto-generated: Fri Apr 5 14:49:03 EST 2013+Executable hsc3-1-1Ni+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-1Ni.hs+ build-depends: base,hosc,hsc3+Executable hsc3-1-4Q6+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-4Q6.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-1-4QM+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-4QM.hs+ build-depends: base,hosc,hsc3,hsc3-lang,sc3-rdu+Executable hsc3-1-4QN+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-4QN.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-1-4Qx+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-4Qx.hs+ build-depends: hsc3+Executable hsc3-1-Td+ If !flag(build-exec)+  buildable: False+ main-is: gr/1-Td.hs+ build-depends: hosc,hsc3,hsc3-lang,sc3-rdu+Executable hsc3-acid-otophilia+ If !flag(build-exec)+  buildable: False+ main-is: gr/acid-otophilia.hs+ build-depends: base,hosc,hsc3,random+Executable hsc3-adso+ If !flag(build-exec)+  buildable: False+ main-is: gr/adso.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-after-goeyvaerts+ If !flag(build-exec)+  buildable: False+ main-is: gr/after-goeyvaerts.hs+ build-depends: base,containers,hosc,hsc3,hsc3-lang,random,split+Executable hsc3-aleatoric-quartet-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/aleatoric-quartet-m.hs+ build-depends: hsc3+Executable hsc3-alien-froggies+ If !flag(build-exec)+  buildable: False+ main-is: gr/alien-froggies.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-alien-meadow+ If !flag(build-exec)+  buildable: False+ main-is: gr/alien-meadow.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-ambient1+ If !flag(build-exec)+  buildable: False+ main-is: gr/ambient1.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-analog-bubbles+ If !flag(build-exec)+  buildable: False+ main-is: gr/analog-bubbles.hs+ build-depends: hsc3+Executable hsc3-arpeggio+ If !flag(build-exec)+  buildable: False+ main-is: gr/arpeggio.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-babbling-brook-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/babbling-brook-m.hs+ build-depends: hsc3+Executable hsc3-birds-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/birds-hp.hs+ build-depends: hsc3+Executable hsc3-birds-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/birds-m.hs+ build-depends: hsc3+Executable hsc3-bit-reduction+ If !flag(build-exec)+  buildable: False+ main-is: gr/bit-reduction.hs+ build-depends: hsc3+Executable hsc3-bitwise+ If !flag(build-exec)+  buildable: False+ main-is: gr/bitwise.hs+ build-depends: hsc3+Executable hsc3-black-atlantic-currents+ If !flag(build-exec)+  buildable: False+ main-is: gr/black-atlantic-currents.hs+ build-depends: hsc3,primes,random,random-shuffle+Executable hsc3-bohlen-pierce-140+ If !flag(build-exec)+  buildable: False+ main-is: gr/bohlen-pierce-140.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bottle-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/bottle-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bowed-string-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/bowed-string-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-bs-070705-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/bs-070705-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-buffer-display+ If !flag(build-exec)+  buildable: False+ main-is: gr/buffer-display.hs+ build-depends: base,cairo,cmath,hsc3,hsc3-cairo+Executable hsc3-ccomb-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/ccomb-m.hs+ build-depends: hsc3+Executable hsc3-cds-070701-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/cds-070701-m.hs+ build-depends: hosc,hsc3+Executable hsc3-chain-saw-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/chain-saw-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-choip+ If !flag(build-exec)+  buildable: False+ main-is: gr/choip.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-chrd-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/chrd-m.hs+ build-depends: hsc3+Executable hsc3-chrd-t+ If !flag(build-exec)+  buildable: False+ main-is: gr/chrd-t.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-clustered-sines+ If !flag(build-exec)+  buildable: False+ main-is: gr/clustered-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-clustered-sines-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/clustered-sines-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-comb-delay-sweeps+ If !flag(build-exec)+  buildable: False+ main-is: gr/comb-delay-sweeps.hs+ build-depends: hsc3,hsc3-lang,random+Executable hsc3-contamination-zone+ If !flag(build-exec)+  buildable: False+ main-is: gr/contamination-zone.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-coolant+ If !flag(build-exec)+  buildable: False+ main-is: gr/coolant.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cricket-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/cricket-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-crotale+ If !flag(build-exec)+  buildable: False+ main-is: gr/crotale.hs+ build-depends: hsc3+Executable hsc3-crotale-sine+ If !flag(build-exec)+  buildable: False+ main-is: gr/crotale-sine.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cut-outs-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/cut-outs-m.hs+ build-depends: hsc3+Executable hsc3-cymbalism-accelerando+ If !flag(build-exec)+  buildable: False+ main-is: gr/cymbalism-accelerando.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-cymbalism-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/cymbalism-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-dark-sea-horns+ If !flag(build-exec)+  buildable: False+ main-is: gr/dark-sea-horns.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-dark-sea-horns-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/dark-sea-horns-hp.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-data-space+ If !flag(build-exec)+  buildable: False+ main-is: gr/data-space.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-data-space-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/data-space-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-deep-sea+ If !flag(build-exec)+  buildable: False+ main-is: gr/deep-sea.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-deep-trip+ If !flag(build-exec)+  buildable: False+ main-is: gr/deep-trip.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-default+ If !flag(build-exec)+  buildable: False+ main-is: gr/default.hs+ build-depends: data-default,hsc3,hsc3-lang+Executable hsc3-demanding-studies+ If !flag(build-exec)+  buildable: False+ main-is: gr/demanding-studies.hs+ build-depends: hsc3+Executable hsc3-dial-history-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/dial-history-m.hs+ build-depends: base,hsc3+Executable hsc3-diffraction-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/diffraction-m.hs+ build-depends: base,hsc3+Executable hsc3-discretion+ If !flag(build-exec)+  buildable: False+ main-is: gr/discretion.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-discretion-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/discretion-m.hs+ build-depends: hsc3+Executable hsc3-doppler+ If !flag(build-exec)+  buildable: False+ main-is: gr/doppler.hs+ build-depends: hosc,hsc3+Executable hsc3-drummer+ If !flag(build-exec)+  buildable: False+ main-is: gr/drummer.hs+ build-depends: hsc3+Executable hsc3-early-space-music-lp-side-two+ If !flag(build-exec)+  buildable: False+ main-is: gr/early-space-music-lp-side-two.hs+ build-depends: hsc3,hsc3-lang,random,sc3-rdu+Executable hsc3-eggcrate+ If !flag(build-exec)+  buildable: False+ main-is: gr/eggcrate.hs+ build-depends: hsc3+Executable hsc3-eggcrate-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/eggcrate-m.hs+ build-depends: hsc3+Executable hsc3-e-lamell+ If !flag(build-exec)+  buildable: False+ main-is: gr/e-lamell.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-e-lamell-p+ If !flag(build-exec)+  buildable: False+ main-is: gr/e-lamell-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-ellipse-based-synthesis+ If !flag(build-exec)+  buildable: False+ main-is: gr/ellipse-based-synthesis.hs+ build-depends: hsc3+Executable hsc3-f0-2012-04-19+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-2012-04-19.hs+ build-depends: hsc3+Executable hsc3-f0-tw0011+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0011.hs+ build-depends: hsc3+Executable hsc3-f0-tw0014+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0014.hs+ build-depends: hsc3+Executable hsc3-f0-tw0020+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0020.hs+ build-depends: hsc3+Executable hsc3-f0-tw0028+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0028.hs+ build-depends: hsc3+Executable hsc3-f0-tw0030+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0030.hs+ build-depends: hsc3+Executable hsc3-f0-tw0033+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0033.hs+ build-depends: hsc3+Executable hsc3-f0-tw0045+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0045.hs+ build-depends: hsc3+Executable hsc3-f0-tw0049+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0049.hs+ build-depends: base,hsc3+Executable hsc3-f0-tw0051+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0051.hs+ build-depends: hsc3+Executable hsc3-f0-tw0077+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0077.hs+ build-depends: hsc3+Executable hsc3-f0-tw0084+ If !flag(build-exec)+  buildable: False+ main-is: gr/f0-tw0084.hs+ build-depends: hsc3+Executable hsc3-fb-090531+ If !flag(build-exec)+  buildable: False+ main-is: gr/fb-090531.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-fbl-fbf+ If !flag(build-exec)+  buildable: False+ main-is: gr/fbl-fbf.hs+ build-depends: hsc3+Executable hsc3-feedr-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/feedr-m.hs+ build-depends: hosc,hsc3+Executable hsc3-f-lets-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/f-lets-m.hs+ build-depends: hsc3+Executable hsc3-fm-iter+ If !flag(build-exec)+  buildable: False+ main-is: gr/fm-iter.hs+ build-depends: hsc3+Executable hsc3-fm-kltr-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/fm-kltr-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-fm-kltr-p+ If !flag(build-exec)+  buildable: False+ main-is: gr/fm-kltr-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-for-ann+ If !flag(build-exec)+  buildable: False+ main-is: gr/for-ann.hs+ build-depends: hosc,hsc3+Executable hsc3-forest-sounds-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/forest-sounds-m.hs+ build-depends: hsc3+Executable hsc3-fwalk-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/fwalk-m.hs+ build-depends: hosc,hsc3+Executable hsc3-half-life+ If !flag(build-exec)+  buildable: False+ main-is: gr/half-life.hs+ build-depends: hsc3+Executable hsc3-hansm+ If !flag(build-exec)+  buildable: False+ main-is: gr/hansm.hs+ build-depends: hosc,hsc3+Executable hsc3-harmonic-swimming+ If !flag(build-exec)+  buildable: False+ main-is: gr/harmonic-swimming.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-harmonic-swimming-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/harmonic-swimming-m.hs+ build-depends: hsc3+Executable hsc3-harmonic-tumbling-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/harmonic-tumbling-m.hs+ build-depends: hsc3+Executable hsc3-h-chatter-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/h-chatter-m.hs+ build-depends: hsc3+Executable hsc3-hell-is-busy+ If !flag(build-exec)+  buildable: False+ main-is: gr/hell-is-busy.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-hh-808+ If !flag(build-exec)+  buildable: False+ main-is: gr/hh-808.hs+ build-depends: hsc3+Executable hsc3-implosion-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/implosion-m.hs+ build-depends: hsc3+Executable hsc3-insects-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/insects-m.hs+ build-depends: hsc3+Executable hsc3-jl-1-Z+ If !flag(build-exec)+  buildable: False+ main-is: gr/jl-1-Z.hs+ build-depends: hsc3+Executable hsc3-k2ws+ If !flag(build-exec)+  buildable: False+ main-is: gr/k2ws.hs+ build-depends: hsc3+Executable hsc3-k2ws-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/k2ws-hp.hs+ build-depends: hsc3+Executable hsc3-kabelscahden+ If !flag(build-exec)+  buildable: False+ main-is: gr/kabelscahden.hs+ build-depends: hsc3+Executable hsc3-karplus-strong+ If !flag(build-exec)+  buildable: False+ main-is: gr/karplus-strong.hs+ build-depends: hosc,hsc3+Executable hsc3-klink+ If !flag(build-exec)+  buildable: False+ main-is: gr/klink.hs+ build-depends: hsc3+Executable hsc3-k-ppr+ If !flag(build-exec)+  buildable: False+ main-is: gr/k-ppr.hs+ build-depends: hsc3+Executable hsc3-k-ppr-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/k-ppr-m.hs+ build-depends: hsc3+Executable hsc3-laser-bubble+ If !flag(build-exec)+  buildable: False+ main-is: gr/laser-bubble.hs+ build-depends: hsc3+Executable hsc3-lfo-modulation+ If !flag(build-exec)+  buildable: False+ main-is: gr/lfo-modulation.hs+ build-depends: hsc3+Executable hsc3-lf-pulses+ If !flag(build-exec)+  buildable: False+ main-is: gr/lf-pulses.hs+ build-depends: hsc3+Executable hsc3-lg-timed-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/lg-timed-m.hs+ build-depends: hsc3+Executable hsc3-lin-sosc+ If !flag(build-exec)+  buildable: False+ main-is: gr/lin-sosc.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-lso-061101-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/lso-061101-m.hs+ build-depends: base,directory,filepath,hls,hps,hsc3,hsc3-lang,hsc3-sf+Executable hsc3-lucier+ If !flag(build-exec)+  buildable: False+ main-is: gr/lucier.hs+ build-depends: hsc3+Executable hsc3-m21360+ If !flag(build-exec)+  buildable: False+ main-is: gr/m21360.hs+ build-depends: hosc,hsc3+Executable hsc3-microhelix+ If !flag(build-exec)+  buildable: False+ main-is: gr/microhelix.hs+ build-depends: hsc3+Executable hsc3-modal-space+ If !flag(build-exec)+  buildable: False+ main-is: gr/modal-space.hs+ build-depends: hosc,hsc3+Executable hsc3-moto-rev+ If !flag(build-exec)+  buildable: False+ main-is: gr/moto-rev.hs+ build-depends: hsc3+Executable hsc3-mouse-clatter-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/mouse-clatter-m.hs+ build-depends: hosc,hsc3+Executable hsc3-mridangam+ If !flag(build-exec)+  buildable: False+ main-is: gr/mridangam.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-music-box+ If !flag(build-exec)+  buildable: False+ main-is: gr/music-box.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-nharm-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/nharm-m.hs+ build-depends: base,hosc,hsc3,hsc3-lang+Executable hsc3-nharm-p+ If !flag(build-exec)+  buildable: False+ main-is: gr/nharm-p.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-noise-burst-sweep+ If !flag(build-exec)+  buildable: False+ main-is: gr/noise-burst-sweep.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-noise-modulated-sines+ If !flag(build-exec)+  buildable: False+ main-is: gr/noise-modulated-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-nokia+ If !flag(build-exec)+  buildable: False+ main-is: gr/nokia.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-non-real-time+ If !flag(build-exec)+  buildable: False+ main-is: gr/non-real-time.hs+ build-depends: hosc,hsc3,process+Executable hsc3-nv-tw-1+ If !flag(build-exec)+  buildable: False+ main-is: gr/nv-tw-1.hs+ build-depends: hsc3+Executable hsc3-nv-tw-41+ If !flag(build-exec)+  buildable: False+ main-is: gr/nv-tw-41.hs+ build-depends: hsc3+Executable hsc3-nv-tw-54+ If !flag(build-exec)+  buildable: False+ main-is: gr/nv-tw-54.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-nx102+ If !flag(build-exec)+  buildable: False+ main-is: gr/nx102.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-one-line+ If !flag(build-exec)+  buildable: False+ main-is: gr/one-line.hs+ build-depends: hsc3+Executable hsc3-oscillator-cluster-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/oscillator-cluster-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-overlap-add+ If !flag(build-exec)+  buildable: False+ main-is: gr/overlap-add.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pattern-buffer-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/pattern-buffer-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-pebble-beach+ If !flag(build-exec)+  buildable: False+ main-is: gr/pebble-beach.hs+ build-depends: hsc3+Executable hsc3-pkt-26+ If !flag(build-exec)+  buildable: False+ main-is: gr/pkt-26.hs+ build-depends: hsc3+Executable hsc3-pkt-28+ If !flag(build-exec)+  buildable: False+ main-is: gr/pkt-28.hs+ build-depends: hsc3+Executable hsc3-plucked-strings-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/plucked-strings-m.hs+ build-depends: hsc3+Executable hsc3-police-state+ If !flag(build-exec)+  buildable: False+ main-is: gr/police-state.hs+ build-depends: hsc3+Executable hsc3-police-state-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/police-state-m.hs+ build-depends: hsc3+Executable hsc3-pond-life+ If !flag(build-exec)+  buildable: False+ main-is: gr/pond-life.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pond-life-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/pond-life-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-proxy-mixer+ If !flag(build-exec)+  buildable: False+ main-is: gr/proxy-mixer.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-proxy-mixer-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/proxy-mixer-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-pulsing-bottles+ If !flag(build-exec)+  buildable: False+ main-is: gr/pulsing-bottles.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-pulsing-bottles-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/pulsing-bottles-m.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-pwm-crossfade+ If !flag(build-exec)+  buildable: False+ main-is: gr/pwm-crossfade.hs+ build-depends: hsc3+Executable hsc3-rails+ If !flag(build-exec)+  buildable: False+ main-is: gr/rails.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-rain-thunder+ If !flag(build-exec)+  buildable: False+ main-is: gr/rain-thunder.hs+ build-depends: hsc3+Executable hsc3-random-panning-sines+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-panning-sines.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-panning-sines-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-panning-sines-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-pulsations+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-pulsations.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-sine-waves.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-sine-waves-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-random-sine-waves-she+ If !flag(build-exec)+  buildable: False+ main-is: gr/random-sine-waves-she.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-record-scratcher+ If !flag(build-exec)+  buildable: False+ main-is: gr/record-scratcher.hs+ build-depends: hosc,hsc3+Executable hsc3-red-frik-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/red-frik-m.hs+ build-depends: hsc3+Executable hsc3-reset+ If !flag(build-exec)+  buildable: False+ main-is: gr/reset.hs+ build-depends: hsc3+Executable hsc3-resonant-dust+ If !flag(build-exec)+  buildable: False+ main-is: gr/resonant-dust.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-resonant-dust-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/resonant-dust-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-reverberated-sine-percussion-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/reverberated-sine-percussion-hp.hs+ build-depends: hsc3+Executable hsc3-reverberated-sine-percussion-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/reverberated-sine-percussion-m.hs+ build-depends: hsc3+Executable hsc3-ring-modulated-klank+ If !flag(build-exec)+  buildable: False+ main-is: gr/ring-modulated-klank.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-rm-octaver+ If !flag(build-exec)+  buildable: False+ main-is: gr/rm-octaver.hs+ build-depends: hsc3+Executable hsc3-rzblp+ If !flag(build-exec)+  buildable: False+ main-is: gr/rzblp.hs+ build-depends: hsc3+Executable hsc3-rzblp-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/rzblp-hp.hs+ build-depends: hsc3+Executable hsc3-rzblp-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/rzblp-m.hs+ build-depends: hsc3+Executable hsc3-rzblp-u+ If !flag(build-exec)+  buildable: False+ main-is: gr/rzblp-u.hs+ build-depends: hsc3,hsc3-unsafe+Executable hsc3-sam-i-am+ If !flag(build-exec)+  buildable: False+ main-is: gr/sam-i-am.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-sample-and-hold-liquidities+ If !flag(build-exec)+  buildable: False+ main-is: gr/sample-and-hold-liquidities.hs+ build-depends: hsc3+Executable hsc3-saucer-base+ If !flag(build-exec)+  buildable: False+ main-is: gr/saucer-base.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sawed-cymbals+ If !flag(build-exec)+  buildable: False+ main-is: gr/sawed-cymbals.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-s-chirp+ If !flag(build-exec)+  buildable: False+ main-is: gr/s-chirp.hs+ build-depends: hosc,hsc3+Executable hsc3-scratchy+ If !flag(build-exec)+  buildable: False+ main-is: gr/scratchy.hs+ build-depends: hsc3+Executable hsc3-scratchy-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/scratchy-m.hs+ build-depends: hsc3+Executable hsc3-scritto+ If !flag(build-exec)+  buildable: False+ main-is: gr/scritto.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-scritto-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/scritto-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-seqr+ If !flag(build-exec)+  buildable: False+ main-is: gr/seqr.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-shepard-tones+ If !flag(build-exec)+  buildable: False+ main-is: gr/shepard-tones.hs+ build-depends: hosc,hsc3+Executable hsc3-shifting-pulses-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/shifting-pulses-m.hs+ build-depends: hsc3+Executable hsc3-sidereal-time+ If !flag(build-exec)+  buildable: False+ main-is: gr/sidereal-time.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sidereal-time-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/sidereal-time-hp.hs+ build-depends: base,hsc3,hsc3-lang+Executable hsc3-sinusdeklinationen+ If !flag(build-exec)+  buildable: False+ main-is: gr/sinusdeklinationen.hs+ build-depends: hsc3,hsc3-lang,split+Executable hsc3-slow-beating-harmonic-sines+ If !flag(build-exec)+  buildable: False+ main-is: gr/slow-beating-harmonic-sines.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-slow-beating-sines+ If !flag(build-exec)+  buildable: False+ main-is: gr/slow-beating-sines.hs+ build-depends: base,hsc3,hsc3-lang,MonadRandom+Executable hsc3-snare-909+ If !flag(build-exec)+  buildable: False+ main-is: gr/snare-909.hs+ build-depends: hsc3+Executable hsc3-sosc-lp-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/sosc-lp-m.hs+ build-depends: hosc,hsc3+Executable hsc3-spe-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/spe-m.hs+ build-depends: hsc3+Executable hsc3-spe-p+ If !flag(build-exec)+  buildable: False+ main-is: gr/spe-p.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-sprinkler+ If !flag(build-exec)+  buildable: False+ main-is: gr/sprinkler.hs+ build-depends: hsc3+Executable hsc3-sprinkler-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/sprinkler-m.hs+ build-depends: hsc3+Executable hsc3-string-wander-cluster+ If !flag(build-exec)+  buildable: False+ main-is: gr/string-wander-cluster.hs+ build-depends: hsc3,hsc3-lang,random+Executable hsc3-strummable-guitar+ If !flag(build-exec)+  buildable: False+ main-is: gr/strummable-guitar.hs+ build-depends: hsc3+Executable hsc3-sweepy-noise+ If !flag(build-exec)+  buildable: False+ main-is: gr/sweepy-noise.hs+ build-depends: hsc3+Executable hsc3-synthetic-piano-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/synthetic-piano-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-tank+ If !flag(build-exec)+  buildable: False+ main-is: gr/tank.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-tank-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/tank-hp.hs+ build-depends: hsc3+Executable hsc3-tank-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/tank-m.hs+ build-depends: hsc3+Executable hsc3-tgb-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/tgb-m.hs+ build-depends: hosc,hsc3+Executable hsc3-tgrn+ If !flag(build-exec)+  buildable: False+ main-is: gr/tgrn.hs+ build-depends: hosc,hsc3+Executable hsc3-tgr-rpr-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/tgr-rpr-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-thb+ If !flag(build-exec)+  buildable: False+ main-is: gr/thb.hs+ build-depends: hmt,hosc,hsc3,hsc3-lang+Executable hsc3-theremin+ If !flag(build-exec)+  buildable: False+ main-is: gr/theremin.hs+ build-depends: hsc3+Executable hsc3-three-cpsw-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/three-cpsw-m.hs+ build-depends: hsc3+Executable hsc3-thx+ If !flag(build-exec)+  buildable: False+ main-is: gr/thx.hs+ build-depends: hsc3,random+Executable hsc3-tipnso+ If !flag(build-exec)+  buildable: False+ main-is: gr/tipnso.hs+ build-depends: hsc3+Executable hsc3-train+ If !flag(build-exec)+  buildable: False+ main-is: gr/train.hs+ build-depends: hsc3+Executable hsc3-tremulate+ If !flag(build-exec)+  buildable: False+ main-is: gr/tremulate.hs+ build-depends: hsc3,hsc3-lang,sc3-rdu+Executable hsc3-tremulate-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/tremulate-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-tremulate-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/tremulate-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trkl-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/trkl-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trmlo+ If !flag(build-exec)+  buildable: False+ main-is: gr/trmlo.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-trmlo-u+ If !flag(build-exec)+  buildable: False+ main-is: gr/trmlo-u.hs+ build-depends: hsc3,hsc3-lang,hsc3-unsafe+Executable hsc3-tr-out-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/tr-out-m.hs+ build-depends: hosc,hsc3+Executable hsc3-tsort+ If !flag(build-exec)+  buildable: False+ main-is: gr/tsort.hs+ build-depends: hsc3+Executable hsc3-uplink+ If !flag(build-exec)+  buildable: False+ main-is: gr/uplink.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-uplink-hp+ If !flag(build-exec)+  buildable: False+ main-is: gr/uplink-hp.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-urandom+ If !flag(build-exec)+  buildable: False+ main-is: gr/urandom.hs+ build-depends: base,bytestring,hosc,hsc3,hsc3-lang+Executable hsc3-vla-addtn+ If !flag(build-exec)+  buildable: False+ main-is: gr/vla-addtn.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-vla-addtn-sharc+ If !flag(build-exec)+  buildable: False+ main-is: gr/vla-addtn-sharc.hs+ build-depends: base,hosc,hsc3,hsc3-lang,hsharc+Executable hsc3-vlc-distrtn-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/vlc-distrtn-m.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-voscil+ If !flag(build-exec)+  buildable: False+ main-is: gr/voscil.hs+ build-depends: hosc,hsc3,hsc3-lang+Executable hsc3-voscil-u+ If !flag(build-exec)+  buildable: False+ main-is: gr/voscil-u.hs+ build-depends: hosc,hsc3,hsc3-lang,hsc3-unsafe+Executable hsc3-waveset+ If !flag(build-exec)+  buildable: False+ main-is: gr/waveset.hs+ build-depends: array,base,hosc,hsc3,hsc3-sf,random+Executable hsc3-what-was-i-thinking-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/what-was-i-thinking-m.hs+ build-depends: hsc3+Executable hsc3-why-supercollider+ If !flag(build-exec)+  buildable: False+ main-is: gr/why-supercollider.hs+ build-depends: hsc3,sc3-rdu+Executable hsc3-wial-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/wial-m.hs+ build-depends: hsc3+Executable hsc3-wind-metals-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/wind-metals-m.hs+ build-depends: hsc3,hsc3-lang+Executable hsc3-xy-interference+ If !flag(build-exec)+  buildable: False+ main-is: gr/xy-interference.hs+ build-depends: hsc3+Executable hsc3-xy-interference-m+ If !flag(build-exec)+  buildable: False+ main-is: gr/xy-interference-m.hs+ build-depends: hsc3
+ sh/mk-dependencies.sh view
@@ -0,0 +1,5 @@+#!/bin/bash++o="Makefile.graphs"+echo -n "GRAPHS=" > $o+ls *.hs | sed -r -e 's/(.*)\.hs/ \1\\/g' >> $o
+ sh/mk-html.sh view
@@ -0,0 +1,5 @@+#!/bin/bash+for i in *.hs+do+    HsColour -css $i -o../html/$i.html+done
+ sh/mk-packages.sh view
@@ -0,0 +1,32 @@+#!/bin/bash++function mk_packages+{+    i=$1.hs+    o=$1.packages+    grep '{- .* -}' $i | \+        sed -e 's/.*{- //g' | \+        sed -e 's/ -}//g' | \+        sort -u | \+        xargs echo | \+        sed -e 's/ /,/g' > $o+}++function mk_cabal+{+    o=$1.cabal+    read < $1.packages p+    echo "Executable hsc3-"$1 > $o+    echo " If !flag(build-exec)" >> $o+    echo "  buildable: False" >> $o+    echo " main-is: gr/"$1".hs" >> $o+    echo " build-depends: "$p >> $o+}++for i in *.hs ; do mk_packages $(basename $i .hs) ; done+for i in *.hs ; do mk_cabal $(basename $i .hs) ; done++c="../hsc3-graphs.cabal"+d=$(date)+echo "-- Auto-generated: "$d >> $c+cat *.cabal >> $c
+ sh/mk-pdf.sh view
@@ -0,0 +1,5 @@+#!/bin/bash+for i in *.dot.gz+do+    zcat $i | dot -Tpdf -o ../pdf/$(basename $i .dot.gz).pdf+done
+ sh/mk-svg.sh view
@@ -0,0 +1,17 @@+#!/bin/bash+if [ -d dot ]+then+    for i in dot/*.dot+    do+        dot $i -Tsvg -o svg/$(basename $i .dot).svg+    done+fi++if [ -d dot.gz ]+then+    for i in dot.gz/*.dot.gz+    do+        zcat $i | dot -Tsvg -o svg/$(basename $i .dot.gz).svg+    done+fi+
+ sh/statistics.sh view
@@ -0,0 +1,8 @@+grep \(adc\) */*.hs+grep \(am\) */*.hs+grep \(f0\) */*.hs | wc -l+grep \(jl\) */*.hs+grep \(jmcc\) */*.hs | wc -l+grep \(jrhb\) */*.hs+grep \(nc\) */*.hs+grep \(nv\) */*.hs