{
   "name" : "Beatboxing and Bach",
   "author" : "aahrens",
   "description" : "Taking inspiration from \"Switched-On Bach\", this is a supercollider rendition of Invention No. 13 in A Minor.\r\n\r\nThe melody is held in Pbinds, and I modified Bruno's percussion SynthDefs to sound like a person beatboxing.",
   "ancestor_list" : [],
   "labels" : [
      "bach",
      "invention",
      "classical"
   ],
   "id" : "1-5aN",
   "is_private" : null,
   "code" : "(\r\n\r\n// Basic drum kit\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: PinkNoise.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\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 = BPF.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\nSynthDef(\"pulseSynth\", { 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 = Pulse.ar(freq: freq * [0.99, 1, 1.001, 1.008], mul: env);\r\n\tsnd = BPF.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// Bach's Invention No. 13 in A Minor\r\n(\r\nPbind(\r\n\t\\instrument, \"hihat\",\r\n\t\\dur, Pseq([\r\n\r\n\t\tPseq([Rest(1/4), 1/4], 44), //bars 1-6(first half)\r\n\t\tRest(2), //bar 6\r\n\t\tPseq([Rest(1/4), 1/8, 1/8, 1/4, 1/4, Pn(1/4, 4)], 1),\r\n\t\tPseq([Rest(1/4), 1/4], 4),\r\n\t\tPseq([Rest(1/4), 1/8, 1/8, 1/4, 1/4, Pn(1/4, 4)], 1),\r\n\t\tPseq([Rest(1/4), 1/4], 4), //bars 7-8\r\n\t\tPseq([Rest(1/4), 1/4], 40), //bars 9-13\r\n\t\tPseq([Rest(2), Pseq([Rest(1/4), 1/4], 4)], 4), //bars 14-17\r\n\t\tPseq([Rest(1/4), 1/4], 62) //bars 18-end\r\n\r\n\t], 1),\r\n\t\\att, 0.05,\r\n\t\\rel, 0.1,\r\n\t\\ffreq, 11000,\r\n\t\\pan, 0,\r\n\t\\amp, 0.3\r\n).play;\r\n\r\nPbind(\r\n\t\\instrument, \"snare\",\r\n\t\\dur, Pseq([\r\n\r\n\t\tPseq([Rest(1/2), 1/2], 52), //bars 1-13\r\n\t\tPseq([Rest(3), Rest(1/2), 1/2], 4), //bars 14-17\r\n\t\tPseq([Rest(1/2), 1/2], 31) //bars 18-end\r\n\r\n\t], 1),\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.6\r\n\r\n).play;\r\n\r\nPbind(\r\n\t\\instrument, \"kick\",\r\n\t\\dur, Pseq([\r\n\r\n\t\tPn(1/2, 199) //bars 1-25\r\n\r\n\t], 1),\r\n\t\\att, 0.01,\r\n\t\\rel, 0.5,\r\n\t\\sinfreq, 55,\r\n\t\\glissf, 0.9,\r\n\t\\amp, 0.4,\r\n).play;\r\n\r\n\r\n//Right hand\r\nPbind(\r\n\t\\instrument, \"pulseSynth\",\r\n\t\\midinote, Pseq([\r\n\r\n\t\t\\rest, 64, 69, 72, 71, 64, 71, 74, 72, 76, 68, 76, //bar 1\r\n\t\t69, 64, 69, 72, 71, 64, 71, 74, 72, 69, \\rest, //bar 2\r\n\t\t\\rest, 76, 72, 76, 69, 72, 64, 67, 65, 69, 74, 77, //bar 3\r\n\t\t\\rest, 74, 71, 74, 67, 71, 62, 65, 64, 67, 72, 76, //bar 4\r\n\t\t\\rest, 72, 69, 72, 65, 74, \\rest, 71, 67, 71, 64, 72, //bar 5\r\n\t\t\\rest, 69, 65, 69, 62, 71, 72, \\rest, //bar 6\r\n\t\t\\rest, 67, 72, 76, 74, 67, 74, 77, 76, 79, 71, 79, //bar 7\r\n\t\t72, 67, 72, 76, 74, 67, 74, 77, 76, 72, 79, 76, //bar 8\r\n\r\n\t\t84, 81, 76, 81, 72, 76, 69, 72, 74, 78, 81, 84, //bar 9\r\n\t\t83, 79, 74, 79, 71, 74, 67, 71, 72, 76, 79, 83, //bar 10\r\n\t\t81, 78, 75, 78, 71, 75, 66, 69, 67, 79, \\rest, 76, 72, 76, //bar 11\r\n\t\t69, 78, \\rest, 74, 71, 74, 67, 76, \\rest, 72, 69, 72, //bar 12\r\n\t\t66, 79, 78, 76, 75, 78, 71, 75, 76, \\rest, \\rest, \\rest, //bar 13\r\n\t\t\\rest,  79, 82, 79, 76, 79, 73, 76, 79, 76, 73, 76, 69, \\rest, \\rest, //bar 14\r\n\t\t\\rest, 77, 81, 77, 74, 77, 71, 74, 77, 74, 71, 74, 67, \\rest, \\rest, //bar 15\r\n\t\t\\rest, 76, 79, 76, 72, 76, 69, 72, 75, 72, 69, 72, 66, \\rest, \\rest, //bar 16\r\n\r\n\t\t\\rest, 74, 77, 74, 71, 74, 68, 71, 74, 71, 68, 71, 64, \\rest, \\rest, //bar 17\r\n\t\t\\rest, 64, 69, 72, 71, 64, 71, 74, 72, 69, 68, 64, //bar 18\r\n\t\t69, 72, 76, 72, 69, 72, 66, 69, 72, 69, 66, 69, 63, 72, 71, 69, //bar 19\r\n\t\t68, 71, 74, 71, 68, 71, 62, 65, 68, 65, 62, 65, 59, 65, 64, 62, //bar 20\r\n\t\t60, 64, 69, 64, 60, 64, 57, 60, 63, 60, 57, 60, 54, 60, 59, 57, //bar 21\r\n\t\t56, 71, 68, 64, \\rest, 64, 69, 72, 71, 64, 71, 74, //bar 22\r\n\t\t72, 69, 72, 76, 74, 71, 74, 77, 76, 72, 76, 79, 77, 76, 74, 72, //bar 23\r\n\t\t71, 72, 74, 76, 77, 74, 80, 74, 83, 74, 72, 81, 77, 74, 71, 74, //bar 24\r\n\t\t68, 71, 72, 69, 64, 69, 71, 68, 69, 64, 60, 64, 57 //bar 25\r\n\r\n\t], 1),\r\n\r\n\t\\dur, Pseq([\r\n\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 1\r\n\t\tPn(1/4, 8), Pn(1/2, 2), 1, //bar 2\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 3\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 4\r\n\t\tPn(1/4, 4), Pn(1/2, 2), Pn(1/4, 4), Pn(1/2, 2), //bar 5\r\n\t\tPn(1/4, 4), Pn(1/2, 3), 1.5, //bar 6\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 7\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 8\r\n\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 9\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 10\r\n\t\tPn(1/4, 8), Pn(1/2, 2), Pn(1/4, 4), //bar 11\r\n\t\tPn(1/2, 2), Pn(1/4, 4), Pn(1/2, 2), Pn(1/4, 4), //bar 12\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 13\r\n\t\tPn(1/4, 14), 1/2, //bar 14\r\n\t\tPn(1/4, 14), 1/2, //bar 15\r\n\t\tPn(1/4, 14), 1/2, //bar 16\r\n\r\n\t\tPn(1/4, 14), 1/2, //bar 17\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 18\r\n\t\tPn(1/4, 16), //bar 19\r\n\t\tPn(1/4, 16), //bar 20\r\n\t\tPn(1/4, 16), //bar 21\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 22\r\n\t\tPn(1/4, 16), //bar 23\r\n\t\tPn(1/4, 16), //bar 24\r\n\t\tPn(1/4, 12), 1 //bar 25\r\n\r\n\t], 1),\r\n\r\n\t\\att, 0.1,\r\n\t\\rel, Pkey(\\dur)+0.5,\r\n\t\\amp, 0.3\r\n\r\n).play;\r\n\r\n//Left hand\r\nPbind(\r\n\t\\instrument, \"sawSynth\",\r\n\t\\midinote, Pseq([\r\n\r\n\t\t45, 57, 56, 57, 52, 57, 60, 59, 52, 59, 62, //bar 1\r\n\t\t60, 57, 56, 52, 57, 52, 57, 60, 59, 52, 59, 62, //bar 2\r\n\t\t60, 57, 60, 57, 62, 57, 53, 57, 50, 53, 45, 48, //bar 3\r\n\t\t47, 50, 55, 59, \\rest, 55, 52, 55, 48, 52, 43, 47, //bar 4\r\n\t\t45, 48, 50, 53, 47, 50, 43, 47, 48, 52, 45, 48, //bar 5\r\n\t\t41, 38, 43, 55, 53, 55, 48, 55, 60, 64, 62, 55, 62, 65, //bar 6\r\n\t\t64, 60, 59, 55, 60, 55, 60, 64, 62, 55, 62, 65, //bar 7\r\n\t\t64, 60, \\rest, \\rest, \\rest, 67, 64, 67, 60, 64, 55, 59, //bar 8\r\n\r\n\t\t57, 60, 64, 67, 66, 69, 62, 66, 57, 62, 54, 57, //bar 9\r\n\t\t55, 59, 62, 66, 64, 67, 60, 64, 55, 60, 52, 55, //bar 10\r\n\t\t54, 57, 59, 63, \\rest, 64, 60, 64, 57, 60, 64, 67, //bar 11\r\n\t\t66, 62, 59, 62, 55, 59, 62, 66, 64, 60, 57, 60, 54, 57, 60, //bar 12\r\n\t\t\\rest, 59, 60, 57, 59, 47, 52, 64, 59, 55, 52, 47, 43, 47, //bar 13\r\n\t\t40, 52, 55, 58, 49, \\rest, \\rest, 67, 65, 64, //bar 14\r\n\t\t62, 50, 53, 56, 47, \\rest, \\rest, 65, 64, 62, //bar 15\r\n\t\t60, 48, 52, 54, 45, \\rest, \\rest, 64, 63, 61, //bar 16\r\n\r\n\t\t59, 47, 50, 53, 44, \\rest, \\rest, 62, 60, 59, //bar 17\r\n\t\t60, 57, 56, 52, 57, 52, 57, 60, 59, 52, 59, 62, //bar 18\r\n\t\t60, 64, 69, 64, 60, 64, 57, 60, 54, 57, 60, 57, 54, 57, 51, 54, //bar 19\r\n\t\t52, 56, 59, 56, 52, 47, 44, 40, //bar 20\r\n\t\t45, 48, 52, 48, 45, 48, 39, \\rest, //bar 21\r\n\t\t\\rest, 59, 56, 52, 50, 59, 56, 50, 48, 52, 44, 52, //bar 22\r\n\t\t45, 54, 47, 56, 48, 57, 50, 58, //bar 23\r\n\t\t56, 53, 50, 47, 44, 45, 38, 40, //bar 24\r\n\t\t41, 39, 40, 52, 45 //bar 25\r\n\r\n\t], 1),\r\n\r\n\t\\dur, Pseq([\r\n\r\n\t\t1/2, 1, 1/2, Pn(1/4, 8), //bar 1\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 2\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 3\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 4\r\n\t\tPn(1/2, 2), Pn(1/4, 4), Pn(1/2, 2), Pn(1/4, 4), //bar 5\r\n\t\tPn(1/2, 2), Pn(1/4, 12), //bar 6\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 7\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 8\r\n\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 9\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 10\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 11\r\n\t\tPn(1/4, 14), 1/2, //bar 12\r\n\t\tPn(1/4, 4), Pn(1/2, 2), Pn(1/4, 8), //bar 13\r\n\t\tPn(1/2, 6), Pn(1/4, 4), //bar 14\r\n\t\tPn(1/2, 6), Pn(1/4, 4), //bar 15\r\n\t\tPn(1/2, 6), Pn(1/4, 4), //bar 16\r\n\r\n\t\tPn(1/2, 6), Pn(1/4, 4), //bar 17\r\n\t\tPn(1/2, 4), Pn(1/4, 8), //bar 18\r\n\t\tPn(1/4, 16), //bar 19\r\n\t\tPn(1/2, 8), //bar 20\r\n\t\tPn(1/2, 8), //bar 21\r\n\t\tPn(1/4, 8), Pn(1/2, 4), //bar 22\r\n\t\tPn(1/2, 8), //bar 23\r\n\t\tPn(1/2, 8), //bar 24\r\n\t\tPn(1/2, 4), 2 //bar 25\r\n\r\n\t], 1),\r\n\r\n\t\\att, 0.1,\r\n\t\\rel, Pkey(\\dur)+0.4,\r\n\t\\amp, 0.5\r\n\r\n).play;\r\n\r\n)"
}
