packages feed

hsc3-graphs 0.11 → 0.12

raw patch · 549 files changed

+9896/−7988 lines, 549 filesdep +bytestringdep +cairodep +cmathdep ~basedep ~hoscdep ~hsc3new-component:exe:hsc3-1-1Ninew-component:exe:hsc3-1-4Q6new-component:exe:hsc3-1-4QMnew-component:exe:hsc3-1-4QNnew-component:exe:hsc3-1-4Qxnew-component:exe:hsc3-1-Tdnew-component:exe:hsc3-aleatoric-quartet-mnew-component:exe:hsc3-babbling-brook-mnew-component:exe:hsc3-birds-mnew-component:exe:hsc3-bitwisenew-component:exe:hsc3-bottle-mnew-component:exe:hsc3-bowed-string-mnew-component:exe:hsc3-buffer-displaynew-component:exe:hsc3-cricket-mnew-component:exe:hsc3-cymbalism-mnew-component:exe:hsc3-f0-2012-04-19new-component:exe:hsc3-f0-tw0011new-component:exe:hsc3-f0-tw0014new-component:exe:hsc3-f0-tw0020new-component:exe:hsc3-f0-tw0028new-component:exe:hsc3-f0-tw0030new-component:exe:hsc3-f0-tw0033new-component:exe:hsc3-f0-tw0045new-component:exe:hsc3-f0-tw0049new-component:exe:hsc3-f0-tw0051new-component:exe:hsc3-f0-tw0077new-component:exe:hsc3-f0-tw0084new-component:exe:hsc3-feedrnew-component:exe:hsc3-for-annnew-component:exe:hsc3-k2wsnew-component:exe:hsc3-laser-bubblenew-component:exe:hsc3-m21360new-component:exe:hsc3-mouse-clatter-mnew-component:exe:hsc3-music-boxnew-component:exe:hsc3-nokianew-component:exe:hsc3-nx102new-component:exe:hsc3-pkt-26new-component:exe:hsc3-pkt-28new-component:exe:hsc3-pond-lifenew-component:exe:hsc3-proxy-mixernew-component:exe:hsc3-proxy-mixer-mnew-component:exe:hsc3-pwm-crossfadenew-component:exe:hsc3-rm-octavernew-component:exe:hsc3-rzblp-unew-component:exe:hsc3-sinusdeklinationennew-component:exe:hsc3-sosc-lpnew-component:exe:hsc3-synthetic-piano-mnew-component:exe:hsc3-thbnew-component:exe:hsc3-trklnew-component:exe:hsc3-urandomnew-component:exe:hsc3-vlc-distrtnnew-component:exe:hsc3-wind-metals-m

Dependencies added: bytestring, cairo, cmath, hcg-minus, hmt, hsc3-cairo, sc3-rdu

Dependency ranges changed: base, hosc, hsc3, hsc3-lang, hsc3-sf, hsc3-unsafe, hsharc

Files

README view
@@ -1,11 +1,43 @@-hsc3-graphs - haskell supercollider graphs+hsc3-graphs+----------- -hsc3-graphs provides a collection of illustrative-unit generator graphs for hsc3.+[haskell][hs] [supercollider][sc3] ([hsc3][hsc3]) graphs -  http://slavepianos.org/rd/?t=hsc3-graphs-  http://haskell.org/-  http://audiosynth.com/+[hsc3-graphs][gr] is a [collection][gr-ix] of illustrative unit+generator graphs for hsc3. -(c) rohan drape and others, 2006-2011-    gpl, http://gnu.org/copyleft/+Graphs credits are on the first line of each file, and are courtesy:++- James McCartney ([jmcc][sc3], 70)+- Rohan Drape ([rd][rd], 61)+- Fredrik Olofsson ([f0][f0], 19)+- Julian Rohrhuber ([jrhb][jrhb], 7)+- Jonatan Liljedahl ([jl][jl], 5)+- Alberto De Campo ([adc][adc], 3)+- Nick Collins ([nc][nc], 3)+- Nathaniel Virgo ([nv][nv], 3)+- Alex McLean ([am][am], 1)++In most cases the `sclang` variants have been re-written prior to+transliteration to haskell.++There is a `Makefile` at `gr`, type `make dep; make all`.++[hs]: http://haskell.org/+[sc3]: http://audiosynth.com/+[hsc3]: http://rd.slavepianos.org/?t=hsc3+[gr]: http://rd.slavepianos.org/?t=hsc3-graphs+[gr-ix]: ?t=hsc3-graphs&m=md/ix.md++[adc]: http://medienhaus.udk-berlin.de/pages/Dr._Alberto_De_Campo+[am]: http://yaxu.org/+[f0]: http://fredrikolofsson.com/+[jl]: http://kymatica.com/+[jrhb]: http://musikundmedien.net/index.php?id=454&L=1+[nc]: http://www.sussex.ac.uk/Users/nc81/+[nv]: http://nathanielvirgo.com/++© [rohan drape][rd] and others, 2006-2012, [gpl]++[rd]: http://rd.slavepianos.org/+[gpl]: http://gnu.org/copyleft/
+ gr/1-1Ni.hs view
@@ -0,0 +1,47 @@+-- http://sccode.org/1-1Ni++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++scr :: (UGen -> (UGen,UGen)) -> Int -> UGen -> UGen -> UGen+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'..]))+        e = lfGauss AR d (1/4) 0 NoLoop RemoveSynth+    in splay (m * e) 1 0.1 0 True++-- > audition (b 12)+-- > Sound.SC3.UGen.Dot.draw (b 8)+b :: Int -> Synthdef+b np =+    let f = midiCPS (lchoose 'a' [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))+        h n = (n - (n / 128),n + (n / 128))+    in synthdef "c" (out 0 (scr h np f 6))++-- > withSC3 (\fd -> send fd (c_setn [(0,x!!0)]))+x :: Num a => [[a]]+x = [[72,69,64],[70,64,62],[67,60,70],[65,60,69],[64,60,67],[65,60,69]]++-- > t <- begin 7+-- > mapM_ killThread t+begin :: Int -> IO [ThreadId]+begin n = do+  t0 <- forkIO (forever (audition (b n) >> pauseThread 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))+  return [t0,t1,t2]++main :: IO ()+main = begin 8 >> return ()
+ gr/1-4Q6.hs view
@@ -0,0 +1,47 @@+-- 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++-- > audition risset+-- > Sound.SC3.UGen.Dot.draw 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+        freq = k "freq" 400+        ampl = k "amp" 0.1+        dur = 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 (dur * 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+        src = mixFill 11 fn+    in synthdef "risset" (out 0 (pan2 src pan 1))++pattern :: P Event+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)]++main :: IO ()+main = audition pattern
+ gr/1-4Q6.scd view
@@ -0,0 +1,22 @@+// http://sccode.org/1-4Q6 (f0)++SynthDef(\risset,+{arg out = 0,pan = 0,freq = 400,amp = 0.1,dur = 2,t_trig = 1+;var amps = #[1,0.67,1,1.8,2.67,1.67,1.46,1.33,1.33,1,1.33]+;var durs = #[1,0.9,0.65,0.55,0.325,0.35,0.25,0.2,0.15,0.1,0.075]+;var frqs = #[0.56,0.56,0.92,0.92,1.19,1.7,2,2.74,3,3.76,4.07]+;var dets = #[0,1,0,1.7,0,0,0,0,0,0,0]+;var fn =+ {arg i+ ;var env = EnvGen.ar(Env.perc(0.005,dur*durs[i],amps[i],-4.5),t_trig)+ ;SinOsc.ar(freq*frqs[i]+dets[i],0,amp*env)}+;var src = Mix.fill(11,fn)+;Out.ar(out,Pan2.ar(src,pan));+}).add;++a = Synth(\risset,[\freq,72.midicps,\dur,4])+a.set(\t_trig,1)+a.set(\freq,100.midicps,\dur,3,\t_trig,1)+a.set(\freq,60.midicps,\dur,9,\t_trig,1)+a.set(\freq,90.midicps,\dur,16.5,\t_trig,1)+a.free
+ gr/1-4QM.hs view
@@ -0,0 +1,56 @@+-- http://sccode.org/1-4QM++import Control.Monad {- base -}+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 -}++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])+        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)+    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)+            in (duty KR d 0 DoNothing l)+        p = envPerc 0.01 k+    in envGen AR g 1 0 1 RemoveSynth p++n2 :: UGen -> UGen+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)++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'))++c1_4QM :: Transport m => ST -> m ()+c1_4QM st = do+  dt <- L.choose [0.125,0.25,0.5,0.5,0.25,0.125,1]+  let a = constant dt+  play (n1 st a)+  play (n2 a)+  play (n3 a)+  liftIO (pauseThread dt)++main :: IO ()+main = do+  let s1 = [8,12,16,20]+  s2 <- L.scramble s1+  s3 <- L.scramble s1+  withSC3 (forever (c1_4QM (mce s1,2 / mce s2,2 * mce s3)))
+ gr/1-4QM.scd view
@@ -0,0 +1,25 @@+// http://sccode.org/1-4QM++{var s1 = [8,12,16,20]+;var s2 = 2 / s1.scramble+;var s3 = 2 * s1.scramble+;var rel = Pxrand([0,0,0,0,0,0,0,1],inf).asStream+;Routine+ {inf.do+  {var a = [0.125,0.25,0.5,0.5,0.25,0.125,1].choose+  ;play{var p = Env.perc(0.01,a + rel.next)+       ;var e = EnvGen.ar(p,doneAction:2)+       ;var x = [60,67,75,79,94].scramble+	   ;var ta = x.midicps * a * s1.choose+       ;var tb = x * s2.choose.midicps+       ;var tc = a * s3.choose.midicps+       ;e * AY.ar(ta,tb,tc,0.25,3,15,10,7)}+  ;play{var p = Env.perc(0.01,a/2)+       ;var g = Duty.kr(Dseq([0.5,0.25],inf),0,Dxrand([0,1],inf))+       ;var e = EnvGen.ar(p,g,doneAction:2)+       ;e * BrownNoise.ar(0.6) ! 2}+  ;play{var p = Env.perc(0.01,a/4)+       ;var g = Duty.kr(Dseq([0.25,0.5],inf),0,Dseq([0,1],inf))+       ;var e = EnvGen.ar(p,g,doneAction:2)+       ;e * LFNoise0.kr(16) * WhiteNoise.ar(0.2) ! 2}+  ;a.wait}}}.value.play
+ gr/1-4QN.hs view
@@ -0,0 +1,67 @@+-- http://sccode.org/1-4QN++import Control.Concurrent {- base -}+import Control.Monad+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID+import qualified Sound.SC3.Lang.Random.IO as L++-- > withSC3 init_b+init_b :: Transport m => m Message+init_b = do+  _ <- 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'))+mk_g :: (Rate -> UGen -> UGen) -> Synthdef+mk_g o =+    let k = control KR+        b = k "bufnum" 0+        d = k "dur" 1+        r = k "rate" 1+        p = k "pos" 0+        sd = k "sdens" 1+        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 = 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)]++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)]++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 <- L.choose o_set+  async (d_recv (mk_g o))++update_g :: Transport m => m ()+update_g = do+  _ <- push_g+  dt <- L.choose [1,2,4,8,16,32]+  pauseThread dt++main :: IO ()+main = do+  _ <- forkIO (withSC3 (reset >> init_b >> forever update_g))+  audition ("g",ppar [p1,p2])
+ gr/1-4QN.scd view
@@ -0,0 +1,39 @@+// http://sccode.org/1-4QN++z = Buffer.alloc(s, 512, 1);+z.sine1(1.0 / [1, 2, 3, 4], true, true, true);++g =+ {arg o+ ;SynthDef("g1",+  {arg out=0,bufnum=0,dur=1,rate=1,pos=0,sdens=1,edens=1+  ;var dens = Line.kr(sdens,edens,dur)+  ;var t = o.ar(dens)+  ;var p = Env.perc(0.0001.rrand(0.1),dur * (0.5.rrand(4)))+  ;var env = EnvGen.kr(p,doneAction:2)+  ;var g = GrainBuf.ar(2,t,1 / dens,bufnum,rate,pos)+  ;Out.ar(out,g * env)}).add()};++b = Pbind(+	\instrument,\g1,+	\dur,Pseq([4],inf),+	\sdens,Pseq([9000,1000,500]/100,inf),+	\edens,Prand([Pseq([9000,1000,500]/10,1),Pseq([1],3)],inf),+	\rate,Pfunc({-10.0.rrand(10)}),+	\pos,Pfunc({-10.0.rrand(10)}),+	\bufnum,z.bufnum);++c = Pbind(+	\instrument,\g1,+	\dur,Pseq([4/3],inf),+	\sdens,Pseq([9000,1000,500,25],inf),+	\edens,Prand([Pseq([9000,1000,500,25],1),Pseq([1],4)],inf),+	\rate,Pfunc({-100.0.rrand(100)}),+	\pos,Pfunc({-10.0.rrand(10)}),+	\bufnum,z.bufnum);++fork({loop+ {var o = [LFNoise0,SinOsc,Impulse,LFPulse,LFSaw].choose+ ;g.value(o);[1,2,4,8,16,32].choose.postln.wait}});++[b,c].do({|p| p.play});
+ gr/1-4Qx.hs view
@@ -0,0 +1,14 @@+-- http://sccode.org/1-4Qx+import Sound.SC3 {- hsc3 -}++-- > Sound.SC3.UGen.Dot.draw tw+tw :: UGen+tw =+    let l = lfCub+        f = l KR 9.1 0 * 100 + mce [200,300..500]+        g = l KR 9 0 + (l KR (1 / mce [2,3,5,7]) 0 * 0.5)+        h = l KR (1/2) 0 * 0.4 + 0.5+    in splay (l AR f 0 * (lag (g >* h) 0.1 / 2)) 1 1 0 True++main :: IO ()+main = audition (out 0 tw)
+ gr/1-4Qx.scd view
@@ -0,0 +1,6 @@+// http://sccode.org/1-4Qx+{var l = LFCub+;var f = l.kr(9.1,0,100,(200,300..500))+;var g = l.kr(9,0,1,l.kr(1/[2,3,5,7],0,0.5,0))+;var h = l.kr(1/2,0,0.4,0.5)+;Splay.ar(l.ar(f,0,(g>h).lag/2))}.play
+ gr/1-Td.hs view
@@ -0,0 +1,66 @@+-- http://sccode.org/1-Td++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 -}++-- > 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+        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)+            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+            in lfPulse AR fr 0 0.5 * 0.003+        amp = let n = dxrand 'a' 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))+              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+                  l = klankSpec_mce fr ph am+              in klank (lchoose 'g' [a,b,c,d,e,g]) 1 0 1 l+        sig = pan2 klk loc amp+    in out 0 sig++one_td_s :: Synthdef+one_td_s = synthdef "one_td" one_td_u++postprocess_u :: UGen+postprocess_u =+    let z = freeVerb (in' 2 AR 0) (rand 'a' 0.33 1) 0.5 0.5+    in replaceOut 0 (limiter z 1 1e-2)++postprocess_s :: Synthdef+postprocess_s = synthdef "postprocess" postprocess_u++run :: Transport m => [Double] -> m ()+run n = do+  _ <- async (d_recv postprocess_s)+  _ <- async (d_recv one_td_s)+  send (s_new "postprocess" (-1) AddToTail 2 [])+  mapM_ (\i -> send (s_new "one_td" (-1) AddToHead 1 [("base",i)])) n++main :: IO ()+main = withSC3 (run (replicate 8 2.6))
+ gr/1-Td.scd view
@@ -0,0 +1,37 @@+// http://sccode.org/1-Td++(var base = 2.6+;thisThread.randSeed = 1000000.rand.postln /* ie. 296692,158432,943449 */+;f =+ {arg out = 0+ ;var z1 = Array.geom(5,2,2)+ ;var z2 = Array.geom(4,base/2,2)+ ;var z3 = Array.geom(5,base / 4,2)+ ;var z4 = Array.geom(5,1/8,2)+ ;var z5 = (4,6..24)+ ;var l = `[Array.rand(30,50,10000)+           ,Array.rand(30,0,1.0)+           ,Array.rand(30,0,1.0)]+ ;var x = MouseX.kr(0,z1.choose)+ ;var y = MouseY.kr(0,z1.choose)+ ;var a_ = LFDNoise3.kr(base / 4).range(20,10000)+ ;var a = LFBrownNoise2.ar(a_,0.005)+ ;var b = GbmanL.ar(x,3.0.rand2,3.0.rand2) / 3+ ;var c_ = GbmanL.ar(y,3.0.rand2,3.0.rand2)+ ;var c = Impulse.ar(A2K.kr(c_) * base / 4) / 4+ ;var d = Dust.ar(z2.choose) / 4+ ;var e = Impulse.ar(z2.choose) / 4+ ;var g_ = LFDNoise3.kr(base).range(62.rrand(100),110.rrand(350))+ ;var g = LFPulse.ar(g_,mul: 0.003)+ ;var h_ = Dxrand(z3)+ ;var h = Demand.kr(Impulse.kr(base / 16),0,h_)+ ;var i_ = GbmanL.ar(z4.choose,3.0.rand2,3.0.rand2)+ ;var i = A2K.kr(i_)+ ;var amp = SinOsc.kr(h,mul:0.1 * i,add:0.1)+ ;var loc = LFTri.kr(base / z5.choose,mul: 0.7.rrand(0.2),add: 0.3.rand)+ ;var k = Klank.ar(l,[a,b,c,d,e,g].choose)+ ;var sig = Pan2.ar(k,loc,amp)+ ;Out.ar(out,sig)}+;{var z =FreeVerb.ar(In.ar(0,2),1.0.rrand(0.33))+ ;ReplaceOut.ar(0,Limiter.ar(z))}.play(addAction:\addToTail)+;{f.play(args:[out:0])} ! 4.rrand(8))
+ gr/acid-otophilia.hs view
@@ -0,0 +1,235 @@+-- 08091500Acid309 by_otophilia++import Data.List+import Data.Maybe+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import System.Random {- random -}++-- * Instruments++mk_ec :: [UGen] -> [EnvCurve]+mk_ec = map EnvNum++mk_env :: [UGen] -> [UGen] -> [UGen] -> Envelope UGen+mk_env l t c = Envelope l t (mk_ec c) Nothing Nothing++kick :: Synthdef+kick =+    let bus = control KR "outBus" 0+        env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.06,0.26] [-4,-2,-4]+               in envGen AR 1 1 0 1 RemoveSynth d+        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)+                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)++snare :: Synthdef+snare =+    let bus = control KR "outBus" 0+        amp = control KR "amp" 0.8+        env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.03,0.10] [-4,-2,-4]+               in envGen AR 1 1 0 1 DoNothing d+        env1 = let d = mk_env [110,60,49] [0.005,0.1] [-4,-5]+               in midiCPS (envGen AR 1 1 0 1 DoNothing d)+        env2 = let d = mk_env [1,0.4,0] [0.05,0.13] [-2,-2]+               in envGen AR 1 1 0 1 RemoveSynth d+        oscs = let p = lfPulse AR env1 0 0.5 - 0.5+                   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+                    q = hpf p 200 * 2+                    r = bpf q 6900 0.6 * 3 + p+                in r * env2+        s = clip2 (oscs + noise) 1 * amp+    in synthdef "snare" (out bus s)++clap :: Synthdef+clap =+    let bus = control KR "outBus" 0+        amp = control KR "amp" 0.5+        env1 = let d = mk_env [0,1,0,1,0,1,0,1,0]+                              [0.001,0.013,0,0.01,0,0.01,0,0.03]+                              [0,-3,0,-3,0,-3,0,-4]+               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+                     q = hpf p 600+                 in bpf q 2000 3+        noise2 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env2+                     q = hpf p 1000+                 in bpf q 1200 0.7 * 0.7+        s = let p = noise1 + noise2+            in softClip (p * 2) * amp+    in synthdef "clap" (out bus s)++hat :: Synthdef+hat =+    let bus = control KR "outBus" 0+        amp = control KR "amp" 0.3+        env1 = let d = mk_env [0,1.0,0] [0.001,0.2] [0,-12]+               in envGen AR 1 1 0 1 DoNothing d+        env2 = let d = mk_env [0,1.0,0.05,0] [0.002,0.05,0.03] [0,-4,-4]+               in envGen AR 1 1 0 1 RemoveSynth d+        (r0:r1:r2:_) = randomRs (-4.0,4.0) (mkStdGen 5)+        oscs1 = let n1 = 5+                    f i = let f0 = midiCPS (linLin i 0 (n1-1) 42 75 + r0)+                              f1 = midiCPS (linLin i 0 (n1-1) 78 80 + r1)+                          in sinOsc AR f0 (sinOsc AR f1 0 * 12) * (1/n1)+                    p = sum (map f [0..n1-1])+                in bHiPass p 1000 2 * env1+        noise = let n2 = 8+                    p = whiteNoise 'a' 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+                    r = bpf q 6000 0.9 * 0.5 + q+                in bHiPass (bLowShelf r 3000 0.5 (-6)) 1000 1.5 * env2+        s = softClip (noise + oscs1) * amp+    in synthdef "hat" (out bus s)++acid :: Synthdef+acid =+    let bus = control KR "outBus" 0+        gate' = control KR "gate" 1+        pitch' = control KR "pitch" 50+        amp = control KR "amp" 0.3+        pitch'' = lag pitch' 0.12 * (1 - trig gate' 0.001) * gate'+        env1 = let d = Envelope [0,1,0,0] [0.001,2,0.04] (mk_ec [0,-4,-4]) (Just 2) (Just 0)+               in envGen AR gate' amp 0 1 DoNothing d+        env2 = let d = envADSR 0.001 0.8 0 0.8 70 (EnvNum (-4)) 0+               in envGen AR gate' 1 0 1 DoNothing d+        s = let p = lfPulse AR (midiCPS pitch'') 0.0 0.51 * 2 - 1+                q = rlpf p (midiCPS (pitch'' + env2)) 0.3+            in q * env1+    in synthdef "acid" (out bus (mce2 s s))++fx :: Synthdef+fx =+    let bus = control KR "outBus" 0+        gate' = control KR "gate" 0+        i = in' 2 AR bus+        e = let d = Envelope [0.02,0.3,0.02] [0.4,0.01] (mk_ec [3,-4]) (Just 1) (Just 0)+            in envGen KR (1 - trig gate' 0.01) 1 0 1 DoNothing d+        r = let [i0,i1] = mceChannels i+            in freeVerb2 (bpf i0 3500 1.5) (bpf i1 3500 1.5) 1 0.95 0.15 * e+        s = limiter (hpf ((i + r) * 1.2) 40) 1 0.02+    in synthdef "fx" (replaceOut bus s)++-- * Sequences++type D = [Int]++dr_seq :: Num a => [[[a]]]+dr_seq =+    let s = [[[1,0,0,0, 0,0,0,0, 1,0,0,1, 0,0,1,0]+             ,[0,0,0,0, 0,0,0,2, 0,2,1,0, 4,3,3,3]+             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+            ,[[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]+             ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]+             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+            ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]+             ,[0,0,0,0, 0,0,0,2, 0,0,0,0, 0,0,0,0]+             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]+             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]+            ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]+             ,[0,0,0,0, 4,0,0,2, 0,0,0,0, 4,0,0,0]+             ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 4,0,0,0]+             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]+             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]]+    in map transpose s++dr_msg :: Int -> (Int,Int) -> Maybe Message+dr_msg fx_id (i,x) =+    let m nm pr = Just (s_new nm (-1) AddToHead 1 pr)+        x' = fromIntegral x+        sq n = n * n+    in case i of+         0 -> if x > 0 then m "kick" [] else Nothing+         1 -> if x > 0 then m "snare" [("amp",sq (x'/4) * 0.7)] else Nothing+         2 -> if x > 0 then m "clap" [("amp",sq (x'/4) * 0.5)] else Nothing+         3 -> if x > 0 then m "hat" [("amp",sq (x'/4) * 0.32)] else Nothing+         4 -> Just (n_set fx_id [("gate",x')])+         _ -> error "dr_seq_msg"++dr_seq_bundle :: Int -> Double -> D -> Bundle+dr_seq_bundle fx_id t =+    Bundle (UTCr t) .+    mapMaybe (dr_msg fx_id) .+    zip [0..]++b_seq :: Num a => [[a]]+b_seq =+    let s = [[1,1,1,1, 1,1,1,1, 0,1,0,1, 1,1,1,0]+            ,[1,1,0,2, 1,1,0,0, 2,0,2,0, 1,2,0,4]+            ,map (+ 38) [-24,-12,0,-12, 0,-12,10,12, 0,7,-7,0, -11,1,13,15]]+    in transpose s++type B = (Int,Double,Double)++b_form :: [Int] -> B+b_form xs =+    let i = fromIntegral+    in case xs of+         [b1,b2,b3] -> (b1,i b2,i b3)+         _ -> error "b_form"++b_seq_bundle :: Int -> Double -> Double -> B -> [Bundle]+b_seq_bundle acid_id dt t (b0,b1,b2) =+    let on = let p = n_set acid_id [("pitch",b2)]+                 m = if b0 == 1+                     then [p,n_set acid_id [("gate",1)]]+                     else [p]+             in Bundle (UTCr 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 if b1 > 0 then [on,off] else [on]++-- * Runtime++ao_init :: Transport m => m (Int,Int)+ao_init = do+  let i = [kick,snare,clap,hat,acid,fx]+  mapM_ async (map d_recv i)+  let acid_id = 10+      fx_id = 11+  send (s_new "acid" acid_id AddToHead 1 [("gate",0)])+  send (s_new "fx" fx_id AddToTail 1 [])+  return (acid_id,fx_id)++dt_seq :: Double -> [Double]+dt_seq bpm =+    let shf = 0.16+        n = 60 / bpm+        dt i = if i `mod` 2 == 0 then 0.25 * (1 + shf) else 0.25 * (1 - shf)+    in map ((* n) . dt) ([0..]::[Int])++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+  let dt_seq' = dt_seq 130+      t_seq = scanl1 (+) (init_t : dt_seq')+      act (t,dt,d,b) =+          do sendBundle (dr_seq_bundle fx_id t d)+             mapM_ sendBundle (b_seq_bundle acid_id dt t b)+             pauseThreadUntil t+  mapM_ act (zip4 t_seq dt_seq' d_sq b_sq)++main :: IO ()+main =+    let act = do+          let d_sq = cycle (concat dr_seq)+              b_sq = map b_form (cycle b_seq)+          ids <- ao_init+          ao_run_seq ids d_sq b_sq+  in withSC3 act
+ gr/adso.hs view
@@ -0,0 +1,44 @@+-- adso (rd)++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)
+ gr/after-goeyvaerts.hs view
@@ -0,0 +1,366 @@+-- after goeyvaerts, nick collins (nc), 2007++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' at 'R'+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 'a' 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]+                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',o,'b',b)+  print ('p',map (set_prec 2) (M.elems p))+  print ('s',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+  pauseThread (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) >> pauseThread 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+-}
+ gr/aleatoric-quartet-m.hs view
@@ -0,0 +1,34 @@+-- aleatoric quartet (jmcc)++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+      amp = control KR "ampl" 0.07+      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+                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 <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))+  return (leakDC g 0.995)++main :: IO ()+main = audition . out 0 =<< aleatoric_quartet
+ gr/aleatoric-quartet.scd view
@@ -0,0 +1,22 @@+{ var amp = 0.07+; var density = MouseX.kr(0.01, 1, 'linear', 0.1)+; var dmul = density.reciprocal * 0.5 * amp+; var dadd = amp - dmul+; var rapf = { arg i+             ; var r = Array.fill(2, { Rand(0, 0.05) })+             ; AllpassN.ar(i, 0.05, r, 1) }+; var mk_f = { var i0 = IRand.new(0, 2)+             ; var r0 = Select.kr(i0, [1, 0.5, 0.25])+             ; var r1 = Rand.new(-30, 30)+             ; var n0 = LFNoise0.kr(r0)+             ; var m = Lag.kr((n0 * 7 + 66 + r1).round(1), 0.2)+             ; m.midicps }+; var mk_s = { var f = mk_f.value.reciprocal+             ; var r = Rand.new(-1, 1)+             ; var n0 = PinkNoise.ar()+             ; var n1 = LFNoise1.kr(8)+             ; var x = n0 * 0.max(n1 * dmul + dadd)+             ; Pan2.ar(CombL.ar(x, 0.02, f, 3), r, 1) }+; var g = Mix.fill(4, mk_s)+; 5.do({ g = rapf.value(g) })+; Out.ar(0, LeakDC.ar(g, 0.995)) }.play
+ gr/alien-froggies.hs view
@@ -0,0 +1,13 @@+-- alien froggies (jmcc)++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 'a' (-0.2) 0.2 0)) 1 30+        o = formant AR r' (expRand 'b' 200 3000) (rand 'c' 0 9 * r' + r')+    in (o * 0.05,r')++main :: IO ()+main = overlapTextureS (0.25,0.5,5,maxBound) alien_froggies 11
+ gr/alien-froggies.scd view
@@ -0,0 +1,5 @@+var rate = 11.0;+play({OverlapTexture.ar({+rate = (rate * (0.2.bilinrand.exp)).fold(1.0,30.0);+var o = Formant.ar(rate,exprand(200,3000.0),9.0.rand * rate + rate,0.05)},+0.5,0.25,5,1)})
+ gr/alien-meadow.hs view
@@ -0,0 +1,17 @@+-- alien meadow (jmcc)++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+        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
+ gr/ambient1.hs view
@@ -0,0 +1,97 @@+-- 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++chain :: a -> [a -> a] -> a+chain n ff =+    case ff of+      [] -> n+      f:ff' -> chain (f n) ff'++chain0 :: Num a => [a -> a] -> a+chain0 = chain 0++pulse_u :: UGen+pulse_u =+    let k = control KR+        f = k "freq" 440+        a = k "amp" 0.1+        aT = k "attackTime" 0.01+        dT = k "delayTime" 10+        e = envGen KR 1 1 0 1 RemoveSynth (envPerc aT 10)+        z = sinOsc AR f 0 * 0.7+        o = let l = sinOsc KR 3 0+            in pan2 (toggleFF (tDelay z dT) * sinOsc AR f 0) l 0.6+        s = clip2 ((pan2 z (sinOsc KR 5 pi) 0.7 + o) * e) 1+    in out 0 (freeVerb s 0.7 1.0 0.4 * a)++drone_u :: UGen+drone_u =+    let k = control KR+        f = k "freq" 440+        a = k "amp" 0.1+        ph = k "phase" 0+        e = envGen KR 1 1 0 1 RemoveSynth (envSine 10 1)+        s = chain0 [\_ -> lfPulse AR f 0 0.15+                   ,\o -> rlpf o (sinOsc KR 0.3 0 * 200 + 1500) 0.1+                   ,\o -> freeVerb o 0.5 0.5 0.5 * e+                   ,\o -> pan2 o (sinOsc KR (1/10) ph) a]+    in out 0 s++bass_u :: UGen+bass_u =+    let k = control KR+        f = k "freq" 96+        a = k "amp" 0.1+        e = envGen KR 1 1 0 1 RemoveSynth (envPerc' 0.5 1 1 (EnvLin,EnvLin))+        s = sinOsc AR f 0 * a * e+    in out 0 (pan2 s 0 1)++{-+audition pulse_u+audition drone_u+audition bass_u+-}++pulse_i :: Instrument+pulse_i = InstrumentDef (synthdef "pulse" pulse_u) False++drone_i :: Instrument+drone_i = InstrumentDef (synthdef "drone" drone_u) False++bass_i :: Instrument+bass_i = InstrumentDef (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)]++bass_p :: P Event+bass_p = pbind [("dur",dur_p)+               ,("midinote",31)+               ,("amp",0.3)]++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]++main :: IO ()+main = audition ambient1_p
+ gr/analog-bubbles.hs view
@@ -0,0 +1,14 @@+-- analog bubbles (jmcc)++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+      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)
+ gr/analog-bubbles.scd view
@@ -0,0 +1,4 @@+{var o = LFSaw.kr([87.23]0380)+;var f = LFSaw.kr(0.4024o)+;var s = SinOsc.ar(f.midicps00.04)+;Out.ar(0CombN.ar(s0.20.240.1))}.play
+ gr/arpeggio.hs view
@@ -0,0 +1,84 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg07473.html (nc)++import Control.Monad {- base -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID++-- > Sound.SC3.UGen.Dot.draw analogarpeggio+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 (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)]))+-}++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 =+    [("dur"+     ,let d = pwrand 'n' [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+      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+      in pinterp' n s e)+    ,("pan"+     ,let n = prand 'g' [8,16] inf+          s = pwhite 'h' (-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)+      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+      in pinterp' n s e)+    ,("note"+     ,let f x = pn (fromList 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)+    ,("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))
+ gr/babbling-brook-m.hs view
@@ -0,0 +1,18 @@+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)++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+                     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
+ gr/babbling-brook.scd view
@@ -0,0 +1,7 @@+{ var b = { arg f, m, a, g+          ; { var n1 = OnePole.ar(BrownNoise.ar, 0.99)+            ; var n2 = LPF.ar(BrownNoise.ar, f)+            ; RHPF.ar(n1, n2 * m + a, 0.03, g) } }+; var x = b.value(14, 400, 500, 0.006) ! 2+; var y = b.value(20, 800, 1000, 0.010) ! 2+; Out.ar(0, x + y) }.play
+ gr/birds-m.hs view
@@ -0,0 +1,34 @@+-- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html (jmcc)++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+                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
+ gr/bit-reduction.hs view
@@ -0,0 +1,26 @@+-- bit reduction (adc)++import Sound.SC3.ID {- hsc3 -}++sample_rate_decrease :: UGen+sample_rate_decrease =+  let f = lfNoise2 'a' KR 8+      nh = lfNoise2 'a' 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+      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))
+ gr/bit-reduction.scd view
@@ -0,0 +1,14 @@+{ var f = LFNoise2.kr(8)+; var nh = LFNoise2.kr(3)+; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)+; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)+; Out.ar(0, Latch.ar(src, Impulse.ar(sr, 0))) }.play++{ var f = LFNoise2.kr(8)+; var nh = LFNoise2.kr(3)+; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)+; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)+; var bit_sz = MouseY.kr(1, 24, 'exponential', 0.2)+; var down_sample = Latch.ar(src, Impulse.ar(sr, 0))+; var bit_redux = down_sample.round(0.5 ** bit_sz)+; Out.ar(0, [down_sample, bit_redux]) }.play
+ gr/bitwise.hs view
@@ -0,0 +1,20 @@+-- a0f253ff89f6b244ea29a1e431dd9e5df5571a8b (jl)++import Data.Bits+import Sound.SC3 {- hsc3 -}++(.%.) :: UGen -> UGen -> UGen+(.%.) = modE++-- > Sound.SC3.UGen.Dot.draw bitwise_operators+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)
+ gr/bitwise.scd view
@@ -0,0 +1,8 @@+// a0f253ff89f6b244ea29a1e431dd9e5df5571a8b (jonatan liljedahl)++{var t = PulseCount.ar(Impulse.ar(8e3,0),0)+;var s = ((((t * 15) & (t >> 5)) |+           ((t *  5) & (t >> [3,4])) |+           ((t *  2) & (t >> 9)) |+           ((t *  8) & (t >> 11))) - 3) % 256+;HPF.ar(((s / 127) - 1) * 3, 20).tanh}.play
+ gr/black-atlantic-currents.hs view
@@ -0,0 +1,108 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg08240.html (jrhb)++import Data.Numbers.Primes {- primes -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+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 'a' 2 (lfdNoise3 'a' 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+          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 'a' 2 (lfdNoise3 'a' 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+          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 's' 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 's' KR (log 2 / 2))+              ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"+              f' = map (c . nth_prime) (scramble 'p' [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'''')+-}
+ gr/bohlen-pierce-140.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-W (jj)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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+    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)])
+ gr/bohlen-pierce-140.scd view
@@ -0,0 +1,5 @@+fork{loop{play{+f=_*3.pow(17.rand/13);+e=EnvGen.ar(Env.perc,1,0.3,0,1,2);+PMOsc.ar(f.([438,442]),f.(880),f.(e))*e+};[1/6,1/3].choose.wait}}
+ gr/bottle-m.hs view
@@ -0,0 +1,28 @@+-- bottle (sc)++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 (>=>) f g x = f x >>= g+      chain n f = foldl (>=>) return (replicate n f)+      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 <- chain 2 rapf flute+  return (cls f)++main :: IO ()+main = overlapTextureU (2,0,2,maxBound) =<< bottle
+ gr/bowed-string-m.hs view
@@ -0,0 +1,26 @@+-- bowed string (jmcc)++import Control.Monad {- base -}+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 <- liftM midiCPS (liftM2 (+) (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
+ gr/bowed-string.scd view
@@ -0,0 +1,13 @@+{ var root = 5+; var scale = #[0,2,4,5,7,9,11] + root+; var oct = #[24,36,48,60,72,84]+; var f = (scale.choose + oct.choose).midicps+; var n0 = BrownNoise.ar().dup+; var r0 = ExpRand.new(0.125,0.5)+; var n1 = LFNoise1.kr(r0)+; var r1 = Rand.new(0.7,0.9)+; var r2 = Array.fill(12,{ Rand.new(1.0,3.0) })+; var x = n0 * 0.007 * max(0,n1 * 0.6 + 0.4)+; var d = `[Array.series(12,f,f),Array.geom(12,1,r1),r2]+; var k = Klank.ar(d,x)+; Out.ar(0,(k * 0.1).softclip) }.play
+ gr/bs-070705.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/buffer-display.hs view
@@ -0,0 +1,131 @@+-- 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 qualified Graphics.Rendering.Cairo as C {- cairo -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Cairo.Scope.Shell {- hsc3-cairo -}++-- * Type++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 = pt_xy (pt_rotate a (pt x y))++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 `M.fmod` 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 'a' 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)++-}
+ gr/ccomb.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.scd view
@@ -0,0 +1,11 @@+{var lwr = 48+;var flwr = lwr.midicps+;var spart = {arg t+              ;{var n = LFNoise2.kr(0.1).range(lwr,72.0)+               ;var e = Decay2.kr(t,0.01,TRand.kr(0.05,0.75,t))+               ;var x = WhiteNoise.ar() * e+               ;var m = LFNoise2.kr(0.1)+               ;var f = Lag.kr(n.midicps,0.25)+               ;CombC.ar(x,flwr.reciprocal,f.reciprocal,m.range(1,8))}}+;var t = Dust.kr([0.75,0.35])+;Out.ar(0,Mix.fill(12,spart.value(t)) * 0.1)}.play
+ gr/cds-070701.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/chain-saw.hs view
@@ -0,0 +1,50 @@+-- 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/chain-saw.scd view
@@ -0,0 +1,21 @@+{ var f = { arg s1+          ; var rate = ExpRand.new(0.1, 2).dup+          ; var n1 = { LFNoise1.kr(rate).exprange(0.01, 10) }+          ; var n2 = { LFNoise1.kr(rate).exprange(10, 50) }+          ; var n3 = LFNoise1.kr(rate).exprange(2, 10)+          ; var f1 = if(0.6.coin) { n1.value } { n2.value }+          ; var s2 = [1 - s1, s1.reverse].choose+          ; var f2 = LinExp.kr(s1, -1, 1, f1, f1 * n3)+          ; var u1 = LFSaw.kr(f2, 0)+          ; var u2 = LFSaw.kr(f1 * 0.1, 0, 0.1, 1)+          ; var u3 = if(0.5.coin) { u1 * s2 } { u1 * u2 }+          ; u3.clip2(1) }+; var g = { arg func, n+          ; n.do { func = func <> func }+          ; func }+; var inp = LFSaw.kr(0.2 * [1, 1.1], 0)+; var b_freq = [70, 800, 9000, 5242]+; var ff = g.(f, 4).value(inp)+; var c_saw = Saw.ar(ff.exprange(6, 11000)).product+; var b_saw = BPF.ar(c_saw, b_freq, 0.2).sum.dup+; Out.ar(0, b_saw * 0.3) }.play
+ gr/choip.hs view
@@ -0,0 +1,29 @@+-- choip (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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 'a' 'b' 1 30 t) 0+        f = xl 'c' 'd' 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++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++main :: IO ()+main = overlapTextureU_pp (1,10,8,maxBound) choip 2 choip_pp
+ gr/choip.scd view
@@ -0,0 +1,9 @@+var t = 12;+var z = OverlapTexture.ar({+  var i = Impulse.ar(XLine.kr(exprand(1,30),exprand(1,30),t));+  var f = XLine.kr(exprand(600.0,8000.0),exprand(600.0,8000.0),t);+  var a = SinOsc.ar(Decay2.ar(impulses,0.05,0.5,-0.9*f,f));+  var l = Line.kr(1.0.rand2,1.0.rand2,t);+  var j = XLine.kr(exprand(0.01,0.5),exprand(0.01,0.5),t);+  Pan2.ar(Decay2.ar(i * j,0.01,0.2,a),l)},t-2,1,8,2);+4.do({z = AllpassN.ar(z,0.1,[0.05.rand,0.05.rand],4)});
+ gr/chrd-m.hs view
@@ -0,0 +1,25 @@+-- chrd (rd)++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
+ gr/chrd-t.hs view
@@ -0,0 +1,36 @@+-- chrd-t (rd)++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
+ gr/chrd.scd view
@@ -0,0 +1,16 @@+{ var chrd = { var r0 = Rand.new(0.05, 0.5)+             ; var r1 = Rand.new(-1, 1)+             ; var r2 = Rand.new(-1, 1)+             ; var r3 = Rand.new(0.15, 0.35)+             ; var r4 = Rand.new(0.005, 0.01)+             ; var m = [60, 65, 72, 77, 79, 84]+             ; var ds = 3+             ; var d = [5, 4, 5, 7, 4, 5] * ds+             ; var f = XLine.kr(m, m + r0, d).midicps+             ; var z_ = Env.linen(r3 * d, 0, (1 - r3) * d, r4)+             ; var z = Env.sine(d.maxItem, r4)+             ; var e = EnvGen.kr(z, 1, 1, 0, 1)+             ; var p = XLine.kr(r1, r2, d)+             ; var o = SinOsc.ar(f, 0)+             ; Mix.ar(Pan2.ar(o, p, e)) }+; Out.ar(0, Mix.fill(9, chrd)) }.play
+ gr/clustered-sines.hs view
@@ -0,0 +1,18 @@+-- clustered sines (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++-- > Sound.SC3.UGen.Dot.draw 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
+ gr/comb-delay-sweeps.hs view
@@ -0,0 +1,29 @@+-- comb delay sweeps (jmcc)++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)
+ gr/contamination-zone.hs view
@@ -0,0 +1,33 @@+-- contamination zone (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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))+-}
+ gr/coolant.hs view
@@ -0,0 +1,18 @@+-- coolant (jmcc)++import Sound.SC3.ID {- hsc3 -}+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+        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
+ gr/cricket-m.hs view
@@ -0,0 +1,22 @@+-- cricket (rd)++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+-}
+ gr/cricket.scd view
@@ -0,0 +1,8 @@+{ var r1 = Array.fill(2, { Rand.new(10, 13) })+; var r2 = Array.fill(2, { Rand.new(10, 13) })+; var r3 = Array.fill(2, { Rand.new(4, 7) })+; var t = Impulse.kr(0.7, 0)+; var e = Decay2.kr(Impulse.kr(r1, 0), 0.001, 0.005)+; var f = SinOsc.kr(r2, 0) * e * r3+; var r4 = Array.fill(2, { TRand.kr(2220, 2227, t) })+; Out.ar(0, SinOsc.ar(r4, 0) * f * 0.25) }.play
+ gr/crotale-sine.hs view
@@ -0,0 +1,133 @@+-- crotale-sine++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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++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)])++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])
+ gr/crotale.hs view
@@ -0,0 +1,176 @@+-- crotale (rd)++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 '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+        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])+
+ gr/crotale.scd view
@@ -0,0 +1,164 @@+{ var crotale = [ [ 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 ] ]+; var cf = crotale[0]+; var ca = crotale[1]+; var cd = crotale[2]+; var ps = [-12, -5, 0, 2, 4, 5, 7, 12]+; var n = PinkNoise.ar()+; var t = Dust.kr(3)+; var fs = Select.kr(TIRand.kr(0, 7, t), ps)+; var g = TRand.kr(0, 1, t)+; var fo = TRand.kr(0, 1, t)+; var ds = TRand.kr(2, 7, t)+; var p = TRand.kr(-1, 1, t)+; var s = Decay2.kr(t, 0.06, 0.01) * n * g+; var k = DynKlank.ar(`[cf, ca, cd.reciprocal], s, fs.midiratio, fo, ds)+; Out.ar(0, Pan2.ar(k, p, 1)) }.play
+ gr/cut-outs.hs view
@@ -0,0 +1,20 @@+-- 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/cut-outs.scd view
@@ -0,0 +1,11 @@+{ var t = Impulse.ar(22, 0) * (SinOsc.kr(0.5, 0) + 1)+; var x = MouseX.kr(0.005, 0.12, 'exponential', 0.1)+; var y = MouseY.kr(0.01, 0.52, 'exponential', 0.1)+; var n = { var n1 = LFNoise0.kr(2)+          ; var n2 = CoinGate.ar(0.05 + n1 + (y * 0.4) + (t * 0.5), t * 0.5)+          ; var n3 = TExpRand.ar([500, 900], 1600, t)+          ; Ringz.ar(n2, n3, x) }+; var s = Mix.fill(3, n)+; var b = TRand.kr(0, 1, Dust.kr(8))+; Out.kr(0, b)+; Out.ar(0, s.clip2(In.kr(0, 1)) * 0.25) }.play
+ gr/cymbalism-accelerando.hs view
@@ -0,0 +1,24 @@+-- cymbalism accellerando (jmcc)++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 'a') (y 'A')+      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
+ gr/cymbalism-m.hs view
@@ -0,0 +1,26 @@+-- cymbalism (jmcc)++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+-}
+ gr/cymbalism.scd view
@@ -0,0 +1,11 @@+{var p = 15+;var f1 = Rand.new(500,2500)+;var f2 = Rand.new(0,8000)+;var y = {var f = Array.fill(p,{f1 + Rand.new(0,f2)} )+         ;var rt = Array.fill(p,{1 + Rand.new(0,4)})+         ;`[f,nil,rt]}+;var z = Array.fill(2,y)+;var t = Impulse.ar(Rand.new(0,3) + 0.5,0)+;var n = WhiteNoise.ar() * 0.03+;var s = Decay.ar(t,0.004) * n+;Out.ar(0,Klank.ar(z,s))}.play
+ gr/dark-sea-horns.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-j#c51 (jl)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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)+    in mrg2 o (localOut o)++main :: IO ()+main = audition (out 0 dark_sea_horns)
+ gr/dark-sea-horns.scd view
@@ -0,0 +1,13 @@+{n=LFNoise1+;x=LocalIn.ar(2)+;a=SinOsc.ar(65,x*n.ar(0.1,3),n.ar(3,6)).tanh+;9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)}+;a=a.tanh+;LocalOut.ar(a)+;a}.play++n=LFNoise1;+Ndef(\x,{+a=SinOsc.ar(65,Ndef(\x).ar*n.ar(0.1,3),n.ar(3,6)).tanh;+9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)};+a.tanh}).play
+ gr/data-space.hs view
@@ -0,0 +1,25 @@+-- data space (jmcc)++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+        f = p0 * p1 + p2 * p3 + p4 * p5+        dt = rand 's' 0.15 0.35+        o = lfPulse AR f 0 0.5 * 0.04+        l = lfNoise0 't' KR (r 'u' 3) * 0.8+    in combL (pan2 o l 1) dt dt 3++main :: IO ()+main = overlapTextureU (1,6,4,maxBound) data_space
+ gr/deep-sea.hs view
@@ -0,0 +1,33 @@+-- deep sea (jrhb)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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+        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)+  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2] inf)])
+ gr/deep-sea.scd view
@@ -0,0 +1,15 @@+{ var amp = 1+; var pan = 0+; var variation = 0.9+; var n = Rand.new(7, 46)+; var dt1 = 25.0 + Rand.new(-1.7, 1.7)+; var dt2 = (dt1 + LFNoise2.kr(2)) * variation * 0.001+; var freq = 901 + Rand.new(0, 65)+; var t = Impulse.ar(dt2.reciprocal, 0, 100)+; var count = PulseCount.ar(t, 0)+; var mul = count < n+; var u1 = BPF.ar(mul * t, freq, 1) * 0.1+; var freq2 = freq * ((count % LFNoise1.kr(1).range(2, 20)) + 1)+; var u2 = BPF.ar(u1, freq2, 1) * 0.2+; DetectSilence.ar(u2, 0.0001, 0.2, 2)+; Out.ar(0, Pan2.ar(u2, pan, amp * 10)) }.play
+ gr/deep-trip.hs view
@@ -0,0 +1,20 @@+-- deep trip (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU {- 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'+        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+        in s + c0 + c1++main :: IO ()+main = overlapTextureU (4,12,4,maxBound) deep_trip
+ gr/default.hs view
@@ -0,0 +1,24 @@+-- default (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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))++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)])
+ gr/default.scd view
@@ -0,0 +1,8 @@+SynthDef(\default, {+arg out=0,freq=440,amp=0.1,pan=0,gate=1;+var e = Linen.kr(gate, 0.01, 0.7, 0.3, 2);+var f3 = freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)];+var l = XLine.kr(Rand(4000,5000), Rand(2500,3200), 1);+var z = LPF.ar(Mix.new(VarSaw.ar(f3, 0, 0.3, 0.3)),l) * e;+OffsetOut.ar(out, Pan2.ar(z, pan, amp));+},[\ir]).add;
+ gr/demanding-studies.hs view
@@ -0,0 +1,19 @@+-- demanding studies (jmcc)++import Sound.SC3.ID {- hsc3 -}++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])+      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)
+ gr/demanding-studies.scd view
@@ -0,0 +1,10 @@+{var s1 = Drand.new([72,75,79,82],inf)+;var s2 = Drand.new([82,84,86],1)+;var s3 = Dseq.new([72,75,79,s2],inf)+;var x = MouseX.kr(5,13,'linear',0.2)+;var tr = Impulse.kr(x,0)+;var f = Demand.kr(tr,0,[(s1 - 12).midicps,s3.midicps])+;var o1 = SinOsc.ar(f + [0,0.7],0)+;var o2 = Saw.ar(f + [0,0.7]) * 0.3+;var o3 = (o1 + o2).distort.log.distort.cubed+;Out.ar(0,o3 * 0.1)}.play
+ gr/dial-history.hs view
@@ -0,0 +1,36 @@+-- 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/dial-history.scd view
@@ -0,0 +1,22 @@+{ var mfv = [[697, 770, 852, 941], [1209, 1336, 1477, 1633]]+; var numbers = [[3, 1]] ++ {: [a, b], a <- (0..2), b <- (0..2) }.all+; var n = Dwhite.new(7, 12, inf)+; var w = Dwhite.new(2, 7, 1)+; var b = Dbrown.new(0.1, 0.2, 0.01, n)+; var rate = Dseq.new([w, b], inf)+; var q = Dseq.new((1..10), inf)+; var trig = Trig.kr(TDuty.kr(rate, 0, q), 0.09)+; var pat = Latch.kr(trig, trig)+; var x = MouseX.kr(0, 1, 'linear', 0.2)+; var h = Hasher.kr(pat * x)+; var which = h.range(0, numbers.size).trunc.(1)+; var both = Select.kr(which, numbers)+; var dial = Select.kr(both, mfv.flop)+; var sig = SinOsc.ar(dial, 0) * 0.05 * trig+; var d = LFDNoise3.kr(0.5)+; var dsig = DelayC.ar(sig, 0.2, d.range(0, 0.01))+; var g1 = GrayNoise.AR+; var g2 = GrayNoise.AR+; var z = Silent.ar(1)+; var hiss = g1 * 0.01 + HPF.ar(g2 * 0.02, 3000)+; Out.ar(0, [z, dsig + hiss]) }.play
+ gr/diffraction.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)+  return.sum =<< sequence [p, q, r]++main :: IO ()+main = audition . out 0 =<< diffraction
+ gr/diffraction.scd view
@@ -0,0 +1,17 @@+{var x = MouseX.kr(0.001,0.02,'exponential',0.1)+;var y = MouseY.kr(120,400,'exponential',0.1)+;var p = {var f = LFNoise0.kr(4) * [32,64]+         ;var w = LFNoise0.kr(32) * x+         ;var z = LFNoise0.kr(2) * 0.1+         ;var m = LFNoise0.kr(6)+         ;var s = Pulse.ar(f,w)+         ;Resonz.ar(s,y + z,(m * 0.4) + 0.8) * 0.5}+;var q = {var n = LFNoise0.kr(128)+         ;CombN.ar(p.value,0.2,(n * 0.1) + 0.1,3)}+;var r = {var x1 = MouseX.kr(0.75,1.25,'exponential',0.1)+         ;var y1 = MouseY.kr(0.25,1,'exponential',0.1)+         ;var f = {var fr = Rand(50,59) * x1+                  ;var am = Rand(0.04,0.16) * y1+                  ;SinOsc.ar(fr,0) * am}+         ;[Mix.fill(16,f),Mix.fill(12,f)]}+;Out.ar(0,p.value + q.value + r.value)}.play
+ gr/discretion-m.hs view
@@ -0,0 +1,20 @@+-- discretion-m (rd)++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)+      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
+ gr/discretion.hs view
@@ -0,0 +1,22 @@+-- discretion (rd)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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+                 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)++main :: IO ()+main = audition (out 0 discretion)
+ gr/doppler.hs view
@@ -0,0 +1,30 @@+-- doppler (jmcc)/(rd)++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))+              pauseThread 8+              play (out 0 (doppler (ellipse 10 75 12) s)))
+ gr/drummer.hs view
@@ -0,0 +1,18 @@+-- drummer (thor magnusson)++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)
+ gr/drummer.scd view
@@ -0,0 +1,9 @@+{ var tempo = 4+; var n = WhiteNoise.ar()+; var tr = Impulse.ar(tempo, 0)+; var tr_2 = PulseDivider.ar(tr, 4, 2)+; var tr_4 = PulseDivider.ar(tr, 4, 0)+; var snare = n * Decay2.ar(tr_2, 0.005, 0.5)+; var bass = SinOsc.ar(60, 0) * Decay2.ar(tr_4, 0.005, 0.5)+; var hihat = HPF.ar(n, 10000) * Decay2.ar(tr, 0.005, 0.5)+; Out.ar(0, Pan2.ar(snare + bass + hihat, 0, 0.4)) }.play
+ gr/e-lamell-p.hs view
@@ -0,0 +1,43 @@+-- e-lamell-p (rd)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID++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 'a' [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]++main :: IO ()+main =+    let s = synthdef "e-lamell" (out 0 e_lamell)+    in audition (s,pattern)
+ gr/e-lamell.hs view
@@ -0,0 +1,66 @@+-- e-lamell (rd)++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 'a' [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))++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 now [p,q])+  pauseThread 0.1++run :: Transport m => m ()+run = do+  _ <- sendSynth "blip" (out 0 e_lamell)+  replicateM_ 64 pattern++main :: IO ()+main = withSC3 run
+ gr/early-space-music-lp-side-two.hs view
@@ -0,0 +1,80 @@+-- early space music LP, side 2 (jmcc)++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 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+    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+        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++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++-- audition (out 0 m4)+m4 :: UGen+m4 =+    let a = lfPulse KR (expRand 'a' 0.2 1.2) 0 (rand 'a' 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 '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)+        z = sinOsc AR f 0 * a0 * a1+    in pan2 z (lfNoise1 'h' KR (rand 'i' 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 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 ['a'..'e']) * 0.3++main :: IO ()+main = do+  let g = R.mkStdGen 0+  overlapTextureS_pp (4,2,6,maxBound) esmlp2 g 2 esmlp2_pp
+ gr/eggcrate-m.hs view
@@ -0,0 +1,19 @@+-- eggcrate-m (rd)++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
+ gr/eggcrate.hs view
@@ -0,0 +1,22 @@+-- eggcrate (rd)++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) ('a','b')+      t = dust 'c' KR 2.4+      (f0,f1) = atp (\z -> tChoose z t p) ('a','b')+      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)
+ gr/eggcrate.scd view
@@ -0,0 +1,11 @@+{var eggcrate = {arg u,v+                ;(u * pi).cos * (v * pi).sin}+;var p = [64,72,96,128,256,6400,7200,8400,9600]+;var x = BrownNoise.kr()+;var y = BrownNoise.kr()+;var t = Dust.kr(2.4)+;var f0 = TChoose.kr(t,p)+;var f1 = TChoose.kr(t,p)+;var f = LinLin.kr(eggcrate.value(x,y),-1,1,f0,f1)+;var a = LinLin.kr(x,-1,1,0,0.1)+;Out.ar(0,Pan2.ar(Mix.ar(SinOsc.ar(f,0)),y,a))}.play
+ gr/ellipse-based-synthesis.hs view
@@ -0,0 +1,39 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg09524.html (nc)++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)))+-}
+ gr/f-lets.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/f0-2012-04-19.hs view
@@ -0,0 +1,14 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg17536.html (f0)++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
+ gr/f0-2012-04-19.scd view
@@ -0,0 +1,4 @@+{var sw=LFSaw.ar(10,0,0.01)+;var t0=LFTri.ar([5,6]*0.1)+;var t1=LFTri.kr(0.1, 0, 0.05, 0.05)+;CombN.ar(Limiter.ar(BRF.ar(sw,t0)),0.1,t1.round(0.01))*0.1}.play
+ gr/f0-tw0001.scd view
@@ -0,0 +1,1 @@+r{99.do{|i|x={Pan2.ar(SinOsc.ar(i+1,SinOsc.ar((i%9).div(3)*100+(i%9)+500),0.03),1.0.rand2)}.play;2.wait;x.release(25)}}.play
+ gr/f0-tw0006.scd view
@@ -0,0 +1,1 @@+r{loop{x={GVerb.ar(MoogFF.ar(ClipNoise.ar*0.4,LFPar.kr({0.3.rand}!2,0,600,990)),9,9,1)}.play(s,0,19);3.wait;x.release}}.play
+ gr/f0-tw0011.hs view
@@ -0,0 +1,13 @@+-- instance of unworkable graph given current Eq implementation (f0)++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
+ gr/f0-tw0011.scd view
@@ -0,0 +1,5 @@+// f0 -- tweet0011++{var s = {|o,i| SinOsc.ar([i,i + 1e-4] ** 2 * f.(o,i-1),f.(o,i - 1) * 1e-4) * f.(o,i - 1)}+;var f = {|o,i| if(i > 0,{s.(o,i)},o)}+;f.(60,6) / 60}.play
+ gr/f0-tw0014.hs view
@@ -0,0 +1,20 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)++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
+ gr/f0-tw0014.scd view
@@ -0,0 +1,11 @@+(var f =+{arg i+;var a = SinOscFB+;var a0 = a.ar(i+1,1/9,999)+;var a1 = a.ar(1/9,1,1/9)+;var a2 = a.ar(a0,1/9,a1)+;var a3 = a.ar(0.1,3)+;var a4 = a.ar(a2,a3,i+2*999)+;var a5 = a.ar(1/9,1/9)+;a.ar(a4,a5,1/9)}+;{sum(f!9)!2}.play)
+ gr/f0-tw0020.hs view
@@ -0,0 +1,20 @@+-- http://fredrikolofsson.com/f0blog/?q=node/478 (f0)++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
+ gr/f0-tw0020.scd view
@@ -0,0 +1,10 @@+{var a=LFPulse+;var b=(1..4)+;var a1=(a.ar(b/32) + 1) / 8+;var a2=(a.ar(a1) + 1) * b+;var a3=a.ar(b/64)+;var a4=a.ar(a.ar(b/8)) * 2 + b+;var a5=a.ar(4/b)+;var a6=a.ar(a2)+;var a7=a.ar((a6 + ((Mix(a3) + a5) * a4)) * 100)+;(Mix(a7)/8)!2}.play
+ gr/f0-tw0028.hs view
@@ -0,0 +1,22 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/537 (f0)++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 'a' dinf (dshuf 'a' 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
+ gr/f0-tw0028.scd view
@@ -0,0 +1,7 @@+/* http://www.fredrikolofsson.com/f0blog/?q=node/537 */++{var p = Dseq(Dshuf(List.fib(16) % 8 * 99,8),inf)+;var q = CombN.ar(Duty.ar(1/8,0,p),4,4,16)+;var o = LFTri.ar(q)/4+;var f = LFTri.kr(1/16,0,2e3,3e3)+;MoogFF.ar(o,f)!2}.play
+ gr/f0-tw0030.hs view
@@ -0,0 +1,14 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)++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
+ gr/f0-tw0030.scd view
@@ -0,0 +1,7 @@+/* www.fredrikolofsson.com/f0blog/?q=node/537 */++{var a = LFPar+;var f = a.ar(1,0,5,a.ar([0.05,0.04],0,50,160).round(50))+;var w = a.ar(0.2,0,0.5,a.ar(3,0,0.2,0.5))+;var o = VarSaw.ar(f,0,w) / 8+;GVerb.ar(o,80)}.play
+ gr/f0-tw0033.hs view
@@ -0,0 +1,16 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)++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
+ gr/f0-tw0033.scd view
@@ -0,0 +1,8 @@+// www.fredrikolofsson.com/f0blog/?q=node/537++{var f = LFPar.ar(1/14,0).round * 20 + 80+;var a = Pulse.ar({|i| i + 1} ! 4,0.35)+;var n = BrownNoise.ar(a)+;var z = {|i| [i + 1 * f,i * f + (i + 1 / 3)]}+;var o = LFPar.ar(z ! 4,0)+;Splay.ar((o > n) / 3)}.play
+ gr/f0-tw0045.hs view
@@ -0,0 +1,14 @@+-- www.fredrikolofsson.com/f0blog/?q=node/537 (f0)++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
+ gr/f0-tw0045.scd view
@@ -0,0 +1,7 @@+// www.fredrikolofsson.com/f0blog/?q=node/537++{var a = SinOsc+;var f = a.ar(a.ar(0.11,0,1,0),0,1,0)+;var p_f = a.ar(95*a.ar(0.01,0,1,1),0,a.ar(5e-3,0,50,0),100)+;var p = a.ar(p_f,a.ar([98,97],0,1,0),pi+a.ar(5e-4,0,1,0),0)+;a.ar(f,p,1,0).tanh}.play
+ gr/f0-tw0049.hs view
@@ -0,0 +1,16 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg18379.html (f0)++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
+ gr/f0-tw0049.scd view
@@ -0,0 +1,6 @@+// f0 -- tweet0049+{var o0 = LFSaw.ar(3) * 9 + 99+;var s0 = Sweep.ar(0,(3..9)) % o0+;var s1 = Sweep.ar(0,(33..3)) % 128 & s0+;var o1 = SinOsc.ar(midicps(s1 + 33),0,pi)+;Splay.ar(SinOsc.ar(9,o1)) / 3}.play
+ gr/f0-tw0051.hs view
@@ -0,0 +1,20 @@+-- http://sccode.org/1-4Qy (f0)++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)
+ gr/f0-tw0051.scd view
@@ -0,0 +1,9 @@+// http://sccode.org/1-4Qy+{var a = Saw+;var i = a.ar("sunday".ascii)+;var f = a.ar(9 / "slow".ascii) * 400 + 500+;var w = a.ar(7 / "coding".ascii) + 1.1+;var l = Splay.ar(BBandPass.ar(i,f,w) / 5)+;GVerb.ar(l)}.play++"sunday".ascii == [115,117,110,100,97,121]
+ gr/f0-tw0077.hs view
@@ -0,0 +1,16 @@+-- http://sccode.org/1-4Qy (f0)++import Sound.SC3 {- hsc3 -}++-- > Sound.SC3.UGen.Dot.draw f0_tw0077+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)
+ gr/f0-tw0077.scd view
@@ -0,0 +1,7 @@+// http://sccode.org/1-4Qy+{var a = SinOsc+;var f = a.ar(1 / [5,6]) + [798,912]+;var p = a.ar(1 / 16) * 19 + 99 * a.ar([9,8])+;var m = a.ar(a.ar(6) * a.ar(0.009))+;var b = a.ar(f,p,m)+;a.ar([201,301],b).tanh}.play
+ gr/f0-tw0084.hs view
@@ -0,0 +1,15 @@+-- http://sccode.org/1-4Qy (f0)++import Sound.SC3 {- hsc3 -}++-- > Sound.SC3.UGen.Dot.draw f0_tw0084+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)
+ gr/f0-tw0084.scd view
@@ -0,0 +1,6 @@+// http://sccode.org/1-4Qy+{var a = Saw+;var f = a.ar((5,7..15) * 19) * 99 + 199+;var g = a.ar((1,3..13) * 29) * 199 + 299+;var w = a.ar((3,5..11) * a.ar(3,2,3)) * 299 + 399+;Splay.ar(Formant.ar(f,g,w)) / 3}.play
+ gr/fb-090531.hs view
@@ -0,0 +1,47 @@+-- fb-090531 (rd)++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import Control.Monad+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+-}
+ gr/fbl-fbf.hs view
@@ -0,0 +1,36 @@+-- fbl-fbf (rd)++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 'a' 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)
+ gr/feedr.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/fm-iter.hs view
@@ -0,0 +1,21 @@+-- fm-iter (rd)++import Sound.SC3.ID {- hsc3 -}++fm_iter :: UGen+fm_iter =+  let t0 = impulse AR (recip 0.30) 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+      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 = audition (out 0 fm_iter)
+ gr/fm-kltr-p.hs view
@@ -0,0 +1,38 @@+-- fm-kltr-p (rd)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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+      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)++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)
+ gr/fm-kltr.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+  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
@@ -0,0 +1,40 @@+-- http://musicweb.ucsd.edu/~tre/wordpress/?p=131++import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}++-- map sixth ["just","golden","equal"]+sixth :: Floating a => String -> a+sixth z =+    case z of+      "just" -> 8/5+      "golden" -> (sqrt 5 + 1) / 2+      "equal" -> 2 ** (8 / 12)+      _ -> 3/2++freq :: Double -> (Double,Double)+freq z =+    let n0 = 27.5+        n1 = n0 + (log z / log 2) * 12 * 12+    in (midiCPS n0,midiCPS n1)++for_ann :: Double -> Synthdef+for_ann z =+    let d = 33.6+        (f0,f1) = freq z+        k = constant+        f_e = Envelope [k f0,k f1] [d] [EnvExp] Nothing Nothing+        f = envGen AR 1 1 0 1 DoNothing f_e+        a_e = envLinen (d/4) (d/2) (d/4) 0.1+        a = envGen AR 1 1 0 1 RemoveSynth a_e+    in synthdef "for-ann" (out 0 (pan2 (sinOsc AR f 0 * a) 0 1))++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])++main :: IO ()+main = audition (score (sixth "just"))
+ gr/for-ann.scd view
@@ -0,0 +1,9 @@+{{{var d = 33.6+  ;var f0 = 40+  ;var f1 = 40 * (2**8)+  ;var f_e = Env.new([f0,f1],[d],\exp)+  ;var f = EnvGen.ar(f_e,1,1,0,1,0)+  ;var a_e = Env.linen(d/4,d/2,d)+  ;var a = EnvGen.ar(a_e,1,0.1,0,1,2)+  ;Pan2.ar(SinOsc.ar(f,0,a))}.play+ ;2.8.wait}!240}.fork
+ gr/forest-sounds.hs view
@@ -0,0 +1,16 @@+-- 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/forest-sounds.scd view
@@ -0,0 +1,5 @@+{ var insects = { var n1 = BrownNoise.ar+                ; var n2 = LFNoise2.kr(50)+                ; var o = SinOsc.kr(n2 * 50 + 50, 0) * 100 + 2000+                ; BPF.ar(n1, o, 0.001) * 10 }+; Out.ar(0, Array.fill(2, insects)) }.play
+ gr/fwalk.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/h-chatter.hs view
@@ -0,0 +1,33 @@+-- 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/h-chatter.scd view
@@ -0,0 +1,18 @@+{ var h0 = { var n = LFNoise0.kr(1, 5, 5)+           ; var a = LFNoise0.kr(1, 0.2, 1.2)+           ; var b = LFNoise0.kr(1, 0.15, 0.15)+           ; var f = 40+           ; var h = HenonN.ar([f, f * 0.5], a, b, 0, 0)+           ; Saw.ar(h * 3200 + 1600) * 0.35 }+; var h1 = { var n0 = LFNoise0.kr(32)+           ; var n1 = LFNoise0.kr(2)+           ; var a = MouseX.kr(1.2, 1.4, 'linear', 0.1)+           ; var b = MouseY.kr(0.2, 0.3, 'linear', 0.1)+           ; var h = n0.range(1, 32)+           ; var p = n1.range(2400, 3200)+           ; var l = n1.range(-0.75, 0.75)+           ; var g = n1.range(0.55, 0.85)+           ; var f = 40+           ; var o = Blip.ar(HenonN.ar(f, a, b, 0, 0).range(p, p * 2), h)+           ; Pan2.ar(o, l, g) * 0.35 }+; Out.ar(0, h0.value + h1.value) }.play
+ gr/half-life.hs view
@@ -0,0 +1,14 @@+-- half-life (jrhb)++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 'a' AR (n * log 2 * t_half)+  in mrg [activity,localOut activity]++main :: IO ()+main = audition (out 0 half_life)
+ gr/half-life.scd view
@@ -0,0 +1,6 @@+{ var t_half = 3.92+; var n_atoms = 1e+5+; var n = max(0, n_atoms - PulseCount.ar(LocalIn.ar(2), 0))+; var activity = Dust.ar(n * 2.log / t_half)+; LocalOut.ar(activity)+; Out.ar(0, activity) }.play
+ gr/hansm.hs view
@@ -0,0 +1,105 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/457 (f0)+-- http://obiwannabe.co.uk/tutorials/html/tutorial_birds.html++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 >> pauseThread 1.25+  withSC3 (mapM_ fn xs)
+ gr/harmonic-swimming-m.hs view
@@ -0,0 +1,18 @@+-- harmonic swimming (jmcc)++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
+ gr/harmonic-swimming.hs view
@@ -0,0 +1,19 @@+-- harmonic swimming (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU {- 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)
+ gr/harmonic-swimming.scd view
@@ -0,0 +1,10 @@+{ var a = 0.02+; var f = 50+; var p = 20+; var l = Line.kr(0, a.neg, 60, 0)+; var o = { arg h+          ; var r = 6 + [Rand.new(-4, 4), Rand.new(-4, 4)]+          ; var n = LFNoise1.kr(r)+          ; var e = max(0, n * a + l)+          ; FSinOsc.ar(f * (h + 1), 0) * e }+; Out.ar(0, (0..p).collect(o).sum) }.play
+ gr/harmonic-tumbling.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)+  return.sum =<< mapM o [0..p]++main :: IO ()+main = audition . out 0 =<< harmonic_tumbling
+ gr/harmonic-tumbling.scd view
@@ -0,0 +1,9 @@+{var f = 80+;var p = 10+;var t = XLine.kr([10,11],0.1,60,doneAction: 0)+;var o = {arg h+         ;var n = Dust.kr(t)+         ;var r = Rand.new(0,0.5)+         ;var e = Decay2.kr(n * 0.02,0.005,r)+         ;FSinOsc.ar(f * (h + 1),0) * e}+;Out.ar(0,(0..p).collect(o).sum)}.play
+ gr/hell-is-busy.hs view
@@ -0,0 +1,13 @@+-- hell is busy (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++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++main :: IO ()+main = overlapTextureU (4,4,8,maxBound) hib
+ gr/hell-is-busy.scd view
@@ -0,0 +1,2 @@+var o = FSinOsc.ar(400+2000.0.rand,LFPulse.kr(1+10.0.rand,0.7.rand,0.04));+{OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},4,4,8,2)}.play
+ gr/hh-808.hs view
@@ -0,0 +1,31 @@+-- hh-808 (ryan at wabdo.com)+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html++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)+
+ gr/implosion.hs view
@@ -0,0 +1,36 @@+-- 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.hs view
@@ -0,0 +1,21 @@+-- 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
@@ -0,0 +1,17 @@+-- http://sccode.org/1-Z (jl)++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+        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)
+ gr/jl-1-Z.scd view
@@ -0,0 +1,16 @@+~jl_1_z =+    {var a = Impulse.kr(8,0).lag(0.1)+    ;var b = Crackle.ar(LFSaw.kr(3,0).abs.lag(0.1) * 1.8)+    ;var c = a * b+    ;var d = (Impulse.kr(2,0) + Impulse.kr(4,0.5)).lag(0.1)+    ;var e = Blip.ar(4.9,7) * 0.4+    ;var f = d * e+    ;tanh(c + GVerb.ar(f,1,1,0.5,0.5,15,1,0.7,0.5,300) * 5) * 2}++~jl_1_z.play+~jl_1_z.draw++/*+play{a=Impulse;tanh(a.kr(8).lag*Crackle.ar(LFSaw.kr(3).abs.lag*1.8)++GVerb.ar([a.kr(2)+a.kr(4,0.5)].lag*Blip.ar(4.9,7,0.4)!2,1,1)*5)}+*/
+ gr/k-ppr-m.hs view
@@ -0,0 +1,26 @@+-- 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+      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+  liftM2 (+) (clone 2 s1) (clone 2 s2)++main :: IO ()+main = audition . out 0 =<< k_ppr_m
+ gr/k-ppr.hs view
@@ -0,0 +1,26 @@+-- k-ppr (rd)++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+      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 '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++main :: IO ()+main = audition (out 0 k_ppr)
+ gr/k-ppr.scd view
@@ -0,0 +1,14 @@+{ var x = MouseX.kr(0.05, 0.35, 'linear', 0.1)+; var y = MouseY.kr(0.15, 0.75, 'linear', 0.1)+; var ti = LFTri.kr(x, 0)+; var tf = ti.range(100, 200)+; var t = Impulse.ar(tf, 0)+; var stream = { arg lf, rf, ld, rd, g+               ; { var r1 = Rand.new(9, 18)+                 ; var t_ = PulseDivider.ar(t, r1, 0)+                 ; var r2 = TRand.ar(lf, ti.range(lf, rf), t_)+                 ; var r3 = TRand.ar(ld, rd, t_)+                 ; Ringz.ar(Decay2.ar(t_, 0.01, 0.5), r2, r3 * y) * g } }+; var s1 = stream.value(3140, 6240, 0.050, 0.005, 0.15)+; var s2 = stream.value(0400, 9000, 0.005, 0.005, 0.15)+; Out.ar(0, Array.fill(2, s1) + Array.fill(2, s2)) }.play
+ gr/k2ws.hs view
@@ -0,0 +1,22 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html (mn)++import Sound.SC3.ID {- hsc3 -}++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)+        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)+        a = rlpf x rf rq+        ph = a * rng (1.0,4.0) (lfNoise1 'd' AR 0.1) * 4 * pi+    in sinOsc AR 0.2 ph * 0.5++main :: IO ()+main = audition (out 0 k2ws)
+ gr/k2ws.scd view
@@ -0,0 +1,12 @@+// https://www.listarc.bham.ac.uk/lists/sc-users/msg21341.html++{var fc = 400 + LFNoise2.ar([1,2]).range(100,200)+;var fm = LFNoise0.ar(5).range(100,200)+;var i = LFNoise1.ar(10).range(1,20)+;var x = SinOsc.ar(fc + (SinOsc.ar(fm) * i * fm)) * 0.5+;var rf = SinOsc.ar(LFNoise1.ar(1).range(0.1,1)).range(1000,2000)+;var rq = LFNoise1.ar(1).range(0.5,10)+;var a = RLPF.ar(x, rf, rq)+;var ph = a * LFNoise1.ar(0.1).range(1.0,4.0) * 4pi+;var o = SinOsc.ar(0.2,ph) * 0.5+;Out.ar(0,o)}.play
+ gr/kabelscahden.hs view
@@ -0,0 +1,24 @@+-- march 2003 (adc) / (jrhb)++import Sound.SC3.ID {- hsc3 -}++kabelScahden :: UGen+kabelScahden =+    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)+              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:
+ gr/kabelscahden.scd view
@@ -0,0 +1,16 @@+SynthDef(\kabelScahden,{+arg out,freq = 50,sustain = 1,amp = 1;+var h,n,m,k,trig,hum;+hum = {+ trig = Dust.kr(7 ** LFNoise1.kr(0.3));+ h = ToggleFF.kr(CoinGate.kr(0.4,trig)) * RLPF.ar(LFPulse.ar(freq,0,0.5,1,LFNoise1.kr(2,0.5,-0.5)),6000,0.15);+ n = Trig.ar(trig,TRand.kr(0,0.01,CoinGate.kr(0.4,trig))) * WhiteNoise.ar;+ m = Trig.ar(trig,TRand.kr(0,0.01,CoinGate.kr(0.4,trig))) * BrownNoise.ar;+ k = Trig.ar(trig,LFNoise1.kr([4,4.2],0.1,0.11)) * LFClipNoise.ar(LFNoise0.kr(7,30,40));+ LeakDC.ar(h + n + k + m * 10).distort;} ! 2;+Out.ar(out,hum.clip2 * EnvGen.kr(Env([amp,amp,0] * 0.5,[sustain,0]),doneAction: 2));+}).play;++// Local Variables:+// truncate-lines:t+// End:
+ gr/karplus-strong.hs view
@@ -0,0 +1,47 @@+-- http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/ (am)++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 'a' AR+        d = dust 'a' 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
+ gr/klink.hs view
@@ -0,0 +1,19 @@+-- klink (rd)++import Sound.SC3.ID {- hsc3 -}++klink :: UGen+klink =+  let n1 = lfNoise0 'a' 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+  in ringz i n2 (n3 * y)++main :: IO ()+main = audition (out 0 klink)
+ gr/klink.scd view
@@ -0,0 +1,10 @@+{var n1 = LFNoise0.kr([0.5,1.5])+;var o = SinOsc.kr(n1,0)+;var a = Slope.kr(o).abs * [2,3]+;var t = Impulse.ar(a,0)+;var i = Decay2.ar(t,0.01,0.1)+;var x = MouseX.kr(960,3620,'exponential',0.2)+;var y = MouseY.kr(0.5,2.0,'linear',0.2)+;var n2 = TRand.ar(x,3940,t)+;var n3 = TRand.ar(0.005,0.275,t)+;Out.ar(0,Ringz.ar(i,n2,n3 * y))}.play
+ gr/laser-bubble.hs view
@@ -0,0 +1,21 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg14775.html++import Sound.SC3.ID {- hsc3 -}++laser_bubble_f :: ID a => a -> UGen+laser_bubble_f z =+    let xr = dxrand z dinf (mce [0.1,0.2,0.3,0.4,0.5])+        lf = dstutter z 2 xr+        du = duty AR lf 0 DoNothing lf+        tr = abs (hpz1 du) >* 0+        ph = sweep tr (1/du)+    in linExp ph 0 1 (rand z 50 100) (rand z 500 2000)++laser_bubble :: Int -> UGen+laser_bubble n =+    let f = mce (map laser_bubble_f (take n ['a'..]))+        [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++main :: IO ()+main = audition (out 0 (laser_bubble 8 * 0.5))
+ gr/laser-bubble.scd view
@@ -0,0 +1,12 @@+/* https://www.listarc.bham.ac.uk/lists/sc-users/msg14775.html */++{var fn =+  {var lfo = Dstutter(2, Dxrand([0.1,0.2,0.3,0.4,0.5],inf))+  ;var dur = Duty.ar(lfo, 0, lfo)+  ;var trg = HPZ1.ar(dur).abs>0+  ;var pha = Sweep.ar(trg, 1/dur)+  ;pha.linexp(0, 1, rrand(50,100), rrand(500,2000))}+;var freqs = 8.collect(fn)+;var sig = Splay.ar(SinOsc.ar(freqs))+;Limiter.ar(Rotate2.ar(sig[0],sig[1],LFSaw.kr(0.1)))}.play+
+ gr/lf-pulses.hs view
@@ -0,0 +1,16 @@+-- lf pulses (rd)++import Sound.SC3.ID {- hsc3 -}++lf_pulses :: UGen+lf_pulses =+  let n0 = lfNoise0 'a' AR (mce2 20 40)+      n1 = lfNoise0 'a' 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)+
+ gr/lf-pulses.scd view
@@ -0,0 +1,6 @@+{ var n0 = LFNoise0.ar([20, 40])+; var n1 = LFNoise0.ar([5, 10])+; var x = MouseX.kr(0.012, 0.19, 'exponential', 0.1)+; var f = Formlet.ar(Blip.ar(10, 12), n0 * 43 + 700, 0.005, x)+; var o = SinOsc.ar(40, 0) * n1+; Out.ar(0, LeakDC.ar(f + o, 0.995).clip2(0.75)) }.play
+ gr/lfo-modulation.hs view
@@ -0,0 +1,10 @@+-- lfo modulation (jmcc)++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))
+ gr/lfo-modulation.scd view
@@ -0,0 +1,4 @@+{var o = FSinOsc.kr(0.05,0,80,160)+;var p = FSinOsc.kr([0.6,0.7],0,3600,4000)+;var s = RLPF.ar(LFPulse.ar(o,0,0.4,0.05),p,0.2)+;Out.ar(0,CombL.ar(s,0.3,[0.2,0.25],2))}.play
+ gr/lg-timed.hs view
@@ -0,0 +1,25 @@+-- 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/lg-timed.scd view
@@ -0,0 +1,19 @@+{ var dcons = { arg x, xs+              ; var i = Dseq.new([0, 1], 1)+              ; var a = Dseq.new([x, xs], 1)+              ; Dswitch.new(a, i) }+; var timed = { arg r, y, p+              ; var d0 = Dser.new(p, r)+              ; var d1 = dcons.value(0, d0)+              ; var d2 = Dser.new(y, r)+              ; var t = TDuty.ar(d1, 0, d2, 2, 1)+              ; Latch.ar(t, t) }+; var lg = { arg u+           ; Lag.ar(u, 0.03) }+; var n = [52, 76, 66, 67, 68, 69]+; var a = [0.35, 0.15, 0.04, 0.05, 0.16, 0.07]+; var d = [0.1, 0.5, 0.09, 0.08, 0.07, 0.3]+; var x = MouseX.kr(0.5, 1.25, 'linear', 0.2)+; var tn = lg.value(timed.value(inf, n, d * x))+; var ta = lg.value(timed.value(inf, a, d * x))+; Out.ar(0, SinOsc.ar(tn.midicps, 0) * ta) }.play
+ gr/lin-sosc.hs view
@@ -0,0 +1,92 @@+-- lin-sosc (rd)++import Control.Concurrent+import Control.Monad+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 ()
+ gr/lso-061101.hs view
@@ -0,0 +1,111 @@+-- | 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/lucier.hs view
@@ -0,0 +1,60 @@+{-+Alvin Lucier, "Music on a Long Thin Wire, Simulated"+Chandrasekhar Ramakrishnan+http://www.listarc.bham.ac.uk/lists/sc-users/msg47539.html+http://www.listarc.bham.ac.uk/lists/sc-users/msg47540.html+-}++import Sound.SC3.ID {- hsc3 -}++lucier_wire :: UGen -> UGen+lucier_wire freq =+    let block_size = recip controlRate+        mk_dt f = recip f - block_size+        string_delay = mk_dt freq+        pk1_pos = 0.1 -- pickup one position+        src_pos = 0.3 -- source position+        pk2_pos = 0.9 -- pickup two postion+        max_delay = 1.0 -- maximum delay time (corresponds to a length = c * s)+        mk_delay i r = lpz1 (delayC i max_delay (r * string_delay))+        mk_allpass i r dt = lpz1 (allpassC i max_delay (r * string_delay) dt)+        drv = localIn 1 AR -- driver (source + data stored in the string)+        pk1_R =+            let i = drv+                r = src_pos - pk1_pos+            in mk_delay i r+        pk1_L =+            let i = pk1_R * negate 1+                r = pk1_pos * 2+                dt = rand 'α' 0.001 0.11+            in mk_allpass i r dt+        pk2_L =+            let i = pk1_L+                r = pk2_pos - pk1_pos+            in mk_delay i r * 0.99+        stringL =+            let i = pk2_L+                r = 1.0 - pk2_pos+            in mk_delay i r+        pk2_R =+            let i = stringL * negate 1+                r = 1.0 - pk2_pos+                dt = 2 + rand 'β' 0.001 0.11+            in mk_allpass i r dt * 0.99+        stringR =+            let i = pk2_R+                r = pk2_pos - src_pos+            in mk_delay i r+        source =+            let s = sinOsc AR 220 0 * 0.01+                p = pulse AR (60 + amplitude KR drv 0.01 0.01 * 11) 0.5 * 0.1+                f = rlpf (s + p) 320 0.05+                e = 1.0 - min (amplitude KR drv 0.01 0.01) 1.0+            in normalizer f 0.7 0.01 * e+        l_out = localOut (source * 0.2 + stringR)+        outL = pk1_L + pk1_R+        outR = pk2_L + pk2_R+    in mrg [mce2 outL outR, drv, source, l_out]++main :: IO ()+main = audition (out 0 (lucier_wire 60))
+ gr/lucier.scd view
@@ -0,0 +1,28 @@+{ var blocksize = ControlRate.ir.reciprocal+; var mk_dt = { |f| f.reciprocal - blocksize }+; var string_dt = mk_dt.(60)+; var c = 425+; var len = 40+; var pk1_p = 0.1+; var src_p = 0.3+; var pk2_p = 0.9+; var max_dt = 1+; var mk_dl = { arg i, r+                 ; LPZ1.ar(DelayC.ar(i, max_dt, r * string_dt)) }+; var mk_ap = { arg i, r, dt+	          ; LPZ1.ar(AllpassC.ar(i, max_dt, r * string_dt, dt)) }+; var drv = LocalIn.ar(1)+; var r = { Rand(0.001, 0.11) }+; var pk1_R = mk_dl.(drv, src_p - pk1_p, 2 + r.())+; var pk1_L = mk_ap.(pk1_R * -1, pk1_p * 2, r.())+; var pk2_L = mk_dl.(pk1_L, pk2_p - pk1_p, r.()) * 0.99+; var strL = mk_dl.(pk2_L, 1 - pk2_p, r.())+; var pk2_R = mk_ap.(strL * -1, 1 - pk2_p, 2 + r.()) * 0.99+; var strR = mk_dl.(pk2_R, pk2_p - src_p, 2 + r.())+; var src = { var a = Amplitude.kr(drv, mul: 11)+            ; p = Pulse.ar(60 + a, mul: 0.1)+            ; RLPF.ar((SinOsc.ar(220, 0) * 0.01) + p, 320, 0.05) }+; var src_n = { var a = Amplitude.kr(drv).min(1.0)+              ; Normalizer.ar(src, 0.7) * (1.0 - a) }+; LocalOut.ar(src * 0.2 + strR)+; [pk1_L + pk1_R, pk2_L + pk2_R, drv, src] }.play
+ gr/m21360.hs view
@@ -0,0 +1,35 @@+-- https://www.listarc.bham.ac.uk/lists/sc-users/msg21360.html++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}++-- > withSC3 (reset >> init_b [0,1])+init_b :: Transport m => [Int] -> m ()+init_b b = do+  sr <- serverSampleRateNominal+  let f n = async (b_alloc n (floor sr) 1)+  mapM_ f b++-- > 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+        loc = mce [-1,-0.7,0.6,1]+        hpp = mce [rand 'a' 300 600,rand 'a' 900 1200]+        avg = mce [8000,14000]+        sdt = mce [300,400]+        lpp = mce [rand 'a' 4300 4500,rand 'a' 4000 4200]+        sr = sampleRate+        local = localIn 2 AR+        wn = line KR 0 1 0.1 DoNothing * whiteNoise 'a' AR * 0.03+        ph = delTapWr AR b (wn + local)+        fb = delTapRd b ph del 1+        p_fb = mix (pan2 fb loc 1)+        h_fb = hpf p_fb hpp+        ao = averageOutput (abs h_fb) (impulse KR (recip (avg / sr)) 0)+        n_fb = h_fb * (0.02 / clip (lag ao (sdt / sr)) 0.0001 1)+        l_fb = lpf n_fb lpp+    in mrg [localOut l_fb,out 0 l_fb]++main :: IO ()+main = withSC3 (reset >> init_b [0,1] >> play (m21360 (mce [0,1])))
+ gr/m21360.scd view
@@ -0,0 +1,22 @@+// https://www.listarc.bham.ac.uk/lists/sc-users/msg21360.html++b = Array.fill(2,{Buffer.alloc(s,s.sampleRate * 1,1)});++{var del = [0.2,0.3,0.4,0.5] * Rand(0.15,0.35)+;var loc = [-1,-0.7,0.6,1]+;var hpf = [Rand(300,600),Rand(900,1200)]+;var avg = [8000,14000]+;var sdt = [300,400]+;var lpf = [Rand(4300,4500),Rand(4000,4200)]+;var sr = SampleRate.ir+;var local = LocalIn.ar(2)+;var sig = Line.kr(0,1,0.1) * WhiteNoise.ar(0.03)+;var ph = DelTapWr.ar(b,sig + local)+;var fb = DelTapRd.ar(b,ph,del)+;var p_fb = Pan2.ar(fb,loc).sum+;var h_fb = HPF.ar(p_fb,hpf)+;var ao = AverageOutput.ar(abs(h_fb),Impulse.kr((avg / sr).reciprocal))+;var n_fb = h_fb * (0.02 / (Lag.ar(ao,sdt / sr).clip(0.0001,1)))+;var l_fb = LPF.ar(n_fb,lpf)+;LocalOut.ar(l_fb)+;Out.ar(0,l_fb)}.play;
+ gr/microhelix.hs view
@@ -0,0 +1,56 @@+-- Batuhan Bozkurt 2009 http://www.earslap.com++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+        ctrigs_ z_ =+            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+        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+        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+        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+        bass =+            let t = mceChannel 0 ctrigs * trigMod+                ph = sweep t (2 * pi * mce2 52.8 740) + (pi/3)+                ph' = wrap ph (-pi) pi+                mean u = mceSum u / fromIntegral (mceDegree u)+                o = tanh (mean (sinOsc AR 0 ph' * mce2 2 0.05))+                d = Envelope [0, 0.5, 0.4, 0] [0, 0.2, 0.01] [EnvNum (-5)] Nothing Nothing+                e = envGen AR (abs t) 1 0 1 DoNothing d+            in o * e * 0.25+        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+    in limiter (midEQ (clicks + snd1' + hiNoise + bass) 14000 0.7 8) 1 0.01++main :: IO ()+main = audition (out 0 microhelix)
+ gr/modal-space.hs view
@@ -0,0 +1,30 @@+-- modal space (jmcc)++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
+ gr/modal-space.scd view
@@ -0,0 +1,17 @@+{var s = Server.default+;var b = 0+;var p = FloatArray[0,2,3.2,5,7,9,10]+;var x = MouseX.kr(0,15,'linear',0.1)+;var k = DegreeToKey.kr(b,x,12)+;var c = {arg n,r+         ;var o = SinOsc.ar((r + k + (n * 0.04)).midicps,0) * 0.1+         ;var t = LFPulse.ar([48,55].midicps,0.15,0.5)+         ;var f = (SinOsc.kr(0.1,0) * 10 + r).midicps+         ;var d = RLPF.ar(t,f,0.1) * 0.1+         ;var m = o + d+         ;CombN.ar(m,0.31,0.31,2) + m}+;var n = LFNoise1.kr([3,3])+;var b_setn1 = {arg b,i,p+               ;["/b_setn",b,i,p.size] ++ p}+;s.sendMsg("/b_alloc",b,p.size,1,b_setn1.value(b,0,p).asRawOSC)+;Out.ar(0,(c.value(n,48) + c.value(n,72)) * 0.25)}.play
+ gr/moto-rev.hs view
@@ -0,0 +1,12 @@+-- moto rev (jmcc)++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)
+ gr/moto-rev.scd view
@@ -0,0 +1,3 @@+{ var f = SinOsc.kr(0.2, 0) * 10 + 21+; var s = LFPulse.ar(f, [0, 0.1], 0.1)+; Out.ar(0, RLPF.ar(s, 100, 0.1).clip2(0.4)) }.play
+ gr/mouse-clatter-m.hs view
@@ -0,0 +1,32 @@+-- mouse clatter (rd)++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);+-}
+ gr/mouse-clatter.scd view
@@ -0,0 +1,14 @@+{var x = MouseX.kr(100,12000,'linear',0.1)+;var y = MouseY.kr(0.01,0.15,'linear',0.1)+;var n1 = LFNoise0.kr([3,3.25])+;var t = Impulse.kr((n1 * 16) + 18,0)+;var n2 = TRand.kr(0.005,y,t)+;var n3 = WhiteNoise.ar()+;var n4 = TRand.kr(10,x,t)+;var n5 = TRand.kr(0,1,t)+;var n6 = TExpRand.kr(0.15,1,t)+;var o = {var e = Decay2.kr(t,0.01,n2)+         ;BPF.ar(n3 * e,n4,n5)}+;var n7 = PV_RandComb(FFT(10,o),n6,t)+;var s = (o * 0.05) + IFFT(n7)+;Out.ar(0,s)}.play
+ gr/mridangam.hs view
@@ -0,0 +1,60 @@+-- mridangam (jmcc)++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}++spe3_mridangam :: Synthdef+spe3_mridangam =+    let t_amp = tr_control "t_amp" 1+        n = whiteNoise 'a' 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 :: [P Double]+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 'a' [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 p' = pmono_d spe3_mridangam 100 [("t_amp",pseq p 1),("dur",1/8)]+  play p'++main :: IO ()+main = withSC3 act
+ gr/music-box.hs view
@@ -0,0 +1,79 @@+-- http://sccode.org/1-1Kl+-- partial...++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID++chain :: a -> [a -> a] -> a+chain n c =+    case c of+      [] -> n+      f:c' -> chain (f n) c'++ping :: UGen+ping =+    let o = control KR "out" 0+        f = control KR "freq" 440+        a = control KR "amp" 0.1+        ed = control KR "impdecay" 0.01+        ea = control KR "attack" 0.0001+        es = control KR "sustain" 0.1+        fa = control KR "famt" 3+        ff = control KR "ffreq" 1000+        hd = control KR "hdur" 0.1+        tr = impulse AR 0 0+        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]+                           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+                           in s * envGen AR 1 1 0 1 RemoveSynth e]+    in offsetOut o (r * mce2 a a)++pattern :: P Event+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)]++amplitude_mod :: (ID a, Enum a) => a -> UGen -> UGen+amplitude_mod z i =+    let a = range 0.001 0.1 (lfNoise2 z KR 0.1)+        f = range (midiCPS 60) (midiCPS 61) (lfNoise2 (succ z) KR 0.1)+    in i * (sinOsc AR (f/4) 0 * a + (1 - a))++limiting :: UGen -> UGen+limiting i = compander i i 0.1 1 0.3 1e-2 0.1++post :: Transport m => String -> Int -> UGen -> (UGen -> UGen) -> m ()+post nm nc b f = do+  let i = in' nc AR b+      s = synthdef nm (replaceOut b (f i))+  _ <- async (d_recv s)+  send (s_new nm (-1) AddToTail 2 [])++main :: IO ()+main = do+  let s = synthdef "ping" ping+  withSC3 (do post "amplitude_mod" 2 0 (amplitude_mod 'a')+              post "limiting" 2 0 limiting)+  audition (s,pattern)
+ gr/nharm-p.hs view
@@ -0,0 +1,38 @@+-- nharm-p++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++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 = (Double,Double)++{- 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 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++main :: IO ()+main = audition (pmerge (pN 24 (90,92) (0.25,0.75))+                        (pN 54 (12,14) (1.25,1.76)))
+ gr/nharm.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/noise-burst-sweep.hs view
@@ -0,0 +1,21 @@+-- noise burst sweep (jmcc)++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 'α'))+-}
+ gr/noise-burst-sweep.scd view
@@ -0,0 +1,6 @@+{var n = WhiteNoise.ar ! 2+;var lfoRate = MouseX.kr(10,60,'exponential',0.2)+;var amp = max(0,LFSaw.kr(lfoRate,-1))+;var cfreq = MouseY.kr(400,8000,'exponential',0.2)+;var freq = SinOsc.kr(0.2,0) * cfreq + (1.05 * cfreq)+;Out.ar(0,Resonz.ar(n * amp,freq,0.1))}.play
+ gr/noise-modulated-sines.hs view
@@ -0,0 +1,17 @@+-- noise modulated sines (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++nms :: UGen+nms =+    let f = midiCPS (rand 'a' 60 100)+        o = fSinOsc AR (mce2 f (f + 0.2)) 0+        a = lfNoise2 'b' 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
+ gr/nokia.hs view
@@ -0,0 +1,54 @@+-- http://tai-studio.org/index.php/2012/02/alarm-clock-sound/+-- 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++grain :: UGen+grain =+    let o = control KR "out" 0+        freq' = control KR "freq" 100+        attack = control KR "attack" 0+        decay' = control KR "decay" 1+        sustain' = 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'+        env l t = Envelope l t [] Nothing Nothing+        aEnv = let e = envPerc attack decay'+               in envGen AR 1 amp' 0 sustain' 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 (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))++main :: IO ()+main =+    let f = concat (replicate 12 [1200, 800, 600, 200])+    in audition (pinstr grain_ip (ppar (map pattern (zip f ['a'..]))))
+ gr/non-real-time.hs view
@@ -0,0 +1,32 @@+import Sound.OSC {- hosc -}+import Sound.SC3 {- hsc3 -}+import System.Cmd {- process -}++graph :: UGen+graph =+    let f = control KR "freq" 440+        g = control KR "gain" 0.1+        e = envGen KR 1 1 0 1 RemoveSynth (envPerc 0.1 1.0)+        o = sinOsc AR f 0 * e+    in out 0 (pan2 o 0 g)++-- > audition score+score :: NRT+score =+    let at t = Bundle (NTPr t)+        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)]]+        notes = take 128 (zipWith mk_synth [1.0, 1.05 ..] [330, 350 ..])+    in NRT (at 0.0 [mk_instr, mk_group] : notes)++render :: NRT -> IO ()+render s = do+  writeNRT "/tmp/nrt.score" s+  _ <- system "scsynth -N /tmp/nrt.score _ /tmp/nrt.wav 44100 WAVE float"+  return ()++main :: IO ()+main = do+  render score+  audition score
+ gr/nv-tw-1.hs view
@@ -0,0 +1,16 @@+-- http://sccode.org/1-V (nv)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect++nv_tw_1 :: UGen+nv_tw_1 =+    let a = uclone 'a' 2 (pinkNoise 'a' AR)+        nd z =+            let n = lfNoise1 'a' KR (rand 'a' 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++main :: IO ()+main = audition (out 0 nv_tw_1)
+ gr/nv-tw-1.scd view
@@ -0,0 +1,6 @@+{a = PinkNoise.ar(1 ! 2)+;50.do(+ {f = LFNoise1.kr(0.05.rand).exprange(40,15000)+ ;a = BBandStop.ar(a,f,exprand(0.1,2))})+;LPF.ar(a,1e5)+}.play
+ gr/nv-tw-41.hs view
@@ -0,0 +1,16 @@+-- http://sccode.org/1-V (nv)++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)
+ gr/nv-tw-41.scd view
@@ -0,0 +1,7 @@+{x = Splay.ar(+ {arg i+ ;t = 0.6 ** i * 40 * Impulse.ar(2 ** i / 32,1 / 2)+ ;f = 4 ** LFNoise0.kr(1 / 16) * 300+ ;RLPF.ar(t,f,5e-3).sin} ! 8)+;2.do{x=FreeVerb2.ar(*x ++ [0.1,1,1])}+;x}.play
+ gr/nv-tw-54.hs view
@@ -0,0 +1,28 @@+-- http://sccode.org/1-V (nv)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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 = audition (nvi,pbind [("f",fromList fS)+                           ,("i",pseries 0 1 inf)+                           ,("dur",0.3)])
+ gr/nv-tw-54.scd view
@@ -0,0 +1,8 @@+f = 0;+{inf.do(+ {arg i+ ;var n = ((((2 * i) % 6) + 1) + f.floor) / ((i % 5) + 1)+ ;f = (f + n.log2) % 2+ ;{var e = Line.kr(0.1,0,1,1,0,2)+  ;SyncSaw.ar(2 ** f * 99 + [0,1],i % 8 + 2 * 52) * e}.play+ ;0.3.wait})}.r.play
+ gr/nx102.hs view
@@ -0,0 +1,29 @@+-- http://sccode.org/1-4QO++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+        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)+        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+        s = rhpf (rlpf o lrf lrq) hrf hrq+        v = freeVerb s 0 0 0+        pk i n k = bPeakEQ i n 6.0 k+        q = pk (pk (pk (pk v 100 6) 1000 0) 5000 0) 10000 6+    in pan2 (leakDC (normalizer q 1.25 0.1) 0) 0 1++main :: IO ()+main =+    let fn = "/home/rohan/data/audio/pf-c5.aif"+        ac = do _ <- async (b_allocRead 1 fn 0 0)+                play (overlapTextureP (6,3,9,maxBound) nx102)+    in withSC3 ac
+ gr/nx102.scd view
@@ -0,0 +1,17 @@+// http://sccode.org/1-4QO++b = Buffer.read(s,Platform.resourceDir +/+ "sounds/a11wlk01.wav",bufnum:1);++{var r = Rand(50,100)+;var b = PlayBuf.kr(1,1,r,1,0,1)+;var f = (b * Rand(100,1000)).clip(Rand(5,12),Rand(12,20))+;var o = Pulse.ar(f)+;var lrf = Rand(100,5000)+;var lrq = Rand(0.005,0.1)+;var hrf = Rand(5000,20000)+;var hrq = Rand(0.005,0.1)+;var s = RHPF.ar(RLPF.ar(o,lrf,lrq),hrf,hrq)+;var v = FreeVerb.ar(s,0,0,0)+;var pk = {|i,n,k| BPeakEQ.ar(i,n,6.0,k)}+;var q = pk.(pk.(pk.(pk.(v,100,6),1000,0),5000,0),10000,6)+;Pan2.ar(LeakDC.ar(Normalizer.ar(q,1.25,0.1)),0)}.play
+ gr/one-line.hs view
@@ -0,0 +1,14 @@+-- one-line (lance putnam)++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)+
+ gr/one-line.scd view
@@ -0,0 +1,4 @@+{var lfs = LFSaw.ar([1,0.99],[0,0.6],2000,2000)+;var lfs_t = lfs.trunc([400,600]) * [1,-1]+;var f = OnePole.ar(Mix.new(lfs_t),0.98)+;Out.ar(0,Pan2.ar(SinOsc.ar(f,0),0,0.1))}.play
+ gr/oscillator-cluster.hs view
@@ -0,0 +1,34 @@+-- 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/oscillator-cluster.scd view
@@ -0,0 +1,23 @@+{var ln = {arg a,b,d;Line.kr(a,b,d,1)}+;var xln = {arg a,b,d;XLine.kr(a,b,d,1)}+;var rln = {arg r,a,b,d+           ;var n = Rand.new(0,r)+           ;ln.value(a + n,b,d)}+;var rxln = {arg r,a,b,d+            ;var n = Rand.new(0,r)+            ;xln.value(a + n,b,d)}+;var prt = {arg d,a+           ;{arg cf+            ;var r1 = Rand.new(cf,cf + 2)+            ;var r2 = rln.value(1,5,0.01,d)+            ;var r3 = rln.value(10,20,0,d)+            ;var r4 = Rand.new(0.1,0.2)+            ;var f = [cf,r1] + (SinOsc.kr(r2,0) * r3)+            ;var o = FSinOsc.ar(f,0)+            ;var e = Decay2.ar(Impulse.ar(0,0),r4,d) * a+            ;o * e}}+;var np = 12+;var fp = Array.fill(np,{Rand.new(220,660)})+;var d = Rand.new(4,7)+;var a = Rand.new(0.01,0.05)+;Out.ar(0,fp.collect(prt.value(d,a)).sum)}.play
+ gr/overlap-add.hs view
@@ -0,0 +1,22 @@+-- overlap-add (jmcc, rd)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID++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])
+ gr/pattern-buffer.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/pebble-beach.hs view
@@ -0,0 +1,43 @@+-- pebble beach (np)+-- http://sccode.org/1-u+-- requires 'scsynth -u 57110 -m 32768'++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)
+ gr/pkt-26.hs view
@@ -0,0 +1,21 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)++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)))
+ gr/pkt-26.scd view
@@ -0,0 +1,18 @@+// http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)++{n = 8+;x =+ {arg i+ ;t = i/n+ ;a = VarSaw.ar(0.02, t, 0.5, 7.5).abs+ ;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.ar(VarSaw.ar(o, t))+ ;Pan2.ar(z, VarSaw.ar(0.02, t, 0.5), 1/n)}+;{Mix(x!n)}}.play
+ gr/pkt-28.hs view
@@ -0,0 +1,24 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/490 (f0)++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))
+ gr/pkt-28.scd view
@@ -0,0 +1,20 @@+// http://www.fredrikolofsson.com/f0blog/?q=node/490++{n = 28+;x =+ {arg i+ ;a = LFSaw.ar(i + 1 * 5,0,0.5 * pi)+ ;b = SinOsc.ar(i + 1 * 0.001,0,0.5)+ ;c = LFSaw.ar(0.2 + b,i / n,0.4).max(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 = i.linexp(0,n - 1,70,1500)+ ;z = SinOsc.ar(k,a,c)* e * g * j+ ;l = i.linlin(0,n - 1,-0.925,0.925)+ ;Pan2.ar(z,l,1 / n)}+;y = Limiter.ar(LeakDC.ar(Mix(x ! n)))+;GVerb.ar(y,3,5,0.2,0.8,20,0.1)}.play
+ gr/plucked-strings.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)+  return.sum =<< sequence (replicate 5 s)++main :: IO ()+main = audition . out 0 =<< plucked_strings
+ gr/police-state.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.scd view
@@ -0,0 +1,14 @@+{var node = {var r0 = Rand.new(0.02,0.12)+            ;var r1 = Rand.new(0,2pi)+            ;var r2 = Rand.new(0,600)+            ;var r3 = 1000 + Rand.new(-300,300)+            ;var r4 = Rand.new(-1,1)+            ;var r5 = 100 + Rand.new(-20,20)+            ;var n0 = LFNoise2.ar(r5)+            ;var f = SinOsc.kr(r0,r1,r2,r3)+            ;Pan2.ar(SinOsc.ar(f,0) * n0 * 0.1,r4,1)}+;var n0 = LFNoise2.kr([0.4,0.4])+;var n1 = LFNoise2.ar(n0 * 90 + 620)+;var n2 = LFNoise2.kr([0.3,0.3])+;var e = n1 * (n2 * 0.15 + 0.18)+;Out.ar(0,CombL.ar(Mix.fill(4,node) + e,0.3,0.3,3))}.play
+ gr/pond-life.hs view
@@ -0,0 +1,14 @@+-- pond life (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++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++main :: IO ()+main = overlapTextureU (8,8,4,maxBound) pond_life
+ gr/pond-life.scd view
@@ -0,0 +1,3 @@+var f = FSinOsc.kr(20+30.0.rand,100+300.0.rand,500 + 2000.0.linrand);+var o = SinOsc.ar(f,0,LFPulse.kr(3/(1 + 8.0.rand),0.2+0.3.rand,0.04));+OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},8,8,4,2)
+ gr/proxy-mixer-m.hs view
@@ -0,0 +1,28 @@+-- > Sound.SC3.UGen.Help.viewSC3Help "ProxyMixer"++import Control.Monad {- base -}+import Sound.SC3.ID {- hsc3 -}+import qualified Sound.SC3.Lang.Random.IO as L {- hsc3-lang -}++mk_e :: IO (Envelope UGen)+mk_e = do+  l <- replicateM 11 (L.rand2 1)+  t <- replicateM 10 (L.rand 1)+  return (Envelope l t [EnvNum 0] (Just 9) (Just 0))++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+  let env = envGen KR 1 1 0 1 DoNothing e+      p = midiRatio (env * mce [1, 0.33, -1] * 19) * 250+  p' <- mce_scramble p+  p'' <- mce_scramble p+  let o = formant AR p (p' * 2) p''+  return (out 0 (splay o 1 1 0 True * 0.1))++main :: IO ()+main = pm >>= audition
+ gr/proxy-mixer.hs view
@@ -0,0 +1,24 @@+-- > Sound.SC3.UGen.Help.viewSC3Help "ProxyMixer"++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU {- sc3-rdu -}++randN_l :: ID z => Int -> z -> UGen -> UGen -> [UGen]+randN_l k z l = mceChannels . randN k z l++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+            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)+    in out 0 (splay o 1 1 0 True * 0.1)++main :: IO ()+main = audition pm
+ gr/pulsing-bottles-m.hs view
@@ -0,0 +1,21 @@+-- pulsing bottles (jmcc)++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+  return.sum =<< sequence (replicate 6 u)++main :: IO ()+main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
+ gr/pulsing-bottles.hs view
@@ -0,0 +1,24 @@+-- pulsing bottles (jmcc)++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)+-}
+ gr/pwm-crossfade.hs view
@@ -0,0 +1,18 @@+-- http://sccode.org/1-L (jl)++import Sound.SC3.ID {- hsc3 -}++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_ = 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)
+ gr/pwm-crossfade.scd view
@@ -0,0 +1,5 @@+{var n = [400,500,450,376,600]+;var d = 1/20+;var f = Demand.kr(Impulse.kr(d,[0,0.5]),0,Dseq(n,inf))+;var f_ = LFPulse.kr(8,0,LFTri.kr(d,1).range(0,1)).range(*f)+;LPF.ar(Saw.ar(f_.max(376) * [1,0.99],0.5),8000);}.play
+ gr/rails.hs view
@@ -0,0 +1,24 @@+-- rails (jmcc)++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++-- > Sound.SC3.UGen.Dot.draw rails+rails :: UGen+rails =+    let n = 20 -- resonant modes+        e = dust 'a' 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+        a = replicate n 1+        t = uclone' 'b' n (0.2 + rand 'e' 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
+ gr/rails.scd view
@@ -0,0 +1,9 @@+{var n = 20+;var e = Dust.ar(100,0.04)+;var f = XLine.kr(3000,300,8)+;var l = Line.kr(1.0.rand2,1.0.rand2,8)+;var r = Array.fill(n,{200 + 3000.0.linrand})+;var t = Array.fill(n,{0.2 + 1.0.rand})+;var k = Klank.ar(`[r,nil,t],Resonz.ar(e,f,0.2))+;Pan2.ar(k,l)+}.play
+ gr/rain-thunder.hs view
@@ -0,0 +1,20 @@+-- http://sccode.org/1-e (jl)++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+        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+        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)
+ gr/rain-thunder.scd view
@@ -0,0 +1,9 @@+{var n0 = PinkNoise.ar(0.08 + LFNoise1.kr(0.3,0.02))+;var d0 = LPF.ar(Dust2.ar(LFNoise1.kr(0.2).range(40,50)),7000)+;var e0 = Line.kr(0,1,10)+;var p0 = tanh(3 * GVerb.ar(HPF.ar(n0 + d0,400),250,100,0.25,drylevel:0.3) * e0)+;var n1 = PinkNoise.ar(LFNoise1.kr(3).clip(0,1) * LFNoise1.kr(2).clip(0,1) ** 1.8)+;var f1 = LFNoise1.kr(1).exprange(100,2500)+;var e1 = Line.kr(0,0.7,30)+;var p1 = GVerb.ar(LPF.ar(10 * HPF.ar(n1, 20),f1).tanh,270,30,0.7,drylevel:0.5) * e1+;Limiter.ar(p0 + p1)}.play
+ gr/random-panning-sines-m.hs view
@@ -0,0 +1,18 @@+-- random panning sines (jmcc)++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+              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
+ gr/random-panning-sines.hs view
@@ -0,0 +1,17 @@+-- random panning sines (jmcc)++import Sound.SC3.ID {- hsc3 -}+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)+             in pan2 o l a+    in mix (uclone 'a' 8 nd) * (0.4 / 8)++main :: IO ()+main = overlapTextureU (8,8,2,maxBound) rps
+ gr/random-pulsations.hs view
@@ -0,0 +1,14 @@+-- random pulsations (jmcc)++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
+ gr/random-sine-waves.hs view
@@ -0,0 +1,13 @@+-- random sine waves (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}++rsw :: UGen+rsw =+    let f = rand 'a' 0 2000+        o = fSinOsc AR f 0 * 0.02+    in pan2 o (rand 'b' (-1) 1) 1++main :: IO ()+main = overlapTextureU (2,5,12,maxBound) rsw
+ gr/random-sine-waves.scd view
@@ -0,0 +1,3 @@+var e = Env.linen(2,5,2);+var o = FSinOsc.ar(2000.0.rand,EnvGen.kr(e,1,0,0.02));+play({Spawn.ar({Pan2.ar(o,1.0.rand2)},2,9/12)})
+ gr/record-scratcher.hs view
@@ -0,0 +1,25 @@+-- record scratcher (josh parmenter)++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
+ gr/record-scratcher.scd view
@@ -0,0 +1,13 @@+{ var fn = "/home/rohan/audio/metal.wav"+; var b = 0+; var gate = 1+; var e = Env.new([0, 1, 0], [0.1, 0.1], \sin, 1, nil)+; var env = EnvGen.kr(e, gate, doneAction: 2)+; var x = MouseX.kr(-10, 10, 'linear', 0.2)+; var dx = x - DelayN.kr(x, 0.1, 0.1)+; var bdx = MouseButton.kr(1, 0, 0.3) + dx+; var bdxr = bdx * BufRateScale.kr(b)+; var scr = PlayBuf.ar(1, b, bdxr, 0, 0, 1)+; var s = Server.default+; s.sendMsg("/b_allocRead", b, fn, 0, 0)+; Out.ar(0, (scr * env).dup ) }.play
+ gr/red-frik.hs view
@@ -0,0 +1,25 @@+-- 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/red-frik.scd view
@@ -0,0 +1,13 @@+{ var red = { arg tr, n+            ; var r1 = TRand.kr(0.3, 3, tr)+            ; var r2 = TRand.kr(0.3, 5, tr)+            ; var r3 = TRand.kr(0, 0.5, tr)+            ; var r4 = TRand.kr(0.49, 0.56, tr)+            ; var r5 = TRand.kr(0.3, 0.6, tr)+            ; var r6 = TRand.kr(0.3, 0.5, tr)+            ; var o1 = FSinOsc.kr(r2, 0, r3, r4)+            ; var o2 = FSinOsc.kr(o1, r5, r6)+            ; RHPF.ar(n, r1, o2) }+; var n = [BrownNoise.ar, BrownNoise.ar]+; var tr = Impulse.kr(0.1, 0)+; Out.ar(0, red.value(tr, n)) }.play
+ gr/reset.hs view
@@ -0,0 +1,4 @@+import Sound.SC3 {- hsc3 -}++main :: IO ()+main = withSC3 reset
+ gr/resonant-dust.hs view
@@ -0,0 +1,15 @@+-- resonant dust (jmcc)++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
+ gr/reverberated-sine-percussion.hs view
@@ -0,0 +1,27 @@+-- 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/reverberated-sine-percussion.scd view
@@ -0,0 +1,15 @@+{var d = 6+;var c = 5+;var a = 4+;var s_ = {var n = Dust.ar(2 / d)+          ;var r = Rand.new(0,3000)+          ;Resonz.ar(n * 50,200 + r,0.003)}+;var s = Mix.ar(Array.fill(d,s_))+;var z = DelayN.ar(s,0.048)+;var y_ = LFNoise1.kr(Array.fill(c,{Rand.new(0,0.1)}),0.04,0.05)+;var y = Mix.ar(CombL.ar(z,0.1,y_,15))+;var x = y+;var x_ = {var r = [Rand.new(0,0.05),Rand.new(0,0.05)]+          ;x = AllpassN.ar(x,0.050,r,1)}+;a.do(x_)+;Out.ar(0,s + (0.2 * x))}.play
+ gr/ring-modulated-klank.hs view
@@ -0,0 +1,22 @@+-- ring modulated klank (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU {- 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)+-}
+ gr/rm-octaver.hs view
@@ -0,0 +1,15 @@+-- rm-octaver (andrea valle, miller puckette)++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)))
+ gr/rzblp-u.hs view
@@ -0,0 +1,27 @@+-- rzblp-u (rd)++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}++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++main :: IO ()+main = audition (out 0 rzblp)
+ gr/rzblp.hs view
@@ -0,0 +1,41 @@+-- rzblp (rd)++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++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 'a' drand + mk_f 'b' dxrand++main :: IO ()+main = audition (out 0 rzblp)
+ gr/s-chirp.hs view
@@ -0,0 +1,31 @@+-- s-chirp (rd)++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 '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)+      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+          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
+ gr/sam-i-am.hs view
@@ -0,0 +1,52 @@+-- http://www.listarc.bham.ac.uk/lists/sc-users/msg00280.html (jrhb)++import Control.Monad.Random {- MonadRandom -}+import Data.List {- base -}+import Data.Maybe+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Random.Monad+import Sound.SC3.Lang.Pattern.ID++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 => g -> [(String,[(String,Double)])]+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)])+    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)
+ gr/sample-and-hold-liquidities.hs view
@@ -0,0 +1,17 @@+-- sample and hold liquidities (jmcc)++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)
+ gr/sample-and-hold-liquidities.scd view
@@ -0,0 +1,8 @@+{var r = MouseX.kr(1,200,'exponential',0.1)+;var t = r.reciprocal+;var c = Impulse.kr(r,0.4)+;var cf = MouseY.kr(100,8000,'exponential',0.1)+;var f = Latch.kr(WhiteNoise.kr * cf * 0.5 + cf,c)+;var p = Latch.kr(WhiteNoise.kr,c)+;var i = Pan2.ar(SinOsc.ar(f,0,Decay2.kr(c,0.1 * t,0.9 * t)),p,1)+;Out.ar(0,CombN.ar(i,0.3,0.3,2))}.play
+ gr/saucer-base.hs view
@@ -0,0 +1,17 @@+-- saucer base (jmcc)++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
+ gr/sawed-cymbals.hs view
@@ -0,0 +1,19 @@+-- sawed cymbals (jmcc)++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
+ gr/scratchy-m.hs view
@@ -0,0 +1,12 @@+-- scratchy-m (jmcc)++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
+ gr/scratchy.hs view
@@ -0,0 +1,12 @@+-- scratchy (jmcc)++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)
+ gr/scratchy.scd view
@@ -0,0 +1,3 @@+{ var n = BrownNoise.ar([0.5, 0.5])+; var f = (n - 0.49).max(0) * 20+; Out.ar(0, RHPF.ar(f, 5000, 1)) }.play
+ gr/scritto-m.hs view
@@ -0,0 +1,28 @@+-- scritto (rd)++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)
+ gr/scritto.hs view
@@ -0,0 +1,47 @@+-- scritto (rd)++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 'a' 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)+-}
+ gr/seqr.hs view
@@ -0,0 +1,31 @@+-- seqr (rd)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.External.RDU {- 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 '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))+  in b * a++-- n = rand 6 18+main :: IO ()+main = audition (out 0 (seqr 12))
+ gr/shepard-tones.hs view
@@ -0,0 +1,39 @@+-- shepard tones, alberto de campo (adc)++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
+ gr/shepard-tones.scd view
@@ -0,0 +1,13 @@+{var ampTable = Signal.hanningWindow(1024).squared+;var amp_f = {arg i;0.5 ** i * 20000}+;var freqTable = Signal.newClear(1024).waveFill(amp_f,0,10)+;var b1 = Buffer.loadCollection(s,freqTable)+;var b2 = Buffer.loadCollection(s,ampTable)+;var ratescale = 1024 / 44100 / 10+;var rate = 0.1+;var ph = Phasor.ar(0,rate * ratescale,0,1024,0)+;var phases = (0..9) * 0.1 * 1024 + ph+;var freqs = BufRd.ar(1,b1.bufnum,phases)+;var amps = BufRd.ar(1,b2.bufnum,phases)+;var tone = Mix.ar(SinOsc.ar(freqs) * amps) * 0.1+;Out.ar(0,tone)}.play
+ gr/shifting-pulses.hs view
@@ -0,0 +1,20 @@+-- 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/shifting-pulses.scd view
@@ -0,0 +1,9 @@+{var n0 = BrownNoise.kr.dup+var n1 = BrownNoise.kr.dup+var n2 = BrownNoise.kr.dup+var t = Dust.kr(0.75)+var l = Latch.kr(t,t)+var p = Pulse.ar(n0.range(2,[11,15]),0.01) * 0.1+var f = n1.range(300,1800)+var rq = n2.range(0.01,2)+Out.ar(0,l * RLPF.ar(p,f,rq))}.play
+ gr/sidereal-time.hs view
@@ -0,0 +1,25 @@+-- sidereal time (jmcc)++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)+-}
+ gr/sidereal-time.scd view
@@ -0,0 +1,9 @@+var p = 15;+play({OverlapTexture.ar({+var z = Array.fill(2,{`[Array.fill(p,{exprand(100.0,6000.0)}),+                        nil,+                        Array.fill(p,{2.0 + 4.0.rand})]});+var f = XLine.kr(exprand(40.0,300.0),exprand(40.0,300.0),12);+var t = LFPulse.ar(f,rrand(0.1,0.9),0.002 * LFNoise2.kr(8.0.rand).max(0));+var o = Klank.ar(z,t).distort * 0.1;+CombN.ar(o,0.6,0.5.rand + 0.1,8,1,o.reverse);},4,4,6,2)}))
+ gr/sinusdeklinationen.hs view
@@ -0,0 +1,46 @@+-- http://www.fredrikolofsson.com/f0blog/?q=node/488 (f0)++import Data.List.Split {- split -}+import Sound.SC3 {- hsc3 -}+import Sound.SC3.Lang.Control.Event {- hsc3-lang -}+import Sound.SC3.Lang.Pattern.ID++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 => (Double,[e]) -> P Event+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)]+      _ -> undefined++cells :: Fractional n => [n]+cells = [-1,-0.6,-0.5,0,0.2,0.5,0.4,1]++main :: IO ()+main =+    let s = synthdef "sinuscell" sinuscell+        c = zip cells (chunksOf 4 ['a'..])+    in audition (s,ppar (map pattern c))
+ gr/slow-beating-harmonic-sines.hs view
@@ -0,0 +1,44 @@+-- slow beating harmonic sines (jmcc)++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
+ gr/slow-beating-sines.hs view
@@ -0,0 +1,41 @@+-- slow beating sines (jmcc)++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
+ gr/snare-909.hs view
@@ -0,0 +1,31 @@+-- snare-909 (jmcc)++import Sound.SC3.ID {- hsc3 -}++snare_909 :: UGen -> UGen+snare_909 tr =+  let n = whiteNoise 'a' AR+      v = tRand 'a' 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)+
+ gr/snare-909.scd view
@@ -0,0 +1,21 @@+{ var snr =+      { arg tr, n, v+      ; var e = { arg a, b+                ; EnvGen.ar(Env.perc(a, b), tr, 1, 0, 1, 0) }+      ; var e1 = e.value(0.0005, 0.055)+      ; var e2 = e.value(0.0005, 0.075)+      ; var e3 = e.value(0.0005, 0.4)+      ; var e4 = e.value(0.0005, 0.283)+      ; var t1 = LFTri.ar(330, 0)+      ; var t2 = LFTri.ar(185, 0)+      ; var x1 = LPF.ar(n, 7040) * (0.1 + v)+      ; var x2 = HPF.ar(x1, 523)+      ; var m1 = (t1 * e1 * 0.25) + (t2 * e2 * 0.25)+      ; var m2 = (x1 * e3 * 0.20) + (x2 * e4 * 0.20)+      ; m1 + m2 }+; var x = MouseX.kr(1, 4, 'linear', 0.2)+; var y = MouseY.kr(0.25, 0.75, 'exponential', 0.2)+; var t = Impulse.kr(3 * x, 0)+; var n = WhiteNoise.AR+; var v = TRand.kr(0.25, 1.0, t)+; Out.ar(0, Pan2.ar(snr.value(t, n, v), 0, y)) }.play
+ gr/sosc-lp.hs view
@@ -0,0 +1,50 @@+-- 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
@@ -0,0 +1,27 @@+-- spe (jmcc)+-- variant of graph in streams & patterns tutorial++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)+                  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)+  chain 4 rapf =<< src++main :: IO ()+main = audition . out 0 =<< spe
+ gr/spe-p.hs view
@@ -0,0 +1,30 @@+-- spe-p (jmcc)++import Sound.SC3.Monad {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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)+      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)+  return (synthdef "spe" u)++notes :: P Double+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])]+    in pjoin (pseq1 n inf)++main :: IO ()+main = do+  i <- spe3_allpass6+  audition (i,pbind [("midinote",notes),("dur",0.13)])
+ gr/sprinkler-m.hs view
@@ -0,0 +1,13 @@+-- sprinkler-m (jmcc)++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
+ gr/sprinkler.hs view
@@ -0,0 +1,13 @@+-- sprinkler (jmcc)++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)
+ gr/sprinkler.scd view
@@ -0,0 +1,3 @@+{var f = LFPulse.kr(0.09,0,0.16,10,7)+;var t = LFPulse.kr(f,0,0.25,0.1)+;Out.ar(0,BPZ2.ar(WhiteNoise.ar * t))}.play
+ gr/string-wander-cluster.hs view
@@ -0,0 +1,23 @@+-- string wander-cluster (jmcc)++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)
+ gr/strummable-guitar.hs view
@@ -0,0 +1,19 @@+-- strummable guitar (jmcc)++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)
+ gr/strummable-guitar.scd view
@@ -0,0 +1,11 @@+{var scale = [52,57,62,67,71,76]+;var str = {arg i+           ;var x = MouseX.kr(0,1,'linear',0.2)+           ;var t = HPZ1.kr(x > (0.25 + (i * 0.1))).abs+           ;var e = Decay.kr(t,0.05)+           ;var n = PinkNoise.ar * e+           ;var dt = scale.at(i).midicps.reciprocal+           ;var s = CombL.ar(n,dt,dt,4)+           ;Pan2.ar(s,i * 0.2 - 0.5,1)}+;var strs = Mix.fill(scale.size,str)+;Out.ar(0,LeakDC.ar(LPF.ar(strs,12000),0.995))}.play
+ gr/sweepy-noise.hs view
@@ -0,0 +1,16 @@+-- sweepy noise (jmcc)++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)
+ gr/sweepy-noise.scd view
@@ -0,0 +1,5 @@+{var lfoDepth = MouseY.kr(200,8000,'exponential',0.1)+;var lfoRate = MouseX.kr(4,60,'exponential',0.1)+;var freq = LFSaw.kr(lfoRate,0) * lfoDepth + (lfoDepth * 1.2)+;var filtered = RLPF.ar(WhiteNoise.ar([0.03,0.03]),freq,0.1)+;Out.ar(0,CombN.ar(filtered,0.3,0.3,2) + filtered) }.play
+ gr/synthetic-piano-m.hs view
@@ -0,0 +1,27 @@+-- synthetic piano (jmcc)++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+  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)+-}
+ gr/synthetic-piano.scd view
@@ -0,0 +1,14 @@+{var p = {var n = IRand.new(36,90)+         ;var f = Rand.new(0.1,0.5)+         ;var ph = Rand.new(0,pi * 2)+         ;var s = Impulse.ar(f,ph) * 0.1+         ;var e = Decay2.ar(s,0.008,0.04)+         ;var c = {arg i+                  ;var n0 = LFNoise2.ar(3000)+                  ;var o = [-0.05,0,0.04].at(i)+                  ;var dt = 1 / (n + o).midicps+                  ;CombL.ar(n0 * e,dt,dt,6) }+         ;var l = ((n - 36) / 27) - 1+         ;var c_ = Mix.fill(3,c)+         ;Pan2.ar(c_,l,1) }+;Out.ar(0,Mix.fill(6,p)) }.play
+ gr/tank-m.hs view
@@ -0,0 +1,54 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)++import Control.Monad {- base -}+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)++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)+  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 >>= 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'++main :: IO ()+main = do+  t <- tank+  audition (out 0 t)
+ gr/tank.hs view
@@ -0,0 +1,49 @@+-- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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]++-- > Sound.SC3.UGen.Dot.draw tank+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)
+ gr/tank.scd view
@@ -0,0 +1,28 @@+{var r_allpass = {arg signal+                 ;var r = {Rand.new(0.005, 0.02)}.dup+                 ;AllpassN.ar(signal, 0.03, r, 1);}+;var pling = {var d = Dust.ar(0.2)+             ;var f = ExpRand.new(300, 2200)+             ;var p = Rand.new(-1, 1)+             ;var s1 = FSinOsc.ar(f, 0).cubed+             ;var s2 = Decay2.ar(d, 0.1, 0.5) * 0.1 * s1+             ;Pan2.ar(s2, p, 1)}+;var bang = {var d = Dust.ar(0.01)+            ;var n = BrownNoise.AR+            ;Pan2.ar(Decay2.ar(d, 0.04, 0.3) * n, 0, 1)}+;var tank = {arg i+            ;var r1 = {Rand.new(0.01,0.05)}.dup+            ;var r2 = {Rand.new(0.03,0.15)}.dup+            ;var l0 = LocalIn.ar(2) * 0.98+            ;var l1 = OnePole.ar(l0, 0.33)+            ;var l2 = Rotate2.ar(l1[0], l1[1], 0.23)+            ;var l3 = AllpassN.ar(l2, 0.05, r1, 2)+            ;var l4 = DelayN.ar(l3, 0.3, [0.17,0.23])+            ;var l5 = AllpassN.ar(l4, 0.05, r2, 2)+            ;var l6 = LeakDC.ar(l5, 0.995)+            ;var l7 = l6 + i+            ;LocalOut.ar(l7)+            ;l7}+;var signal = Mix.fill(12, pling) + bang.value+;4.do({signal = r_allpass.value(signal)})+;Out.ar(0, tank.value(signal))}.play
+ gr/tgb.hs view
@@ -0,0 +1,41 @@+-- 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.hs view
@@ -0,0 +1,63 @@+-- 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/tgrn.hs view
@@ -0,0 +1,25 @@+-- tgrn (rd)++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
+ gr/thb.hs view
@@ -0,0 +1,189 @@+-- thb (rd)++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.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 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 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)])++-- | 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+    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 => L.P L.Value -> [Cim L.Value] -> 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)])++main :: IO ()+main = withSC3 (hear 9 ph)++-- Local Variables:+-- truncate-lines:t+-- End:
+ gr/theremin.hs view
@@ -0,0 +1,18 @@+-- theremin (jmcc)++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)+
+ gr/theremin.scd view
@@ -0,0 +1,8 @@+{ var mod = 7+; var detune = 0+; var x = MouseX.kr(0, 0.9, 'linear', 0.2)+; var y = MouseY.kr(4000, 200, 'exponential', 0.8)+; var f = y + detune+; var f_ = f + (f * SinOsc.ar(mod, 0) * 0.02)+; var a = SinOsc.ar(f_, 0) * x+; Out.ar(0, (Pan2.ar(a, 0, 1))) }.play
+ gr/three-cpsw.hs view
@@ -0,0 +1,19 @@+-- 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/three-cpsw.scd view
@@ -0,0 +1,9 @@+{var t = Dust.kr([12,18])+;var f0 = TRand.kr(1,64,t)+;var f1 = LFNoise0.kr(f0)+;var a = TRand.kr(0.0,0.5,t)+;var dt = TRand.kr(0.975,1.025,t)+;var dh = TRand.kr(0.750,0.7505,t)+;var f = f1 * [9000,12000] + 9500+;var o = Saw.ar(f) + Saw.ar(f * dh) + Saw.ar(f * dt)+;Out.ar(0,(o * a).clip2(0.75)) }.play
+ gr/thx.hs view
@@ -0,0 +1,46 @@+-- http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html (pc)++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)
+ gr/tipnso.hs view
@@ -0,0 +1,19 @@+-- tipnso (rd)++import Sound.SC3.ID {- hsc3 -}++tipnso :: UGen+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+      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)
+ gr/tr-out.hs view
@@ -0,0 +1,33 @@+-- 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
@@ -0,0 +1,33 @@+-- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/035957.html++import Sound.SC3.ID {- hsc3 -}++steam :: UGen -> UGen -> UGen -> UGen+steam time n1 n2 =+    let piston = lfSaw AR (xLine AR 1 7 time DoNothing) 0+        air = lpf (n1 * piston + n2 * piston) 5000+        e = envGen AR 1 1 0 1 DoNothing (envSine time 9)+    in bpf air 600 (1 + e)++whistle :: UGen -> UGen -> UGen+whistle time n3 =+    let f = [800,600,1200,990]+        s = klankSpec f [1,1,1,1] [1,1,1,1]+        t = [0,0,1,1,0,0,1,1,0,0,1,0]+        l = [2,0,0.2,0,0.2,0,0.8,0,4,0,3]+        d = Envelope t l (repeat EnvLin) Nothing Nothing+        e = envGen AR 1 1 0 (time/10) DoNothing d+    in klank (n3 * 0.004) 1 0 1 s * e++train :: UGen+train =+    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+    in pan2 (steam time n1 n2 + whistle time n3) loc 1++main :: IO ()+main =  audition (out 0 train)
+ gr/tremulate-m.hs view
@@ -0,0 +1,23 @@+-- tremulate (jmcc)++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+  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
+ gr/tremulate.hs view
@@ -0,0 +1,21 @@+-- tremulate (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+import Sound.SC3.UGen.External.RDU {- sc3-rdu -}++-- > Sound.SC3.UGen.Dot.draw tremulate+tremulate :: UGen+tremulate =+    let f = rand 'a' 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+    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
+ gr/tremulate.scd view
@@ -0,0 +1,7 @@+play({CombN.ar(XFadeTexture.ar({+f = 500 + 400.rand;+r = 30 + 60.rand;+o = FSinOsc.ar(f*[1.0,1.2,1.5,1.8]);+a = max(0,LFNoise2.kr([r,r,r,r],0.1));+l = [1.0.rand2,1.0.rand2,1.0.rand2,1.0.rand2];+Mix.ar(Pan2.ar(o*a,l))},2,0.5,2),0.1,0.1,1)})
+ gr/trkl.hs view
@@ -0,0 +1,36 @@+-- 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.hs view
@@ -0,0 +1,49 @@+-- trmlo++import Sound.SC3 {- hsc3 -}+import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}+import Sound.SC3.Lang.Pattern.ID {- 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)+  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2,4] inf)])
+ gr/tsort.hs view
@@ -0,0 +1,26 @@+-- http://create.ucsb.edu/pipermail/sc-users/2003-March/002807.html (jmcc)++{-+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)
+ gr/uplink.hs view
@@ -0,0 +1,20 @@+-- uplink (jmcc)++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++-- > 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++main :: IO ()+main = overlapTextureU (4,1,5,maxBound) uplink
+ gr/urandom.hs view
@@ -0,0 +1,45 @@+-- urandom (rd)++import Control.Monad {- base -}+import qualified Data.ByteString.Lazy as B {- bytestring -}+import Sound.OpenSoundControl.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
+ gr/vla-addtn-sharc.hs view
@@ -0,0 +1,76 @@+-- vla-adttn-sharc (rd)++import Data.List+import Sound.Analysis.SHARC {- hsharc -}+import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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 'a' 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)+                  ampl+                  (fall * rand 'b' 0.75 1.25)+                  DoNothing+    in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+    let a = control KR "ampl" 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 :: [(String,P Double)]+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)]++act :: Transport m => FilePath -> m ()+act fn = do+  v <- vla fn+  _ <- async (b_alloc_setn1 0 0 (vla_prep v))+  play (plyr36,pbind pattern)++main :: IO ()+main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
+ gr/vla-addtn.hs view
@@ -0,0 +1,145 @@+-- vla-adttn (rd)++import Sound.OSC {- hosc -}+import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.Lang.Pattern.ID {- 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 'a' 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)+                  ampl+                  (fall * rand 'b' 0.75 1.25)+                  DoNothing+    in o * e++vla_plyr :: UGen -> UGen+vla_plyr n =+    let a = control KR "ampl" 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 :: [(String,P Double)]+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)]++act :: Transport m => m ()+act = do+  _ <- async (b_alloc_setn1 0 0 vla_prep)+  play (plyr36,pbind pattern)++main :: IO ()+main = withSC3 act
+ gr/vlc-distrtn.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)])+  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.hs view
@@ -0,0 +1,38 @@+-- voscil (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/waveset.hs view
@@ -0,0 +1,157 @@+-- A simple waveset synthesiser (rd)++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 :: Double -> Bundle -> Bundle+offset t b =+    case b of+      Bundle (UTCr t0) m -> Bundle (UTCr (t + t0)) m+      _ -> error "offset:non-UTCr bundle"++-- | 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+  pauseThreadUntil (t - latency)+  mapM_ sendBundle (x:xs)++-- | Play grouped score.+play_sets :: Transport m => [[Bundle]] -> m ()+play_sets [] = return ()+play_sets s = do+  t <- utcr+  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 (UTCr 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 >> pauseThread 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")+--}
+ gr/what-was-i-thinking.hs view
@@ -0,0 +1,25 @@+-- 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/what-was-i-thinking.scd view
@@ -0,0 +1,14 @@+{var n0 = LFNoise1.kr(0.2,2000,2400)+;var n1 = LFNoise1.kr(0.157,0.4,0.5)+;var i = LFPulse.ar(0.1,0,0.05) * Impulse.ar(8,0) * 500+;var d = Decay.ar(i,2)+;var f = max(SinOsc.kr(4,0) + 80,d)+;var p = Pulse.ar(f,n1) * 0.04+;var z = RLPF.ar(p,n0,0.2)+;var c = {arg i+         ;var r = Rand.new(0,0.3)+         ;var n = LFNoise1.kr(r,0.025,0.035)+         ;CombL.ar(i,0.06,n,1)}+;var y = z * 0.6+;Out.ar(0,z + [c.value(y) + c.value(y)+              ,c.value(y) + c.value(y)])}.play
+ gr/why-supercollider.hs view
@@ -0,0 +1,20 @@+-- why supercollider (jmcc)++import Sound.SC3.ID {- hsc3 -}+import Sound.SC3.UGen.Protect+import Sound.SC3.UGen.External.RDU {- 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)+        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
+ gr/why-supercollider.scd view
@@ -0,0 +1,8 @@+{var r = {Resonz.ar(Dust.ar(0.2,50),200 + 3000.0.rand,0.003)}+;var s = Mix.ar(Array.fill(10,r))+;var z = DelayN.ar(s,0.048)+;var c = {CombL.ar(z,0.1,LFNoise1.kr(0.1.rand,0.04,0.05),15)}+;var y = Mix.ar(Array.fill(7,c))+;4.do({x = AllpassN.ar(y,0.050,[0.050.rand,0.050.rand],1)})+;s+(0.2*x)}.play+
+ gr/wial.hs view
@@ -0,0 +1,27 @@+-- 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
@@ -0,0 +1,24 @@+-- wind metals (jmcc)++import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}+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+  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
+ gr/wind-metals.scd view
@@ -0,0 +1,11 @@+{var n = 6+;var base = ExpRand.new(60,4000)+;var rng = Rand.new(500.0,8000.0)+;var n0 = BrownNoise.ar([0.007,0.007])+;var r0 = ExpRand.new(0.125,0.5)+;var n1 = LFNoise1.kr(r0,0.75,0.25)+;var exc = n0 * max(0,n1)+;var f = Array.fill(n,{Rand.new(0,rng) + base})+;var dt = Array.fill(n,{Rand.new(0.1,2.0)})+;var s = Klank.ar(`[f,nil,dt],exc)+;Out.ar(0,(s * 0.1).softclip)}.play
+ gr/xy-interference-m.hs view
@@ -0,0 +1,17 @@+-- xy-interference-m (rd)++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)+      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)+  return.sum =<< sequence (replicate 3 nd)++main :: IO ()+main = audition . out 0 =<< xy_interference
+ gr/xy-interference.hs view
@@ -0,0 +1,17 @@+-- xy-interference (rd)++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 'a' KR (mce2 5 9)+               a = sinOsc AR (x + n) 0+               b = sinOsc AR y 0+           in a * b+  in mix (uclone 'a' 3 nd)++main :: IO ()+main = audition (out 0 xy_interference)
+ gr/xy-interference.scd view
@@ -0,0 +1,7 @@+{var x = MouseX.kr(20,22000,'linear',[0.005,0.025])+;var y = MouseY.kr(20,22000,'linear',[0.005,0.075])+;var nd = {var n = LFNoise0.kr([5,9])+          ;var a = SinOsc.ar(x + n,0)+          ;var b = SinOsc.ar(y,0)+          ;a * b}+;Out.ar(0,Mix.fill(3,nd))}.play
hsc3-graphs.cabal view
@@ -1,708 +1,648 @@ Name:              hsc3-graphs-Version:           0.11-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-2011-Author:            Rohan Drape-Maintainer:        rd@slavepianos.org-Stability:         Experimental-Homepage:          http://slavepianos.org/rd/?t=hsc3-graphs-Tested-With:       GHC == 7.0.4-Build-Type:        Simple-Cabal-Version:     >= 1.8--Data-files:        README-                   src/*.scd-                   src/*.scm--Executable         hsc3-acid-otophilia- main-is:          src/acid-otophilia.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-adso- main-is:          src/adso.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-after-goeyvaerts- main-is:          src/after-goeyvaerts.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*,-                   containers, random, split--Executable         hsc3-aleatoric-quartet- main-is:          src/aleatoric-quartet-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-alien-froggies- main-is:          src/alien-froggies.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-alien-meadow- main-is:          src/alien-meadow.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-ambient1- main-is:          src/ambient1.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-analog-bubbles- main-is:          src/analog-bubbles.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-arpeggio- main-is:          src/arpeggio.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-babbling-brook- main-is:          src/babbling-brook-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-birds- main-is:          src/birds-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-bit-reduction- main-is:          src/bit-reduction.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-black-atlantic-currents- main-is:          src/black-atlantic-currents.hs- build-depends:    base==4.*, hsc3==0.11.*, primes, random, random-shuffle--Executable         hsc3-bohlen-pierce-140- main-is:          src/bohlen-pierce-140.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-bottle- main-is:          src/bottle-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-bowed-string- main-is:          src/bowed-string-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random--Executable         hsc3-bs-070705- main-is:          src/bs-070705.hs- build-depends:    base==4.*, hsc3==0.11.*, hosc==0.11.*, random--Executable         hsc3-ccomb- main-is:          src/ccomb.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-cds-070701- main-is:          src/cds-070701.hs- build-depends:    base==4.*, hsc3==0.11.*, hosc==0.11.*--Executable         hsc3-chain-saw- main-is:          src/chain-saw.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random--Executable         hsc3-choip- main-is:          src/choip.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-chrd-m- main-is:          src/chrd-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-chrd-t- main-is:          src/chrd-t.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom--Executable         hsc3-clustered-sines- main-is:          src/clustered-sines.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-comb-delay-sweeps- main-is:          src/comb-delay-sweeps.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random--Executable         hsc3-coolant- main-is:          src/coolant.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-contamination-zone- main-is:          src/contamination-zone.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-cricket- main-is:          src/cricket.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-crotale- main-is:          src/crotale.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-crotale-sine- main-is:          src/crotale-sine.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-cut-outs- main-is:          src/cut-outs.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-cymbalism- main-is:          src/cymbalism.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-cymbalism-accelerando- main-is:          src/cymbalism-accelerando.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-dark-sea-horns- main-is:          src/dark-sea-horns.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-data-space- main-is:          src/data-space.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-deep-sea- main-is:          src/deep-sea.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random--Executable         hsc3-deep-trip- main-is:          src/deep-trip.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-default- main-is:          src/default.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-demanding-studies- main-is:          src/demanding-studies.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-dial-history- main-is:          src/dial-history.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-diffraction- main-is:          src/diffraction.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-discretion- main-is:          src/discretion.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-discretion-m- main-is:          src/discretion-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-doppler- main-is:          src/doppler.hs- build-depends:    base==4.*, hsc3==0.11.*, hosc==0.11.*--Executable         hsc3-drummer- main-is:          src/drummer.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-early-space-music-lp-side-two- main-is:          src/early-space-music-lp-side-two.hs- build-depends:    base==4.*,hosc==0.11.*,hsc3==0.11.*,hsc3-lang==0.11.*,random--Executable         hsc3-eggcrate- main-is:          src/eggcrate.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-eggcrate-m- main-is:          src/eggcrate-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-e-lamell- main-is:          src/e-lamell.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-e-lamell-p- main-is:          src/e-lamell-p.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-ellipse-based-synthesis- main-is:          src/ellipse-based-synthesis.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-fbl-fbf- main-is:          src/fbl-fbf.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-fb-090531- main-is:          src/fb-090531.hs- build-depends:    base==4.*, hsc3==0.11.*, hosc==0.11.*, random----Executable         hsc3-feedr--- main-is:          src/feedr.hs--- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-f-lets- main-is:          src/f-lets.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-fm-iter- main-is:          src/fm-iter.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-fm-kltr- main-is:          src/fm-kltr.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-fm-kltr-p- main-is:          src/fm-kltr-p.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-forest-sounds- main-is:          src/forest-sounds.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-fwalk- main-is:          src/fwalk.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-half-life- main-is:          src/half-life.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-hansm- main-is:          src/hansm.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-harmonic-swimming- main-is:          src/harmonic-swimming.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-harmonic-swimming-m- main-is:          src/harmonic-swimming-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-harmonic-tumbling- main-is:          src/harmonic-tumbling.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-h-chatter- main-is:          src/h-chatter.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-hell-is-busy- main-is:          src/hell-is-busy.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-hh-808- main-is:          src/hh-808.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-implosion- main-is:          src/implosion.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-insects- main-is:          src/insects.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-jl-1-Z- main-is:          src/jl-1-Z.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-kabelscahden- main-is:          src/kabelscahden.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-karplus-strong- main-is:          src/karplus-strong.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-klink- main-is:          src/klink.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-k-ppr- main-is:          src/k-ppr.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-k-ppr-m- main-is:          src/k-ppr-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-lfo-modulation- main-is:          src/lfo-modulation.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-lf-pulses- main-is:          src/lf-pulses.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-lg-timed- main-is:          src/lg-timed.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-lin-sosc- main-is:          src/lin-sosc.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-lso-061101- main-is:          src/lso-061101.hs- build-depends:    base==4.*, directory, filepath, hls, hosc==0.11.*, hps, hsc3==0.11.*, hsc3-sf, random--Executable         hsc3-lucier- main-is:          src/lucier.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-microhelix- main-is:          src/microhelix.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-mridangam- main-is:          src/mridangam.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-modal-space- main-is:          src/modal-space.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-moto-rev- main-is:          src/moto-rev.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-mouse-clatter- main-is:          src/mouse-clatter-m.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-nharm- main-is:          src/nharm.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-nharm-p- main-is:          src/nharm-p.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-noise-burst-sweep- main-is:          src/noise-burst-sweep.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-noise-modulated-sines- main-is:          src/noise-modulated-sines.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-non-real-time- main-is:          src/non-real-time.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, process--Executable         hsc3-nv-tw-1- main-is:          src/nv-tw-1.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-nv-tw-41- main-is:          src/nv-tw-41.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-nv-tw-54- main-is:          src/nv-tw-54.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-one-line- main-is:          src/one-line.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-oscillator-cluster- main-is:          src/oscillator-cluster.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-overlap-add- main-is:          src/overlap-add.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-pattern-buffer- main-is:          src/pattern-buffer.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-pebble-beach- main-is:          src/pebble-beach.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-plucked-strings- main-is:          src/plucked-strings.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-police-state- main-is:          src/police-state.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-pulsing-bottles- main-is:          src/pulsing-bottles.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-pulsing-bottles-m- main-is:          src/pulsing-bottles-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-rails- main-is:          src/rails.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-rain-thunder- main-is:          src/rain-thunder.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-random-panning-sines- main-is:          src/random-panning-sines.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-random-panning-sines-m- main-is:          src/random-panning-sines-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-random-pulsations- main-is:          src/random-pulsations.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-random-sine-waves- main-is:          src/random-sine-waves.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-record-scratcher- main-is:          src/record-scratcher.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-red-frik- main-is:          src/red-frik.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-reset- main-is:          src/reset.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-resonant-dust- main-is:          src/resonant-dust.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-reverberated-sine-percussion- main-is:          src/reverberated-sine-percussion.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-ring-modulated-klank- main-is:          src/ring-modulated-klank.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*----Executable         hsc3-rm-octaver--- main-is:          src/rm-octaver.hs--- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-rzblp- main-is:          src/rzblp.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-unsafe==0.11.*--Executable         hsc3-sam-i-am- main-is:          src/sam-i-am.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom--Executable         hsc3-sample-and-hold-liquidities- main-is:          src/sample-and-hold-liquidities.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-saucer-base- main-is:          src/saucer-base.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-sawed-cymbals- main-is:          src/sawed-cymbals.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-s-chirp- main-is:          src/s-chirp.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-scratchy- main-is:          src/scratchy.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-scratchy-m- main-is:          src/scratchy-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-scritto- main-is:          src/scritto.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-scritto-m- main-is:          src/scritto-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-seqr- main-is:          src/seqr.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-shepard-tones- main-is:          src/shepard-tones.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-shifting-pulses- main-is:          src/shifting-pulses.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-sidereal-time- main-is:          src/sidereal-time.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-slow-beating-harmonic-sines- main-is:          src/slow-beating-harmonic-sines.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom--Executable         hsc3-slow-beating-sines- main-is:          src/slow-beating-sines.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, MonadRandom--Executable         hsc3-snare-909- main-is:          src/snare-909.hs- build-depends:    base==4.*, hsc3==0.11.*----Executable         hsc3-sosc-lp--- main-is:          src/sosc-lp.hs--- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-spe-m- main-is:          src/spe-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-spe-p- main-is:          src/spe-p.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-sprinkler- main-is:          src/sprinkler.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-sprinkler-m- main-is:          src/sprinkler-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-string-wander-cluster- main-is:          src/string-wander-cluster.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*, random--Executable         hsc3-strummable-guitar- main-is:          src/strummable-guitar.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-sweepy-noise- main-is:          src/sweepy-noise.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-synthetic-piano- main-is:          src/synthetic-piano-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-tank- main-is:          src/tank.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-tank-m- main-is:          src/tank-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-tgb- main-is:          src/tgb.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-tgrn- main-is:          src/tgrn.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-tgr-rpr- main-is:          src/tgr-rpr.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-theremin- main-is:          src/theremin.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-three-cpsw- main-is:          src/three-cpsw.hs- build-depends:    base==4.*, hsc3==0.11.*, random--Executable         hsc3-thx- main-is:          src/thx.hs- build-depends:    base==4.*, hsc3==0.11.*, random--Executable         hsc3-tipnso- main-is:          src/tipnso.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-train- main-is:          src/train.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-tremulate- main-is:          src/tremulate.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-tremulate-m- main-is:          src/tremulate-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*----Executable         hsc3-trkl--- main-is:          src/trkl.hs--- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-trmlo- main-is:          src/trmlo.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-unsafe==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-tr-out- main-is:          src/tr-out.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*--Executable         hsc3-tsort- main-is:          src/tsort.lhs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-uplink- main-is:          src/uplink.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-voscil- main-is:          src/voscil.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-unsafe==0.11.*, random--Executable         hsc3-vla-addtn- main-is:          src/vla-addtn.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-vla-addtn-sharc- main-is:          src/vla-addtn-sharc.hs- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-lang==0.11.*, hsharc==0.11.*----Executable         hsc3-vlc-distrtn--- main-is:          src/vlc-distrtn.hs--- build-depends:    base==4.*, hosc==0.11.*, hsc3==0.11.*, random--Executable         hsc3-waveset- main-is:          src/waveset.hs- build-depends:    array, base==4.*, hosc==0.11.*, hsc3==0.11.*, hsc3-sf==0.11.*, random--Executable         hsc3-what-was-i-thinking- main-is:          src/what-was-i-thinking.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-why-supercollider- main-is:          src/why-supercollider.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-wial- main-is:          src/wial.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-wind-metals- main-is:          src/wind-metals-m.hs- build-depends:    base==4.*, hsc3==0.11.*, hsc3-lang==0.11.*--Executable         hsc3-xy-interference- main-is:          src/xy-interference.hs- build-depends:    base==4.*, hsc3==0.11.*--Executable         hsc3-xy-interference-m- main-is:          src/xy-interference-m.hs- build-depends:    base==4.*, hsc3==0.11.*--Source-Repository  head-  Type:            darcs-  Location:        http://slavepianos.org/rd/sw/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
− src/acid-otophilia.hs
@@ -1,235 +0,0 @@--- 08091500Acid309 by_otophilia--import Data.List-import Data.Maybe-import Sound.OpenSoundControl {- hosc -}-import Sound.SC3.ID {- hsc3 -}-import System.Random {- random -}---- * Instruments--mk_ec :: [UGen] -> [EnvCurve]-mk_ec = map EnvNum--mk_env :: [UGen] -> [UGen] -> [UGen] -> [UGen]-mk_env l t c = env l t (mk_ec c) 0 0--kick :: Synthdef-kick =-    let bus = control KR "outBus" 0-        env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.06,0.26] [-4,-2,-4]-               in envGen AR 1 1 0 1 RemoveSynth d-        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)-                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)--snare :: Synthdef-snare =-    let bus = control KR "outBus" 0-        amp = control KR "amp" 0.8-        env0 = let d = mk_env [0.5,1,0.5,0] [0.005,0.03,0.10] [-4,-2,-4]-               in envGen AR 1 1 0 1 DoNothing d-        env1 = let d = mk_env [110,60,49] [0.005,0.1] [-4,-5]-               in midiCPS (envGen AR 1 1 0 1 DoNothing d)-        env2 = let d = mk_env [1,0.4,0] [0.05,0.13] [-2,-2]-               in envGen AR 1 1 0 1 RemoveSynth d-	oscs = let p = lfPulse AR env1 0 0.5 - 0.5-                   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-                    q = hpf p 200 * 2-                    r = bpf q 6900 0.6 * 3 + p-	        in r * env2-	s = clip2 (oscs + noise) 1 * amp-    in synthdef "snare" (out bus s)--clap :: Synthdef-clap =-    let bus = control KR "outBus" 0-        amp = control KR "amp" 0.5-        env1 = let d = mk_env [0,1,0,1,0,1,0,1,0]-                              [0.001,0.013,0,0.01,0,0.01,0,0.03]-                              [0,-3,0,-3,0,-3,0,-4]-               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-                     q = hpf p 600-                 in bpf q 2000 3-	noise2 = let p = mce2 (whiteNoise 'a' AR) (whiteNoise 'a' AR) * env2-                     q = hpf p 1000-                 in bpf q 1200 0.7 * 0.7-	s = let p = noise1 + noise2-	    in softClip (p * 2) * amp-    in synthdef "clap" (out bus s)--hat :: Synthdef-hat =-    let bus = control KR "outBus" 0-        amp = control KR "amp" 0.3-        env1 = let d = mk_env [0,1.0,0] [0.001,0.2] [0,-12]-               in envGen AR 1 1 0 1 DoNothing d-        env2 = let d = mk_env [0,1.0,0.05,0] [0.002,0.05,0.03] [0,-4,-4]-               in envGen AR 1 1 0 1 RemoveSynth d-        (r0:r1:r2:_) = randomRs (-4.0,4.0) (mkStdGen 5)-	oscs1 = let n1 = 5-                    f i = let f0 = midiCPS (linLin i 0 (n1-1) 42 75 + r0)-                              f1 = midiCPS (linLin i 0 (n1-1) 78 80 + r1)-                          in sinOsc AR f0 (sinOsc AR f1 0 * 12) * (1/n1)-                    p = sum (map f [0..n1-1])-                in bHiPass p 1000 2 * env1-        noise = let n2 = 8-                    p = whiteNoise 'a' 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-                    r = bpf q 6000 0.9 * 0.5 + q-                in bHiPass (bLowShelf r 3000 0.5 (-6)) 1000 1.5 * env2-        s = softClip (noise + oscs1) * amp-    in synthdef "hat" (out bus s)--acid :: Synthdef-acid =-    let bus = control KR "outBus" 0-        gate' = control KR "gate" 1-        pitch' = control KR "pitch" 50-        amp = control KR "amp" 0.3-	pitch'' = lag pitch' 0.12 * (1 - trig gate' 0.001) * gate'-        env1 = let d = env [0,1,0,0] [0.001,2,0.04] (mk_ec [0,-4,-4]) 2 0-               in envGen AR gate' amp 0 1 DoNothing d-        env2 = let d = envADSR 0.001 0.8 0 0.8 70 (EnvNum (-4)) 0-               in envGen AR gate' 1 0 1 DoNothing d-	s = let p = lfPulse AR (midiCPS pitch'') 0.0 0.51 * 2 - 1-                q = rlpf p (midiCPS (pitch'' + env2)) 0.3-	    in q * env1-    in synthdef "acid" (out bus (mce2 s s))--fx :: Synthdef-fx =-    let bus = control KR "outBus" 0-        gate' = control KR "gate" 0-	i = in' 2 AR bus-        e = let d = env [0.02,0.3,0.02] [0.4,0.01] (mk_ec [3,-4]) 1 0-            in envGen KR (1 - trig gate' 0.01) 1 0 1 DoNothing d-        r = let MCE [i0,i1] = i-            in freeVerb2 (bpf i0 3500 1.5) (bpf i1 3500 1.5) 1 0.95 0.15 * e-        s = limiter (hpf ((i + r) * 1.2) 40) 1 0.02-    in synthdef "fx" (replaceOut bus s)---- * Sequences--type D = [Int]--dr_seq :: Num a => [[[a]]]-dr_seq =-    let s = [[[1,0,0,0, 0,0,0,0, 1,0,0,1, 0,0,1,0]-             ,[0,0,0,0, 0,0,0,2, 0,2,1,0, 4,3,3,3]-             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]-             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]-             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]-            ,[[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]-             ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]-             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]-             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]-             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]-            ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]-             ,[0,0,0,0, 0,0,0,2, 0,0,0,0, 0,0,0,0]-             ,[0,0,0,0, 4,0,0,0, 0,0,0,0, 4,0,0,0]-             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]-             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]-            ,[[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]-             ,[0,0,0,0, 4,0,0,2, 0,0,0,0, 4,0,0,0]-             ,[0,0,0,0, 0,0,0,0, 0,0,0,0, 4,0,0,0]-             ,[1,2,4,0, 1,0,4,0, 1,2,4,2, 1,0,4,2]-             ,[1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]]]-    in map transpose s--dr_msg :: Int -> (Int,Int) -> Maybe OSC-dr_msg fx_id (i,x) =-    let m nm pr = Just (s_new nm (-1) AddToHead 1 pr)-        x' = fromIntegral x-        sq n = n * n-    in case i of-         0 -> if x > 0 then m "kick" [] else Nothing-         1 -> if x > 0 then m "snare" [("amp",sq (x'/4) * 0.7)] else Nothing-         2 -> if x > 0 then m "clap" [("amp",sq (x'/4) * 0.5)] else Nothing-         3 -> if x > 0 then m "hat" [("amp",sq (x'/4) * 0.32)] else Nothing-         4 -> Just (n_set fx_id [("gate",x')])-         _ -> error "dr_seq_msg"--dr_seq_msg :: Int -> Double -> D -> OSC-dr_seq_msg fx_id t =-    Bundle (UTCr t) .-    mapMaybe (dr_msg fx_id) .-    zip [0..]--b_seq :: Num a => [[a]]-b_seq =-    let s = [[1,1,1,1, 1,1,1,1, 0,1,0,1, 1,1,1,0]-            ,[1,1,0,2, 1,1,0,0, 2,0,2,0, 1,2,0,4]-            ,map (+ 38) [-24,-12,0,-12, 0,-12,10,12, 0,7,-7,0, -11,1,13,15]]-    in transpose s--type B = (Int,Double,Double)--b_form :: [Int] -> B-b_form xs =-    let i = fromIntegral-    in case xs of-         [b1,b2,b3] -> (b1,i b2,i b3)-         _ -> error "b_form"--b_seq_msg :: Int -> Double -> Double -> B -> [OSC]-b_seq_msg acid_id dt t (b0,b1,b2) =-    let on = let p = n_set acid_id [("pitch",b2)]-                 m = if b0 == 1-                     then [p,n_set acid_id [("gate",1)]]-                     else [p]-             in Bundle (UTCr 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 if b1 > 0 then [on,off] else [on]---- * Runtime--ao_init :: Transport t => t -> IO (Int,Int)-ao_init fd = do-  let i = [kick,snare,clap,hat,acid,fx]-  _ <- async fd (Bundle immediately (map d_recv i))-  let acid_id = 10-      fx_id = 11-  send fd (s_new "acid" acid_id AddToHead 1 [("gate",0)])-  send fd (s_new "fx" fx_id AddToTail 1 [])-  return (acid_id,fx_id)--dt_seq :: Double -> [Double]-dt_seq bpm =-    let shf = 0.16-        n = 60 / bpm-        dt i = if i `mod` 2 == 0 then 0.25 * (1 + shf) else 0.25 * (1 - shf)-    in map ((* n) . dt) ([0..]::[Int])--ao_run_seq :: Transport t => t -> (Int,Int) -> [D] -> [B] -> IO ()-ao_run_seq fd (acid_id,fx_id) d_sq b_sq = do-  init_t <- utcr-  let dt_seq' = dt_seq 130-      t_seq = scanl1 (+) (init_t : dt_seq')-      act (t,dt,d,b) =-          do send fd (dr_seq_msg fx_id t d)-             mapM_ (send fd) (b_seq_msg acid_id dt t b)-             pauseThreadUntil t-  mapM_ act (zip4 t_seq dt_seq' d_sq b_sq)--main :: IO ()-main =-    let act fd = do-          let d_sq = cycle (concat dr_seq)-              b_sq = map b_form (cycle b_seq)-          ids <- ao_init fd-          ao_run_seq fd ids d_sq b_sq-  in withSC3 act
− src/adso.hs
@@ -1,50 +0,0 @@--- adso (rd)--import Sound.OpenSoundControl-import Sound.SC3-import System.Random--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)--rrand :: Random a => a -> a -> IO a-rrand l r = getStdRandom (randomR (l, r))--rrand_l :: Random a => Int -> a -> a -> IO [a]-rrand_l j l r = sequence (replicate j (rrand l r))--pattern :: Transport t => t -> Int -> Double -> IO ()-pattern fd n t = do-  z <- do l <- rrand 22 48-          r <- rrand 54 122-          sequence (replicate n (rrand l r))-  send fd (b_setn1 0 0 z)-  let rn i l r = do d <- rrand_l n l r-                    send fd (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 t => Int -> t -> IO ()-run n fd = do-  mapM_ (\i -> async fd (b_alloc i n 1)) [0..6]-  _ <- play fd (out 0 (adso n))-  mapM_ (pattern fd n) =<< rrand_l 32 0.025 0.75-  reset fd--main :: IO ()-main = withSC3 (run 24)
− src/after-goeyvaerts.hs
@@ -1,366 +0,0 @@--- after goeyvaerts, nick collins, 2007--import Control.Concurrent.MVar-import Data.List-import Data.List.Split-import qualified Data.Map as M {- containers -}-import Sound.OpenSoundControl {- hosc -}-import Sound.SC3.ID {- 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' at 'R'-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 'a' 0.009 0.05,0.005]-                d = env l t (replicate 3 EnvLin) 0 0-            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]-                d = env l t (replicate 4 EnvLin) 0 0-            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 (Bundle immediately [d_recv (synthdef "nd" nd)-                                    ,d_recv (synthdef "fx" fx)])-  send fd (s_new "fx" (-1) AddToHead 1 [])-  return ()--nd_msg :: Double -> Double -> Double -> Double -> OSC-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',o,'b',b)-  print ('p',map (set_prec 2) (M.elems p))-  print ('s',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-  pauseThread (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) >> pauseThread 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--}
− src/aleatoric-quartet-m.hs
@@ -1,33 +0,0 @@--- aleatoric quartet (jmcc)--import Sound.SC3.Monadic--aleatoric_quartet :: (Functor m,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-      (>=>) 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-                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 <- chain 5 rapf =<< fmap sum (sequence (replicate 4 mk_s))-  return (leakDC g 0.995)--main :: IO ()-main = audition . out 0 =<< aleatoric_quartet
− src/aleatoric-quartet.scd
@@ -1,22 +0,0 @@-{ var amp = 0.07-; var density = MouseX.kr(0.01, 1, 'linear', 0.1)-; var dmul = density.reciprocal * 0.5 * amp-; var dadd = amp - dmul-; var rapf = { arg i-             ; var r = Array.fill(2, { Rand(0, 0.05) })-             ; AllpassN.ar(i, 0.05, r, 1) }-; var mk_f = { var i0 = IRand.new(0, 2)-             ; var r0 = Select.kr(i0, [1, 0.5, 0.25])-             ; var r1 = Rand.new(-30, 30)-             ; var n0 = LFNoise0.kr(r0)-             ; var m = Lag.kr((n0 * 7 + 66 + r1).round(1), 0.2)-             ; m.midicps }-; var mk_s = { var f = mk_f.value.reciprocal-             ; var r = Rand.new(-1, 1)-             ; var n0 = PinkNoise.ar()-             ; var n1 = LFNoise1.kr(8)-             ; var x = n0 * 0.max(n1 * dmul + dadd)-             ; Pan2.ar(CombL.ar(x, 0.02, f, 3), r, 1) }-; var g = Mix.fill(4, mk_s)-; 5.do({ g = rapf.value(g) })-; Out.ar(0, LeakDC.ar(g, 0.995)) }.play
− src/alien-froggies.hs
@@ -1,13 +0,0 @@--- alien froggies (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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')-    in (o * 0.05,r')--main :: IO ()-main = overlapTextureS (0.5,0.25,5,maxBound) alien_froggies 11
− src/alien-froggies.scd
@@ -1,5 +0,0 @@-var rate = 11.0;-play({OverlapTexture.ar({-rate = (rate * (0.2.bilinrand.exp)).fold(1.0,30.0);-var o = Formant.ar(rate,exprand(200,3000.0),9.0.rand * rate + rate,0.05)},-0.5,0.25,5,1)})
− src/alien-meadow.hs
@@ -1,16 +0,0 @@--- alien meadow (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--alien_meadow :: UGen-alien_meadow =-    let a = rand 'a' 0 20-        b = rand 'b' 0 5000-        c = rand 'c' 0 20-        p = rand 'd' (-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 (6,2,6,maxBound) alien_meadow
− src/ambient1.hs
@@ -1,97 +0,0 @@--- ambient1 (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--chain :: a -> [a -> a] -> a-chain n ff =-    case ff of-      [] -> n-      f:ff' -> chain (f n) ff'--chain0 :: Num a => [a -> a] -> a-chain0 = chain 0--pulse_u :: UGen-pulse_u =-    let k = control KR-        f = k "freq" 440-        a = k "amp" 0.1-        aT = k "attackTime" 0.01-        dT = k "delayTime" 10-	e = envGen KR 1 1 0 1 RemoveSynth (envPerc aT 10)-	z = sinOsc AR f 0 * 0.7-	o = let l = sinOsc KR 3 0-            in pan2 (toggleFF (tDelay z dT) * sinOsc AR f 0) l 0.6-	s = clip2 ((pan2 z (sinOsc KR 5 pi) 0.7 + o) * e) 1-    in out 0 (freeVerb s 0.7 1.0 0.4 * a)--drone_u :: UGen-drone_u =-    let k = control KR-        f = k "freq" 440-        a = k "amp" 0.1-        ph = k "phase" 0-        e = envGen KR 1 1 0 1 RemoveSynth (envSine 10 1)-	s = chain0 [\_ -> lfPulse AR f 0 0.15-                   ,\o -> rlpf o (sinOsc KR 0.3 0 * 200 + 1500) 0.1-                   ,\o -> freeVerb o 0.5 0.5 0.5 * e-	           ,\o -> pan2 o (sinOsc KR (1/10) ph) a]-    in out 0 s--bass_u :: UGen-bass_u =-    let k = control KR-        f = k "freq" 96-        a = k "amp" 0.1-	e = envGen KR 1 1 0 1 RemoveSynth (envPerc' 0.5 1 1 (EnvLin,EnvLin))-	s = sinOsc AR f 0 * a * e-    in out 0 (pan2 s 0 1)--{--audition pulse_u-audition drone_u-audition bass_u--}--pulse_i :: Instrument-pulse_i = InstrumentDef (synthdef "pulse" pulse_u)--drone_i :: Instrument-drone_i = InstrumentDef (synthdef "drone" drone_u)--bass_i :: Instrument-bass_i = InstrumentDef (synthdef "bass" bass_u)--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)]--bass_p :: P Event-bass_p = pbind [("dur",dur_p)-               ,("midinote",31)-               ,("amp",0.3)]--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]--main :: IO ()-main = audition ambient1_p
− src/analog-bubbles.hs
@@ -1,13 +0,0 @@--- analog bubbles (jmcc)--import Sound.SC3--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)
− src/analog-bubbles.scd
@@ -1,4 +0,0 @@-{var o = LFSaw.kr([87.23]0380)-;var f = LFSaw.kr(0.4024o)-;var s = SinOsc.ar(f.midicps00.04)-;Out.ar(0CombN.ar(s0.20.240.1))}.play
− src/arpeggio.hs
@@ -1,84 +0,0 @@--- arpeggio (nc)--- http://www.listarc.bham.ac.uk/lists/sc-users/msg07473.html--import Control.Monad-import Sound.SC3-import Sound.SC3.Lang.Control.Event-import Sound.SC3.Lang.Pattern.ID--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 (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)]))--}--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 =-    [("dur"-     ,let d = pwrand 'n' [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-      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-      in pinterp' n s e)-    ,("pan"-     ,let n = prand 'g' [8,16] inf-          s = pwhite 'h' (-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)-      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-      in pinterp' n s e)-    ,("note"-     ,let f x = pn (fromList 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)-    ,("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 (\fd -> play fd (analogarpeggio,p))
− src/babbling-brook-m.hs
@@ -1,18 +0,0 @@--- babbling brook (jmcc)--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html--import Sound.SC3.Monadic--babbling_brook :: IO 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
− src/babbling-brook.scd
@@ -1,7 +0,0 @@-{ var b = { arg f, m, a, g-          ; { var n1 = OnePole.ar(BrownNoise.ar, 0.99)-            ; var n2 = LPF.ar(BrownNoise.ar, f)-            ; RHPF.ar(n1, n2 * m + a, 0.03, g) } }-; var x = b.value(14, 400, 500, 0.006) ! 2-; var y = b.value(20, 800, 1000, 0.010) ! 2-; Out.ar(0, x + y) }.play
− src/birds-m.hs
@@ -1,34 +0,0 @@--- birds (jmcc)--- http://lists.create.ucsb.edu/pipermail/sc-users/2007-April/033239.html--import Sound.SC3.Monadic--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)--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
− src/bit-reduction.hs
@@ -1,25 +0,0 @@--- bit reduction (adc)--import Sound.SC3.ID--sample_rate_decrease :: UGen-sample_rate_decrease =-  let f = lfNoise2 'a' KR 8-      nh = lfNoise2 'a' 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-      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--main :: IO ()-main = audition (out 0 (sample_rate_decrease + bit_rate_decrease))
− src/bit-reduction.scd
@@ -1,14 +0,0 @@-{ var f = LFNoise2.kr(8)-; var nh = LFNoise2.kr(3)-; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)-; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)-; Out.ar(0, Latch.ar(src, Impulse.ar(sr, 0))) }.play--{ var f = LFNoise2.kr(8)-; var nh = LFNoise2.kr(3)-; var src = Blip.ar(f * 200 + 300, nh * 10 + 20)-; var sr = MouseX.kr(1000, s.sampleRate * 0.1, 'exponential', 0.2)-; var bit_sz = MouseY.kr(1, 24, 'exponential', 0.2)-; var down_sample = Latch.ar(src, Impulse.ar(sr, 0))-; var bit_redux = down_sample.round(0.5 ** bit_sz)-; Out.ar(0, [down_sample, bit_redux]) }.play
− src/black-atlantic-currents.hs
@@ -1,108 +0,0 @@--- black atlantic currents (jr)--- http://www.listarc.bham.ac.uk/lists/sc-users/msg08240.html--import Data.Numbers.Primes {- primes -}-import Sound.SC3.ID {- 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 . fromIntegral--bac :: UGen-bac =-  let x = let ph = i yn * uclone 'a' 2 (lfdNoise3 'a' 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-          in out yn (sinOsc AR (50 * 2) ph)-  in mrg [inFeedback 2 xn,y,x]--bac' :: UGen-bac' =-  let x = let f = c (nth_prime 23)-              ph = i yn * uclone 'a' 2 (lfdNoise3 'a' 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-          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 's' 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 's' KR (log 2 / 2))-              ph = i zn * n' lfdNoise3 (map sqrt [1,2]) "ab"-              f' = map (c . nth_prime) (scramble 'p' [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'''')--}--main :: IO ()-main = audition (out 0 bac)
− src/bohlen-pierce-140.hs
@@ -1,22 +0,0 @@--- bohlen-pierce-140 (jj)--- http://sccode.org/1-W--import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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-    in o * e--bp140 :: Synthdef-bp140 = synthdef "bp140" (out 0 bp140u)--main :: IO ()-main = audition (bp140,pbind [("dur",prand 'a' [1/6,1/3] inf)])--{--Sound.SC3.UGen.Dot.draw bp140u--}
− src/bohlen-pierce-140.scd
@@ -1,5 +0,0 @@-fork{loop{play{-f=_*3.pow(17.rand/13);-e=EnvGen.ar(Env.perc,1,0.3,0,1,2);-PMOsc.ar(f.([438,442]),f.(880),f.(e))*e-};[1/6,1/3].choose.wait}}
− src/bottle-m.hs
@@ -1,28 +0,0 @@--- bottle (sc)--import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--bottle :: UId m => m UGen-bottle = do-  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-      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 <- chain 2 rapf flute-  return (cls f)--main :: IO ()-main = overlapTextureU (0,2,2,maxBound) =<< bottle
− src/bowed-string-m.hs
@@ -1,26 +0,0 @@--- bowed string (jmcc)--import Control.Monad-import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--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 <- liftM midiCPS (liftM2 (+) (iChoose' scale) (iChoose' 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 (2,5,12,maxBound) =<< bowed_string
− src/bowed-string.scd
@@ -1,13 +0,0 @@-{ var root = 5-; var scale = #[0,2,4,5,7,9,11] + root-; var oct = #[24,36,48,60,72,84]-; var f = (scale.choose + oct.choose).midicps-; var n0 = BrownNoise.ar().dup-; var r0 = ExpRand.new(0.125,0.5)-; var n1 = LFNoise1.kr(r0)-; var r1 = Rand.new(0.7,0.9)-; var r2 = Array.fill(12,{ Rand.new(1.0,3.0) })-; var x = n0 * 0.007 * max(0,n1 * 0.6 + 0.4)-; var d = `[Array.series(12,f,f),Array.geom(12,1,r1),r2]-; var k = Klank.ar(d,x)-; Out.ar(0,(k * 0.1).softclip) }.play
− src/bs-070705.hs
@@ -1,87 +0,0 @@--- bs-070705 (rd)--import Control.Monad-import Sound.SC3.Monadic-import Sound.OpenSoundControl-import System.Random---- | 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 :: Int -> IO ()-alloc_data n = do-  let alloc fd m b = async fd (b_alloc b m 1)-  withSC3 (\fd -> mapM_ (alloc fd n) [10, 11, 12])---- | Simple synthesis renderer, r is the impulse frequency (trigger rate).-play_data :: UGen -> IO ()-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'-  audition (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 :: ([Double] -> [Double]) -> Int -> Int -> Double -> IO ()-run_data s n m i = do-  f <- rrandl n 32 96-  a <- rrandl n 0.25 1-  p <- rrandl n (-1) 1-  let prepare l' = take m (iterate s l')-      f' = prepare f-      a' = prepare a-      p' = prepare p-      l fd i' (f'', a'', p'') = do-                     send fd (b_setn 10 [(0, f'')])-                     send fd (b_setn 11 [(0, a'')])-                     send fd (b_setn 12 [(0, p'')])-                     pauseThread i'-      c fd = mapM_ (l fd i) (zip3 f' a' p')-  withSC3 c---- | A random number.-rrand :: Double -> Double -> IO Double-rrand l r = getStdRandom (randomR (l,r))---- | A list of random numbers.-rrandl :: Int -> Double -> Double -> IO [Double]-rrandl n l r = replicateM n (rrand l r)---- | Run 'odd_even' for 32 iterations at 1 second intervals.-main :: IO ()-main = do-  alloc_data 96-  play_data 24-  run_data odd_even 96 32 1--{---alloc_data 96-play_data 24 >> run_data odd_even 96 96 0.35-play_data 24 >> run_data bubble 96 64 0.75-play_data 24 >> run_data bubble 96 64 0.25-play_data 24 >> run_data bubble 96 32 0.25-play_data 24 >> run_data odd_even 96 16 0.25---}-
− src/ccomb.hs
@@ -1,21 +0,0 @@--- ccomb (rd)--import Sound.SC3.Monadic--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
− src/ccomb.scd
@@ -1,11 +0,0 @@-{var lwr = 48-;var flwr = lwr.midicps-;var spart = {arg t-              ;{var n = LFNoise2.kr(0.1).range(lwr,72.0)-               ;var e = Decay2.kr(t,0.01,TRand.kr(0.05,0.75,t))-               ;var x = WhiteNoise.ar() * e-               ;var m = LFNoise2.kr(0.1)-               ;var f = Lag.kr(n.midicps,0.25)-               ;CombC.ar(x,flwr.reciprocal,f.reciprocal,m.range(1,8))}}-;var t = Dust.kr([0.75,0.35])-;Out.ar(0,Mix.fill(12,spart.value(t)) * 0.1)}.play
− src/cds-070701.hs
@@ -1,110 +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.OpenSoundControl-import Sound.SC3.Monadic---- | 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.-fetch :: D -> R -> P-fetch 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 (fetch t) [0,1 / fromIntegral n .. 1]---- | Allocate data buffers for linearized envelopes.-alloc_data :: Int -> IO ()-alloc_data n = do-  let alloc fd b = async fd (b_alloc b n 1)-  withSC3 (\fd -> mapM_ (alloc fd) [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 (\fd -> do send fd (b_setn 10 [(0,setup t)])-                     send fd (b_setn 11 [(0,setup f)])-                     send fd (b_setn 12 [(0,setup a)])-                     send fd (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
− src/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-import qualified Sound.SC3.Lang.Random.IO as R-import Sound.SC3.Monadic--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
− src/chain-saw.scd
@@ -1,21 +0,0 @@-{ var f = { arg s1-          ; var rate = ExpRand.new(0.1, 2).dup-          ; var n1 = { LFNoise1.kr(rate).exprange(0.01, 10) }-          ; var n2 = { LFNoise1.kr(rate).exprange(10, 50) }-          ; var n3 = LFNoise1.kr(rate).exprange(2, 10)-          ; var f1 = if(0.6.coin) { n1.value } { n2.value }-          ; var s2 = [1 - s1, s1.reverse].choose-          ; var f2 = LinExp.kr(s1, -1, 1, f1, f1 * n3)-          ; var u1 = LFSaw.kr(f2, 0)-          ; var u2 = LFSaw.kr(f1 * 0.1, 0, 0.1, 1)-          ; var u3 = if(0.5.coin) { u1 * s2 } { u1 * u2 }-          ; u3.clip2(1) }-; var g = { arg func, n-          ; n.do { func = func <> func }-          ; func }-; var inp = LFSaw.kr(0.2 * [1, 1.1], 0)-; var b_freq = [70, 800, 9000, 5242]-; var ff = g.(f, 4).value(inp)-; var c_saw = Saw.ar(ff.exprange(6, 11000)).product-; var b_saw = BPF.ar(c_saw, b_freq, 0.2).sum.dup-; Out.ar(0, b_saw * 0.3) }.play
− src/choip.hs
@@ -1,27 +0,0 @@--- choip (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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 'a' 'b' 1 30 t) 0-        f = xl 'c' 'd' 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--choip_pp :: UGen -> UGen-choip_pp =-    let f x = allpassN x 0.1 (udup 2 (rand 'a' 0 0.05)) 4-    in useq 'a' 4 f--main :: IO ()-main = overlapTextureU_pp (10,1,8,maxBound) choip 2 choip_pp
− src/choip.scd
@@ -1,9 +0,0 @@-var t = 12;-var z = OverlapTexture.ar({-  var i = Impulse.ar(XLine.kr(exprand(1,30),exprand(1,30),t));-  var f = XLine.kr(exprand(600.0,8000.0),exprand(600.0,8000.0),t);-  var a = SinOsc.ar(Decay2.ar(impulses,0.05,0.5,-0.9*f,f));-  var l = Line.kr(1.0.rand2,1.0.rand2,t);-  var j = XLine.kr(exprand(0.01,0.5),exprand(0.01,0.5),t);-  Pan2.ar(Decay2.ar(i * j,0.01,0.2,a),l)},t-2,1,8,2);-4.do({z = AllpassN.ar(z,0.1,[0.05.rand,0.05.rand],4)});
− src/chrd-m.hs
@@ -1,25 +0,0 @@--- chrd (rd)--import Sound.SC3.Monadic--chrd :: IO 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 :: IO UGen-chrd9 = return . mix =<< clone 9 chrd--main :: IO ()-main = audition . out 0 =<< chrd9
− src/chrd-t.hs
@@ -1,36 +0,0 @@--- chrd-t (rd)--import Control.Monad-import Control.Monad.Random {- MonadRandom -}-import Sound.SC3-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 (0,21,3,maxBound) (runRand (chrdN 6 9 3)) g
− src/chrd.scd
@@ -1,16 +0,0 @@-{ var chrd = { var r0 = Rand.new(0.05, 0.5)-             ; var r1 = Rand.new(-1, 1)-             ; var r2 = Rand.new(-1, 1)-             ; var r3 = Rand.new(0.15, 0.35)-             ; var r4 = Rand.new(0.005, 0.01)-             ; var m = [60, 65, 72, 77, 79, 84]-             ; var ds = 3-             ; var d = [5, 4, 5, 7, 4, 5] * ds-             ; var f = XLine.kr(m, m + r0, d).midicps-             ; var z_ = Env.linen(r3 * d, 0, (1 - r3) * d, r4)-             ; var z = Env.sine(d.maxItem, r4)-             ; var e = EnvGen.kr(z, 1, 1, 0, 1)-             ; var p = XLine.kr(r1, r2, d)-             ; var o = SinOsc.ar(f, 0)-             ; Mix.ar(Pan2.ar(o, p, e)) }-; Out.ar(0, Mix.fill(9, chrd)) }.play
− src/clustered-sines.hs
@@ -1,21 +0,0 @@--- clustered sines (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--cs :: UGen-cs =-    let n = 80-        f1 = rand 'a' 100 1100-        f2 = 4 * f1-        sp = let y = (udup' n (f1 + rand 'a' 0 f2))-             in klangSpec y (map (f1 /) y) (replicate n 0)-    in uclone 'a' 2 (klang AR 1 0 sp * (0.3 / fromIntegral n))--main :: IO ()-main = xfadeTextureU (4,4,maxBound) cs--{--audition (out 0 cs)-Control.Concurrent.forkIO (Sound.SC3.UGen.Dot.draw (out 0 cs))--}
− src/comb-delay-sweeps.hs
@@ -1,32 +0,0 @@--- comb delay sweeps (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture-import System.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'')--cds :: ST -> (UGen,ST)-cds st =-    let (s,e,g) = wander st-        l = line KR (constant s) (constant e) 4 DoNothing-        w = whiteNoise 'c' AR * 0.005-        d = 1 / midiCPS l-        c = 1 / midiCPS (constant s)-        o = combC w 0.01 d (c * 1000)-    in (pan2 o (rand 'd' (-1) 1) 1,(s,e,g))--main :: IO ()-main = overlapTextureS (4/3,4/3,9,maxBound) cds (60,61,mkStdGen 3567824)--{--Sound.SC3.UGen.Dot.draw cds--}
− src/contamination-zone.hs
@@ -1,31 +0,0 @@--- contamination zone (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--cz :: UGen-cz =-    let f = expRand 'a' 800 8000-        p = let e = lfNoise1 'a' KR (rand 'a' 0 3) * 0.0008 + 0.0022-            in pinkNoise 'a' AR * e-        s = sinOsc KR (linRand 'a' 0 1 0) 0 * (0.7 * f) + f-        k = let sp = klankSpec (udup' 4 (rand 'a' 50 2000))-                               [1,1,1,1]-                               (udup' 4 (rand 'a' 0.2 4))-            in abs (klank p 1 0 1 sp) * iChoose 'a' (mce [-1,1])-        r = rlpf k s 0.1-        a = lfPulse KR (linRand 'a' 0 150 0) 0 (rand 'a' 0.2 0.4)-    in pan2 r (lfNoise1 'a' KR (rand 'a' 0 1)) a--cz_pp :: UGen -> UGen-cz_pp =-    let f x = allpassN x 0.04 (udup 2 (rand 'a' 0 0.04)) 16-    in useq 'a' 6 f--main :: IO ()-main = overlapTextureU_pp (8,3,4,maxBound) cz 2 cz_pp--{--audition (out 0 cz)-audition (out 0 (cz_pp cz))--}
− src/coolant.hs
@@ -1,21 +0,0 @@--- coolant (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--coolant :: UGen-coolant =-    let p = 20-        s = onePole (udup 2 (brownNoise 'a' AR) * 0.0015) 0.95-        n = replicate p 1-        sp = mce [klankSpec (udup' p (rand 'a' 40 2400)) n n-                 ,klankSpec (udup' p (rand 'b' 40 2400)) n n]-    in klank s 1 0 1 (mceTranspose sp)--main :: IO ()-main = xfadeTextureU (4,4,maxBound) coolant--{--audition (out 0 coolant)-Sound.SC3.UGen.Dot.draw (out 0 coolant)--}
− src/cricket.hs
@@ -1,22 +0,0 @@--- cricket (rd)--import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--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 (2,7,3,maxBound) =<< cricket--{--audition . out 0 =<< cricket--}
− src/cricket.scd
@@ -1,8 +0,0 @@-{ var r1 = Array.fill(2, { Rand.new(10, 13) })-; var r2 = Array.fill(2, { Rand.new(10, 13) })-; var r3 = Array.fill(2, { Rand.new(4, 7) })-; var t = Impulse.kr(0.7, 0)-; var e = Decay2.kr(Impulse.kr(r1, 0), 0.001, 0.005)-; var f = SinOsc.kr(r2, 0) * e * r3-; var r4 = Array.fill(2, { TRand.kr(2220, 2227, t) })-; Out.ar(0, SinOsc.ar(r4, 0) * f * 0.25) }.play
− src/crotale-sine.hs
@@ -1,133 +0,0 @@--- crotale-sine (rd)--import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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--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)])--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])
− src/crotale.hs
@@ -1,176 +0,0 @@--- crotale (rd)--import Sound.SC3.ID--crotale :: UGen-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-        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])-
− src/crotale.scd
@@ -1,164 +0,0 @@-{ var crotale = [ [ 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 ] ]-; var cf = crotale[0]-; var ca = crotale[1]-; var cd = crotale[2]-; var ps = [-12, -5, 0, 2, 4, 5, 7, 12]-; var n = PinkNoise.ar()-; var t = Dust.kr(3)-; var fs = Select.kr(TIRand.kr(0, 7, t), ps)-; var g = TRand.kr(0, 1, t)-; var fo = TRand.kr(0, 1, t)-; var ds = TRand.kr(2, 7, t)-; var p = TRand.kr(-1, 1, t)-; var s = Decay2.kr(t, 0.06, 0.01) * n * g-; var k = DynKlank.ar(`[cf, ca, cd.reciprocal], s, fs.midiratio, fo, ds)-; Out.ar(0, Pan2.ar(k, p, 1)) }.play
− src/cut-outs.hs
@@ -1,19 +0,0 @@--- cut-outs (rd)--import Sound.SC3.Monadic--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
− src/cut-outs.scd
@@ -1,11 +0,0 @@-{ var t = Impulse.ar(22, 0) * (SinOsc.kr(0.5, 0) + 1)-; var x = MouseX.kr(0.005, 0.12, 'exponential', 0.1)-; var y = MouseY.kr(0.01, 0.52, 'exponential', 0.1)-; var n = { var n1 = LFNoise0.kr(2)-          ; var n2 = CoinGate.ar(0.05 + n1 + (y * 0.4) + (t * 0.5), t * 0.5)-          ; var n3 = TExpRand.ar([500, 900], 1600, t)-          ; Ringz.ar(n2, n3, x) }-; var s = Mix.fill(3, n)-; var b = TRand.kr(0, 1, Dust.kr(8))-; Out.kr(0, b)-; Out.ar(0, s.clip2(In.kr(0, 1)) * 0.25) }.play
− src/cymbalism-accelerando.hs
@@ -1,24 +0,0 @@--- cymbalism accellerando (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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 'a') (y 'A')-      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
− src/cymbalism.hs
@@ -1,26 +0,0 @@--- cymbalism (jmcc)--import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--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--}
− src/cymbalism.scd
@@ -1,11 +0,0 @@-{var p = 15-;var f1 = Rand.new(500,2500)-;var f2 = Rand.new(0,8000)-;var y = {var f = Array.fill(p,{f1 + Rand.new(0,f2)} )-         ;var rt = Array.fill(p,{1 + Rand.new(0,4)})-         ;`[f,nil,rt]}-;var z = Array.fill(2,y)-;var t = Impulse.ar(Rand.new(0,3) + 0.5,0)-;var n = WhiteNoise.ar() * 0.03-;var s = Decay.ar(t,0.004) * n-;Out.ar(0,Klank.ar(z,s))}.play
− src/dark-sea-horns.hs
@@ -1,20 +0,0 @@--- dark sea horns (jl)--- http://sccode.org/1-j#c51--import Sound.SC3.ID--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 (udup 2 (rand 'a' 0.1 0.3)) 5-        o = tanh (useq 'a' 9 f a)-    in mrg2 o (localOut o)--main :: IO ()-main = audition (out 0 dark_sea_horns)--{--Sound.SC3.UGen.Dot.draw dark_sea_horns--}
− src/dark-sea-horns.scd
@@ -1,13 +0,0 @@-{n=LFNoise1-;x=LocalIn.ar(2)-;a=SinOsc.ar(65,x*n.ar(0.1,3),n.ar(3,6)).tanh-;9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)}-;a=a.tanh-;LocalOut.ar(a)-;a}.play--n=LFNoise1;-Ndef(\x,{-a=SinOsc.ar(65,Ndef(\x).ar*n.ar(0.1,3),n.ar(3,6)).tanh;-9.do{a=AllpassL.ar(a,0.3,{0.2.rand+0.1}!2,5)};-a.tanh}).play
− src/data-space.hs
@@ -1,25 +0,0 @@--- data space (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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-        f = p0 * p1 + p2 * p3 + p4 * p5-        dt = rand 's' 0.15 0.35-        o = lfPulse AR f 0 0.5 * 0.04-        l = lfNoise0 't' KR (r 'u' 3) * 0.8-    in combL (pan2 o l 1) dt dt 3--main :: IO ()-main = overlapTextureU (6,1,4,maxBound) data_space
− src/deep-sea.hs
@@ -1,37 +0,0 @@--- deep sea (jrhb)--import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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)-  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2] inf)])--{--Sound.SC3.UGen.Dot.draw (out 0 deep_sea)-audition (out 0 deep_sea)--}
− src/deep-sea.scd
@@ -1,15 +0,0 @@-{ var amp = 1-; var pan = 0-; var variation = 0.9-; var n = Rand.new(7, 46)-; var dt1 = 25.0 + Rand.new(-1.7, 1.7)-; var dt2 = (dt1 + LFNoise2.kr(2)) * variation * 0.001-; var freq = 901 + Rand.new(0, 65)-; var t = Impulse.ar(dt2.reciprocal, 0, 100)-; var count = PulseCount.ar(t, 0)-; var mul = count < n-; var u1 = BPF.ar(mul * t, freq, 1) * 0.1-; var freq2 = freq * ((count % LFNoise1.kr(1).range(2, 20)) + 1)-; var u2 = BPF.ar(u1, freq2, 1) * 0.2-; DetectSilence.ar(u2, 0.0001, 0.2, 2)-; Out.ar(0, Pan2.ar(u2, pan, amp * 10)) }.play
− src/deep-trip.hs
@@ -1,19 +0,0 @@--- deep trip (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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'-        z = sinOsc AR f 0 * a-        s = pan2 z (lfNoise1 'g' KR (rand 'h' 0 5)) 1-        c0 = combN s 0.5 (mce [rand 'i' 0.3 0.5,rand 'j' 0.3 0.5]) 20-        c1 = combN s 0.5 (mce [rand 'k' 0.3 0.5,rand 'l' 0.3 0.5]) 20-        in s + c0 + c1--main :: IO ()-main = overlapTextureU (12,4,4,maxBound) deep_trip
− src/default.hs
@@ -1,24 +0,0 @@--- default (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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))--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)])
− src/default.scd
@@ -1,8 +0,0 @@-SynthDef(\default, {-arg out=0,freq=440,amp=0.1,pan=0,gate=1;-var e = Linen.kr(gate, 0.01, 0.7, 0.3, 2);-var f3 = freq + [0, Rand(-0.4,0.0), Rand(0.0,0.4)];-var l = XLine.kr(Rand(4000,5000), Rand(2500,3200), 1);-var z = LPF.ar(Mix.new(VarSaw.ar(f3, 0, 0.3, 0.3)),l) * e;-OffsetOut.ar(out, Pan2.ar(z, pan, amp));-},[\ir]).add;
− src/demanding-studies.hs
@@ -1,19 +0,0 @@--- demanding studies (jmcc)--import Sound.SC3.ID--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])-      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)
− src/demanding-studies.scd
@@ -1,10 +0,0 @@-{var s1 = Drand.new([72,75,79,82],inf)-;var s2 = Drand.new([82,84,86],1)-;var s3 = Dseq.new([72,75,79,s2],inf)-;var x = MouseX.kr(5,13,'linear',0.2)-;var tr = Impulse.kr(x,0)-;var f = Demand.kr(tr,0,[(s1 - 12).midicps,s3.midicps])-;var o1 = SinOsc.ar(f + [0,0.7],0)-;var o2 = Saw.ar(f + [0,0.7]) * 0.3-;var o3 = (o1 + o2).distort.log.distort.cubed-;Out.ar(0,o3 * 0.1)}.play
− src/dial-history.hs
@@ -1,35 +0,0 @@--- dial history (jrhb)--import Data.List-import Sound.SC3.Monadic--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
− src/dial-history.scd
@@ -1,22 +0,0 @@-{ var mfv = [[697, 770, 852, 941], [1209, 1336, 1477, 1633]]-; var numbers = [[3, 1]] ++ {: [a, b], a <- (0..2), b <- (0..2) }.all-; var n = Dwhite.new(7, 12, inf)-; var w = Dwhite.new(2, 7, 1)-; var b = Dbrown.new(0.1, 0.2, 0.01, n)-; var rate = Dseq.new([w, b], inf)-; var q = Dseq.new((1..10), inf)-; var trig = Trig.kr(TDuty.kr(rate, 0, q), 0.09)-; var pat = Latch.kr(trig, trig)-; var x = MouseX.kr(0, 1, 'linear', 0.2)-; var h = Hasher.kr(pat * x)-; var which = h.range(0, numbers.size).trunc.(1)-; var both = Select.kr(which, numbers)-; var dial = Select.kr(both, mfv.flop)-; var sig = SinOsc.ar(dial, 0) * 0.05 * trig-; var d = LFDNoise3.kr(0.5)-; var dsig = DelayC.ar(sig, 0.2, d.range(0, 0.01))-; var g1 = GrayNoise.AR-; var g2 = GrayNoise.AR-; var z = Silent.ar(1)-; var hiss = g1 * 0.01 + HPF.ar(g2 * 0.02, 3000)-; Out.ar(0, [z, dsig + hiss]) }.play
− src/diffraction.hs
@@ -1,28 +0,0 @@--- diffraction (rd)--import Control.Monad-import Sound.SC3.Monadic--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
− src/diffraction.scd
@@ -1,17 +0,0 @@-{var x = MouseX.kr(0.001,0.02,'exponential',0.1)-;var y = MouseY.kr(120,400,'exponential',0.1)-;var p = {var f = LFNoise0.kr(4) * [32,64]-         ;var w = LFNoise0.kr(32) * x-         ;var z = LFNoise0.kr(2) * 0.1-         ;var m = LFNoise0.kr(6)-         ;var s = Pulse.ar(f,w)-         ;Resonz.ar(s,y + z,(m * 0.4) + 0.8) * 0.5}-;var q = {var n = LFNoise0.kr(128)-         ;CombN.ar(p.value,0.2,(n * 0.1) + 0.1,3)}-;var r = {var x1 = MouseX.kr(0.75,1.25,'exponential',0.1)-         ;var y1 = MouseY.kr(0.25,1,'exponential',0.1)-         ;var f = {var fr = Rand(50,59) * x1-                  ;var am = Rand(0.04,0.16) * y1-                  ;SinOsc.ar(fr,0) * am}-         ;[Mix.fill(16,f),Mix.fill(12,f)]}-;Out.ar(0,p.value + q.value + r.value)}.play
− src/discretion-m.hs
@@ -1,23 +0,0 @@--- discretion-m (rd)--import Sound.SC3.Monadic--discretion :: IO 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.UGen.Dot.draw =<< discretion--}
− src/discretion.hs
@@ -1,23 +0,0 @@--- discretion (rd)--import Sound.SC3.ID--discretion :: UGen-discretion =-  let mkls bp t = envGen KR 1 1 0 1 RemoveSynth (envCoord bp t 1 EnvLin)-      part = let f1 = udup 2 (rand 'a' 50 55)-                 f2 = udup 2 (rand 'c' 50 65)-                 f3 = udup 2 (rand 'e' 50 55)-                 a = udup 2 (rand 'g' 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)--main :: IO ()-main = audition (out 0 discretion)--{--Sound.SC3.UGen.Dot.draw discretion--}
− src/doppler.hs
@@ -1,32 +0,0 @@--- doppler (jmcc,rd)--import Sound.OpenSoundControl-import Sound.SC3---- 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 (\fd -> do print "line_x"-                     play fd (out 0 (doppler (line_x 10 100 6) s))-                     pauseThread 8-                     print "ellipse"-                     play fd (out 0 (doppler (ellipse 10 75 12) s)))
− src/drummer.hs
@@ -1,18 +0,0 @@--- drummer (thor magnusson)--import Sound.SC3.ID--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)
− src/drummer.scd
@@ -1,9 +0,0 @@-{ var tempo = 4-; var n = WhiteNoise.ar()-; var tr = Impulse.ar(tempo, 0)-; var tr_2 = PulseDivider.ar(tr, 4, 2)-; var tr_4 = PulseDivider.ar(tr, 4, 0)-; var snare = n * Decay2.ar(tr_2, 0.005, 0.5)-; var bass = SinOsc.ar(60, 0) * Decay2.ar(tr_4, 0.005, 0.5)-; var hihat = HPF.ar(n, 10000) * Decay2.ar(tr, 0.005, 0.5)-; Out.ar(0, Pan2.ar(snare + bass + hihat, 0, 0.4)) }.play
− src/e-lamell-p.hs
@@ -1,43 +0,0 @@--- e-lamell-p (rd)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.Event-import Sound.SC3.Lang.Pattern.ID--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 = iChoose 'a' (mce2 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]--main :: IO ()-main =-    let s = synthdef "e-lamell" (out 0 e_lamell)-    in audition (s,pattern)
− src/e-lamell.hs
@@ -1,66 +0,0 @@--- e-lamell (rd)--import Control.Monad-import Sound.OpenSoundControl-import Sound.SC3.ID-import qualified Sound.SC3.Lang.Random.IO as R--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 = iChoose 'a' (mce2 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 t => t -> String -> UGen -> IO OSC-sendSynth fd n u = async fd (d_recv (synthdef n u))--mk_s_new :: Double -> Double -> Double -> Double -> Double -> OSC-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 t => t -> IO ()-pattern fd = 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)-  send fd (Bundle now [p,q])-  pauseThread 0.1--run :: Transport t => t -> IO ()-run fd = do-  _ <- sendSynth fd "blip" (out 0 e_lamell)-  replicateM_ 64 (pattern fd)--main :: IO ()-main = withSC3 run
− src/early-space-music-lp-side-two.hs
@@ -1,78 +0,0 @@--- early space music LP, side 2 (jmcc)--import Sound.SC3.ID-import qualified Sound.SC3.Lang.Random.Gen as R-import Sound.SC3.Lang.Control.OverlapTexture-import qualified System.Random as R--m1 :: UGen-m1 =-    let a = rand 'a' 0 20-	b = rand 'b' 0 5000-	c = rand 'c' 0 20-	p = rand 'd' (-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-	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--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--m4 :: UGen-m4 =-    let f = midiCPS (rand 'a' 24 96)-	r = xLine KR (expRand 'b' 0.1 20) (expRand 'c' 0.1 20) 25.6 DoNothing-        a = lfPulse KR (expRand 'd' 0.2 1.2) 0 (rand 'e' 0.1 0.2)-        o i = let e = max 0 (sinOsc KR (r * rand 'f' 0.9 1.1) (rand 'g' 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 (uprotect' 'a' (map o [0..11])) * a--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)-	z = sinOsc AR f 0 * a0 * a1-    in pan2 z (lfNoise1 'h' KR (rand 'i' 0 5)) 1--enumFromN :: Enum a => a -> Int -> [Int]-enumFromN e i = let j = fromEnum e in [j .. j + i]--m7 :: UGen-m7 =-    let p = 15-        z = let y = let fr = map (\e -> expRand e 100 6000) (enumFromN 'a' p)-                        rt = map (\e -> rand e 2 6) (enumFromN 'a' p)-                    in klankSpec fr (replicate p 1) rt-            in uclone 'a' 2 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 z)) * 0.3--esmlp2 :: R.RandomGen g => g -> (UGen, g)-esmlp2 = R.choose (map (* 0.3) [m1,m2,m3,m4,m6,m7])--esmlp2_pp :: UGen -> UGen-esmlp2_pp i =-    let c = combN i 0.3 (mce2 (rand 'a' 0.1 0.3) (rand 'a' 0.12 0.32)) 8-    in mix (uclone 'a' 5 c) * 0.3--main :: IO ()-main = do-  let g = R.mkStdGen 0-  overlapTextureS_pp (2,4,6,maxBound) esmlp2 g 2 esmlp2_pp--{--audition (out 0 (m6 * 0.5))-Sound.SC3.UGen.Dot.draw m7--}
− src/eggcrate-m.hs
@@ -1,19 +0,0 @@--- eggcrate-m (rd)--import Sound.SC3.Monadic--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
− src/eggcrate.hs
@@ -1,22 +0,0 @@--- eggcrate (rd)--import Sound.SC3.ID--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) ('a','b')-      t = dust 'c' KR 2.4-      (f0,f1) = atp (\z -> tChoose z t p) ('a','b')-      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)
− src/eggcrate.scd
@@ -1,11 +0,0 @@-{var eggcrate = {arg u,v-                ;(u * pi).cos * (v * pi).sin}-;var p = [64,72,96,128,256,6400,7200,8400,9600]-;var x = BrownNoise.kr()-;var y = BrownNoise.kr()-;var t = Dust.kr(2.4)-;var f0 = TChoose.kr(t,p)-;var f1 = TChoose.kr(t,p)-;var f = LinLin.kr(eggcrate.value(x,y),-1,1,f0,f1)-;var a = LinLin.kr(x,-1,1,0,0.1)-;Out.ar(0,Pan2.ar(Mix.ar(SinOsc.ar(f,0)),y,a))}.play
− src/ellipse-based-synthesis.hs
@@ -1,40 +0,0 @@--- ellipse based synthesis (nc)--- http://www.listarc.bham.ac.uk/lists/sc-users/msg09524.html--import Sound.SC3--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)))--}
− src/f-lets.hs
@@ -1,30 +0,0 @@--- f-lets (rd)--import Sound.SC3.Monadic--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
− src/fb-090531.hs
@@ -1,47 +0,0 @@--- fb-090531 (rd)--import Sound.OpenSoundControl {- hosc -}-import Sound.SC3 {- hsc3 -}-import Control.Monad-import System.Random {- random -}--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 t => Double -> t -> IO ()-c_reset n fd = send fd (c_setn [(0,replicate 4 n)])---- | Random reset.-r_reset :: Transport t => t -> IO ()-r_reset fd = do-  cs <- replicateM 4 (randomRIO (-1,1))-  send fd (c_setn [(0,cs)])---- | Loop random reset.-lr_reset :: Transport t => Double -> t -> IO b-lr_reset t fd = pauseThread t >> r_reset fd >> lr_reset t fd---- | 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--}
− src/fbl-fbf.hs
@@ -1,36 +0,0 @@--- fbl-fbf (rd)--import Sound.SC3.ID--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 'a' 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 (\fd -> reset fd >> audition fbl_fbf)
− src/fm-iter.hs
@@ -1,21 +0,0 @@--- fm-iter (rd)--import Sound.SC3.ID--fm_iter :: UGen-fm_iter =-  let t0 = impulse AR (recip 0.30) 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-      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 = audition (out 0 fm_iter)
− src/fm-kltr-p.hs
@@ -1,38 +0,0 @@--- fm-kltr-p (rd)--import Sound.SC3.Lang.Pattern.ID-import Sound.SC3.ID--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-      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 pan2 (sinOsc AR m 0) l e--main :: IO ()-main = do-  let s = synthdef "fm_kltr" (out 0 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)
− src/fm-kltr.hs
@@ -1,62 +0,0 @@--- fm-kltr (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic-import System.Random--fm_kltr :: UId m => m UGen-fm_kltr = do-  r1 <- rand 0.975 1.025-  r2 <- rand 0.5 1.5-  r3 <- rand 0.975 1.025-  r4 <- 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))--rrand :: Random a => a -> a -> IO a-rrand l r = getStdRandom (randomR (l, r))--type R = Double--fm :: Transport t => t -> R -> R -> R -> R -> R -> IO ()-fm fd 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 fd (s_new "fm_kltr" (-1) AddToTail 1 p)--nd :: Transport t => t -> IO ()-nd fd = 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 fd 53 ff a d i-  pauseThread t--run :: Transport t => t -> IO ()-run fd = do-  u <- fm_kltr-  _ <- async fd (d_recv (synthdef "fm_kltr" u))-  sequence_ (replicate 32 (nd fd))--main :: IO ()-main = withSC3 run
− src/forest-sounds.hs
@@ -1,17 +0,0 @@--- forest sounds (paul jones)--- sc-users, 2007-04-06--import Sound.SC3.Monadic--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
− src/forest-sounds.scd
@@ -1,5 +0,0 @@-{ var insects = { var n1 = BrownNoise.ar-                ; var n2 = LFNoise2.kr(50)-                ; var o = SinOsc.kr(n2 * 50 + 50, 0) * 100 + 2000-                ; BPF.ar(n1, o, 0.001) * 10 }-; Out.ar(0, Array.fill(2, insects)) }.play
− src/fwalk.hs
@@ -1,39 +0,0 @@--- fwalk (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic--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 :: Transport t => t -> IO ()-run fd = 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 fd (b_alloc_setn1 0 0 n)-  _ <- async fd (b_alloc_setn1 1 0 m)-  f <- fwalk-  play fd (out 0 f)--main :: IO ()-main = withSC3 run
− src/h-chatter.hs
@@ -1,32 +0,0 @@--- h-chatter (rd)--import Control.Monad-import Sound.SC3.Monadic--wrp :: UGen -> UGen -> UGen -> UGen-wrp i = linLin i (-1) 1--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
− src/h-chatter.scd
@@ -1,18 +0,0 @@-{ var h0 = { var n = LFNoise0.kr(1, 5, 5)-           ; var a = LFNoise0.kr(1, 0.2, 1.2)-           ; var b = LFNoise0.kr(1, 0.15, 0.15)-           ; var f = 40-           ; var h = HenonN.ar([f, f * 0.5], a, b, 0, 0)-           ; Saw.ar(h * 3200 + 1600) * 0.35 }-; var h1 = { var n0 = LFNoise0.kr(32)-           ; var n1 = LFNoise0.kr(2)-           ; var a = MouseX.kr(1.2, 1.4, 'linear', 0.1)-           ; var b = MouseY.kr(0.2, 0.3, 'linear', 0.1)-           ; var h = n0.range(1, 32)-           ; var p = n1.range(2400, 3200)-           ; var l = n1.range(-0.75, 0.75)-           ; var g = n1.range(0.55, 0.85)-           ; var f = 40-           ; var o = Blip.ar(HenonN.ar(f, a, b, 0, 0).range(p, p * 2), h)-           ; Pan2.ar(o, l, g) * 0.35 }-; Out.ar(0, h0.value + h1.value) }.play
− src/half-life.hs
@@ -1,14 +0,0 @@--- half-life (jrhb)--import Sound.SC3.ID--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 'a' AR (n * log 2 * t_half)-  in mrg [activity,localOut activity]--main :: IO ()-main = audition (out 0 half_life)
− src/half-life.scd
@@ -1,6 +0,0 @@-{ var t_half = 3.92-; var n_atoms = 1e+5-; var n = max(0, n_atoms - PulseCount.ar(LocalIn.ar(2), 0))-; var activity = Dust.ar(n * 2.log / t_half)-; LocalOut.ar(activity)-; Out.ar(0, activity) }.play
− src/hansm.hs
@@ -1,108 +0,0 @@-{--http://www.fredrikolofsson.com/f0blog/?q=node/457-http://obiwannabe.co.uk/tutorials/html/tutorial_birds.html--}--import Sound.OpenSoundControl-import Sound.SC3--type T3 a = (a,a,a)-type Bird_Call_Param a = (T3 a,T3 a,T3 a,T3 a,T3 a)--bird_call :: Bird_Call_Param UGen -> IO ()-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 = env [0,a,0] [aT,dT] [x,x] (-1) (-1)-            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-	fmod = sinOsc AR freq1 0 * amp1 + 1-	amod = 1 - sinOsc AR freq2 0 * amp2-	z = sinOsc AR ((freq * 7000 + 300) * fmod) 0 * amod-    in audition (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 >> pauseThread 1.25-  mapM_ fn xs-
− src/harmonic-swimming-m.hs
@@ -1,15 +0,0 @@--- harmonic swimming (jmcc)--import Sound.SC3.Monadic--main :: IO ()-main =-  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 audition . out 0 . sum =<< mapM o [0..p]
− src/harmonic-swimming.hs
@@ -1,18 +0,0 @@--- harmonic swimming (jmcc)--import Sound.SC3.ID--harmonic_swimming :: UGen-harmonic_swimming =-  let a = 0.02-      f = 50-      p = 20-      l = line KR 0 (- a) 60 DoNothing-      o h = let r = udup 2 (rand 'a' 2 8)-                n = lfNoise1 'a' KR r-                e = max 0 (n * a + l)-            in fSinOsc AR (f * (h + 1)) 0 * e-  in sum (uprotect' 'a' (map o [0..p]))--main :: IO ()-main = audition (out 0 harmonic_swimming)
− src/harmonic-swimming.scd
@@ -1,10 +0,0 @@-{ var a = 0.02-; var f = 50-; var p = 20-; var l = Line.kr(0, a.neg, 60, 0)-; var o = { arg h-          ; var r = 6 + [Rand.new(-4, 4), Rand.new(-4, 4)]-          ; var n = LFNoise1.kr(r)-          ; var e = max(0, n * a + l)-          ; FSinOsc.ar(f * (h + 1), 0) * e }-; Out.ar(0, (0..p).collect(o).sum) }.play
− src/harmonic-tumbling.hs
@@ -1,17 +0,0 @@--- harmonic tumbling (jmcc)--import Sound.SC3.Monadic--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
− src/harmonic-tumbling.scd
@@ -1,9 +0,0 @@-{var f = 80-;var p = 10-;var t = XLine.kr([10,11],0.1,60,doneAction: 0)-;var o = {arg h-         ;var n = Dust.kr(t)-         ;var r = Rand.new(0,0.5)-         ;var e = Decay2.kr(n * 0.02,0.005,r)-         ;FSinOsc.ar(f * (h + 1),0) * e}-;Out.ar(0,(0..p).collect(o).sum)}.play
− src/hell-is-busy.hs
@@ -1,13 +0,0 @@--- hell is busy (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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--main :: IO ()-main = overlapTextureU (4,4,8,maxBound) hib
− src/hell-is-busy.scd
@@ -1,2 +0,0 @@-var o = FSinOsc.ar(400+2000.0.rand,LFPulse.kr(1+10.0.rand,0.7.rand,0.04));-{OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},4,4,8,2)}.play
− src/hh-808.hs
@@ -1,30 +0,0 @@--- hh-808 (ryan at wabdo.com)--- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/036131.html--import Sound.SC3--hh_808 :: UGen-hh_808 =-  let time = 250-      fr = [205.35,304.41,369.64,522.71,540.54,812.21]-      pulseEnv = let e = env [1.0,0.6] [time] [EnvNum (-0.5)] 0 0-                 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 0 0-                 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)-
− src/implosion.hs
@@ -1,36 +0,0 @@--- implosion (rd)--import Sound.SC3.Monadic--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 :: IO 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
− src/insects.hs
@@ -1,21 +0,0 @@--- insects (sam pluta)--import Sound.SC3.Monadic--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
− src/jl-1-Z.hs
@@ -1,20 +0,0 @@--- http://sccode.org/1-Z--import Sound.SC3--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.UGen.Dot.draw (out 0 jl_z_1)--}
− src/jl-1-Z.scd
@@ -1,16 +0,0 @@-~jl_1_z =-    {var a = Impulse.kr(8,0).lag(0.1)-    ;var b = Crackle.ar(LFSaw.kr(3,0).abs.lag(0.1) * 1.8)-    ;var c = a * b-    ;var d = (Impulse.kr(2,0) + Impulse.kr(4,0.5)).lag(0.1)-    ;var e = Blip.ar(4.9,7) * 0.4-    ;var f = d * e-    ;tanh(c + GVerb.ar(f,1,1,0.5,0.5,15,1,0.7,0.5,300) * 5) * 2}--~jl_1_z.play-~jl_1_z.draw--/*-play{a=Impulse;tanh(a.kr(8).lag*Crackle.ar(LFSaw.kr(3).abs.lag*1.8)+-GVerb.ar([a.kr(2)+a.kr(4,0.5)].lag*Blip.ar(4.9,7,0.4)!2,1,1)*5)}-*/
− src/k-ppr-m.hs
@@ -1,29 +0,0 @@--- k-ppr-m (rd)--import Control.Monad-import Sound.SC3.Monadic--k_ppr_m :: IO 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-  liftM2 (+) (clone 2 s1) (clone 2 s2)--main :: IO ()-main = audition . out 0 =<< k_ppr_m--{--k_ppr_m >>= Sound.SC3.UGen.Dot.draw--}
− src/k-ppr.hs
@@ -1,28 +0,0 @@--- k-ppr (rd)--import Sound.SC3.ID--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 '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--main :: IO ()-main = audition (out 0 k_ppr)--{--Sound.SC3.UGen.Dot.draw k_ppr--}
− src/k-ppr.scd
@@ -1,14 +0,0 @@-{ var x = MouseX.kr(0.05, 0.35, 'linear', 0.1)-; var y = MouseY.kr(0.15, 0.75, 'linear', 0.1)-; var ti = LFTri.kr(x, 0)-; var tf = ti.range(100, 200)-; var t = Impulse.ar(tf, 0)-; var stream = { arg lf, rf, ld, rd, g-               ; { var r1 = Rand.new(9, 18)-                 ; var t_ = PulseDivider.ar(t, r1, 0)-                 ; var r2 = TRand.ar(lf, ti.range(lf, rf), t_)-                 ; var r3 = TRand.ar(ld, rd, t_)-                 ; Ringz.ar(Decay2.ar(t_, 0.01, 0.5), r2, r3 * y) * g } }-; var s1 = stream.value(3140, 6240, 0.050, 0.005, 0.15)-; var s2 = stream.value(0400, 9000, 0.005, 0.005, 0.15)-; Out.ar(0, Array.fill(2, s1) + Array.fill(2, s2)) }.play
− src/kabelscahden.hs
@@ -1,18 +0,0 @@--- Kabelscahden--- Alberto de Campo and Julian Rohrhuber, 3/2003--import Sound.SC3.ID--kabelscahden :: UGen-kabelscahden =-    let t = dust 'a' KR (7 ** lfNoise1 'b' KR 0.3)-	h' = toggleFF (coinGate 'd' 0.4 t)-	h = h' * rlpf (lfPulse AR 50 0 0.5 + (lfNoise1 'e' KR 2 * 0.5 - 0.5)) 6000 0.15-	n = trig t (tRand 'f' 0 0.01 (coinGate 'g' 0.4 t)) * whiteNoise 'h' AR-	m = trig t (tRand 'i' 0 0.01 (coinGate 'j' 0.4 t)) * brownNoise 'k' AR-	k' = trig t (lfNoise1 'l' KR (mce2 4 4.2) * 0.1 + 0.11)-        k = k' * lfClipNoise 'm' AR (lfNoise0 'n' KR 7 * 30 + 40)-    in out 0 (distort (leakDC ((h + n + m + k) * 10) 0.995))--main :: IO ()-main = audition kabelscahden
− src/karplus-strong.hs
@@ -1,47 +0,0 @@--- karplus strong (alex mclean)--- http://doc.gold.ac.uk/~ma503am/alex/vocable-source-released/--import Sound.OpenSoundControl-import Sound.SC3.ID--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 {- delay -}-        y = mouseY' KR 0.85 1 Linear 0.1 {- blend / gain -}-        ugenIf a b c = (a * b) + ((1 - a) * c)-        n = whiteNoise 'a' AR-        d = dust 'a' 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 t => t -> IO ()-act fd = 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 fd (c_setn [(0,cs aA),(15,cs aU)])-  play fd karplus_strong--main :: IO ()-main = withSC3 act
− src/klink.hs
@@ -1,19 +0,0 @@--- klink (rd)--import Sound.SC3.ID--klink :: UGen-klink =-  let n1 = lfNoise0 'a' 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-  in ringz i n2 (n3 * y)--main :: IO ()-main = audition (out 0 klink)
− src/klink.scd
@@ -1,10 +0,0 @@-{var n1 = LFNoise0.kr([0.5,1.5])-;var o = SinOsc.kr(n1,0)-;var a = Slope.kr(o).abs * [2,3]-;var t = Impulse.ar(a,0)-;var i = Decay2.ar(t,0.01,0.1)-;var x = MouseX.kr(960,3620,'exponential',0.2)-;var y = MouseY.kr(0.5,2.0,'linear',0.2)-;var n2 = TRand.ar(x,3940,t)-;var n3 = TRand.ar(0.005,0.275,t)-;Out.ar(0,Ringz.ar(i,n2,n3 * y))}.play
− src/lf-pulses.hs
@@ -1,16 +0,0 @@--- lf pulses (rd)--import Sound.SC3.ID--lf_pulses :: UGen-lf_pulses =-  let n0 = lfNoise0 'a' AR (mce2 20 40)-      n1 = lfNoise0 'a' 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)-
− src/lf-pulses.scd
@@ -1,6 +0,0 @@-{ var n0 = LFNoise0.ar([20, 40])-; var n1 = LFNoise0.ar([5, 10])-; var x = MouseX.kr(0.012, 0.19, 'exponential', 0.1)-; var f = Formlet.ar(Blip.ar(10, 12), n0 * 43 + 700, 0.005, x)-; var o = SinOsc.ar(40, 0) * n1-; Out.ar(0, LeakDC.ar(f + o, 0.995).clip2(0.75)) }.play
− src/lfo-modulation.hs
@@ -1,10 +0,0 @@--- lfo modulation (jmcc)--import Sound.SC3--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))
− src/lfo-modulation.scd
@@ -1,4 +0,0 @@-{var o = FSinOsc.kr(0.05,0,80,160)-;var p = FSinOsc.kr([0.6,0.7],0,3600,4000)-;var s = RLPF.ar(LFPulse.ar(o,0,0.4,0.05),p,0.2)-;Out.ar(0,CombL.ar(s,0.3,[0.2,0.25],2))}.play
− src/lg-timed.hs
@@ -1,24 +0,0 @@--- lg-timed (rd)--import Sound.SC3.Monadic--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-
− src/lg-timed.scd
@@ -1,19 +0,0 @@-{ var dcons = { arg x, xs-              ; var i = Dseq.new([0, 1], 1)-              ; var a = Dseq.new([x, xs], 1)-              ; Dswitch.new(a, i) }-; var timed = { arg r, y, p-              ; var d0 = Dser.new(p, r)-              ; var d1 = dcons.value(0, d0)-              ; var d2 = Dser.new(y, r)-              ; var t = TDuty.ar(d1, 0, d2, 2, 1)-              ; Latch.ar(t, t) }-; var lg = { arg u-           ; Lag.ar(u, 0.03) }-; var n = [52, 76, 66, 67, 68, 69]-; var a = [0.35, 0.15, 0.04, 0.05, 0.16, 0.07]-; var d = [0.1, 0.5, 0.09, 0.08, 0.07, 0.3]-; var x = MouseX.kr(0.5, 1.25, 'linear', 0.2)-; var tn = lg.value(timed.value(inf, n, d * x))-; var ta = lg.value(timed.value(inf, a, d * x))-; Out.ar(0, SinOsc.ar(tn.midicps, 0) * ta) }.play
− src/lin-sosc.hs
@@ -1,93 +0,0 @@--- lin-sosc (rd)--import Control.Concurrent-import Control.Monad-import Sound.OpenSoundControl-import Sound.SC3-import qualified Sound.SC3.Lang.Random.IO as R--iota :: (Num a, Num b) => a -> b -> b -> [b]-iota 0 _ _ = []-iota n l s = l : iota (n - 1) (l + s) s--geom :: (Num a, Num b) => a -> b -> b -> [b]-geom 0 _ _ = []-geom n i f = i : geom (n - 1) (i * f) f--lineTo :: Fractional a => a -> a -> a -> [a]-lineTo n l r = iota n l ((r - l) / n)--xlineTo :: Floating 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 t => Lin_Data -> t -> IO ()-update (f,a,l,t) fd = do-  f' <- R.choose f-  a' <- R.choose a-  l' <- R.choose l-  t' <- R.choose t-  send fd (b_setn 0 [(0,f')])-  send fd (b_setn 1 [(0,a')])-  send fd (c_set [(0,l')])-  pauseThread t'--do_update :: Double -> IO ()-do_update n = withSC3 (replicateM_ 128 . update (lin_data n))--run :: Transport t => t -> IO ()-run fd = do-  let n = 1024-  _ <- async fd (b_alloc 0 (floor n) 1)-  _ <- async fd (b_alloc 1 (floor n) 1)-  play fd (out 0 lin_sosc)-  _ <- forkIO (do_update n)-  return ()--main :: IO ()-main = withSC3 run
− src/lso-061101.hs
@@ -1,112 +0,0 @@--- | L-System oscillator (rd, 2006-11-01)-import Control.Monad-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.Monadic {- hsc3 -}-import System.Directory {- directory -}-import qualified System.FilePath as P {- filepath -}-import System.Random {- random -}---- | 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 fd (n,d) = async fd (b_alloc_setn1 n 0 d)-  withSC3 (\fd -> mapM_ (alloc fd) (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 fd (n,nm) = async fd (b_allocRead n nm 0 0)-  withSC3 (\fd -> mapM_ (alloc fd) (zip [0..] (lsys_fn d)))---- | Oscillator instrument-oi :: IO UGen-oi = do-  let rrand l r = getStdRandom (randomR (l, r))-      choose l = fmap (l !!) (rrand 0 (length l - 1))-      rng i = linLin i (-1) 1-      exprng i = linExp i (-1) 1-  c <- 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 <- 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
− src/lucier.hs
@@ -1,64 +0,0 @@-{--Alvin Lucier, "Music on a Long Thin Wire, Simulated"-Chandrasekhar Ramakrishnan-http://www.listarc.bham.ac.uk/lists/sc-users/msg47539.html-http://www.listarc.bham.ac.uk/lists/sc-users/msg47540.html--}--import Sound.SC3.ID--lucier_wire :: UGen -> IO ()-lucier_wire freq =-    let block_size = recip controlRate-        mk_dt f = recip f - block_size-	string_delay = mk_dt freq-	pk1_pos = 0.1 -- pickup one position-	src_pos = 0.3 -- source position-	pk2_pos = 0.9 -- pickup two postion-	max_delay = 1.0 -- maximum delay time (corresponds to a length = c * s)-	mk_delay i r = lpz1 (delayC i max_delay (r * string_delay))-	mk_allpass i r dt = lpz1 (allpassC i max_delay (r * string_delay) dt)-	drv = localIn 1 AR -- driver (source + data stored in the string)-	pk1_R =-            let i = drv-                r = src_pos - pk1_pos-            in mk_delay i r-	pk1_L =-            let i = pk1_R * negate 1-                r = pk1_pos * 2-                dt = rand 'α' 0.001 0.11-            in mk_allpass i r dt-	pk2_L =-            let i = pk1_L-                r = pk2_pos - pk1_pos-            in mk_delay i r * 0.99-	stringL =-            let i = pk2_L-                r = 1.0 - pk2_pos-            in mk_delay i r-	pk2_R =-            let i = stringL * negate 1-                r = 1.0 - pk2_pos-                dt = 2 + rand 'β' 0.001 0.11-            in mk_allpass i r dt * 0.99-	stringR =-            let i = pk2_R-                r = pk2_pos - src_pos-            in mk_delay i r-	source =-            let s = sinOsc AR 220 0 * 0.01-                p = pulse AR (60 + amplitude KR drv 0.01 0.01 * 11) 0.5 * 0.1-                f = rlpf (s + p) 320 0.05-                e = 1.0 - min (amplitude KR drv 0.01 0.01) 1.0-	    in normalizer f 0.7 0.01 * e-	l_out = localOut (source * 0.2 + stringR)-	outL = pk1_L + pk1_R-	outR = pk2_L + pk2_R-    in audition (out 0 (mrg [mce2 outL outR, drv, source, l_out]))--main :: IO ()-main = lucier_wire 60--{--lucier_wire 60--}
− src/lucier.scd
@@ -1,28 +0,0 @@-{ var blocksize = ControlRate.ir.reciprocal-; var mk_dt = { |f| f.reciprocal - blocksize }-; var string_dt = mk_dt.(60)-; var c = 425-; var len = 40-; var pk1_p = 0.1-; var src_p = 0.3-; var pk2_p = 0.9-; var max_dt = 1-; var mk_dl = { arg i, r-                 ; LPZ1.ar(DelayC.ar(i, max_dt, r * string_dt)) }-; var mk_ap = { arg i, r, dt-	          ; LPZ1.ar(AllpassC.ar(i, max_dt, r * string_dt, dt)) }-; var drv = LocalIn.ar(1)-; var r = { Rand(0.001, 0.11) }-; var pk1_R = mk_dl.(drv, src_p - pk1_p, 2 + r.())-; var pk1_L = mk_ap.(pk1_R * -1, pk1_p * 2, r.())-; var pk2_L = mk_dl.(pk1_L, pk2_p - pk1_p, r.()) * 0.99-; var strL = mk_dl.(pk2_L, 1 - pk2_p, r.())-; var pk2_R = mk_ap.(strL * -1, 1 - pk2_p, 2 + r.()) * 0.99-; var strR = mk_dl.(pk2_R, pk2_p - src_p, 2 + r.())-; var src = { var a = Amplitude.kr(drv, mul: 11)-            ; p = Pulse.ar(60 + a, mul: 0.1)-            ; RLPF.ar((SinOsc.ar(220, 0) * 0.01) + p, 320, 0.05) }-; var src_n = { var a = Amplitude.kr(drv).min(1.0)-              ; Normalizer.ar(src, 0.7) * (1.0 - a) }-; LocalOut.ar(src * 0.2 + strR)-; [pk1_L + pk1_R, pk2_L + pk2_R, drv, src] }.play
− src/microhelix.hs
@@ -1,58 +0,0 @@--- Batuhan Bozkurt 2009 http://www.earslap.com--import Sound.SC3.ID--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...........................-microhelix :: UGen-microhelix =-    let rp = replicate-        ctrigs_ z_ =-            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-        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-	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-        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-	bass =-            let t = mceChannel 0 ctrigs * trigMod-                ph = sweep t (2 * pi * mce2 52.8 740) + (pi/3)-                ph' = wrap ph (-pi) pi-                mean u = mceSum u / fromIntegral (mceDegree u)-                o = tanh (mean (sinOsc AR 0 ph' * mce2 2 0.05))-                d = env [0, 0.5, 0.4, 0] [0, 0.2, 0.01] [EnvNum (-5)] 0 0-                e = envGen AR (abs t) 1 0 1 DoNothing d-	    in o * e * 0.25-        snd1' =-            let t = mceChannel 0 ctrigs-                d = env [0, 1, 0.6, 0] [0.0001, 0.4, 0.01] [EnvNum (-4)] 0 0-                e = envGen AR (t * lfNoise0 'm' AR 8) 1 0 1 DoNothing d-	    in pan2 (snd1 * e) (tRand 'n' (-1) 1 t) 1-    in limiter (midEQ (clicks + snd1' + hiNoise + bass) 14000 0.7 8) 1 0.01--main :: IO ()-main = audition (out 0 microhelix)--{--Sound.SC3.UGen.Dot.draw microhelix--}
− src/modal-space.hs
@@ -1,29 +0,0 @@--- modal space (jmcc)--import Sound.OpenSoundControl-import Sound.SC3.ID--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 = udup 2 (lfNoise1 'a' KR 3)-    in (ms n 48 + ms n 72) * 0.25--run :: Transport t => t -> IO ()-run fd = do-  let p = [0,2,3.2,5,7,9,10]-  _ <- async fd (b_alloc_setn1 0 0 p)-  play fd (out 0 modal_space)--main :: IO ()-main = withSC3 run
− src/modal-space.scd
@@ -1,17 +0,0 @@-{var s = Server.default-;var b = 0-;var p = FloatArray[0,2,3.2,5,7,9,10]-;var x = MouseX.kr(0,15,'linear',0.1)-;var k = DegreeToKey.kr(b,x,12)-;var c = {arg n,r-         ;var o = SinOsc.ar((r + k + (n * 0.04)).midicps,0) * 0.1-         ;var t = LFPulse.ar([48,55].midicps,0.15,0.5)-         ;var f = (SinOsc.kr(0.1,0) * 10 + r).midicps-         ;var d = RLPF.ar(t,f,0.1) * 0.1-         ;var m = o + d-         ;CombN.ar(m,0.31,0.31,2) + m}-;var n = LFNoise1.kr([3,3])-;var b_setn1 = {arg b,i,p-               ;["/b_setn",b,i,p.size] ++ p}-;s.sendMsg("/b_alloc",b,p.size,1,b_setn1.value(b,0,p).asRawOSC)-;Out.ar(0,(c.value(n,48) + c.value(n,72)) * 0.25)}.play
− src/moto-rev.hs
@@ -1,12 +0,0 @@--- moto rev (jmcc)--import Sound.SC3--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)
− src/moto-rev.scd
@@ -1,3 +0,0 @@-{ var f = SinOsc.kr(0.2, 0) * 10 + 21-; var s = LFPulse.ar(f, [0, 0.1], 0.1)-; Out.ar(0, RLPF.ar(s, 100, 0.1).clip2(0.4)) }.play
− src/mouse-clatter-m.hs
@@ -1,32 +0,0 @@--- mouse clatter (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic--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 :: Transport t => t -> IO ()-run fd = do-  _ <- async fd (b_alloc 10 2048 1)-  play fd . out 0 =<< mouse_clatter--main :: IO ()-main = withSC3 run--{--s.sendMsg('b_alloc', 10, 2048, 1);--}
− src/mouse-clatter.scd
@@ -1,14 +0,0 @@-{var x = MouseX.kr(100,12000,'linear',0.1)-;var y = MouseY.kr(0.01,0.15,'linear',0.1)-;var n1 = LFNoise0.kr([3,3.25])-;var t = Impulse.kr((n1 * 16) + 18,0)-;var n2 = TRand.kr(0.005,y,t)-;var n3 = WhiteNoise.ar()-;var n4 = TRand.kr(10,x,t)-;var n5 = TRand.kr(0,1,t)-;var n6 = TExpRand.kr(0.15,1,t)-;var o = {var e = Decay2.kr(t,0.01,n2)-         ;BPF.ar(n3 * e,n4,n5)}-;var n7 = PV_RandComb(FFT(10,o),n6,t)-;var s = (o * 0.05) + IFFT(n7)-;Out.ar(0,s)}.play
− src/mouse-clatter.scm
@@ -1,17 +0,0 @@-(let* ((x (MouseX KR 100 12000 0 0.1))-       (y (MouseY KR 0.01 0.15 0 0.1))-       (n1 (LFNoise0 KR (mce2 3 3.25)))-       (t (Impulse KR (MulAdd n1 16 18) 0))-       (n2 (TRand 0.005 y t))-       (n3 (WhiteNoise AR))-       (n4 (TRand 10 x t))-       (n5 (TRand 0.0 1.0 t))-       (n6 (TExpRand 0.15 1.0 t))-       (e (Decay2 t 0.01 n2))-       (o (BPF (Mul n3 e) n4 n5))-       (n7 (PV_RandComb (FFT* 10 o) n6 t))-       (s (Add (Mul o 0.05) (IFFT* n7))))-  (with-sc3-   (lambda (fd)-     (async fd (/b_alloc 10 2048 1))-     (play fd (Out 0 s)))))
− src/mridangam.hs
@@ -1,60 +0,0 @@--- mridangam (jmcc)--import Sound.OpenSoundControl {- hosc -}-import Sound.SC3.ID {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}--spe3_mridangam :: Synthdef-spe3_mridangam =-    let t_amp = tr_control "t_amp" 1-        n = whiteNoise 'a' 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 :: [P Double]-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 'a' [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 t => t -> IO ()-act fd = do-  play fd spe3_drone-  _ <- async fd (d_recv spe3_mridangam)-  let p' = pmono_d spe3_mridangam 100 [("t_amp",pseq p 1),("dur",1/8)]-  play fd p'--main :: IO ()-main = withSC3 act
− src/nharm-p.hs
@@ -1,37 +0,0 @@--- nharm-p (rd)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.Event-import Sound.SC3.Lang.Pattern.ID--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 'a' 9 12-        l = uclone' 'a' n (rand 'a' 0.01 0.02)-        p = rand 'a' (-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 = (Double,Double)--{- Note that the dur key is used only to schedule the nodes. Both it-and the 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 i = synthdef ("klg" ++ show n) (klg n)-        p = pbind [("midinote",pwhite 'a' m0 m1 inf)-                  ,("dur",pwhite 'b' d0 d1 inf)]-    in pinstr_d (return i) p--main :: IO ()-main = audition (pmerge (pN 24 (90,92) (0.25,0.75))-                        (pN 54 (12,14) (1.25,1.76)))
− src/nharm.hs
@@ -1,38 +0,0 @@---nharm (rd)--import Control.Concurrent-import Control.Monad-import Sound.OpenSoundControl-import Sound.SC3.Monadic-import System.Random--rrand :: Random a => a -> a -> IO a-rrand l r = getStdRandom (randomR (l,r))--nharm :: (Num b, Integral a) => a -> b -> [b]-nharm n f = map ((* f) . fromIntegral) [1..n]--klg :: UGen -> Int -> IO UGen-klg m u = do-    n <- rrand 4 u-    d <- iRand 9 12-    f <- iRand m (m + 2)-    l <- sequence (replicate n (rand 0.01 0.02))-    p <- 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 ()
− src/noise-burst-sweep.hs
@@ -1,20 +0,0 @@--- noise burst sweep (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--nbs :: UGen-nbs =-  let n = udup 2 (whiteNoise 'a' AR)-      lfoRate = 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 (2,4,4,maxBound) nbs--{--audition (out 0 nbs)--}
− src/noise-burst-sweep.scd
@@ -1,6 +0,0 @@-{var n = WhiteNoise.ar ! 2-;var lfoRate = MouseX.kr(10,60,'exponential',0.2)-;var amp = max(0,LFSaw.kr(lfoRate,-1))-;var cfreq = MouseY.kr(400,8000,'exponential',0.2)-;var freq = SinOsc.kr(0.2,0) * cfreq + (1.05 * cfreq)-;Out.ar(0,Resonz.ar(n * amp,freq,0.1))}.play
− src/noise-modulated-sines.hs
@@ -1,17 +0,0 @@--- noise modulated sines (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--nms :: UGen-nms =-    let f = midiCPS (rand 'a' 60 100)-        o = fSinOsc AR (mce2 f (f + 0.2)) 0-        a = lfNoise2 'b' 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
− src/non-real-time.hs
@@ -1,35 +0,0 @@-import Sound.OpenSoundControl {- hosc -}-import Sound.SC3-import System.Cmd {- process -}--graph :: UGen-graph =-    let f = control KR "freq" 440-        g = control KR "gain" 0.1-        e = envGen KR 1 1 0 1 RemoveSynth (envPerc 0.1 1.0)-        o = sinOsc AR f 0 * e-    in out 0 (pan2 o 0 g)--score :: [OSC]-score =-    let at t = Bundle (NTPr t)-        mk_instr = d_recv (synthdef "test" graph)-        mk_group = g_new [(1, AddToTail, 0)]-        mk_node t f = at t [s_new "test" (-1) AddToTail 1 [("freq", f)]]-        notes = take 128 (zipWith mk_node [1.0, 1.05 ..] [330, 350 ..])-    in at 0.0 [mk_instr, mk_group] : notes--render :: [OSC] -> IO ()-render s = do-  writeNRT "/tmp/nrt.score" s-  _ <- system "scsynth -N /tmp/nrt.score _ /tmp/nrt.wav 44100 WAVE float"-  return ()--main :: IO ()-main = do-  render score-  perform score--{--perform score--}
− src/nv-tw-1.hs
@@ -1,16 +0,0 @@--- nv-tw-1 (nv)--- http://sccode.org/1-V--import Sound.SC3.ID--nv_tw_1 :: UGen-nv_tw_1 =-    let a = udup 2 (pinkNoise 'a' AR)-        nd z =-            let n = lfNoise1 'a' KR (rand 'a' 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--main :: IO ()-main = audition (out 0 nv_tw_1)
− src/nv-tw-1.scd
@@ -1,6 +0,0 @@-{a=PinkNoise.ar(1!2)-;50.do{-    f=LFNoise1.kr(0.05.rand).exprange(40,15000)-   ;a=BBandStop.ar(a,f,exprand(0.1,2))}-;LPF.ar(a,1e5)-}.play
− src/nv-tw-41.hs
@@ -1,17 +0,0 @@--- nv-tw-41 (nv)--- http://sccode.org/1-V--import Sound.SC3.ID--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)
− src/nv-tw-41.scd
@@ -1,7 +0,0 @@-play{-x=Splay.ar({|i|-t=0.6**i*40*Impulse.ar(2**i/32,1/2);-f=4**LFNoise0.kr(1/16)*300;-RLPF.ar(t,f,5e-3).sin}!8);-2.do{x=FreeVerb2.ar(*x++[0.1,1,1])};-x}
− src/nv-tw-54.hs
@@ -1,29 +0,0 @@--- nv-tw-54 (nv)--- http://sccode.org/1-V--import Sound.SC3-import Sound.SC3.Lang.Pattern.ID--fF :: Double -> Double -> Double-fF i f =-    let n = (((2 * i) `modE` 6 + 1) + ffloor 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 = audition (nvi,pbind [("f",fromList fS)-                           ,("i",pseries 0 1 inf)-                           ,("dur",0.3)])
− src/nv-tw-54.scd
@@ -1,7 +0,0 @@-f=0;-{inf.do{|i|-n=((((2*i)%6)+1)+floor(f))/((i%5)+1);-f=(f+log2(n))%2;-e=Line.kr(0.1,0,1,1,0,2);-play{SyncSaw.ar(2**f*99+[0,1],i%8+2*52)*e};-0.3.wait}}.r.play
− src/one-line.hs
@@ -1,14 +0,0 @@--- one-line (lance putnam)--import Sound.SC3--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)-
− src/one-line.scd
@@ -1,4 +0,0 @@-{var lfs = LFSaw.ar([1,0.99],[0,0.6],2000,2000)-;var lfs_t = lfs.trunc([400,600]) * [1,-1]-;var f = OnePole.ar(Mix.new(lfs_t),0.98)-;Out.ar(0,Pan2.ar(SinOsc.ar(f,0),0,0.1))}.play
− src/oscillator-cluster.hs
@@ -1,34 +0,0 @@--- oscillator cluster (rd)--import Sound.SC3.Lang.Pattern.ID-import Sound.SC3.Monadic--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--}
− src/oscillator-cluster.scd
@@ -1,23 +0,0 @@-{var ln = {arg a,b,d;Line.kr(a,b,d,1)}-;var xln = {arg a,b,d;XLine.kr(a,b,d,1)}-;var rln = {arg r,a,b,d-           ;var n = Rand.new(0,r)-           ;ln.value(a + n,b,d)}-;var rxln = {arg r,a,b,d-            ;var n = Rand.new(0,r)-            ;xln.value(a + n,b,d)}-;var prt = {arg d,a-           ;{arg cf-            ;var r1 = Rand.new(cf,cf + 2)-            ;var r2 = rln.value(1,5,0.01,d)-            ;var r3 = rln.value(10,20,0,d)-            ;var r4 = Rand.new(0.1,0.2)-            ;var f = [cf,r1] + (SinOsc.kr(r2,0) * r3)-            ;var o = FSinOsc.ar(f,0)-            ;var e = Decay2.ar(Impulse.ar(0,0),r4,d) * a-            ;o * e}}-;var np = 12-;var fp = Array.fill(np,{Rand.new(220,660)})-;var d = Rand.new(4,7)-;var a = Rand.new(0.01,0.05)-;Out.ar(0,fp.collect(prt.value(d,a)).sum)}.play
− src/overlap-add.hs
@@ -1,22 +0,0 @@--- overlap-add (jmcc, rd)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Lang.Pattern.ID--sine :: UGen-sine =-    let r0 = expRand 'a' 500 1400-        r1 = rand 'b' (-1) 1-    in pan2 (sinOsc AR r0 0) r1 0.01--noise :: UGen-noise =-    let n0 = whiteNoise 'a' AR-        r0 = expRand 'b' 800 8400-        r1 = rand 'c' (-1) 1-    in pan2 (resonz (n0 * 0.1) r0 0.05) r1 0.25--main :: IO ()-main = audition (ppar [overlapTextureU' (4,4,6,maxBound) sine-                      ,overlapTextureU' (4,4,6,maxBound) noise])
− src/pattern-buffer.hs
@@ -1,59 +0,0 @@--- pattern buffer (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic-import System.Random--tseq :: [UGen] -> UGen-tseq l =-    let n = fromIntegral (length l) / 2.0-    in select (lfSaw KR 0.5 0 * n + n) (mce l)--rrand :: Random a => a -> a -> IO a-rrand l r = getStdRandom (randomR (l, r))--pattern_buffer :: Int -> IO 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 t => Int -> Int -> t -> IO ()-set_pattern nf c fd = do-  let rs = do r0 <- rrand 0 nf-              r1 <- rrand 0.0 1.0-              send fd (b_set1 10 r0 r1)-  sequence_ (replicate c rs)--fill_clr :: (Transport t) => Int -> Int -> Double -> Int -> t -> IO b-fill_clr nf c dt n fd = do-  let go i = if i == 0-             then do print "clr"-                     send fd (b_zero 10)-                     go n-             else do set_pattern nf c fd-                     print ("fill",i)-                     pauseThread dt-                     go (i - 1)-  go n--run :: Transport t => t -> IO ()-run fd = do-  let nf = 2 * 48000-      c = 24-      n = 16-      dt = 2.6-  _ <- async fd (b_alloc 10 (nf * 2) 1)-  play fd . out 0 =<< pattern_buffer c-  fill_clr nf c dt n fd--main :: IO ()-main = withSC3 run
− src/pebble-beach.hs
@@ -1,41 +0,0 @@--- pebble beach (np)--- http://sccode.org/1-u--- requires 'scsynth -u 57110 -m 32768'--import Sound.SC3.ID--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 'a' KR 21.8) 0.7) * sc-        am = range 0 1 (lag (lfNoise1 'a' KR 5.227) 5.374)-    in bpf (pinkNoise 'a' AR * 0.4) fr 0.1 * am--fg_f :: UGen -> UGen -> UGen-fg_f df tf =-    let d = dust 'a' AR (df * rand 'a' 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 'a' l r d) (tRand 'a' 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 'a' 0.2 0.8) (iChoose 'a' (mce2 (-4) 4))--pebble_beach' :: ID a => a -> UGen-pebble_beach' j =-    let bg' = let am = range 0 1 (lag (lfNoise0 'a' KR 34) 1.4)-              in brownNoise 'a' 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' 'a') (pebble_beach' 'b')--main :: IO ()-main = audition (out 0 pebble_beach)
− src/plucked-strings.hs
@@ -1,27 +0,0 @@--- plucked strings (jmcc)--import Sound.SC3.Monadic--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
− src/police-state.hs
@@ -1,24 +0,0 @@--- police state (jmcc)--import Sound.SC3.Monadic--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
− src/police-state.scd
@@ -1,14 +0,0 @@-{var node = {var r0 = Rand.new(0.02,0.12)-            ;var r1 = Rand.new(0,2pi)-            ;var r2 = Rand.new(0,600)-            ;var r3 = 1000 + Rand.new(-300,300)-            ;var r4 = Rand.new(-1,1)-            ;var r5 = 100 + Rand.new(-20,20)-            ;var n0 = LFNoise2.ar(r5)-            ;var f = SinOsc.kr(r0,r1,r2,r3)-            ;Pan2.ar(SinOsc.ar(f,0) * n0 * 0.1,r4,1)}-;var n0 = LFNoise2.kr([0.4,0.4])-;var n1 = LFNoise2.ar(n0 * 90 + 620)-;var n2 = LFNoise2.kr([0.3,0.3])-;var e = n1 * (n2 * 0.15 + 0.18)-;Out.ar(0,CombL.ar(Mix.fill(4,node) + e,0.3,0.3,3))}.play
− src/pond-life.scd
@@ -1,3 +0,0 @@-var f = FSinOsc.kr(20+30.0.rand,100+300.0.rand,500 + 2000.0.linrand);-var o = SinOsc.ar(f,0,LFPulse.kr(3/(1 + 8.0.rand),0.2+0.3.rand,0.04));-OverlapTexture.ar({Pan2.ar(o,1.0.rand2)},8,8,4,2)
− src/pulsing-bottles-m.hs
@@ -1,21 +0,0 @@--- pulsing bottles (jmcc)--import Control.Monad-import Sound.SC3.Monadic-import Sound.SC3.Lang.Control.OverlapTexture--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-  return.sum =<< sequence (replicate 6 u)--main :: IO ()-main = overlapTextureU (4,4,4,maxBound) =<< pulsing_bottles
− src/pulsing-bottles.hs
@@ -1,23 +0,0 @@--- pulsing bottles (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--pulsing_bottles :: UGen-pulsing_bottles =-    let r = let n = whiteNoise 'a' AR-                r0 = rand 'a' 4 14-                r1 = rand 'a' 0 0.7-                r2 = rand 'a' 400 7400-            in resonz (n * lfPulse KR r0 0 0.25 * r1) r2 0.01-        s = let f = rand 'b' 0.1 0.5-                p = rand 'b' 0 (pi * 2)-             in sinOsc KR f p-    in sum (zipWith3 pan2 (uclone' 'a' 6 r) (uclone' 'b' 6 s) (repeat 1))--main :: IO ()-main = overlapTextureU (4,4,4,maxBound) pulsing_bottles--{--audition (out 0 pulsing_bottles)--}
− src/pwm-crossfade.scd
@@ -1,5 +0,0 @@-{var n = [400,500,450,376,600]-;var d = 1/20-;var f = Demand.kr(Impulse.kr(d,[0,0.5]),0,Dseq(n,inf))-;var f_ = LFPulse.kr(8,0,LFTri.kr(d,1).range(0,1)).range(*f)-;LPF.ar(Saw.ar(f_.max(376) * [1,0.99],0.5),8000);}.play
− src/rails.hs
@@ -1,27 +0,0 @@--- rails (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--rand2 :: ID a => a -> UGen -> UGen-rand2 e n = rand e (-n) n--rails :: UGen-rails =-    let n = 20 -- resonant modes-        e = dust 'a' 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-        a = replicate n 1-        t = uclone' 'b' n (0.2 + rand 'e' 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 (2,3,4,maxBound) rails--{--audition (out 0 rails)-Sound.SC3.UGen.Dot.draw rps--}
− src/rails.scd
@@ -1,9 +0,0 @@-{var n = 20-;var e = Dust.ar(100,0.04)-;var f = XLine.kr(3000,300,8)-;var l = Line.kr(1.0.rand2,1.0.rand2,8)-;var r = Array.fill(n,{200 + 3000.0.linrand})-;var t = Array.fill(n,{0.2 + 1.0.rand})-;var k = Klank.ar(`[r,nil,t],Resonz.ar(e,f,0.2))-;Pan2.ar(k,l)-}.play
− src/rain-thunder.hs
@@ -1,24 +0,0 @@--- rain, thunder (jl)--- http://sccode.org/1-e--import Sound.SC3.ID--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-        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-        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.UGen.Dot.draw rain_thunder--}
− src/rain-thunder.scd
@@ -1,9 +0,0 @@-{var n0 = PinkNoise.ar(0.08 + LFNoise1.kr(0.3,0.02))-;var d0 = LPF.ar(Dust2.ar(LFNoise1.kr(0.2).range(40,50)),7000)-;var e0 = Line.kr(0,1,10)-;var p0 = tanh(3 * GVerb.ar(HPF.ar(n0 + d0,400),250,100,0.25,drylevel:0.3) * e0)-;var n1 = PinkNoise.ar(LFNoise1.kr(3).clip(0,1) * LFNoise1.kr(2).clip(0,1) ** 1.8)-;var f1 = LFNoise1.kr(1).exprange(100,2500)-;var e1 = Line.kr(0,0.7,30)-;var p1 = GVerb.ar(LPF.ar(10 * HPF.ar(n1, 20),f1).tanh,270,30,0.7,drylevel:0.5) * e1-;Limiter.ar(p0 + p1)}.play
− src/random-panning-sines-m.hs
@@ -1,22 +0,0 @@--- random panning sines (jmcc)--import Sound.SC3.Monadic-import Sound.SC3.Lang.Control.OverlapTexture--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--{--audition . out 0 =<< rps-Sound.SC3.UGen.Dot.draw =<< rps--}
− src/random-panning-sines.hs
@@ -1,20 +0,0 @@--- random panning sines (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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)-             in pan2 o l a-    in mix (uclone 'a' 8 nd) * (0.4 / 8)--main :: IO ()-main = overlapTextureU (8,8,2,maxBound) rps--{--audition (out 0 rps)-Sound.SC3.UGen.Dot.draw rps--}
− src/random-pulsations.hs
@@ -1,14 +0,0 @@--- random pulsations (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--rp :: UGen-rp =-    let o1 = fSinOsc AR (rand 'a' 0 2000) 0 * 0.02-        o2 = sinOsc AR (linRand 'b' 8 88 0) 0-        o3 = sinOsc KR (rand 'c' 0.3 0.8) (rand 'd' 0 (2 * pi)) * 0.7-    in pan2 (o1 `amClip` o2) o3 1--main :: IO ()-main = overlapTextureU (2,5,8,maxBound) rp
− src/random-sine-waves.hs
@@ -1,13 +0,0 @@--- random sine waves (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--rsw :: UGen-rsw =-    let f = rand 'a' 0 2000-        o = fSinOsc AR f 0 * 0.02-    in pan2 o (rand 'b' (-1) 1) 1--main :: IO ()-main = overlapTextureU (2,5,12,maxBound) rsw
− src/random-sine-waves.scd
@@ -1,3 +0,0 @@-var e = Env.linen(2,5,2);-var o = FSinOsc.ar(2000.0.rand,EnvGen.kr(e,1,0,0.02));-play({Spawn.ar({Pan2.ar(o,1.0.rand2)},2,9/12)})
− src/record-scratcher.hs
@@ -1,25 +0,0 @@--- record scratcher (josh parmenter)--import Sound.OpenSoundControl-import Sound.SC3--record_scratcher :: UGen-record_scratcher =-  let dup a = mce2 a a-      d = env [0, 1, 0] [0.1, 0.1] [EnvSin] 1 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 t => t -> IO ()-run fd = do-  let fn = "/home/rohan/data/audio/pf-c5.snd"-  _ <- async fd (b_allocRead 0 fn 0 0)-  play fd (out 0 record_scratcher)--main :: IO ()-main = withSC3 run
− src/record-scratcher.scd
@@ -1,13 +0,0 @@-{ var fn = "/home/rohan/audio/metal.wav"-; var b = 0-; var gate = 1-; var e = Env.new([0, 1, 0], [0.1, 0.1], \sin, 1, nil)-; var env = EnvGen.kr(e, gate, doneAction: 2)-; var x = MouseX.kr(-10, 10, 'linear', 0.2)-; var dx = x - DelayN.kr(x, 0.1, 0.1)-; var bdx = MouseButton.kr(1, 0, 0.3) + dx-; var bdxr = bdx * BufRateScale.kr(b)-; var scr = PlayBuf.ar(1, b, bdxr, 0, 0, 1)-; var s = Server.default-; s.sendMsg("/b_allocRead", b, fn, 0, 0)-; Out.ar(0, (scr * env).dup ) }.play
− src/red-frik.hs
@@ -1,24 +0,0 @@--- red_frik (f0)--import Sound.SC3.Monadic--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
− src/red-frik.scd
@@ -1,13 +0,0 @@-{ var red = { arg tr, n-            ; var r1 = TRand.kr(0.3, 3, tr)-            ; var r2 = TRand.kr(0.3, 5, tr)-            ; var r3 = TRand.kr(0, 0.5, tr)-            ; var r4 = TRand.kr(0.49, 0.56, tr)-            ; var r5 = TRand.kr(0.3, 0.6, tr)-            ; var r6 = TRand.kr(0.3, 0.5, tr)-            ; var o1 = FSinOsc.kr(r2, 0, r3, r4)-            ; var o2 = FSinOsc.kr(o1, r5, r6)-            ; RHPF.ar(n, r1, o2) }-; var n = [BrownNoise.ar, BrownNoise.ar]-; var tr = Impulse.kr(0.1, 0)-; Out.ar(0, red.value(tr, n)) }.play
− src/reset.hs
@@ -1,4 +0,0 @@-import Sound.SC3--main :: IO ()-main = withSC3 reset
− src/resonant-dust.hs
@@ -1,15 +0,0 @@--- resonant dust (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--resonant_dust :: UGen-resonant_dust =-    let rf = let st = rand 'a' 80 2080-                 en = st + (rand 'b' (-0.5) 0.5 * st)-             in xLine KR st en 9 DoNothing-        d = dust 'c' AR (rand 'd' 50 850) * 0.3-    in pan2 (resonz d rf 0.1) (rand 'e' (-1) 1) 1--main :: IO ()-main = overlapTextureU (2,5,9,maxBound) resonant_dust
− src/reverberated-sine-percussion.hs
@@ -1,26 +0,0 @@--- reverberated sine percussion (jmcc)--import Sound.SC3.Monadic--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
− src/reverberated-sine-percussion.scd
@@ -1,15 +0,0 @@-{var d = 6-;var c = 5-;var a = 4-;var s_ = {var n = Dust.ar(2 / d)-          ;var r = Rand.new(0,3000)-          ;Resonz.ar(n * 50,200 + r,0.003)}-;var s = Mix.ar(Array.fill(d,s_))-;var z = DelayN.ar(s,0.048)-;var y_ = LFNoise1.kr(Array.fill(c,{Rand.new(0,0.1)}),0.04,0.05)-;var y = Mix.ar(CombL.ar(z,0.1,y_,15))-;var x = y-;var x_ = {var r = [Rand.new(0,0.05),Rand.new(0,0.05)]-          ;x = AllpassN.ar(x,0.050,r,1)}-;a.do(x_)-;Out.ar(0,s + (0.2 * x))}.play
− src/ring-modulated-klank.hs
@@ -1,21 +0,0 @@--- ring modulated klank (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--rmk :: UGen-rmk =-    let p = 8-        k = let sp = klankSpec (udup' p (rand 'a' 100 10000))-                               (replicate p 1)-                               (udup' p (rand 'a' 0.2 1))-            in klank (dust 'a' AR 20 * 0.02) 1 0 1 sp-        f = lfNoise2 'a' KR (rand 'a' 0.1 0.4) * 200 + rand 'a' 350 400-    in pan2 (sinOsc AR f 0 * k) (rand 'a' (-1) 1) 1--main :: IO ()-main = overlapTextureU (4,4,4,maxBound) rmk--{--audition (out 0 rmk)--}
− src/rzblp.hs
@@ -1,27 +0,0 @@--- rzblp (rd)--import Sound.SC3 {- hsc3 -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}--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--main :: IO ()-main = audition (out 0 rzblp)
− src/s-chirp.hs
@@ -1,31 +0,0 @@--- s-chirp (rd)--import Sound.OpenSoundControl-import Sound.SC3.ID--s_chirp :: UGen-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)-      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-          in m * 0.5 + allpassC m 0.15 r0 r1-  in out 0 o--act :: Transport t => t -> IO ()-act fd = do-  let scl = [0,2,3.2,5,7,9,10]-  _ <- async fd (b_alloc_setn1 0 0 scl)-  play fd s_chirp--main :: IO ()-main = withSC3 act
− src/sam-i-am.hs
@@ -1,53 +0,0 @@--- sam i am (jr)--- http://www.listarc.bham.ac.uk/lists/sc-users/msg00280.html--import Control.Monad.Random-import Data.List-import Data.Maybe-import Sound.SC3-import Sound.SC3.Lang.Control.Event-import Sound.SC3.Lang.Random.Monad-import Sound.SC3.Lang.Pattern.ID--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 => g -> [(String,[(String,Double)])]-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)])-    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)
− src/sample-and-hold-liquidities.hs
@@ -1,17 +0,0 @@--- sample and hold liquidities (jmcc)--import Sound.SC3.ID--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)
− src/sample-and-hold-liquidities.scd
@@ -1,8 +0,0 @@-{var r = MouseX.kr(1,200,'exponential',0.1)-;var t = r.reciprocal-;var c = Impulse.kr(r,0.4)-;var cf = MouseY.kr(100,8000,'exponential',0.1)-;var f = Latch.kr(WhiteNoise.kr * cf * 0.5 + cf,c)-;var p = Latch.kr(WhiteNoise.kr,c)-;var i = Pan2.ar(SinOsc.ar(f,0,Decay2.kr(c,0.1 * t,0.9 * t)),p,1)-;Out.ar(0,CombN.ar(i,0.3,0.3,2))}.play
− src/saucer-base.hs
@@ -1,17 +0,0 @@--- saucer base (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--saucer_base :: UGen-saucer_base =-    let a = rand 'a' 0 20-        b = rand 'b' 0 1000-        c = rand 'c' 0 5000-        p = rand 'd' (-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 (6,2,4,maxBound) saucer_base
− src/sawed-cymbals.hs
@@ -1,18 +0,0 @@--- sawed cymbals (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--sawed_cymbals :: UGen-sawed_cymbals =-    let y = let f1 = rand 'a' 500 2500-                f2 = rand 'a' 0 8000-                f = udup' 15 (rand 'a' f1 (f1 + f2))-                rt = udup' 15 (rand 'a' 2 6)-          in klankSpec f (replicate 15 1) rt-        z = uclone 'a' 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
− src/scratchy-m.hs
@@ -1,12 +0,0 @@--- scratchy-m (jmcc)--import Sound.SC3.Monadic--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
− src/scratchy.hs
@@ -1,12 +0,0 @@--- scratchy (jmcc)--import Sound.SC3.ID--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)
− src/scratchy.scd
@@ -1,3 +0,0 @@-{ var n = BrownNoise.ar([0.5, 0.5])-; var f = (n - 0.49).max(0) * 20-; Out.ar(0, RHPF.ar(f, 5000, 1)) }.play
− src/scritto-m.hs
@@ -1,28 +0,0 @@--- scritto (rd)--import Sound.SC3.Monadic-import qualified Sound.SC3.Lang.Data.Vowel as V--main :: IO ()-main =-  let s_msg n (_,_,f,a,b) = b_setn1 n 0 (f ++ a ++ b)-      s_alloc fd (s,b) = do _ <- async fd (b_alloc b 15 1)-                            send fd (s_msg b s)-      buf_at b n = bufRd 1 KR b (mce [n .. n + 4]) NoLoop NoInterpolation-      v_filter i f a b = resonz i f (b / f) * dbAmp a-      v_filter_b bi i = v_filter i (buf_at bi 0) (buf_at bi 5) (buf_at bi 10)-      mk_instr bx = do-        n <- lfNoise2 KR 3-        let t = impulse AR (n * 9 + 9) 0-            i d = do n1 <- tRand 0.02 0.06 t-                     n2 <- tIRand 30 52 t-                     n3 <- tIRand 16 32 t-                     let p = pulseDivider t d 0-                         b = blip AR (midiCPS n2) n3-                     return (decay2 p 0.01 n1 * b * 12)-            bi = linLin n (-1) 1 0 bx-            voice = mix . v_filter_b bi-        return . out 0 . mce . map voice =<< mapM i [1,2]-  in withSC3 (\fd-> do mapM_ (s_alloc fd) (zip V.fdata_table [0..])-                       let n = constant (length V.fdata_table)-                       audition =<< mk_instr n)
− src/scritto.hs
@@ -1,47 +0,0 @@--- scritto (rd)--import Control.Monad-import Sound.OpenSoundControl-import Sound.SC3.ID-import qualified Sound.SC3.Lang.Data.Vowel as V--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 'a' 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 t => t -> (V.Fdata Double,Int) -> IO ()-s_alloc fd (s,b) = do-  let s_msg n (_,_,fr,am,bw) = b_setn1 n 0 (fr ++ am ++ bw)-  _ <- async fd (b_alloc b 15 1)-  send fd (s_msg b s)--s_init :: Transport t => t -> IO ()-s_init fd = mapM_ (s_alloc fd) (zip V.fdata_table [0..])--act :: Transport t => Bool -> t -> IO ()-act i fd = do-  when i (s_init fd)-  let n = constant (length V.fdata_table)-  play fd (scritto_i n)--main :: IO ()-main = withSC3 (act True)--{--withSC3 (act False)--}
− src/seqr.hs
@@ -1,27 +0,0 @@--- seqr (rd)--import Sound.SC3.ID--nfreq :: ID a => a -> Int -> UGen -> UGen -> [UGen]-nfreq z n l r = map (midiCPS . floorE) (uclone' z n (rand 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)--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 (uclone' 'c' n (rand 'c' 1 3)))-                        (seqr_f f (uclone' 'd' n (rand 'd' 3 6))))-      a = mce2 (seqr_f f (uclone' 'e' n (rand 'e' 0.05 0.10)))-               (seqr_f f (uclone' 'f' n (rand 'f' 0.05 0.15)))-  in b * a----- n = rand 6 18-main :: IO ()-main = audition (out 0 (seqr 12))
− src/shepard-tones.hs
@@ -1,39 +0,0 @@--- shepard tones (alberto de campo)--import Sound.OpenSoundControl-import Sound.SC3--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 t => t -> IO ()-run fd = 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 fd (b_alloc_setn1 1 0 freqTable)-  _ <- async fd (b_alloc_setn1 2 0 ampTable)-  audition (out 0 shepard_tones)--main :: IO ()-main = withSC3 run
− src/shepard-tones.scd
@@ -1,13 +0,0 @@-{var ampTable = Signal.hanningWindow(1024).squared-;var amp_f = {arg i;0.5 ** i * 20000}-;var freqTable = Signal.newClear(1024).waveFill(amp_f,0,10)-;var b1 = Buffer.loadCollection(s,freqTable)-;var b2 = Buffer.loadCollection(s,ampTable)-;var ratescale = 1024 / 44100 / 10-;var rate = 0.1-;var ph = Phasor.ar(0,rate * ratescale,0,1024,0)-;var phases = (0..9) * 0.1 * 1024 + ph-;var freqs = BufRd.ar(1,b1.bufnum,phases)-;var amps = BufRd.ar(1,b2.bufnum,phases)-;var tone = Mix.ar(SinOsc.ar(freqs) * amps) * 0.1-;Out.ar(0,tone)}.play
− src/shifting-pulses.hs
@@ -1,19 +0,0 @@--- shifting pulses (rd)--import Sound.SC3.Monadic--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
− src/shifting-pulses.scd
@@ -1,9 +0,0 @@-{var n0 = BrownNoise.kr.dup-var n1 = BrownNoise.kr.dup-var n2 = BrownNoise.kr.dup-var t = Dust.kr(0.75)-var l = Latch.kr(t,t)-var p = Pulse.ar(n0.range(2,[11,15]),0.01) * 0.1-var f = n1.range(300,1800)-var rq = n2.range(0.01,2)-Out.ar(0,l * RLPF.ar(p,f,rq))}.play
− src/sidereal-time.hs
@@ -1,24 +0,0 @@--- sidereal time (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--sidereal_time :: UGen-sidereal_time =-  let p = 15-      z = let y = let fr = udup' p (expRand 'a' 100 6000)-                      rt = udup' p (rand 'a' 2 6)-                  in klankSpec fr (replicate p 1) rt-          in uclone 'a' 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)--}
− src/sidereal-time.scd
@@ -1,9 +0,0 @@-var p = 15;-play({OverlapTexture.ar({-var z = Array.fill(2,{`[Array.fill(p,{exprand(100.0,6000.0)}),-                        nil,-                        Array.fill(p,{2.0 + 4.0.rand})]});-var f = XLine.kr(exprand(40.0,300.0),exprand(40.0,300.0),12);-var t = LFPulse.ar(f,rrand(0.1,0.9),0.002 * LFNoise2.kr(8.0.rand).max(0));-var o = Klank.ar(z,t).distort * 0.1;-CombN.ar(o,0.6,0.5.rand + 0.1,8,1,o.reverse);},4,4,6,2)}))
− src/slow-beating-harmonic-sines.hs
@@ -1,44 +0,0 @@--- slow beating harmonic sines (jmcc)--import Control.Monad-import Control.Monad.Random-import Sound.SC3-import Sound.SC3.Lang.Control.OverlapTexture-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 (6,3,3,maxBound) (runRand (sbhs 8 0.4 5)) g
− src/slow-beating-sines.hs
@@ -1,41 +0,0 @@--- slow beating sines (jmcc)--import Control.Monad-import Control.Monad.Random-import Sound.SC3-import Sound.SC3.Lang.Control.OverlapTexture-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
− src/snare-909.hs
@@ -1,31 +0,0 @@--- snare-909 (jmcc)--import Sound.SC3.ID--snare_909 :: UGen -> UGen-snare_909 tr =-  let n = whiteNoise 'a' AR-      v = tRand 'a' 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)-
− src/snare-909.scd
@@ -1,21 +0,0 @@-{ var snr =-      { arg tr, n, v-      ; var e = { arg a, b-                ; EnvGen.ar(Env.perc(a, b), tr, 1, 0, 1, 0) }-      ; var e1 = e.value(0.0005, 0.055)-      ; var e2 = e.value(0.0005, 0.075)-      ; var e3 = e.value(0.0005, 0.4)-      ; var e4 = e.value(0.0005, 0.283)-      ; var t1 = LFTri.ar(330, 0)-      ; var t2 = LFTri.ar(185, 0)-      ; var x1 = LPF.ar(n, 7040) * (0.1 + v)-      ; var x2 = HPF.ar(x1, 523)-      ; var m1 = (t1 * e1 * 0.25) + (t2 * e2 * 0.25)-      ; var m2 = (x1 * e3 * 0.20) + (x2 * e4 * 0.20)-      ; m1 + m2 }-; var x = MouseX.kr(1, 4, 'linear', 0.2)-; var y = MouseY.kr(0.25, 0.75, 'exponential', 0.2)-; var t = Impulse.kr(3 * x, 0)-; var n = WhiteNoise.AR-; var v = TRand.kr(0.25, 1.0, t)-; Out.ar(0, Pan2.ar(snr.value(t, n, v), 0, y)) }.play
− src/spe-m.hs
@@ -1,26 +0,0 @@--- spe (jmcc)--- variant of graph in streams & patterns tutorial--import Sound.SC3.Monadic--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)-                  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)-  chain 4 rapf =<< src--main :: IO ()-main = audition . out 0 =<< spe
− src/spe-p.hs
@@ -1,30 +0,0 @@--- spe-p (jmcc)--import Sound.SC3.Monadic {- hsc3 -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}--spe3_allpass6 :: IO 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)-      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)-  return (synthdef "spe" u)--notes :: P Double-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])]-    in pjoin (pseq1 n inf)--main :: IO ()-main = do-  i <- spe3_allpass6-  audition (i,pbind [("midinote",notes),("dur",0.13)])
− src/sprinkler-m.hs
@@ -1,13 +0,0 @@--- sprinkler-m (jmcc)--import Sound.SC3.Monadic--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
− src/sprinkler.hs
@@ -1,13 +0,0 @@--- sprinkler (jmcc)--import Sound.SC3.ID--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)
− src/sprinkler.scd
@@ -1,3 +0,0 @@-{var f = LFPulse.kr(0.09,0,0.16,10,7)-;var t = LFPulse.kr(f,0,0.25,0.1)-;Out.ar(0,BPZ2.ar(WhiteNoise.ar * t))}.play
− src/string-wander-cluster.hs
@@ -1,23 +0,0 @@--- string wander-cluster (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture-import System.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)
− src/strummable-guitar.hs
@@ -1,19 +0,0 @@--- strummable guitar (jmcc)--import Sound.SC3.ID--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)
− src/strummable-guitar.scd
@@ -1,11 +0,0 @@-{var scale = [52,57,62,67,71,76]-;var str = {arg i-           ;var x = MouseX.kr(0,1,'linear',0.2)-           ;var t = HPZ1.kr(x > (0.25 + (i * 0.1))).abs-           ;var e = Decay.kr(t,0.05)-           ;var n = PinkNoise.ar * e-           ;var dt = scale.at(i).midicps.reciprocal-           ;var s = CombL.ar(n,dt,dt,4)-           ;Pan2.ar(s,i * 0.2 - 0.5,1)}-;var strs = Mix.fill(scale.size,str)-;Out.ar(0,LeakDC.ar(LPF.ar(strs,12000),0.995))}.play
− src/sweepy-noise.hs
@@ -1,15 +0,0 @@--- sweepy noise (jmcc)--import Sound.SC3.ID--sweepy_noise :: UGen-sweepy_noise =-    let n = udup 2 (whiteNoise 'a' 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)
− src/sweepy-noise.scd
@@ -1,5 +0,0 @@-{var lfoDepth = MouseY.kr(200,8000,'exponential',0.1)-;var lfoRate = MouseX.kr(4,60,'exponential',0.1)-;var freq = LFSaw.kr(lfoRate,0) * lfoDepth + (lfoDepth * 1.2)-;var filtered = RLPF.ar(WhiteNoise.ar([0.03,0.03]),freq,0.1)-;Out.ar(0,CombN.ar(filtered,0.3,0.3,2) + filtered) }.play
− src/synthetic-piano-m.hs
@@ -1,26 +0,0 @@--- synthetic piano (jmcc)--import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--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 (0,6,6,maxBound) =<< synthetic_piano--{--audition . out 0 =<< mixFillM 6 (const synthetic_piano)--}
− src/synthetic-piano.scd
@@ -1,14 +0,0 @@-{var p = {var n = IRand.new(36,90)-         ;var f = Rand.new(0.1,0.5)-         ;var ph = Rand.new(0,pi * 2)-         ;var s = Impulse.ar(f,ph) * 0.1-         ;var e = Decay2.ar(s,0.008,0.04)-         ;var c = {arg i-                  ;var n0 = LFNoise2.ar(3000)-                  ;var o = [-0.05,0,0.04].at(i)-                  ;var dt = 1 / (n + o).midicps-                  ;CombL.ar(n0 * e,dt,dt,6) }-         ;var l = ((n - 36) / 27) - 1-         ;var c_ = Mix.fill(3,c)-         ;Pan2.ar(c_,l,1) }-;Out.ar(0,Mix.fill(6,p)) }.play
− src/tank-m.hs
@@ -1,58 +0,0 @@--- tank-m (jmcc)--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html--import Control.Monad-import Sound.SC3.Monadic--pling :: IO 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 :: IO UGen-bang = do-  d <- dust AR 0.01-  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)-  return (allpassN i 0.03 r 1)--tank_f :: UGen -> IO 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 :: IO UGen-tank = do-  s <- liftM2 (+) bang (mixFillM 8 (const pling))-  s' <- chain 4 r_allpass s-  tank_f s'--main :: IO ()-main = do-  t <- tank-  audition (out 0 t)--{--tank >>= Sound.SC3.UGen.Dot.draw--}
− src/tank.hs
@@ -1,51 +0,0 @@--- tank (jmcc)--- http://create.ucsb.edu/pipermail/sc-users/2004-April/009692.html--import Sound.SC3.ID--pling :: UGen-pling =-    let d = dust 'a' AR 0.2-        f = expRand 'a' 300 2200-        p = rand 'a' (-1) 1-        s1 = cubed (fSinOsc AR f 0)-        s2 = decay2 d 0.1 0.5 * 0.1 * s1-    in pan2 s2 p 1--bang :: UGen-bang =-    let d = dust 'b' AR 0.01-        n = brownNoise 'b' AR-    in pan2 (decay2 d 0.04 0.3 * n) 0 1--r_allpass :: UGen -> UGen-r_allpass i =-    let r = udup 2 (rand 'c' 0.005 0.02)-    in allpassN i 0.03 r 1--tank_f :: UGen -> UGen-tank_f i =-    let r1 = udup 2 (rand 'd' 0.01 0.05)-        r2 = udup 2 (rand 'd' 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 'a' 8 pling)-  in tank_f (useq 'a' 4 r_allpass s)--main :: IO ()-main = audition (out 0 tank)--{--Sound.SC3.UGen.Dot.draw tank--}
− src/tank.scd
@@ -1,28 +0,0 @@-{var r_allpass = {arg signal-                 ;var r = {Rand.new(0.005, 0.02)}.dup-                 ;AllpassN.ar(signal, 0.03, r, 1);}-;var pling = {var d = Dust.ar(0.2)-             ;var f = ExpRand.new(300, 2200)-             ;var p = Rand.new(-1, 1)-             ;var s1 = FSinOsc.ar(f, 0).cubed-             ;var s2 = Decay2.ar(d, 0.1, 0.5) * 0.1 * s1-             ;Pan2.ar(s2, p, 1)}-;var bang = {var d = Dust.ar(0.01)-            ;var n = BrownNoise.AR-            ;Pan2.ar(Decay2.ar(d, 0.04, 0.3) * n, 0, 1)}-;var tank = {arg i-            ;var r1 = {Rand.new(0.01,0.05)}.dup-            ;var r2 = {Rand.new(0.03,0.15)}.dup-            ;var l0 = LocalIn.ar(2) * 0.98-            ;var l1 = OnePole.ar(l0, 0.33)-            ;var l2 = Rotate2.ar(l1[0], l1[1], 0.23)-            ;var l3 = AllpassN.ar(l2, 0.05, r1, 2)-            ;var l4 = DelayN.ar(l3, 0.3, [0.17,0.23])-            ;var l5 = AllpassN.ar(l4, 0.05, r2, 2)-            ;var l6 = LeakDC.ar(l5, 0.995)-            ;var l7 = l6 + i-            ;LocalOut.ar(l7)-            ;l7}-;var signal = Mix.fill(12, pling) + bang.value-;4.do({signal = r_allpass.value(signal)})-;Out.ar(0, tank.value(signal))}.play
− src/tgb.hs
@@ -1,40 +0,0 @@--- tgb (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic--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 :: Transport t => t -> IO ()-act fd = do-  let fn = "/home/rohan/data/audio/pf-c5.aif"-  _ <- async fd (b_allocRead 10 fn 0 0)-  play fd . out 0 =<< tgb 10 12--main :: IO ()-main = withSC3 act
− src/tgr-rpr.hs
@@ -1,65 +0,0 @@--- tgr-rpr (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic-import System.Random--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)--rrand :: Random a => a -> a -> IO a-rrand l r = getStdRandom (randomR (l,r))--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 t => t -> IO ()-edit fd = do-  s <- mapM (uncurry rrand) rSet-  send fd (c_setn [(0,s)])-  pauseThread 0.35--run :: Transport t => t -> IO ()-run fd = do-  let sf = "/home/rohan/data/audio/pf-c5.snd"-  _ <- async fd (b_allocRead 10 sf 0 0)-  send fd (c_setn [(0,preset)])-  play fd . out 0 =<< tgr_rpr-  pauseThread 0.3-  _ <- sequence (replicate 64 (edit fd))-  reset fd--main :: IO ()-main = withSC3 run
− src/tgrn.hs
@@ -1,24 +0,0 @@--- tgrn (rd)--import Sound.OpenSoundControl-import Sound.SC3.ID--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 t => t -> IO ()-run fd = do-  let fn = "/home/rohan/data/audio/pf-c5.snd"-  _ <- async fd (b_allocRead 10 fn 0 0)-  play fd (out 0 (tgrn 10))--main :: IO ()-main = withSC3 run
− src/theremin.hs
@@ -1,18 +0,0 @@--- theremin (jmcc)--import Sound.SC3--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)-
− src/theremin.scd
@@ -1,8 +0,0 @@-{ var mod = 7-; var detune = 0-; var x = MouseX.kr(0, 0.9, 'linear', 0.2)-; var y = MouseY.kr(4000, 200, 'exponential', 0.8)-; var f = y + detune-; var f_ = f + (f * SinOsc.ar(mod, 0) * 0.02)-; var a = SinOsc.ar(f_, 0) * x-; Out.ar(0, (Pan2.ar(a, 0, 1))) }.play
− src/three-cpsw.hs
@@ -1,18 +0,0 @@--- three-cpsw (rd)--import Sound.SC3.Monadic--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
− src/three-cpsw.scd
@@ -1,9 +0,0 @@-{var t = Dust.kr([12,18])-;var f0 = TRand.kr(1,64,t)-;var f1 = LFNoise0.kr(f0)-;var a = TRand.kr(0.0,0.5,t)-;var dt = TRand.kr(0.975,1.025,t)-;var dh = TRand.kr(0.750,0.7505,t)-;var f = f1 * [9000,12000] + 9500-;var o = Saw.ar(f) + Saw.ar(f * dh) + Saw.ar(f * dt)-;Out.ar(0,(o * a).clip2(0.75)) }.play
− src/thx.hs
@@ -1,47 +0,0 @@--- thx (perry cook)--- http://ccrma-mail.stanford.edu/pipermail/stk/2007-January/000327.html--import Sound.SC3-import System.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 = env z t [c,c,c] (-1.0) (-1.0)-    in envGen KR 1 1 0 1 RemoveSynth e--mk_node :: R -> R -> R -> UGen -> UGen-mk_node 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_node 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)
− src/tipnso.hs
@@ -1,19 +0,0 @@--- tipnso (rd)--import Sound.SC3.ID--tipnso :: UGen-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-      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)
− src/tr-out.hs
@@ -1,32 +0,0 @@--- tr-out (rd)--import Sound.OpenSoundControl-import Sound.SC3.Monadic--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 :: Transport t => t -> IO ()-act fd = do-  _ <- async fd (b_alloc_setn1 0 0 [60,62,64,65,67,69])-  _ <- async fd (b_alloc_setn1 1 0 [-1,-0.5,0,0.25,0.75,1.0])-  _ <- async fd (b_alloc_setn1 2 0 [0.01,0.05,0.1,0.15,0.25,0.35])-  play fd . out 0 =<< tr_out--main :: IO ()-main = withSC3 act
− src/train.hs
@@ -1,34 +0,0 @@--- train (th.list at gmail.com)--- http://www.create.ucsb.edu/pipermail/sc-users/2007-August/035957.html--import Sound.SC3.ID--steam :: UGen -> UGen -> UGen -> UGen-steam time n1 n2 =-    let piston = lfSaw AR (xLine AR 1 7 time DoNothing) 0-        air = lpf (n1 * piston + n2 * piston) 5000-        e = envGen AR 1 1 0 1 DoNothing (envSine time 9)-    in bpf air 600 (1 + e)--whistle :: UGen -> UGen -> UGen-whistle time n3 =-    let f = [800,600,1200,990]-        s = klankSpec f [1,1,1,1] [1,1,1,1]-        t = [0,0,1,1,0,0,1,1,0,0,1,0]-        l = [2,0,0.2,0,0.2,0,0.8,0,4,0,3]-        d = env t l (repeat EnvLin) 0 0-        e = envGen AR 1 1 0 (time/10) DoNothing d-    in klank (n3 * 0.004) 1 0 1 s * e--train :: UGen-train =-    let time = 24-        loc = let e = env [-0.8,0.8] [time + 2] [EnvSin,EnvSin] 0 0-              in envGen AR 1 1 0 1 RemoveSynth e-        n1 = whiteNoise 'a' AR-        n2 = pinkNoise 'b' AR-        n3 = whiteNoise 'c' AR-    in pan2 (steam time n1 n2 + whistle time n3) loc 1--main :: IO ()-main =  audition (out 0 train)
− src/tremulate-m.hs
@@ -1,27 +0,0 @@--- tremulate (jmcc)--import Sound.SC3.Monadic-import Sound.SC3.Lang.Control.OverlapTexture--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 (2,0.5,maxBound) t 2 tremulate_pp--{--audition . out 0 =<< tremulate-Sound.SC3.UGen.Dot.draw =<< tremulate--}
− src/tremulate.hs
@@ -1,24 +0,0 @@--- tremulate (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--tremulate :: UGen-tremulate =-    let f = rand 'a' 500 900-        o = fSinOsc AR (f * mce [1,1.2,1.5,1.8]) 0-        r = uprotect 'a' (rand 'a' 30 90)-        a = max 0 (uclone 'a' 4 (lfNoise2 'a' KR r) * 0.1)-        l = udup 4 (rand 'a' (-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 (2,0.5,maxBound) tremulate 2 tremulate_pp--{--audition (out 0 tremulate)-Sound.SC3.UGen.Dot.draw tremulate--}
− src/tremulate.scd
@@ -1,7 +0,0 @@-play({CombN.ar(XFadeTexture.ar({-f = 500 + 400.rand;-r = 30 + 60.rand;-o = FSinOsc.ar(f*[1.0,1.2,1.5,1.8]);-a = max(0,LFNoise2.kr([r,r,r,r],0.1));-l = [1.0.rand2,1.0.rand2,1.0.rand2,1.0.rand2];-Mix.ar(Pan2.ar(o*a,l))},2,0.5,2),0.1,0.1,1)})
− src/trmlo.hs
@@ -1,52 +0,0 @@--- trmlo (rd)--import Sound.SC3 {- hsc3 -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}-import Sound.SC3.Lang.Pattern.ID {- hsc3-lang -}--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)-  audition (s,pbind [("dur",pxrand 'a' [0.25,0.5,1,2,4] inf)])--{--audition (out 0 trmlo)--}
− src/tsort.lhs
@@ -1,23 +0,0 @@-tsort (jmcc)--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--> main :: IO ()-> main =->   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 audition (out 0 (s * e))--http://create.ucsb.edu/pipermail/sc-users/2003-March/002807.html
− src/uplink.hs
@@ -1,22 +0,0 @@--- uplink (jmcc)--import Sound.SC3.ID-import Sound.SC3.Lang.Control.OverlapTexture--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--{--Sound.SC3.UGen.Dot.draw uplink--}
− src/vla-addtn-sharc.hs
@@ -1,76 +0,0 @@--- vla-adttn-sharc (rd)--import Data.List-import Sound.Analysis.SHARC-import Sound.OpenSoundControl-import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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 :: FilePath -> IO [R3]-vla fn = do-  Right sh <- 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 'a' 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)-                  ampl-                  (fall * rand 'b' 0.75 1.25)-                  DoNothing-    in o * e--vla_plyr :: UGen -> UGen-vla_plyr n =-    let a = control KR "ampl" 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 :: [(String,P Double)]-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)]--act :: Transport t => FilePath -> t -> IO ()-act fn fd = do-  v <- vla fn-  _ <- async fd (b_alloc_setn1 0 0 (vla_prep v))-  play fd (plyr36,pbind pattern)--main :: IO ()-main = withSC3 (act "/home/rohan/data/sharc/sharc.xml")
− src/vla-addtn.hs
@@ -1,146 +0,0 @@--- vla-adttn (rd)----import Sound.Analysis.SHARC-import Sound.OpenSoundControl-import Sound.SC3.ID-import Sound.SC3.Lang.Pattern.ID--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 'a' 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)-                  ampl-                  (fall * rand 'b' 0.75 1.25)-                  DoNothing-    in o * e--vla_plyr :: UGen -> UGen-vla_plyr n =-    let a = control KR "ampl" 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 :: [(String,P Double)]-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)]--act :: Transport t => t -> IO ()-act fd = do-  _ <- async fd (b_alloc_setn1 0 0 vla_prep)-  play fd (plyr36,pbind pattern)--main :: IO ()-main = withSC3 act
− src/voscil.hs
@@ -1,38 +0,0 @@--- voscil (rd)--import Sound.OpenSoundControl {- hosc -}-import Sound.SC3 {- hsc3 -}-import Sound.SC3.UGen.Unsafe {- hsc3-unsafe -}-import System.Random {- random -}--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 t => t -> IO ()-run fd = do-  let rrand l r = getStdRandom (randomR (l,r))-      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 fd (b_alloc i bn 1)-             send fd (b_set i (zip j k))-  mapM_ r_set [0 .. (b - 1)]-  play fd (out 0 (voscil b))--main :: IO ()-main = withSC3 run
− src/waveset.hs
@@ -1,155 +0,0 @@-{- A simple waveset synthesiser (rd) -}--import qualified Data.Array as A {- array -}-import Data.List-import qualified Sound.File.NeXT as F {- hsc3-sf -}-import Sound.OpenSoundControl {- hosc -}-import Sound.SC3-import System.Environment-import System.Random {- random -}---- * Score model.---- | Interval to schedule in advance.-latency :: Double-latency = 0.15---- | Add t to timestamp.-offset :: Double -> OSC -> OSC-offset t (Bundle (UTCr t0) m) = Bundle (UTCr (t + t0)) m-offset _ _ = error "offset:non-bundle"---- | Play non-empty set of osc bundles.-play_set :: Transport t => t -> [OSC] -> IO ()-play_set _ [] = error "play_set:empty"-play_set fd (x:xs) = do-  let (Bundle (UTCr t) _) = x-  pauseThreadUntil (t - latency)-  mapM_ (send fd) (x:xs)---- | Play grouped score.-play_sets :: Transport t => t -> [[OSC]] -> IO ()-play_sets _ [] = return ()-play_sets fd s = do-  t <- utcr-  mapM_ (play_set fd . 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 t => Int -> t -> [OSC] -> IO ()-play_score n fd s = play_sets fd (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 = env [a, a, 0] [d, 0] [EnvLin] (-1) (-1)-        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 -> OSC-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)] -> [OSC]-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]-    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 t => t -> String -> IO ()-run_waveset fd fn = do-  _ <- async fd (d_recv (synthdef "waveset" waveset))-  _ <--      async fd (b_allocRead 10 fn 0 0)-  (hdr, cs) <- 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 fd s >> pauseThread 1-  putStrLn ("#f: " ++ show (nc, nf, sr))-  putStrLn ("#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 (\fd -> run_waveset fd "/home/rohan/data/audio/pf-c5.snd")---}
− src/what-was-i-thinking.hs
@@ -1,24 +0,0 @@--- what was i thinking? (jmcc)--import Sound.SC3.Monadic--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-
− src/what-was-i-thinking.scd
@@ -1,14 +0,0 @@-{var n0 = LFNoise1.kr(0.2,2000,2400)-;var n1 = LFNoise1.kr(0.157,0.4,0.5)-;var i = LFPulse.ar(0.1,0,0.05) * Impulse.ar(8,0) * 500-;var d = Decay.ar(i,2)-;var f = max(SinOsc.kr(4,0) + 80,d)-;var p = Pulse.ar(f,n1) * 0.04-;var z = RLPF.ar(p,n0,0.2)-;var c = {arg i-         ;var r = Rand.new(0,0.3)-         ;var n = LFNoise1.kr(r,0.025,0.035)-         ;CombL.ar(i,0.06,n,1)}-;var y = z * 0.6-;Out.ar(0,z + [c.value(y) + c.value(y)-              ,c.value(y) + c.value(y)])}.play
− src/why-supercollider.hs
@@ -1,21 +0,0 @@--- why supercollider (jmcc)--import Sound.SC3.ID--why_supercollider :: UGen-why_supercollider =-    let r = resonz (dust 'a' AR 0.2 * 50) (rand 'a' 200 3200) 0.003-        s = mix (uclone 'a' 10 r)-        z = delayN s 0.048 0.048-        c = combL z 0.1 (lfNoise1 'a' KR (rand 'a' 0 0.1) * 0.04 + 0.05) 15-        y = mix (uclone 'a' 7 c)-        f i = allpassN i 0.050 (udup 2 (rand 'a' 0 0.05)) 1-        x = useq 'a' 4 f y-    in out 0 (s + 0.2 * x)--main :: IO ()-main = audition why_supercollider--{--Sound.SC3.UGen.Dot.draw why_supercollider--}
− src/why-supercollider.scd
@@ -1,8 +0,0 @@-{var r = {Resonz.ar(Dust.ar(0.2,50),200 + 3000.0.rand,0.003)}-;var s = Mix.ar(Array.fill(10,r))-;var z = DelayN.ar(s,0.048)-;var c = {CombL.ar(z,0.1,LFNoise1.kr(0.1.rand,0.04,0.05),15)}-;var y = Mix.ar(Array.fill(7,c))-;4.do({x = AllpassN.ar(y,0.050,[0.050.rand,0.050.rand],1)})-;s+(0.2*x)}.play-
− src/wial.hs
@@ -1,26 +0,0 @@--- wial (rd)--import Sound.SC3.Monadic--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
− src/wind-metals-m.hs
@@ -1,26 +0,0 @@--- wind metals (jmcc)--import Sound.SC3.Lang.Control.OverlapTexture-import Sound.SC3.Monadic--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 (2,5,12,maxBound) =<< wind_metals--{--audition . out 0 =<< wind_metals--}
− src/wind-metals.scd
@@ -1,11 +0,0 @@-{var n = 6-;var base = ExpRand.new(60,4000)-;var rng = Rand.new(500.0,8000.0)-;var n0 = BrownNoise.ar([0.007,0.007])-;var r0 = ExpRand.new(0.125,0.5)-;var n1 = LFNoise1.kr(r0,0.75,0.25)-;var exc = n0 * max(0,n1)-;var f = Array.fill(n,{Rand.new(0,rng) + base})-;var dt = Array.fill(n,{Rand.new(0.1,2.0)})-;var s = Klank.ar(`[f,nil,dt],exc)-;Out.ar(0,(s * 0.1).softclip)}.play
− src/xy-interference-m.hs
@@ -1,16 +0,0 @@--- xy-interference-m (rd)--import Sound.SC3.Monadic--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)-  return.sum =<< sequence (replicate 3 nd)--main :: IO ()-main = audition . out 0 =<< xy_interference
− src/xy-interference.hs
@@ -1,16 +0,0 @@--- xy-interference (rd)--import Sound.SC3.ID--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 'a' KR (mce2 5 9)-               a = sinOsc AR (x + n) 0-               b = sinOsc AR y 0-           in a * b-  in mix (uclone 'a' 3 nd)--main :: IO ()-main = audition (out 0 xy_interference)
− src/xy-interference.scd
@@ -1,7 +0,0 @@-{var x = MouseX.kr(20,22000,'linear',[0.005,0.025])-;var y = MouseY.kr(20,22000,'linear',[0.005,0.075])-;var nd = {var n = LFNoise0.kr([5,9])-          ;var a = SinOsc.ar(x + n,0)-          ;var b = SinOsc.ar(y,0)-          ;a * b}-;Out.ar(0,Mix.fill(3,nd))}.play