{
   "author" : "unknown",
   "name" : "SMDWA115granular",
   "description" : "https://soundcloud.com/onyekachi-okolo/smdwa-115granular\r\n\r\nSample: https://drive.google.com/open?id=0B2uUIdgBbGgDUkVlUVRXbW9BbUk",
   "ancestor_list" : [],
   "labels" : [],
   "id" : "1-55B",
   "is_private" : null,
   "code" : "// =================================\r\n// A3 Granular Composition: ONYEKACHI OKOLO\r\n\r\nb = Buffer.read(s,\"C:/Users/bambi/Desktop/SMDWA.wav\");\r\n\r\n// buffer handy tools:\r\nb.play;\r\n// check number of channels\r\nb.numChannels;\r\n// check duration\r\nb.duration;\r\n// check how many samples are in the sample\r\nb.numFrames;\r\n\r\n\r\n// SynthDefs\r\n(\r\n\r\nSynthDef(\"granny1\", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, panning = 0;\r\n    var snd, env;\r\n    env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2);\r\n    snd = PlayBuf.ar(\r\n        numChannels: 1,\r\n        bufnum: buffer,\r\n        rate: rate,\r\n        startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer))\r\n    );\r\n    snd = snd * env;\r\n\tsnd = Pan2.ar(snd, panning);\r\n    Out.ar(0, snd);\r\n}).add;\r\n\r\n\r\nSynthDef(\"granny2\", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, ffreq = 1000, rq = 0.1, panning = 0;\r\n    var snd, env;\r\n    env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2);\r\n    snd = PlayBuf.ar(\r\n        numChannels: 1,\r\n        bufnum: buffer,\r\n        rate: rate,\r\n        startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer))\r\n    );\r\n    snd = snd * env;\r\n    snd = BPF.ar(snd, ffreq, rq);\r\n    snd = Pan2.ar(snd, panning);\r\n    Out.ar(0, snd);\r\n}).add;\r\n\r\n\r\n\r\nSynthDef(\"granny3\", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, ffreq = 1000, rq = 0.1, panning = 0, delay = 0.3, decay = 1;\r\n    var snd, env;\r\n    env = Env.perc(attackTime: attack, releaseTime: release, level: amp).kr(doneAction: 2);\r\n    snd = PlayBuf.ar(\r\n        numChannels: 1,\r\n        bufnum: buffer,\r\n        rate: rate,\r\n        startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer))\r\n    );\r\n    snd = snd * env;\r\n    snd = BPF.ar(snd, ffreq, rq);\r\n\tsnd = CombC.ar(snd, maxdelaytime: 2, delaytime: delay, decaytime: decay);\r\n    snd = Pan2.ar(snd, panning);\r\n    Out.ar(0, snd);\r\n}).add;\r\n\r\nSynthDef(\"grannylinen\", {arg rate = 1, amp = 1, buffer, startPos = 0, attack = 0.02, release = 0.5, panning = 0, sustain = 1;\r\n    var snd, env;\r\n    env = Env.linen(attackTime: attack, sustainTime: sustain, releaseTime: release, level: amp).kr(doneAction: 2);\r\n    snd = PlayBuf.ar(\r\n        numChannels: 1,\r\n        bufnum: buffer,\r\n        rate: rate,\r\n        startPos: startPos.linlin(0, 1, 0, BufFrames.kr(buffer))\r\n    );\r\n    snd = snd * env;\r\n\tsnd = LPF.ar(snd, 100);\r\n\tsnd = Pan2.ar(snd, panning);\r\n    Out.ar(0, snd);\r\n}).add;\r\n\r\n\r\n)\r\n\r\n// Some testing Pbinds\r\n\r\n\r\n\r\n(\r\n~two = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, Pseq([10, 2, 0.6, 0.92, 5], 1),\r\n\t\\amp, Pwhite(0.1, 0.9),\r\n\t\\startPos,0.3,\r\n    \\attack, 0.01,\r\n\t\\release, Pseq([0.1,0.1,0.3,0.4,0.5],1),\r\n    \\buffer, b,\r\n\t\\dur, Pseq([0.5, 0.375,0.5,0.375,\r\n\t\t0.25],inf),\r\n\t\\panning, Pwhite(-1, 1.0);\r\n);\r\n\r\n\r\n\r\n\r\n\r\n~three = Pbind(\r\n    \\instrument, \"granny2\",\r\n\t\\rate, 4,\r\n\t\\amp, 15,\r\n\t\\startPos, 0,\r\n    \\attack, 0.01,\r\n    \\release, 0.2,\r\n\t\\ffreq, Pseq([300,300, 100],1),\r\n\t\\rq, Pseq([0.5,0.5,0.1],1),\r\n    \\buffer, b,\r\n\t\\dur, Pseq([0.25, 0.25, 0.375],1),\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n\r\n~three3 = Pbind(\r\n    \\instrument, \"granny2\",\r\n\t\\rate, 0.3,\r\n\t\\amp, 15,\r\n\t\\startPos, 0,\r\n    \\attack, 0.01,\r\n    \\release, 0.2,\r\n\t\\ffreq, 100,\r\n\t\\rq, 0.6,\r\n    \\buffer, b,\r\n\t\\dur, Pseq([0.5, 0.5, 0.5, 0.25],1),\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n\r\n\r\n\r\n\r\n~custom3 = Pbind(\r\n    \\instrument, \"granny2\",\r\n\t\\rate, Pseq([2, 1, 0.3], 1),\r\n\t\\amp, 5,\r\n\t\\startPos, 0.5,\r\n    \\attack, 0.02,\r\n    \\release, 0.4,\r\n\t\\ffreq, Pseq([200,400,600],1),\r\n\t\\rq, 0.4,\r\n    \\buffer, b,\r\n\t\\dur, Pseq([0.25,0.25,0.375],1),\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n\r\n\r\n\r\n~threedrop = Pbind(\r\n    \\instrument, \"granny2\",\r\n\t\\rate, Prand([2, 2, 3, 0.92, 1.01, 1, 1, 9, 0.5], inf),\r\n\t\\amp, 3,\r\n\t\\startPos, Pseq([0.24, 0.33, 0.66, 0.89], inf),\r\n    \\attack, 0.02,\r\n    \\release, 0.4,\r\n\t\\ffreq, Pseq([400, 1000, 2000], 1),\r\n\t\\rq, 0.01,\r\n    \\buffer, b,\r\n\t\\dur, Pseq([0.25, 0.25, 0.375],1),\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n\r\n\r\n\r\n\r\n~four = Pbind(\r\n    \\instrument, \"granny3\",\r\n\t\\rate, Pseq([2, 4, 1, 9], 4),\r\n\t\\amp, 1,\r\n\t\\startPos, Pseq([0.14, 0.13, 0.7, 0.9], inf),\r\n    \\attack, 0.2,\r\n    \\release, 2,\r\n\t\\ffreq, Prand([100, 200, 400, 550, 9000, 50, 100, 2000], inf),\r\n\t\\rq, 0.1,\r\n\t\\delay, 0.2,\r\n\t\\decay, 2,\r\n    \\buffer, b,\r\n    \\dur, 0.5,\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n)\r\n\r\ns.makeWindow;\r\n\r\n\r\n//testing\r\n\r\n~two.play;\r\n~three.play;\r\n~three3.play;\r\n~custom3.play;\r\n~threedrop.play;\r\n~four.play;\r\n\r\n\r\n\r\n// =================================\r\n// Putting stuff together with Pspawner\r\n// =================================\r\n\r\n(\r\nPspawner({ arg maestro;\r\n\r\n\tmaestro.seq(~four);\r\n\tmaestro.seq(Ppar([~three3],4));\r\n\tmaestro.seq(Ppar([~custom3],8));\r\n\tmaestro.par(Ppar([~custom3],8));\r\n\tmaestro.seq(Ppar([~three],4));\r\n\tmaestro.seq(Ppar([~three3],4));\r\n\tmaestro.seq(Ppar([~two],4));\r\n\tmaestro.seq(Ppar([~three3],4));\r\n\tmaestro.par(Pseq([~three3],8));\r\n\tmaestro.par(Ppar([~custom3],8));\r\n\tmaestro.par(Ppar([~threedrop],8));\r\n\tmaestro.seq(Ppar([~three],8));\r\n\tmaestro.par(Ppar([~threedrop],4));\r\n\tmaestro.seq(Ppar([~three],4));\r\n\tmaestro.par(Ppar([~three],4));\r\n\tmaestro.seq(Ppar([~three3],3));\r\n    \"END\".postln;\r\n\tmaestro.suspendAll;\r\n\r\n}).play;\r\n)"
}
