{
   "labels" : [
      "aphex twin",
      "supercollider",
      "piano",
      "pianoteq"
   ],
   "is_private" : null,
   "id" : "1-5d0",
   "code" : "// Aphex Twin's Avril 14th \r\n// SuperCollider transcription by Nicola Ariutti.\r\n//\r\n// From an music sheet by Micheal Jordan (https://www.sheetsdaily.com/piano/sheets/45931/Aphex_Twin_Avril_14th.html)\r\n// The code is meant to send MIDI data to an external synthetizer like Modartt Pianoteq.\r\n//\r\n// Inspired by the work of Via (https://forum.pdpatchrepo.info/topic/12650/via-aphex-twin-avril14th-puredata-cover)\r\n// I wanted to make my own version of it.\r\n// Enjoy!!!\r\n\r\n\r\nTempoClock.default.tempo_(75/60);\r\nMIDIIn.connectAll;\r\nm = MIDIOut(0);\r\n\r\n(\r\nTdef(\\damper, {\r\n\t(36*2).do{\r\n\t\t0.25.wait;\r\n\t\tm.control(3, 64, 127);\r\n\t\t(2-0.25).wait;\r\n\t\tm.control(3, 64, 0);\r\n\t};\r\n\tm.control(3, 64, 127);\r\n}).quant_(4);\r\n\r\n// A: bar 0-1\r\n~rhA_deg = [2,-2,  0,   0,  -2,  -2,   4,   3,   2,   0];\r\n~rhA_dur = [1, 1,1.5,0.25,1.75, 0.5, 0.5, 0.5, 0.5, 0.5];\r\n~lhA_deg = [0,5,7,9, 2,7,9,11, 3,7,10,11, 1,7,10,9];\r\n~lhA_dur = [0.5].dup(16).flat;\r\n\r\n// B: bar: 4-5\r\n~rhB_deg = [[2,9],[-2,5],[0,7],[0,7],[-2,5]];\r\n~rhB_dur = [    1,     1,  1.5, 0.25,  4.25];\r\n~lhB_deg = ~lhA_deg;\r\n~lhB_dur = ~lhA_dur;\r\n\r\n// C: bar 8-9\r\n~rhC_deg = [ -5,  -5,  -3, -5, -5,  -5,  -3, -2, -3];\r\n~rhC_dur = [1.5,0.25,1.75,0.5,1.5,0.25,0.25,1.5,0.5];\r\n~lhC_deg = [0,7,5,4, -3,4,5,4, 0,7,5,4, -4,3,4,3];\r\n~lhC_dur = [0.5].dup(16).flat;\r\n\r\n// D: bar 16-17\r\n~rhD_deg = [\\rest, [-2,5], [-1,6],[0,7],[2,9], [-1,6], /**/ \\rest, [-2,5], [-1,6],[0,7],[2,9], [-1,6], [-2,5]];\r\n~rhD_dur = [  0.5,    0.5,    0.5,  0.5,  0.5,    1.5, /**/   0.5,    0.5,    0.5,  0.5,  0.5,    0.5,      1];\r\n~lhD_deg = [  1,  8,  9,4,   9,  8,   5, /**/  1,  8,  9,   4,  9,  8,   9];\r\n~lhD_dur = [0.5,0.5,0.5,1,0.25,0.5,0.75, /**/0.5,0.5,0.5,0.75,0.5,0.5,0.75];\r\n\r\n// E: bar 18-19\r\n~rhE_deg = [\\rest, [-2,5], [-1,6],[0,7],[2,9], [-1,6], /**/ \\rest, [-2,5], [-1,6],[0,7],[2,9], [-1,6], [-2,5]];\r\n~rhE_dur = [  0.5,    0.5,    0.5,  0.5,  0.5,    1.5, /**/   0.5,    0.5,    0.5, 0.5,  0.75,    0.5,   0.75];\r\n~lhE_deg = [  1,  8,  9,11,   9,   8,  4,  5, /**/  1,  8,  9,   4,  9,  8, 9];\r\n~lhE_dur = [0.5,0.5,0.5, 1,0.25,0.25,0.5,0.5, /**/0.5,0.5,0.5,0.75,0.5,0.25,1];\r\n\r\n// F : bar 24-25\r\n~rhF_deg = [[2,9],[-2,5],[0,7],[0,7],[-2,5],[-2,5],[4,11],[3,10],[2,9],[0,7]];\r\n~rhF_dur = [    1,     1,  1.5, 0.25,  1.75,   0.5,   0.5,   0.5,  0.5,  0.5];\r\n~lhF_deg = ~lhB_deg;\r\n~lhF_dur = ~lhB_dur;\r\n\r\n// G : bar 28-31\r\n~rhG_deg = [   2,   1,   2,   2,   4,   5,  4,2,4, /**/   2,   1,   0,   2,   4,   5, -2,2,0];\r\n~rhG_dur = [1.75,0.25,1.75,0.25,0.25,0.25,0.5,2,1, /**/1.75,0.25,1.75,0.25,0.25,0.25,0.5,2,1];\r\n~lhG_deg = [[3,5], [1,3,5], [2,7], [0,5], /**/[-2,0,2,7],[-3,0,2,4],[0,4,7,9],[-4,0,3,5]];\r\n~lhG_dur = [2].dup(8).flat;\r\n\r\n// H : bar 32-33\r\n~rhHupper_deg = [\\rest,  9,\\rest,  9,   9, /**/\\rest];\r\n~rhHupper_dur = [ 0.25,1.5,  0.5,1.5,0.25, /**/    4];\r\n~rhH_deg = [   2,   1,   2,   2,/**/[4,11],[5,12],[4,11],  18, 16,[4,11]]; // MOD\r\n~rhH_dur = [1.75,0.25,1.75,0.25,/**/  0.25,  0.25,  0.25,0.75,1.5,     1]; // MOD\r\n~lhH_deg = [-2,5,7,8,0,7,8,11,3,7,9,12,1,7,10,14];\r\n~lhH_dur = [0.5].dup(16).flat;\r\n\r\n// I : bar 34-36\r\n~rhIupper_deg = [\\rest, 14,12,   8,5, \\rest];\r\n~rhIupper_dur = [0.25,0.75, 1,1.25,0.75, 8];\r\n~rhI_deg = [[2,9],[1,8],[0,7],[2,9],/**/[4,11],[5,12],[-2,5],  9,[4,11],[4,11],[4,11]];\r\n~rhI_dur = [ 1.75, 0.25, 1.75, 0.25,/**/  0.25,  0.25,     1,1.5,  0.25,  0.25,  4.5];\r\n~lhI_deg = [9,7,5,3,2,7,9,11,/**/1,7,9,12,0,7,14,9];\r\n~lhI_dur = [0.5].dup(15).flat ++ 4.5;\r\n\r\n~rhupper_deg = [\\rest] ++ ~rhHupper_deg ++ ~rhIupper_deg;\r\n~rhupper_dur = [32*4]  ++ ~rhHupper_dur ++ ~rhIupper_dur;\r\n~rh_deg = ~rhA_deg.dup(2).flat ++ ~rhB_deg ++ ~rhB_deg ++ ~rhC_deg.dup(4).flat ++ ~rhD_deg ++ ~rhE_deg ++ ~rhA_deg.dup(2).flat ++ ~rhF_deg ++ ~rhF_deg ++ ~rhG_deg ++ ~rhH_deg ++ ~rhI_deg;\r\n~rh_dur = ~rhA_dur.dup(2).flat ++ ~rhB_dur.dup(2).flat ++ ~rhC_dur.dup(4).flat ++ ~rhD_dur ++ ~rhE_dur ++ ~rhA_dur.dup(2).flat ++ ~rhF_dur.dup(2).flat ++ ~rhG_dur ++ ~rhH_dur ++ ~rhI_dur;\r\n~lh_deg = ~lhA_deg.dup(2).flat ++ ~lhB_deg.dup(2).flat ++ ~lhC_deg.dup(4).flat ++ ~lhD_deg ++ ~lhE_deg ++ ~lhA_deg.dup(2).flat ++ ~lhF_deg.dup(2).flat ++ ~lhG_deg ++ ~lhH_deg ++ ~lhI_deg;\r\n~lh_dur = ~lhA_dur.dup(2).flat ++ ~lhB_dur.dup(2).flat ++ ~lhC_dur.dup(4).flat ++ ~lhD_dur ++ ~lhE_dur ++ ~lhA_dur.dup(2).flat ++ ~lhF_dur.dup(2).flat ++ ~lhG_dur ++ ~lhH_dur ++ ~lhI_dur;\r\n)\r\n\r\n(\r\nPbindef(\\righthandupper,\r\n    \\type, \\midi,\r\n    \\midicmd, \\noteOn,\r\n\t\\midiout, MIDIOut(0),\r\n\t\\root, -4,\r\n    \\chan, 3, // MIDI channel 4\r\n    \\scale, Scale.major,\r\n\t\\octave, 6,\r\n\t\\degree, Pseq(~rhupper_deg,1).trace,\r\n\t\\dur,    Pseq(~rhupper_dur, 1),\r\n\t\\amp, Pgauss(0.5, 0.05, inf),\r\n\t\\strum, Pwhite(-0.03, 0.03, inf),\r\n\t\\lag, 0.02 + Pwhite(0.0, 0.03, inf),\r\n\t\\legato, 0.8\r\n).quant_(4);\r\n\r\nPbindef(\\righthand,\r\n    \\type, \\midi,\r\n    \\midicmd, \\noteOn,\r\n\t\\midiout, MIDIOut(0),\r\n\t\\root, -4,\r\n    \\chan, 3, // MIDI channel 4\r\n    \\scale, Scale.major,\r\n\t\\octave, 6,\r\n\t\\degree, Pseq(~rh_deg,1).trace,\r\n\t\\dur,    Pseq(~rh_dur, 1),\r\n\t\\amp, Pgauss(0.5, 0.05, inf),\r\n\t\\strum, Pwhite(-0.03, 0.03, inf),\r\n\t\\lag, 0.02 + Pwhite(0.0, 0.03, inf),\r\n\t\\legato, 0.8\r\n).quant_(4);\r\n\r\nPbindef(\\lefthand,\r\n    \\type, \\midi,\r\n    \\midicmd, \\noteOn,\r\n\t\\midiout, MIDIOut(0),\r\n\t\\root, -4,\r\n    \\chan, 3, // MIDI channel 4\r\n    \\scale, Scale.major,\r\n\t\\octave, 4,\r\n\t\\degree, Pseq(~lh_deg,1).trace,\r\n\t\\dur,    Pseq(~lh_dur, 1),\r\n\t\\amp, Pgauss(0.3, 0.05, inf) * Pseq([1.1,Pn(0.7,3)],inf),\r\n\t\\strum, Pwhite(-0.03, 0.03, inf),\r\n\t\\lag, Pwhite(0.0, 0.03, inf),\r\n\t\\legato, 0.9\r\n).quant_(4);\r\n);\r\n\r\n// play the song\r\n(\r\nPbindef(\\righthandupper).reset.play;\r\nPbindef(\\righthand).reset.play;\r\nPbindef(\\lefthand).reset.play;\r\nTdef(\\damper).reset.play;\r\n)\r\n\r\n\r\n// stop it\r\n(\r\nPbindef(\\righthandupper).stop;\r\nPbindef(\\righthand).stop;\r\nPbindef(\\lefthand).stop;\r\nTdef(\\damper).stop;\r\nm.control(3, 64, 0);\r\n)",
   "name" : "Aphex Twin's Avril 14th - SuperCollider transcription by Nicola Ariutti",
   "author" : "nicolaariutti",
   "ancestor_list" : [],
   "description" : "Aphex Twin's Avril 14th - SuperCollider transcription by Nicola Ariutti.\r\n\r\nFrom a music sheet by Micheal Jordan (https://www.sheetsdaily.com/piano/sheets/45931/Aphex_Twin_Avril_14th.html)\r\nThe code is meant to send MIDI data to an external synthetizer like Modartt Pianoteq.\r\n\r\nInspired by the work of Via (https://forum.pdpatchrepo.info/topic/12650/via-aphex-twin-avril14th-puredata-cover) I wanted to make my own version of it.\r\n\r\nEnjoy!!!"
}
