{
   "labels" : [],
   "code" : "// load a sound file (or two...)\r\nb = Buffer.read(s, \"/Users/alg31/Downloads/bad-mono.wav\");\r\n\r\nc = Buffer.read(s, \"/Users/alg31/Downloads/but-music.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// 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// Pbinds\r\n\r\n(\r\n~one = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, Pseq([0.4, 0.42, 0.44, 0.48, 0.5, 0.52, 0.54, 0.56], inf), // notice this one ENDS after 4 cycles\r\n    \\amp, 1,\r\n    \\startPos, 0.19,\r\n    \\attack, 0.01,\r\n    \\release, 0.23,\r\n\t\\buffer, b, // which buffer to play from\r\n\t\\dur, Pseq([Pn(1/2, 8), Pn(1/4, 16)], inf),\r\n);\r\n\r\n~two = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, Pseq([0.19, 0.19, 0.19, 0.25], inf),\r\n\t\\amp, 0.3,\r\n\t\\startPos, 0.1,\r\n    \\attack, 2.3,\r\n    \\release, 0.5,\r\n\t\\buffer, c, // which buffer to play from\r\n    \\dur, 2.5,\r\n);\r\n\r\n~three = Pbind(\r\n    \\instrument, \"granny2\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([-1, 2], inf),\r\n\t\\amp, 5, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos, 0.1,\r\n    \\attack, 0.02,\r\n    \\release, 0.4,\r\n\t\\ffreq, Pseq([9000, 2000, 2030, 9100], 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(-0.5, 0.5)\r\n);\r\n\r\n~three3 = Pbind(\r\n    \\instrument, \"granny2\", // notice I'm using granny2 synthdef here\r\n\t\\rate, Pseq([-1, 2], inf),\r\n\t\\amp, 5, // boosted to 5 because filtering attenuates a lot of the sound\r\n\t\\startPos, 0.09,       //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([9000, 2000, 2030, 9100], inf),\r\n\t\\rq, 0.01,\r\n    \\buffer, b, // which buffer to play from\r\n    \\dur, 0.5,\r\n);\r\n\r\n~one1 = Pbind(\r\n    \\instrument, \"granny1\",\r\n\t\\rate, 0.2, 0.2, \\rest, 0.7, 0.6, 0.8, \\rest, 0.8, \\rest,\r\n    \\amp, 1,\r\n    \\startPos, 0.18,\r\n    \\attack, 0.03,\r\n    \\release, 0.1,\r\n\t\\buffer, b, // which buffer to play from\r\n\t\\dur, Pseq([1/4, 1/4, Rest(1/2), Pn(1/6, 3), Rest(1/6), 1/6, Rest(1/6)], inf),\r\n);\r\n\r\n~four = Pbind(\r\n    \\instrument, \"granny3\", \r\n\t\\rate, Pseq([-1, 2, 3, 3], inf),\r\n\t\\amp, 5,\r\n\t\\startPos, 0.7,\r\n    \\attack, 0.3,\r\n    \\release, 0.2,\r\n\t\\ffreq, Pseq([700, 200, 400, 550], inf),\r\n\t\\rq, 0.01,\r\n\t\\delay, 0.2,\r\n\t\\decay, 2,\r\n    \\buffer, b, // which buffer to play from\r\n    \\dur, 0.25,\r\n);\r\n\r\n~two2 = Pbind(\r\n    \\instrument, \"granny2\",\r\n\t\\rate, -2,\r\n\t\\amp, 0.3,\r\n\t\\startPos, 0.94,\r\n    \\attack, 0.09,\r\n    \\release, 0.1,\r\n\t\\buffer,  b, // which buffer to play from\r\n\t\\dur, Pn(0.25, 8),\r\n);\r\n)\r\n\r\n\r\n\r\n\r\n\r\n(\r\nPspawner({ arg maestro;\r\n\r\n\t~player2=maestro.par(~two);\r\n\t10.wait;\r\n\tmaestro.suspend(~player2);\r\n\t~player22=maestro.par(~two2);\r\n\t2.wait;\r\n\tmaestro.suspend(~player22);\r\n   ~player1= maestro.par(~one);\r\n\t6.wait;\r\n\t~player22=maestro.par(~two2);\r\n\t2.wait;\r\n\tmaestro.suspend(~player22);\r\n\tmaestro.suspend(~player1);\r\n  ~player3=maestro.par(~three);\r\n  ~player33=maestro.par(~three3);\r\n\t12.wait;\r\n\t~player11=maestro.par(~one1);\r\n\t4.wait;\r\n\t~player22=maestro.par(~two2);\r\n\t4.wait;\r\n\tmaestro.suspend(~player22);\r\n\t4.wait;\r\n\t~player22=maestro.par(~two2);\r\n\t4.wait;\r\n\tmaestro.suspend(~player11);\r\n\tmaestro.suspend(~player22);\r\n\t4.wait;\r\n\tmaestro.suspend(~player3);\r\n\tmaestro.suspend(~player33);\r\n\t~player22=maestro.par(~two2);\r\n\t4.wait;\r\n\tmaestro.suspend(~player22);\r\n\t~player4=maestro.par(~four);\r\n\t4.wait;\r\n\tmaestro.suspend(~player4);\r\n\t~player22=maestro.par(~two2);\r\n\t4.wait;\r\n\tmaestro.suspend(~player22);\r\n    ~player2=maestro.par(~two);\r\n\t6.wait;\r\n\tmaestro.suspendAll;\r\n\r\n}).play;\r\n)",
   "id" : "1-55w",
   "is_private" : null,
   "author" : "Margo Gentile",
   "name" : "Assignment 3 115granular",
   "ancestor_list" : [],
   "description" : ""
}
