{
   "is_private" : null,
   "id" : "1-4Vv",
   "code" : "/* 140103_1504 (pluck piece)\r\n\r\nby Nathan Thomas\r\nhttp://www.afternoondust.co.uk\r\n\r\nThis piece uses code from Bruno Ruviaro (pluck pattern), published on SCCode.org: \r\nhttp://sccode.org/1-4Vn\r\n\r\nDon't forget to update the path to the audio sample on line 26.\r\n\r\nCreative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License:\r\nhttp://creativecommons.org/licenses/by-nc-sa/3.0/\r\n\r\n*/\r\n\r\n(\r\nServer.default = s = Server.internal;\r\ns.options.memSize = 655360;\r\ns.options.sampleRate = 96000.000;\r\ns.options.blockSize = 128;\r\n)\r\n\r\ns.boot;\r\n\r\nc = Buffer.read(s, \"insert/path/to/file/here/leaves_twigs_decode_004_edit.wav\");\r\n\r\n(\r\n   SynthDef(\"playamp\", { arg krBus;\r\n       var sig, amp, trig, thresh;\r\n       thresh = MouseX.kr((-15),(-60));\r\n       sig = PlayBuf.ar(2,c,0.99,loop:inf);\r\n       amp = Amplitude.kr(sig).ampdb;\r\n       trig = amp >= thresh;\r\n       Out.kr(krBus,trig);\r\n    }).add;\r\n\r\n   SynthDef(\"plucking\", {arg amp = 1, freq = 440, decay = 5, coef = 0.1, krBus, outBus=0;\r\n        var env, snd;\r\n        env = EnvGen.kr(Env.linen(0, decay, 0), doneAction: 2);\r\n        snd = Pluck.ar(\r\n            in: Mix.new([WhiteNoise.ar(amp), SinOsc.ar(freq,0,amp)]),\r\n            trig: Gate.ar(Impulse.ar(1),In.kr(krBus,1)),\r\n            maxdelaytime: 0.1,\r\n            delaytime: freq.reciprocal,\r\n            decaytime: decay,\r\n            coef: coef,\r\n            mul: amp);\r\n            Out.ar(outBus, [snd, snd]);\r\n    }).add;\r\n\r\n    SynthDef(\"playbuf\", { arg outBus=0;\r\n        var play;\r\n        play = PlayBuf.ar(2,c,loop:inf);\r\n        Out.ar(outBus,play);\r\n    }).add;\r\n\r\n    SynthDef(\"bass\", {arg amp = 1, freq = 220, decay = 1, outBus=0;\r\n        var env, snd, pan, env2, splay, phase;\r\n        env = EnvGen.kr(Env.linen(1, decay, 1,1), doneAction: 2);\r\n        phase = Array.fill(4, { do({ [0, 0.5, 0.7, 1].choose }) });\r\n        snd = SinOsc.ar([freq, freq + phase],[0,phase],amp/4).sum * env;\r\n        splay = Splay.ar(snd,0.4);\r\n        Out.ar(outBus, splay);\r\n    }).add;\r\n)\r\n\r\nz = Synth(\\bass);\r\n\r\n// Groups\r\n\r\n(\r\n    ~sources = Group.new;\r\n    ~control = Group.after(~sources);\r\n    ~bus1 = Bus.control(s,1);\r\n    ~bus2 = Bus.audio(s,2);\r\n)\r\n\r\n\r\nx = Synth(\\playamp,[\\krBus,~bus1],~control); y = Synth(\\playbuf);\r\n\r\n// Pluck\r\n(\r\n    var dur;\r\n    dur = Prand([0.2, 0.4, 0.8], inf);\r\n\r\n    a = Pbind(\r\n        \\instrument, \"plucking\",\r\n        \\krBus, ~bus1,\r\n        \\scale, Scale.dorian,\r\n        \\degree, Prand([8, 17, 9, 7, 15, 12, 13, 1, 5, 14], inf),\r\n        \\coef, dur,\r\n        \\dur, dur,\r\n        \\amp, Pwhite(0.3, 0.6),\r\n        \\decay, 3\r\n   ).play;\r\n)\r\n\r\n// bass\r\n\r\n(\r\n    b = Task({\r\n    var delta, dur, note; \r\n    dur = Prand([10, 15], inf).asStream;\r\n    note = Pwrand([145, 290], [0.8,0.2], inf).asStream;\r\n\r\n    while {\r\n            delta = dur.next;\r\n            delta.notNil\r\n        } {\r\n            Synth(\\bass,[freq: note.next,decay:4]);\r\n            delta.yield;\r\n        }\r\n    }).play(quant:TempoClock.default.beats+1.0);\r\n)\r\n\r\n\r\na.stop;\r\nb.stop;\r\nx.free;\r\ny.free;\r\n~sources.free;~effects.free;~bus1.free;",
   "labels" : [
      "random",
      "karpusstrong"
   ],
   "description" : "New piece arranged and performed in SuperCollider based on code from Bruno Ruviaro, \"Pluck (Karpus-Strong) example\" (pluck pattern - thanks Bruno) and a recording of dry leaves in a pestle.\r\n\r\nAn archive containing the SuperCollider code and audio sample can be downloaded from http://afternoondust.co.uk/blog/140103_1504-pluck-piece.\r\n\r\nThis code is released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported license.",
   "ancestor_list" : [],
   "author" : "nathan",
   "name" : "20140103_1504 (pluck piece)"
}
