{
   "author" : "melliott",
   "name" : "\"The Hills\" - The Weeknd",
   "description" : "This is a cover of a song by Abel Tesfaye titled \"The Hills\" done in SuperCollider.\r\n\r\nYou can find the original here.\r\nWARNING: VIDEO IS SOMEWHAT GRAPHIC. LYRICS ARE NSFW.\r\nhttps://www.youtube.com/watch?v=yzTuBuRdAyA",
   "ancestor_list" : [],
   "labels" : [],
   "is_private" : null,
   "id" : "1-54Q",
   "code" : "///////////////////////////////////////\r\n///////  RUN THE SYNTH DEFS  //////////\r\n///////////////////////////////////////\r\n\r\n(\r\nSynthDef(\"hihat\", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 12000, pan = 0;\r\n\tvar env, snd;\r\n\tenv =  Env.perc(\r\n\t\tattackTime: att,\r\n\t\treleaseTime: rel,\r\n\t\tlevel: amp).kr(doneAction: 2);\r\n\tsnd =  WhiteNoise.ar(\r\n\t\tmul: env,\r\n\t\tadd: 0);\r\n\tsnd = LPF.ar(\r\n\t\tin: snd,\r\n\t\tfreq: ffreq,\r\n\t\tmul: 1,\r\n\t\tadd: 0);\r\n\tOut.ar(out, Pan2.ar(snd, pan));\r\n}).add;\r\n\r\nSynthDef(\"kick\", {arg out = 0, amp = 0.5, sinfreq = 60, glissf = 0.9, att = 0.01, rel = 0.45, pan = 0;\r\n\tvar env, snd, ramp;\r\n\tenv =  Env.perc(\r\n\t\tattackTime: att,\r\n\t\treleaseTime: rel,\r\n\t\tlevel: 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(\r\n\t\tfreq: ramp,\r\n\t\tphase: 0,\r\n\t\tmul: env,\r\n\t\tadd: 0);\r\n\tsnd = Pan2.ar(snd, pan);\r\n\tOut.ar(out, snd);\r\n}).add;\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.5, decay, 0).kr(doneAction: 2);\r\nsnd = Pluck.ar(\r\n\t\tin: WhiteNoise.ar(amp),\r\n\t\ttrig: Impulse.kr(0),\r\n\t\tmaxdelaytime: 0.1,\r\n\t\tdelaytime: (freq*2).reciprocal,\r\n\t\tdecaytime: decay,\r\n\t\tcoef: dampen);\r\n\tsnd = snd * env;\r\n\tOut.ar(0, [snd, snd]);\r\n}).add;\r\n\r\nSynthDef(\"sawSynth\", { arg freq = 440, amp = 0.1, att = 0.1, rel = 2, lofreq = 1000, hifreq = 3000;\r\n\tvar env, snd;\r\n\tenv = 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\tsnd = 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\tsnd = Splay.ar(snd);\r\n\tOut.ar(0, snd);\r\n}).add;\r\n)\r\n\r\n\r\n///////////////////////////////////////\r\n//////// RUN ME vvvvv RUN ME //////////\r\n///////////////////////////////////////\r\n(\r\n// 113/60 is the BPM of the song propper.\r\nt = TempoClock.new(128/60);\r\n// 'transp1' should be '1' in the song propper.\r\n~transp1 = 0;\r\n~transp2 = ~transp1 - 1;\r\n{\r\nvar chords = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t[35, 38, 42],\r\n\t\t[31, 35, 38],\r\n\t\t[28, 31, 35],\r\n\t\t[35, 38, 43]\r\n\t] + ~transp1, inf) + 12,\r\n\t\\dur, 8,\r\n\t\\amp, 0.6,\r\n\t\\rel, 8\r\n);\r\n\r\nvar hibells = Pbind(\r\n\t\\instrument, \\plucking,\r\n\t\\midinote, Pseq([\r\n\t\t67, 66, 64, 62, 59, 62, 64, 66\r\n\t] + ~transp1, inf) + 12,\r\n\t\\dur, 1,\r\n\t\\amp, 1,\r\n\t\\rel, 1\r\n);\r\n\r\nvar hibells2 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t67, 66, 64, 62, 59, 62, 64, 66\r\n\t] + ~transp1, inf) + 12,\r\n\t\\dur, 1,\r\n\t\\amp, 0.2,\r\n\t\\rel, 1\r\n);\r\n\r\nvar kick1 = Pbind(\r\n\t\\instrument, \"kick\",\r\n\t\\midinote, Pseq([1], inf),\r\n\t\\amp, Pseq([2, 2, 0, 0], inf),\r\n\t\\rel, 1,\r\n\t\\dur, Pseq([1.5, 0.5, 1, 1], inf),\r\n\t\\sinfreq, Pseq([45, 45, \\rest, \\rest], inf),\r\n\t\\glissf, 0.5\r\n);\r\n\r\nvar hihats = Pbind(\r\n\t\\instrument, \"hihat\",\r\n\t\\dur, 0.5,\r\n\t\\amp, Pseq([0.1, 0.3, 0.3, 0.3], inf),\r\n\t\\glissf, 0.2,\r\n\t\\rel, 0.05\r\n);\r\n\r\nvar clap = Pbind(\r\n\t\\instrument, \"hihat\",\r\n\t\\midinote, Pseq([1], inf),\r\n\t\\dur, 1,\r\n\t\\amp, Pseq([0, 0, 1, 0], inf),\r\n\t\\ffreq, 2000,\r\n\t\\glissf, 0.2,\r\n\t\\rel, 1.5\r\n);\r\n\r\nvar scream = Pbind(\r\n\t\\instrument, \"kick\",\r\n\t\\sinfreq, Pseq([500], 1),\r\n\t\\dur, 10,\r\n\t\\amp, 0.6,\r\n\t\\rel, 4,\r\n\t\\glissf, 10\r\n);\r\n\r\nvar abel0 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t66, 66, 66, 66, 69, 66, 64, 62, 64, 62\r\n\t] + ~transp1, 4),\r\n\t\\dur, Pseq([\r\n\t\t0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 3\r\n\t], 4),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\nvar abel1 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t66, 66, 66, 69, 66, 64, 62,\r\n\t] + ~transp1, 1) + 12,\r\n\t\\dur, 0.5,\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\nvar abel2 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t64,59,62\r\n\t] + ~transp1, 1) + 12,\r\n\t\\dur, 2,\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\nvar abel3 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t64, 64, 66, 64, 62\r\n\t] + ~transp1, 1) + 12,\r\n\t\\dur, Pseq([2, 0.2, 0.2, 1.6, 2], 1),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\nvar abel4 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t64, 59, 62, 64, 59, 62,\r\n\t] + ~transp1, 3) + 12,\r\n\t\\dur,  Pseq([0.75,0.75,0.5,\r\n\t\t\t0.75,0.75,0.5], 3),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\n\r\nvar piano = Pbind(\r\n\t\\instrument, \\plucking,\r\n\t\\midinote, Pseq([\r\n\t\t\tPn([60, 63, 67], 8),\r\n\t\t\tPn([68, 72, 63], 8),\r\n\t\t\tPn([65, 68, 72], 8),\r\n\t\t\tPn([68, 71, 63], 8),\r\n\t] + ~transp2, 2),\r\n\t\\dur, 1,\r\n\t\\amp, 0.6,\r\n\t\\rel, 1\r\n);\r\n\r\nvar piano2 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t\tPn([60, 63, 67], 8),\r\n\t\t\tPn([68, 72, 63], 8),\r\n\t\t\tPn([65, 68, 72], 8),\r\n\t\t\tPn([68, 71, 63], 8),\r\n\t] + ~transp2, 2),\r\n\t\\dur, 1,\r\n\t\\amp, 0.3,\r\n\t\\rel, 1\r\n);\r\n\r\nvar abel6 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t\\rest, \\rest,\r\n\t\t72, 82, 82, 79,\r\n\t\t72, 82, 82, 74,\r\n\t\t72, 70, 72\r\n\t] + ~transp2, 1),\r\n\t\\dur, Pseq([\r\n\t\t1, 0.5,\r\n\t\t0.5, 0.75, 0.75, 2,\r\n\t\t0.5, 0.75, 0.75, 3,\r\n\t\t0.5, 0.5, 2\r\n\t], 4),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\n\r\n\r\nvar abel7 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t79, 82, 84,\r\n\t\t79, 77, 75,\r\n\r\n\t\t\\rest,\r\n\r\n\t\t79, 82, 84,\r\n\t\t79, 77, 75,\r\n\t\t75, 74, 70, 72\r\n\t] + ~transp2, 1),\r\n\t\\dur, Pseq([\r\n\t\t0.25, 0.25, 3.5,\r\n\t\t0.5, 0.5, 2.5,\r\n\r\n\t\t0.5,\r\n\r\n\t\t0.25, 0.25, 3.5,\r\n\t\t0.5, 0.5, 2.5,\r\n\t\t0.5, 0.5, 0.5, 0.5\r\n\t], 4),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\n\r\nvar abel8 = Pbind(\r\n\t\\instrument, \\sawSynth,\r\n\t\\midinote, Pseq([\r\n\t\t79, 82, 84,\r\n\t\t79, 77, 75,\r\n\r\n\t\t\\rest,\r\n\r\n\t\t79, 82, 84,\r\n\t\t84, 87, 86\r\n\t] + ~transp2, 1),\r\n\t\\dur, Pseq([\r\n\t\t0.25, 0.25, 3.5,\r\n\t\t0.5, 0.5, 2.5,\r\n\r\n\t\t0.5,\r\n\r\n\t\t0.25, 0.25, 3.5,\r\n\t\t0.5, 0.5, 3.5\r\n\t], 4),\r\n\t\\amp, 0.9,\r\n\t\\rel, 1\r\n);\r\n\r\n\t~chordsPlayer = chords.play(t);\r\n\t32.wait;\r\n\tabel0.play(t); //Your man on the road...\r\n\t~hibellsPlayer = hibells.play(t);\r\n\t~hibells2Player = hibells2.play(t);\r\n\t32.wait;\r\n\t~hihatsPlayer = hihats.play(t);\r\n\t~clapPlayer = clap.play(t);\r\n\tabel0.play(t); //I can't find your house...\r\n\t30.wait;\r\n\t~chordsPlayer.stop;\r\n\t~hibellsPlayer.stop;\r\n\t~hibells2Player.stop;\r\n\t~hihatsPlayer.stop;\r\n\t~clapPlayer.stop;\r\n\r\n\tscream.play(t); //AHHHHHH\r\n\t2.25.wait;\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\t~chordsPlayer.reset.play(t);\r\n\t~hihatsPlayer.reset.play(t);\r\n\t~clapPlayer.reset.play(t);\r\n\t~kick1Player = kick1.play(t);\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel2.play(t); //be by your side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel3.play(t); //be by yOUr side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\t~chordsPlayer.stop;\r\n\t~hihatsPlayer.stop;\r\n\t2.wait;\r\n\t~kick1Player.stop;\r\n\t~clapPlayer.stop;\r\n\t1.5.wait;\r\n\r\n\t///////////////////////////////////// Verse + Chorus\r\n\r\n\tabel0.play(t);\r\n\t~chordsPlayer.reset.play(t);\r\n\t~hibellsPlayer = hibells.play(t);\r\n\t~hibells2Player = hibells2.play(t);\r\n\t32.wait;\r\n\t~hihatsPlayer = hihats.play(t);\r\n\t~clapPlayer = clap.play(t);\r\n\tabel0.play(t);\r\n\t30.wait;\r\n\t~chordsPlayer.stop;\r\n\t~hibellsPlayer.stop;\r\n\t~hibells2Player.stop;\r\n\t~hihatsPlayer.stop;\r\n\t~clapPlayer.stop;\r\n\r\n\tscream.play(t); //AHHHHHH\r\n\t2.25.wait;\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\t~chordsPlayer.reset.play(t);\r\n\t~hihatsPlayer.reset.play(t);\r\n\t~clapPlayer.reset.play(t);\r\n\t~kick1Player = kick1.play(t);\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel3.play(t); //be by your side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel3.play(t); //be by your side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\t~chordsPlayer.stop;\r\n\t~hihatsPlayer.stop;\r\n\t2.wait;\r\n\t~kick1Player.stop;\r\n\t~clapPlayer.stop;\r\n\t1.5.wait;\r\n\r\n\t/////////////////////////////////////  Bridge\r\n\r\n\t~pianoPlayer = piano.play(t);\r\n\t~piano2Player = piano2.play(t);\r\n\tabel6.play(t); //The hills have eyes...\r\n\t15.wait;\r\n\tabel7.play(t); //Who are you... Who are you...\r\n\t17.wait;\r\n\tabel6.play(t); //Hide your eyes...\r\n\t15.wait;\r\n\tabel8.play(t); //Who are you... Who are youuuuu...\r\n\t19.wait;\r\n\r\n\t///////////////////////////////////// Chorus Only\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\t~chordsPlayer.reset.play(t);\r\n\t~hihatsPlayer.reset.play(t);\r\n\t~clapPlayer.reset.play(t);\r\n\t~kick1Player = kick1.play(t);\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel3.play(t); //be by your side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\r\n\tabel1.play(t); //I only call you when it's\r\n\t3.5.wait;\r\n\tabel2.play(t); //Half-past-five.\r\n\t4.5.wait;\r\n\tabel1.play(t); //The only time that I'll\r\n\t3.5.wait;\r\n\tabel3.play(t); //be by your side\r\n\t4.5.wait;\r\n\tabel1.play(t); //I only love it when you\r\n\t3.5.wait;\r\n\tabel4.play(t); //Touch me, Not feel me... uh... awkardddddd.... etc.\r\n\t12.5.wait;\r\n\t~chordsPlayer.stop;\r\n\t~hihatsPlayer.stop;\r\n\t2.wait;\r\n\t~kick1Player.stop;\r\n\t~clapPlayer.stop;\r\n\t1.5.wait;\r\n\r\n}.fork(t);\r\n)"
}
