{
   "ancestor_list" : [],
   "description" : "assignment 1 Ian McDougall\r\nsoundcloud link: https://soundcloud.com/user-68447368",
   "name" : "Assignment 1 115pluck",
   "author" : "ianmcdougall60",
   "id" : "1-54W",
   "is_private" : null,
   "code" : "(\r\n\r\nSynthDef(\"hihat\", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0;\r\n\tvar env, snd;\r\n\tenv = Env.perc(att, rel, amp).kr(doneAction: 2);\r\n\tsnd = WhiteNoise.ar;\r\n\tsnd = HPF.ar(in: snd, freq: ffreq, mul: env);\r\n\tOut.ar(out, Pan2.ar(snd, pan));\r\n}).add;\r\n\r\nSynthDef(\"snare\", {arg out = 0, amp = 0.1, sinfreq = 180, att = 0.01, rel = 0.2, ffreq = 2000, pan = 0;\r\n\tvar env, snd1, snd2, sum;\r\n\tenv = Env.perc(att, rel, amp).kr(doneAction: 2);\r\n\tsnd1 = HPF.ar(\r\n\t\tin: WhiteNoise.ar,\r\n\t\tfreq: ffreq,\r\n\t\tmul: env\r\n\t);\r\n\tsnd2 = SinOsc.ar(freq: sinfreq, mul: env);\r\n\tsum = snd1 + snd2;\r\n\tOut.ar(out, Pan2.ar(sum, pan));\r\n}).add;\r\n\r\n\r\n\r\nSynthDef(\"plucking\", {arg amp = 0.1, freq = 440, decay = 5, dampen = 0.1;\r\n\r\nvar env, snd;\r\nenv = Env.linen(0, decay, 0).kr(doneAction: 2);\r\nsnd = Pluck.ar(\r\n        in: WhiteNoise.ar(amp),\r\n        trig: Impulse.kr(0),\r\n        maxdelaytime: 0.1,\r\n        delaytime: freq.reciprocal,\r\n        decaytime: decay,\r\n        coef: dampen);\r\n    Out.ar(0, [snd, snd]);\r\n}).add;\r\n\r\nSynthDef(\"kick\", {arg out = 0, amp = 0.3, sinfreq = 60, glissf = 0.9, att = 0.01, rel = 0.45, pan = 0;\r\n\tvar env, snd, ramp;\r\n\tenv = Env.perc(att, rel, amp).kr(doneAction: 2);\r\n\tramp = XLine.kr(\r\n\t\tstart: sinfreq,\r\n\t\tend: sinfreq * glissf,\r\n\t\tdur: rel\r\n\t);\r\n\tsnd = SinOsc.ar(freq: ramp, mul: env);\r\n\tsnd = Pan2.ar(snd, pan);\r\n\tOut.ar(out, snd);\r\n}).add;\r\n\r\n// Basic saw synth for chords and bass\r\nSynthDef(\"sawSynth\", { arg freq = 440, amp = 0.1, att = 0.1, rel = 2, lofreq = 1000, hifreq = 3000;\r\n    var env, snd;\r\n    env = Env.perc(\r\n\t\tattackTime: att,\r\n\t\treleaseTime: rel,\r\n\t\tlevel: amp\r\n\t).kr(doneAction: 2);\r\n    snd = Saw.ar(freq: freq * [0.99, 1, 1.001, 1.008], mul: env);\r\n\tsnd = LPF.ar(\r\n\t\tin: snd,\r\n\t\tfreq: LFNoise2.kr(1).range(lofreq, hifreq)\r\n\t);\r\n    snd = Splay.ar(snd);\r\n    Out.ar(0, snd);\r\n}).add;\r\n)\r\n\r\n\r\n//Collection of Pbinds (no .play)\r\n\r\n(\r\n~hihat =\r\nPbind(\r\n\t\\instrument, \"hihat\",\r\n\t\\dur, Pseq([1/4, Rest(1/4), 1/4, Rest(1/4), 1/4, Rest(1/4), 1/8, 1/8, 1/8, 1/8], inf),\r\n\t\\att, Pseq([0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.04], inf),\r\n\t\\rel, 0.1,\r\n\t\\ffreq, 11000,\r\n\t\\pan, 0,\r\n\t\\amp, 0.3\r\n);\r\n\r\n~snare =\r\nPbind(\r\n\t\\instrument, \"snare\",\r\n\t\\dur, Pseq([Rest(1/2), 1/2, Rest(1/2), 1/2, Rest(1/2), 1/2, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8], inf),\r\n\t\\att, 0.01,\r\n\t\\rel, 0.1,\r\n\t\\sinfreq, 180,\r\n\t\\ffreq, 2000,\r\n\t\\amp, 0.15\r\n);\r\n\r\n~kick =\r\nPbind(\r\n\t\\instrument, \"kick\",\r\n\t\\dur, Pseq([1/2, Rest(1/2), 1/2, Rest(1/2), 1/2, Rest(1/2), Rest(1/4), Rest(1/4), 1/4, Rest(1/4) ], inf),\r\n\t\\att, 0.01,\r\n\t\\rel, 0.22,\r\n\t\\sinfreq, 60,\r\n\t\\glissf, 0.9,\r\n\t\\amp, 1,\r\n);\r\n\r\n~buildup =\r\nPbind(\r\n\t//BUILD UP\r\n\t\\instrument, \"kick\",\r\n\t\\dur, Pseq([1/4, 1/4, 1/8, 1/8, 1/8, 1/8, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32, 1/32], 1),\r\n\t\\att, 0.01,\r\n\t\\rel, 0.025,\r\n\t\\sinfreq, 60,\r\n\t\\glissf, 0.9,\r\n\t\\amp, 1.8,\r\n);\r\n\r\n~tom =\r\nPbind(\r\n\t//THIS IS A TOM\r\n\t\\instrument, \"kick\",\r\n\t\\dur, Pseq([1/2, Rest(1/4), 1/4, Rest(1/2), 1/2 ], inf),\r\n\t\\att, 0.001,\r\n\t\\rel, 0.1,\r\n\t\\sinfreq, 200,\r\n\t\\glissf, 1,\r\n\t\\amp, 1,\r\n);\r\n\r\n\r\n~chords =\r\nPbind(\r\n    \\instrument, \"sawSynth\",\r\n    \\freq, Pseq([\r\n        [65.41, 82.41, 98],\r\n        [87.31, 103.83, 130.81],\r\n\t\t\t[55, 65.41, 82.41, 98],\r\n            [98, 123.47, 146.83],\r\n\t\t],\r\n        inf\r\n    ) *1.5,\r\n\t\\dur, Pseq([4, 2, 2, 4], inf),\r\n\t\\att, Pseq([0.5, 0.2, 0.2, 0.5], inf),\r\n\t\\rel, Pseq([2.5, 1.5, 1.5, 2.5], inf),\r\n\t\\hifreq, 5000,\r\n    \\amp, 0.2\r\n);\r\n\r\n\r\n~bassline =\r\nPbind(\r\n\t\\instrument, \"sawSynth\",\r\n\t\\freq, Pseq([65.41, 82.41, 55, 82.41, 123.47, 98], inf),\r\n\t\\dur, Pseq([1/2, 1/4, Rest(2),Rest(1/4), 1/4, 1/2, Rest(1), 1/2, 1/4], inf),\r\n\t\\ctranspose, [0, -12],\r\n\t\\att, 0.05,\r\n\t\\rel, 0.1,\r\n\t\\amp, 0.4,\r\n);\r\n\r\n~beginrif =\r\nPbind(\r\n\t\\instrument, \"sawSynth\",\r\n\t\\freq, Pseq([55, 65.41, 82.41, 98].reverse, inf),\r\n\t\\dur, Pseq([1/8, 1/8, 1/8, 1/8, 1/8, 1/8, 1/8], inf),\r\n\t\\ctranspose, [0, -12],\r\n\t\\att, 0.01,\r\n\t\\rel, 0.2,\r\n\t\\amp, 0.4,\r\n\t\\lofreq, 100,\r\n\t\\hifreq, 1000\r\n);\r\n\r\n\r\n~humpty =\r\nPbind(\r\n\t\\instrument, \"sawSynth\",\r\n\t\\freq, Pseq([98, 146.83, 123.47], inf),\r\n\t\\dur, Pseq([1/8, Rest(1/16), 1/8], inf),\r\n\t\\att, 0.1,\r\n\t\\rel, 0.05,\r\n\t\\amp, 0.4,\r\n\t\\lofreq, 100,\r\n\t\\hifreq, 1000\r\n);\r\n\r\n\r\n\r\n~plucking1 =\r\nPbind(\r\n    \\instrument, \"plucking\",\r\n\t\\freq, Pseq([55, 65.41, 82.41, 98].reverse, inf),\r\n    \\amp, 0.2,\r\n    \\decay, 8,\r\n    \\dampen, 0.7,\r\n    \\dur, Pseq([1/4, 1/4, 1/4, 1/4], inf)\r\n);\r\n\r\n\r\n~plucking2 =\r\nPbind(\r\n    \\instrument, \"plucking\",\r\n\t\\freq, Pseq([55, 65.41, 82.41, 98].reverse, inf),\r\n    \\amp, 0.2,\r\n    \\decay, 8,\r\n    \\dampen, 0.7,\r\n    \\dur, Pseq([1/8, 1/8, 1/8, 1/8], inf)\r\n);\r\n\r\n\r\n\r\n\r\n\r\n\r\n)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n//Optional lines for testing Pbinds\r\n\r\n~hihat.play;\r\n~snare.play;\r\n~kick.play;\r\n~buildup.play;\r\n~tom.play;\r\n~chords.play;\r\n~bassline.play:\r\n~humpty.play;\r\n~plucking1.play;\r\n~plucking2.play;\r\n\r\n//FORK (where the sequencing (and the magic) happens)\r\n\r\n\r\n// //////to STOP A VARIABLE YOU NEED TO MAKE A PLAYER BY DOING: ~ffhf=~synthdef.play;and then ~ksahdfkhj.stop;\r\n(\r\n{\r\n\t//all the global variables\r\n\t//4.wait; etc.,\r\n\r\n\t~killthis = ~beginrif.play;\r\n\t2.wait;\r\n\t~tomplayer = ~tom.play;\r\n\t4.wait;\r\n\t~kickplayer = ~kick.play;\r\n\t~snareplayer = ~snare.play;\r\n\t4.wait;\r\n\t~hihatplayer = ~hihat.play;\r\n\t8.wait;\r\n\t~buildup.play;\r\n\t2.wait;\r\n\t~killthis.stop;\r\n\t~chordsplayer = ~chords.play;\r\n\t~basslineplayer = ~bassline.play;\r\n\t8.wait;\r\n\t~tomplayer.stop;\r\n\t~snareplayer.stop;\r\n\t~hihatplayer.stop;\r\n\t~baselineplayer.stop;\r\n\t2.wait;\r\n\t~chordsplayer.stop;\r\n\t~plucking1player = ~plucking1.play;\r\n\t8.wait;\r\n\t~plucking1player.stop;\r\n\t~plucking2player = ~plucking2.play;\r\n\t4.wait;\r\n\t~plucking2player.stop;\r\n\t~chordsplayer.play;\r\n\t~tomplayer.play;\r\n\t~snareplayer.play;\r\n\t~hihatplayer.play;\r\n\t4.wait;\r\n\t~bassplayer.play;\r\n\t4.wait;\r\n\t~chordsplayer.stop;\r\n\t~killthis.play;\r\n\t4.wait;\r\n\t~killthis.stop;\r\n\t~bassplayer.stop;\r\n\t~plucking1player.play;\r\n\t8.wait;\r\n\t~plucking1player.stop;\r\n\t~plucking2player.play;\r\n\t4.wait;\r\n\t~plucking2player.stop;\r\n\t~chordsplayer.play;\r\n\r\n\t4.wait;\r\n\t~hihatplayer.stop;\r\n\t~snareplayer.stop;\r\n\t~tomplayer.stop;\r\n\t~kickplayer.stop;\r\n\t~basslineplayer.stop;\r\n\t2.wait;\r\n\t~chordsplayer.stop;\r\n\r\n\r\n}.fork\r\n)",
   "labels" : [
      "115pluck"
   ]
}
