{
   "name" : "Young Mr. Markov",
   "author" : "Paparde",
   "ancestor_list" : [],
   "description" : "Composition using a markov chain and a violin sample. You can set probabilities for the notes to be generated by the markov chain (minor or major or repeat or chromatic etc).\r\nApologies for the messy appearance. There are comments and instructions in the patch.",
   "labels" : [
      "markov chain"
   ],
   "code" : "/*To launch patch\r\n  [STEP 1] - LOAD SAMPLE\r\n  [STEP 2] - SET PROBABILITIES AND EVALUATE\r\n  [STEP 3] - EVALUATE THE MUSICAL DICTIONARY\r\n  [STEP 4] - EVALUATE VIOLIN DICTIONARY\r\n  [STEP 5] - EVALUATE SYNTH DEF'S\r\n  [STEP 6] - EVALUATE PTPARTY\r\n  see far right side*/\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////////////1)SAMPLE\r\n/* Specify path to ViolinA.wav sample. Ignore nil in post window,\r\n   the sound file IS loaded to buffer*/\r\n( //<-LOAD SAMPLE---------------------------------------------------------------------------------------------------[STEP 1]\r\n(\r\n~filePath = \"C:/Program Files/SuperCollider/sounds/ViolinA.wav\";\r\n~sample = Buffer.read(Server.default, ~filePath);\r\n);\r\n~sample.numChannels;\r\n)\r\n\r\n//////////////////////////////////////////////////////////////////////////////2)MUSICAL DICTIONARY LANGUAGE\r\n/* This is where the probabilities of certain choice of notes can be made*/\r\n\r\n( //<-SET PROBABILITIES AND EVALUATE--------------------------------------------------------------------------------[STEP 2]\r\n\t\t//\t\t\t\t\t\t\t|Examples\tA\tB\tC\tD\tE\r\n~min = 3;\t//MINOR notes (A, D, E)\t\t\t\t\t|~min\t\t0\t0\t8\t2\t2\r\n~maj = 8;\t//MAJOR notes (C, F, G)\t\t\t\t\t|~maj\t\t0\t0\t4\t8\t2\r\n~dim = 1;\t//DIMINISHED note (B)\t\t\t\t\t|~dim\t\t0\t0\t2\t2\t1\r\n~out = 0;\t//OUTSIDE major scale (A#, C#, D#, F#, G#)\t\t|~out\t\t0\t2\t1\t0\t2\r\n~rep = 1;\t//REPETITION of the same note\t\t\t\t|~rep\t\t0\t1\t0\t0\t1\r\n~jum = 1;\t//JUMP an octave up or down to the same note\t\t|~jum\t\t1\t0\t0\t0\t1\r\n~chr = 0\t//CHROMATIC step up or down from any given note\t\t|~chr\t\t1\t0\t0\t2\t2\r\n)\r\n\r\n//////////////////////////////////////////////////////////////////////////////3)MUSICAL DICTIONARY\r\n/* A musical dictionary is made using the markov system.\r\n   The above set probabilities randomly generate two arrays\r\n   of 16 and 32 midi numbers. The range is 25 notes long,\r\n   from A(220Hz) to A(880Hz)*/\r\n\r\n( //<-EVALUATE THE MUSICAL DICTIONARY-------------------------------------------------------------------------------[STEP 3]\r\n~notes = (57..81);\r\n~markov = ();\r\n~markov[57] = ( // A\r\n\t62: ~min, 64: ~min, 69: ~min,\t\t//the multiplier by some of the notes is to\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\t\t//balance the probabilities set above, so that\r\n\t59: ~dim*2, 71: ~dim, \t\t\t//if every type of note (major, minor, chromatic etc)\r\n\t58: ~out, 61: ~out, 63: ~out,\t\t//is set at, for example, 1, each have exactly the same\r\n\t57: ~rep*3,\t\t\t\t\t//probability of being the next note\r\n\t69: ~jum*3,\r\n\t58: ~chr*3\r\n);\r\n~markov[58] = ( // A#\r\n\t57: ~min, 62: ~min, 64: ~min,\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t61: ~out, 63: ~out, 66: ~out,\r\n\t58: ~rep*3,\r\n\t70: ~jum*3,\r\n\t57: ~chr*1.5, 59: ~chr*1.5\r\n);\r\n~markov[59] = ( // B\r\n\t57: ~min, 62: ~min, 64: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t71: ~dim,\r\n\t58: ~out, 61:~out, 63: ~out,\r\n\t59: ~rep*3,\r\n\t71: ~jum*3,\r\n\t58: ~chr*1.5, 60: ~chr*1.5\r\n);\r\n~markov[60] = ( //C\r\n\t57: ~min, 62: ~min, 64: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t58: ~out, 61:~out, 63: ~out,\r\n\t60: ~rep*3,\r\n\t72: ~jum*3,\r\n\t59: ~chr*1.5, 61: ~chr*1.5\r\n);\r\n~markov[61] = ( //C#\r\n\t57: ~min, 62: ~min, 64: ~min,\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t58: ~out, 63: ~out, 66: ~out,\r\n\t61: ~rep*3,\r\n\t73: ~jum*3,\r\n\t60: ~chr*1.5, 62: ~chr*1.5\r\n);\r\n~markov[62] = ( // D\r\n\t57: ~min, 64: ~min, 69: ~min,\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t61: ~out, 63: ~out, 66: ~out,\r\n\t62: ~rep*3,\r\n\t74: ~jum*3,\r\n\t61: ~chr*1.5, 63: ~chr*1.5\r\n);\r\n~markov[63] = ( // D#\r\n\t62: ~min, 64: ~min, 69: ~min,\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t61: ~out, 66: ~out, 68: ~out,\r\n\t63: ~rep*3,\r\n\t75: ~jum*3,\r\n\t62: ~chr*1.5, 64: ~chr*1.5\r\n);\r\n~markov[64] = ( // E\r\n\t57: ~min, 62: ~min, 69: ~min,\r\n\t60: ~maj, 65: ~maj, 67: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t61: ~out, 63: ~out, 66: ~out,\r\n\t64: ~rep*3,\r\n\t76: ~jum*3,\r\n\t63: ~chr*1.5, 65: ~chr*1.5\r\n);\r\n~markov[65] = ( // F\r\n\t62: ~min, 64: ~min, 69: ~min,\r\n\t60: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t63: ~out, 66: ~out, 68: ~out,\r\n\t65: ~rep*3,\r\n\t77: ~jum*3,\r\n\t64: ~chr*1.5, 66: ~chr*1.5\r\n);\r\n~markov[66] = ( // F#\r\n\t62: ~min, 64: ~min, 69: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim*2, 71: ~dim,\r\n\t63: ~out, 68: ~out, 70: ~out,\r\n\t66: ~rep*3,\r\n\t78: ~jum*3,\r\n\t65: ~chr*1.5, 67: ~chr*1.5\r\n);\r\n~markov[67] = ( // G\r\n\t62: ~min, 64: ~min, 69: ~min,\r\n\t60: ~maj, 65: ~maj, 72: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t66: ~out, 68: ~out, 70: ~out,\r\n\t67: ~rep*3,\r\n\t79: ~jum*3,\r\n\t66: ~chr*1.5, 68: ~chr*1.5\r\n);\r\n~markov[68] = ( // G#\r\n\t62: ~min, 64: ~min, 69: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t66: ~out, 70: ~out, 73: ~out,\r\n\t68: ~rep*3,\r\n\t80: ~jum*3,\r\n\t67: ~chr*1.5, 69: ~chr*1.5\r\n);\r\n~markov[69] = ( // A\r\n\t62: ~min, 64: ~min, 74: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t68: ~out, 70: ~out, 73: ~out,\r\n\t69: ~rep*3,\r\n\t81: ~jum*3,\r\n\t68: ~chr*1.5, 70: ~chr*1.5\r\n);\r\n~markov[70] = ( // A#\r\n\t64: ~min, 69: ~min, 74: ~min,\r\n\t65: ~maj, 67: ~maj, 72: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t66: ~out, 68: ~out, 73: ~out,\r\n\t70: ~rep*3,\r\n\t58: ~jum*3,\r\n\t69: ~chr*1.5, 71: ~chr*1.5\r\n);\r\n~markov[71] = ( // B\r\n\t69: ~min, 74: ~min, 76: ~min,\r\n\t67: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim,\r\n\t70: ~out, 73: ~out, 75: ~out,\r\n\t71: ~rep*3,\r\n\t59: ~jum*3,\r\n\t70: ~chr*1.5, 72: ~chr*1.5\r\n);\r\n~markov[72] = ( // C\r\n\t69: ~min, 74: ~min, 76: ~min,\r\n\t67: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t70: ~out, 73: ~out, 75: ~out,\r\n\t72: ~rep*3,\r\n\t60: ~jum*3,\r\n\t71: ~chr*1.5, 73: ~chr*1.5\r\n);\r\n~markov[73] = ( // C#\r\n\t69: ~min, 74: ~min, 76: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t68: ~out, 70: ~out, 75: ~out,\r\n\t73: ~rep*3,\r\n\t61: ~jum*3,\r\n\t72: ~chr*1.5, 74: ~chr*1.5\r\n);\r\n~markov[74] = ( // D\r\n\t69: ~min, 76: ~min, 81: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t70: ~out, 73: ~out, 75: ~out,\r\n\t74: ~rep*3,\r\n\t62: ~jum*3,\r\n\t73: ~chr*1.5, 75: ~chr*1.5\r\n);\r\n~markov[75] = ( // D#\r\n\t74: ~min, 76: ~min, 81: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t70: ~out, 73: ~out, 78: ~out,\r\n\t75: ~rep*3,\r\n\t63: ~jum*3,\r\n\t74: ~chr*1.5, 76: ~chr*1.5\r\n);\r\n~markov[76] = ( // E\r\n\t69: ~min, 74: ~min, 81: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t73: ~out, 75: ~out, 78: ~out,\r\n\t76: ~rep*3,\r\n\t64: ~jum*3,\r\n\t75: ~chr*1.5, 77: ~chr*1.5\r\n);\r\n~markov[77] = ( // F\r\n\t74: ~min, 76: ~min, 81: ~min,\r\n\t67: ~maj, 72: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t75: ~out, 78: ~out, 80: ~out,\r\n\t77: ~rep*3,\r\n\t65: ~jum*3,\r\n\t76: ~chr*1.5, 78: ~chr*1.5\r\n);\r\n~markov[78] = ( // F#\r\n\t74: ~min, 76: ~min, 81: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t73: ~out, 75: ~out, 80: ~out,\r\n\t78: ~rep*3,\r\n\t66: ~jum*3,\r\n\t77: ~chr*1.5, 79: ~chr*1.5\r\n);\r\n~markov[79] = ( // G\r\n\t74: ~min, 76: ~min, 81: ~min,\r\n\t67: ~maj, 72: ~maj, 77: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t75: ~out, 78: ~out, 80: ~out,\r\n\t79: ~rep*3,\r\n\t67: ~jum*3,\r\n\t78: ~chr*1.5, 80: ~chr*1.5\r\n);\r\n~markov[80] = ( // G#\r\n\t74: ~min, 76: ~min, 81: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t73: ~out, 75: ~out, 78: ~out,\r\n\t80: ~rep*3,\r\n\t68: ~jum*3,\r\n\t79: ~chr*1.5, 81: ~chr*1.5\r\n);\r\n~markov[81] = ( // A\r\n\t69: ~min, 74: ~min, 76: ~min,\r\n\t72: ~maj, 77: ~maj, 79: ~maj,\r\n\t59: ~dim, 71: ~dim*2,\r\n\t75: ~out, 78: ~out, 80: ~out,\r\n\t81: ~rep*3,\r\n\t69: ~jum*3,\r\n\t80: ~chr*3\r\n);\r\n//------------\r\n~markov['next'] = {\r\n\tvar return, current;\r\n\tcurrent = ~markov['current'];\r\n\treturn = ~markov[current].keys(Array)\r\n\t.wchoose(~markov[current].values.asArray.normalizeSum);\r\n\t~markov['current'] = return;\r\n\treturn\r\n};\r\n~markov['current'] = ~notes.choose;\r\n~markovNotes = Array.fill(16, {\r\n\t~markov['next'].value\r\n}).postln;\r\n~markov['current'] = ~notes.choose;\r\n~markovNotes2 = Array.fill(32, {\r\n\t~markov['next'].value\r\n})\r\n//------\r\n);\r\n\r\n////////////////////////////////////////////////////////////////////////////////4)VIOLIN DICTIONARY\r\n/* The randomly generated values from above are\r\n   converted in a way that they influence the panning\r\n   and pitch of the violin sample. After the evaluation\r\n   of the whole section the post window shows the 16 midi\r\n   note values in an array, then the converted pitches\r\n   of those values in semitones, and the float numbers\r\n   show panning positions */\r\n\r\n( //<-EVALUATE VIOLIN DICTIONARY------------------------------------------------------------------------------------[STEP 4]\r\n~markovNotes.postln;\r\n\r\n(\r\n~note0 = ~markovNotes[0];\r\n(\r\nif (~note0<69)\r\n{~n0 = ~note0.linlin(57, 68, 0, 11)}  //the if statements look at each of the 16 midi\r\n{~n0 = ~note0.linlin(69, 81, 0, 12)}  //values of the first array and converts them to\r\n).postln;\t\t\t\t   //a semitone position of a single octave\r\n\r\n~note1 = ~markovNotes[1];\r\n(\r\nif (~note1<69)\r\n{~n1 = ~note1.linlin(57, 68, 0, 11)}\r\n{~n1 = ~note1.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note2 = ~markovNotes[2];\r\n(\r\nif (~note2<69)\r\n{~n2 = ~note2.linlin(57, 68, 0, 11)}\r\n{~n2 = ~note2.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note3 = ~markovNotes[3];\r\n(\r\nif (~note3<69)\r\n{~n3 = ~note3.linlin(57, 68, 0, 11)}\r\n{~n3 = ~note3.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note4 = ~markovNotes[4];\r\n(\r\nif (~note4<69)\r\n{~n4 = ~note4.linlin(57, 68, 0, 11)}\r\n{~n4 = ~note4.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note5 = ~markovNotes[5];\r\n(\r\nif (~note5<69)\r\n{~n5 = ~note5.linlin(57, 68, 0, 11)}\r\n{~n5 = ~note5.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note6 = ~markovNotes[6];\r\n(\r\nif (~note6<69)\r\n{~n6 = ~note6.linlin(57, 68, 0, 11)}\r\n{~n6 = ~note6.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note7 = ~markovNotes[7];\r\n(\r\nif (~note7<69)\r\n{~n7 = ~note7.linlin(57, 68, 0, 11)}\r\n{~n7 = ~note7.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note8 = ~markovNotes[8];\r\n(\r\nif (~note8<69)\r\n{~n8 = ~note8.linlin(57, 68, 0, 11)}\r\n{~n8 = ~note8.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note9 = ~markovNotes[9];\r\n(\r\nif (~note9<69)\r\n{~n9 = ~note9.linlin(57, 68, 0, 11)}\r\n{~n9 = ~note9.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note10 = ~markovNotes[10];\r\n(\r\nif (~note10<69)\r\n{~n10 = ~note10.linlin(57, 68, 0, 11)}\r\n{~n10 = ~note10.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note11 = ~markovNotes[11];\r\n(\r\nif (~note11<69)\r\n{~n11 = ~note11.linlin(57, 68, 0, 11)}\r\n{~n11 = ~note11.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note12 = ~markovNotes[12];\r\n(\r\nif (~note12<69)\r\n{~n12 = ~note12.linlin(57, 68, 0, 11)}\r\n{~n12 = ~note12.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note13 = ~markovNotes[13];\r\n(\r\nif (~note13<69)\r\n{~n13 = ~note13.linlin(57, 68, 0, 11)}\r\n{~n13 = ~note13.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note14 = ~markovNotes[14];\r\n(\r\nif (~note14<69)\r\n{~n14 = ~note14.linlin(57, 68, 0, 11)}\r\n{~n14 = ~note14.linlin(69, 81, 0, 12)}\r\n).postln;\r\n\r\n~note15 = ~markovNotes[15];\r\n(\r\nif (~note15<69)\r\n{~n15 = ~note15.linlin(57, 68, 0, 11)}\r\n{~n15 = ~note15.linlin(69, 81, 0, 12)}\r\n).postln;\r\n);\r\n//------------\r\n(\r\nif (~n0 == 12) { ~n0 = 0 } { ~n0 = ~n0 };\t\t//because there are 25 possible note values\r\nif (~n1 == 12) { ~n1 = 0 } { ~n1 = ~n1 };\t\t//there are two 12 equal tempered scale octaves\r\nif (~n2 == 12) { ~n2 = 0 } { ~n2 = ~n2 };\t\t//(which is fine) + an additional note on top\r\nif (~n3 == 12) { ~n3 = 0 } { ~n3 = ~n3 };\t\t//(which is not so fine),therefore, for the\r\nif (~n4 == 12) { ~n4 = 0 } { ~n4 = ~n4 };\t\t//scale to work the additional note had to be\r\nif (~n5 == 12) { ~n5 = 0 } { ~n5 = ~n5 };\t\t//treated seperately\r\nif (~n6 == 12) { ~n6 = 0 } { ~n6 = ~n6 };\r\nif (~n7 == 12) { ~n7 = 0 } { ~n7 = ~n7 };\r\nif (~n8 == 12) { ~n8 = 0 } { ~n8 = ~n8 };\r\nif (~n9 == 12) { ~n9 = 0 } { ~n9 = ~n9 };\r\nif (~n10 == 12) { ~n10 = 0 } { ~n10 = ~n10 };\r\nif (~n11 == 12) { ~n11 = 0 } { ~n11 = ~n11 };\r\nif (~n12 == 12) { ~n12 = 0 } { ~n12 = ~n12 };\r\nif (~n13 == 12) { ~n13 = 0 } { ~n13 = ~n13 };\r\nif (~n14 == 12) { ~n14 = 0 } { ~n14 = ~n14 };\r\nif (~n15 == 12) { ~n15 = 0 } { ~n15 = ~n15 };\r\n);\r\n//------------\r\n(\r\n~markovScale = Scale.new(#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 12).ratios; //this is where the\r\n~ms = ~markovScale[[~n0, ~n1, ~n2, ~n3, ~n4, ~n5, ~n6, ~n7, \t\t\t //midi values are put\r\n\t\t      ~n8, ~n9, ~n10, ~n11, ~n12, ~n13, ~n14, ~n15]]\t\t //as scale ratios\r\n);\r\n\r\n//------------\r\n(\r\n~p1 = ~markovNotes[0..3].sum/4;\t\t\t//this is where the 5 float values that affect panning\r\n~pan1 = (~p1.linlin(57, 81, -1, 1) * -1).postln; //are created. each midi note value (no matter\r\n~p2 = ~markovNotes[4..7].sum/4;\t\t\t//what the octave) has it's own panning space. The\r\n~pan2 = (~p2.linlin(57, 81, -1, 1) * -1).postln; //average midi note value, therefore the panning position,\r\n~p3 = ~markovNotes[8..11].sum/4;\t\t\t//is calculated so that the panning of the violin sample\r\n~pan3 = (~p3.linlin(57, 81, -1, 1) * -1).postln; //can be directly opposite to it. a calculation\r\n~p4 = ~markovNotes[12..16].sum/4;\t\t\t//for a sort of balance in panning. the first 4 do this with\r\n~pan4 = (~p4.linlin(57, 81, -1, 1) * -1).postln; //some of the midi note values and the last one for the\r\np = ~markovNotes.sum/16;\t\t\t\t//whole array\r\n~pan = (p.linlin(57, 81, -1, 1) * -1);\r\n)\r\n//------\r\n);\r\n\r\n/////////////////////////////////////////////////////////////////////////////5)SYNTH DEF'S\r\n/*Two very simple and basic SynthDef's are created*/\r\n\r\n( //<-EVALUATE SYNTH DEF'S------------------------------------------------------------------------------------------[STEP 5]\r\n\r\nSynthDef(\\simple, {|frq, amp, dur, pan|\r\n\tvar sig;\r\n\tsig = Pan2.ar(SinOsc.ar(frq, 0, mul: amp),\r\n\t\t\tpan);\r\n\tsig = sig * EnvGen.kr(Env.perc, timeScale: dur, doneAction: 2);\r\n\tOut.ar(0, sig)\r\n}).add;\r\n//------------\r\nSynthDef(\\warpSample, {|buffer, fscale, wsize, ratio, envdur, panStart, panEnd, warp, dn, amp|\r\n\tvar pointer, dens;\r\n\tdens = XLine.kr(dn, 1, envdur);\r\n\tpointer = LFSaw.kr(warp/BufDur.kr(buffer), 1).range(0,1);\r\n\tOut.ar(0, Pan2.ar(\r\n\t\t\tWarp1.ar(1, buffer, pointer, fscale, wsize, -1, dens, ratio, 2)\r\n\t\t\t* EnvGen.kr(Env.perc(0.001, envdur, 1, -0.2), levelScale: amp, doneAction: 2),\r\n\t\t\tLine.kr(panStart, panEnd, envdur))\r\n\t\t)\r\n}).add\r\n//------\r\n);\r\n\r\n////////////////////////////////////////////////////////////////////////////////6)PTPARTY\r\n/*All the previous evaluations come together here to create an audible\r\n  result.*/\r\n\r\n( //<-EVALUATE PTPARTY----------------------------------------------------------------------------------------------[STEP 6]\r\nPtpar([\r\n\t0.0,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\t\t\t\t   //the synth def \\simple uses the initial\r\n\t\t\\frq, Pseq((~markovNotes - 24).midicps, 10),\t   //midi note value array and converts\r\n\t\t\\amp, 0.25,\t\t\t\t\t\t   //it to frequencies as well as panning\r\n\t\t\\dur, Pseq([0.08, 0.5, 0.08, 1.3], inf),\t\t   //positions. most are pitchshifted\r\n\t\t\\delta, Pseq([0.1, 0.2, 0.3, 1.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t13.6,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes).midicps, 8),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([1.3, 0.08, 0.5, 0.08], inf),\r\n\t\t\\delta, Pseq([1.1, 0.3, 0.2, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t20.4,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes + 24).midicps, 7),\r\n\t\t\\amp, 0.18,\r\n\t\t\\dur, Pseq([0.5, 0.08, 1.3, 0.08], inf),\r\n\t\t\\delta, Pseq([0.2, 0.3, 1.1, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t27.2,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes + 12).midicps, 6),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([0.08, 1.3, 0.08, 0.5], inf),\r\n\t\t\\delta, Pseq([0.1, 1.1, 0.3, 0.2], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t40.8,\r\n//------\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([Prand(~ms[0..3]), Prand(~ms[4..7]), Prand(~ms[8..11]), Prand(~ms[12..15])], 4),\r\n\t\t\\wsize, 0.1,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(1, 4, inf),\r\n\t\t\\panStart, Pseq([~pan1, ~pan2, ~pan3, ~pan4], inf),\t//the \\warpSample synth def uses the same\r\n\t\t\\panEnd, Pseq([~pan2, ~pan3, ~pan4, ~pan1], inf),\t//initial array but already converted\r\n\t\t\\ratio, 0.02,\t\t\t\t\t\t\t//for it's specific pitch and panning use\r\n\t\t\\envdur, Pseq([1.7], inf),\t\t\t\t\t//which itself is a little randomized\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, Pkey(\\envdur),\r\n\t\t\\amp, 0.8\r\n\t\t),\r\n\t47.6,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([Prand(~ms[0..3]), Prand(~ms[0..3]), Prand(~ms[4..7]), Prand(~ms[4..7]),\r\n\t\t\t\t Prand(~ms[8..11]), Prand(~ms[8..11]), Prand(~ms[12..15]), Prand(~ms[12..15])], 3),\r\n\t\t\\wsize, 0.1,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(1, 4, inf),\r\n\t\t\\panStart, ~pan,\r\n\t\t\\panEnd, ~pan,\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, Prand([Pseq([1.1, 0.6]), Pseq([0.6, 1.1]), Pseq([0.85, 0.85])], inf),\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, Pkey(\\envdur),\r\n\t\t\\amp, 0.8\r\n\t\t),\r\n\t68,\r\n//------\r\n\tPbind(\t\t\t\t\t\t\t\t\t//these 4 \\simple synth def's\r\n\t\t\\instrument, \\simple,\t\t\t\t\t//use the other array of midi\r\n\t\t\\frq, Pseq((~markovNotes2).midicps, 2),\t\t\t//values created at the beginning\r\n\t\t\\amp, 0.25,\t\t\t\t\t\t\t//and aren't pitchshifted\r\n\t\t\\dur, Pseq([0.08, 0.5, 0.08, 1.3], inf),\r\n\t\t\\delta, Pseq([0.1, 0.2, 0.3, 1.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes2.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t68,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes2).midicps, 2),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([1.3, 0.08, 0.5, 0.08], inf),\r\n\t\t\\delta, Pseq([1.1, 0.3, 0.2, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes2.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t68,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes2).midicps, 2),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([0.5, 0.08, 1.3, 0.08], inf),\r\n\t\t\\delta, Pseq([0.2, 0.3, 1.1, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes2.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t68,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes2).midicps, 2),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([0.08, 1.3, 0.08, 0.5], inf),\r\n\t\t\\delta, Pseq([0.1, 1.1, 0.3, 0.2], inf),\r\n\t\t\\pan, Pseq(~markovNotes2.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t95.2,\r\n//------\t\t\t\t\t\t\t\t\t//back to the original melody\r\n\tPbind(\t\t\t\t\t\t\t\t\t//with a sort of string orchestra\r\n\t\t\\instrument, \\warpSample,\t\t\t\t\t//and dramatic ending\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[0]*0.5, ~ms[4]*0.5, ~ms[8]*0.5, ~ms[12]*0.5], 5),\r\n\t\t\\wsize, Pwhite(0.1, 0.3, inf),\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 10, inf),\r\n\t\t\\panStart, Pseq([~pan1, ~pan2, ~pan3, ~pan4], inf),\r\n\t\t\\panEnd, Pseq([~pan2, ~pan3, ~pan4, ~pan1], inf),\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, Prand([2.4], inf),\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[1], ~ms[5], ~ms[9], ~ms[13]], 7),\r\n\t\t\\wsize, Pwhite(0.1, 0.3, inf),\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 10, inf),\r\n\t\t\\panStart, Pseq([~pan2, ~pan3, ~pan4, ~pan1], inf),\r\n\t\t\\panEnd, Pseq([~pan3, ~pan4, ~pan1, ~pan2], inf),\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, Prand([2.4], inf),\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[2]*2, ~ms[6]*2, ~ms[10]*2, ~ms[14]*2], 5),\r\n\t\t\\wsize, Pwhite(0.1, 0.3, inf),\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 10, inf),\r\n\t\t\\panStart, Pseq([~pan3, ~pan4, ~pan1, ~pan2], inf),\r\n\t\t\\panEnd, Pseq([~pan4, ~pan1, ~pan2, ~pan3], inf),\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, Prand([2.4], inf),\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.5\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[3]*0.25, ~ms[7]*0.25, ~ms[11]*0.25, ~ms[15]*0.25], 5),\r\n\t\t\\wsize, Pwhite(0.2, 0.3, inf),\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 10, inf),\r\n\t\t\\panStart, Pseq([~pan4, ~pan1, ~pan2, ~pan3], inf),\r\n\t\t\\panEnd, Pseq([~pan1, ~pan2, ~pan3, ~pan4], inf),\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, Prand([2.4], inf),\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t95.2,\r\n//------\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes - 24).midicps, 2),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([0.08, 0.5, 0.08, 1.3], inf),\r\n\t\t\\delta, Pseq([0.1, 0.2, 0.3, 1.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes).midicps, 3),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([1.3, 0.08, 0.5, 0.08], inf),\r\n\t\t\\delta, Pseq([1.1, 0.3, 0.2, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes + 24).midicps, 4),\r\n\t\t\\amp, 0.18,\r\n\t\t\\dur, Pseq([0.5, 0.08, 1.3, 0.08], inf),\r\n\t\t\\delta, Pseq([0.2, 0.3, 1.1, 0.1], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n\t95.2,\r\n\tPbind(\r\n\t\t\\instrument, \\simple,\r\n\t\t\\frq, Pseq((~markovNotes + 12).midicps, 7),\r\n\t\t\\amp, 0.25,\r\n\t\t\\dur, Pseq([0.08, 1.3, 0.08, 0.5], inf),\r\n\t\t\\delta, Pseq([0.1, 1.1, 0.3, 0.2], inf),\r\n\t\t\\pan, Pseq(~markovNotes.linlin(57, 81, -1, 1), inf)\r\n\t\t),\r\n//------\r\n\t133.0,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[0]*0.5], 1),\r\n\t\t\\wsize, 8,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 6, inf),\r\n\t\t\\panStart, 0.4,\r\n\t\t\\panEnd, 0.4,\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, 25,\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t133.0,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[1]], 1),\r\n\t\t\\wsize, 8,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 6, inf),\r\n\t\t\\panStart, -0.4,\r\n\t\t\\panEnd, -0.4,\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, 25,\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t133.0,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[2]*2], 1),\r\n\t\t\\wsize, 8,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 6, inf),\r\n\t\t\\panStart, -1,\r\n\t\t\\panEnd, -1,\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, 25,\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.5\r\n\t\t),\r\n\t133.0,\r\n\tPbind(\r\n\t\t\\instrument, \\warpSample,\r\n\t\t\\buffer, ~sample,\r\n\t\t\\fscale, Pseq([~ms[3]*0.25], 1),\r\n\t\t\\wsize, 8,\r\n\t\t\\warp, 1,\r\n\t\t\\dn, Pwhite(2, 6, inf),\r\n\t\t\\panStart, 1,\r\n\t\t\\panEnd, 1,\r\n\t\t\\ratio, 0.02,\r\n\t\t\\envdur, 25,\r\n\t\t\\dur, Pkey(\\envdur),\r\n\t\t\\delta, 1.7,\r\n\t\t\\amp, 0.7\r\n\t\t),\r\n\t],\r\n1).play\r\n);\r\n//////////////////////////////////////////////////////////////////////////////7)FIN",
   "is_private" : null,
   "id" : "1-4Su"
}
