{
   "description" : "https://soundcloud.com/user-52183734/colbys-project-3-115granular",
   "ancestor_list" : [],
   "name" : "Colby's 115granular",
   "author" : "cmoeller",
   "code" : "/*\r\nThe code below is exactly what we built in class.\r\nYou will need a MONO sample.\r\n*/\r\n\r\n// make sure to boot server first\r\n\r\n// load a sound file (or two...)\r\nb = Buffer.read(s, \"C:/Users/colby/Desktop/Musc115sample.wav\");\r\nc = Buffer.read(s, \"C:/Users/colby/Downloads/bad-mono.wav\");\r\n\r\n// buffer handy tools:\r\nb.play;\r\nc.play;\r\n// checknumber 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// SynthDefs\r\n(\r\n// simple synthdef, no filters or effects, just env and panning control\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// Same as above, but adding a filter just for fun\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// Same as above, but adding an echo effect (CombC)\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\n\r\n\r\n)\r\n(\r\n// One\r\n~one = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, Pseq([0.5,1, 0.6, 0.92], 4), // notice this one ENDS after 4 cycles\r\n    \\amp, 1,\r\n    \\startPos, 0.1,\r\n    \\attack, 0.01,\r\n    \\release, 0.4,\r\n    \\buffer, c, // which buffer to play from\r\n    \\dur, Prand([0.5, 1], inf),\r\n);\r\n\r\n\r\n\r\n// Two\r\n\r\n~two = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, Pseq([0.2,0.3,0.1,0.13], inf),\r\n\t\\amp, 1,\r\n\t\\startPos, 0.13,\r\n    \\attack, 0.01,\r\n    \\release, 0.6,\r\n    \\buffer, b, // which buffer to play from\r\n    \\dur, 0.9,\r\n\t\r\n);\r\n\r\n\r\n\r\n\r\n// Three (this one uses granny2, with the filter)\r\n~three = Pbind(\r\n    \\instrument, \"granny2\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([1,2,3,4],inf),\r\n\t\\amp, 5, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos, 0.13,\r\n    \\attack, 0.02,\r\n    \\release, 0.4,\r\n\t\\ffreq, Pseq([9000, 1000, 2000], inf),\r\n\t\\rq, 0.01,\r\n    \\buffer, b, // which buffer to play from\r\n    \\dur, 0.25,\r\n\t\\panning, Pwhite(-1, 1.0);\r\n);\r\n\r\n\r\n\r\n// Four (this one uses granny3, with a filter AND a CombC (the delay/echo))\r\n~four = Pbind(\r\n    \\instrument, \"granny3\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([2, -4, 1, 1,1/2,5,-6], inf),\r\n\t\\amp, 1, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos,0.5,\r\n    \\attack, 0.1,\r\n    \\release, 0.4,\r\n\t\\ffreq, Prand([1000, 100, 2000], inf),\r\n\t\\rq, 0.1,\r\n\t\\delay, 0.1,\r\n\t\\decay, 1.5,\r\n    \\buffer, c, // which buffer to play from\r\n    \\dur, 0.5,\r\n\t\r\n);\r\n\r\n\r\n~five = Pbind(\r\n    \\instrument, \"granny2\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([-1,0.9,2,-4],inf),\r\n\t\\amp, 5, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos, 0.13,\r\n    \\attack, 0.02,\r\n    \\release, 0.4,\r\n\t\\ffreq, Pseq([900, 100, 200], inf),\r\n\t\\rq, 0.01,\r\n    \\buffer, c, // which buffer to play from\r\n    \\dur, 0.5,\r\n\t\\panning, Pwhite(-0.5, 0.5)\r\n);\r\n\r\n~six = Pbind(\r\n    \\instrument, \"granny3\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([2,3,4,1.5,0.5], inf),\r\n\t\\amp, 1, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos,0.5,\r\n    \\attack, 0.1,\r\n    \\release, 0.4,\r\n\t\\ffreq, Prand([550, 1000, 2000], inf),\r\n\t\\rq, 0.1,\r\n\t\\delay, 0.15,\r\n\t\\decay, 2,\r\n    \\buffer, b, // which buffer to play from\r\n    \\dur, 0.5,\r\n\t\\panning, Pwhite(-1, 1.0);\r\n\t\r\n);\r\n\r\n)\r\n\r\n\r\n\r\n~one.play;//wait till beat// player 5\r\n~two.play;//player2\r\n~three.play;//player4\r\n~four.play;//player6\r\n~five.play;//player1\r\n~six.play;//player3\r\n(\r\n{\r\n~player1=~five.play;\r\n5.wait;\r\n~player2=~two.play;\r\n2.wait;\r\n~player2.stop;\r\n1.wait;\r\n~player3=~six.play;\r\n4.wait;\r\n~player4=~three.play;\r\n2.wait;\r\n~player1.stop;\r\n5.wait;\r\n~player1=~five.play;\r\n3.wait; \r\n~player6=~four.play;\r\n7.wait;\r\n~player3.stop;\r\n~player2.stop;\r\n~player4.stop;\r\n~player5.stop;\r\n~player6=~four.play;\r\n4.wait; \r\n~player1.stop;\r\n3.wait;\r\n~player3=~six.play;\r\n4.wait;\r\n~player2.play;\r\n3.wait;\r\n~player1.stop;\r\n~player2.stop;\r\n~player3.stop;\r\n~player4.stop;\r\n~player5.stop;\r\n~player6.stop;\r\n}.fork;\r\n)",
   "id" : "1-55x",
   "is_private" : null,
   "labels" : [
      "115granular"
   ]
}
