{(number_of_tracks=(1));(ticks_per_beat=(4));(beats_per_second=(101));(heap=[]);(midi_file=[]);(instrument_list=[["piano",(0),(0)],["xylophone",(13),(0)],["aguitar",(24),(0)],["eguitar",(29),(0)],["harp",(46),(0)],["drums",(0),(0)],["lead",(81),(0)]]);(do_math=(function (math_tree,what,octave_size){var ret=[];if((math_tree["length"] == (1))){(ret=math_tree)}else{if((math_tree[(0)] == "?")){(ret=get_var_from_heap(math_tree[(1)])[(1)][(1)][what])}else{if(((((math_tree[(0)] == "+") || (math_tree[(0)] == "-")) || (math_tree[(0)] == "*")) || (math_tree[(0)] == "/"))){var i=undefined;var num=undefined;var num_list=undefined;var left=do_math(math_tree[(1)],what,octave_size);var right=do_math(math_tree[(2)],what,octave_size);if((right["length"] == (1))){(num_list=left);(num=right[(0)])}else{if((left["length"] == (1))){(num=left[(0)]);(num_list=right)}else{}};for((i=(0));(i < num_list["length"]);i++){if((math_tree[(0)] == "+")){if((num_list == right)){if((num == (0))){(ret=ret.concat((0)))}else{if(((num < (0)) && ((num + num_list[i]) >= (0)))){(ret=ret.concat(((num + num_list[i]) + (1))))}else{(ret=ret.concat((num + num_list[i])))}}}else{(ret=ret.concat((num_list[i] + num)))}}else{if((math_tree[(0)] == "*")){(ret=ret.concat((num_list[i] * num)))}else{if((math_tree[(0)] == "-")){var result=undefined;if((num_list == right)){if((num == (0))){(ret=ret.concat((0)))}else{if(((num > (0)) && ((num - num_list[i]) <= (0)))){(ret=ret.concat(((num - num_list[i]) - (1))))}else{(ret=ret.concat((num - num_list[i])))}}}else{if((num_list[i] == (0))){(ret=ret.concat((0)))}else{if(((num_list[i] > (0)) && ((num_list[i] - num) <= (0)))){(ret=ret.concat(((num_list[i] - num) - (1))))}else{(ret=ret.concat((num_list[i] - num)))}}}}else{if((math_tree[(0)] == "/")){if((num_list == right)){(ret=ret.concat(((num - (num % num_list[i])) / num_list[i])))}else{(ret=ret.concat(((num_list[i] - (num_list[i] % num)) / num)))}}else{undefined}}}}}}else{if(((math_tree[(0)] == "^") || (math_tree[(0)] == "v"))){var i=undefined;for((i=(1));(i < math_tree["length"]);i++){var temp=do_math(math_tree[i],what,octave_size);var j=undefined;for((j=(0));(j < temp["length"]);j++){if((math_tree[(0)] == "^")){if((temp[j] == (0))){(ret=ret.concat((0)))}else{if(((temp[j] < (0)) && ((temp[j] + octave_size) >= (0)))){(ret=ret.concat(((temp[j] + octave_size) + (1))))}else{(ret=ret.concat((temp[j] + octave_size)))}}}else{if((temp[j] == (0))){(ret=ret.concat((0)))}else{if(((temp[j] > (0)) && ((temp[j] - octave_size) <= (0)))){(ret=ret.concat(((temp[j] - octave_size) - (1))))}else{(ret=ret.concat((temp[j] - octave_size)))}}}}}}else{undefined}}}};return ret}));(expand_variable_part=(function (melody,what,octave_size){var ret=[];var i=undefined;var melody_part=melody[(1)][what];for((i=(0));(i < melody_part["length"]);i++){if((melody_part[i]["length"] == (1))){(ret=ret.concat(melody_part[i][(0)]))}else{(ret=ret.concat(do_math(melody_part[i],what,octave_size)))}};return ret}));(expand_variables_whole=(function (melody){var ret=[];if((melody[(0)] == "!")){var scale=expand_variable_part(melody,(2));var octave_size=(scale["length"] - (1));(ret=["!",[expand_variable_part(melody,(0),octave_size),expand_variable_part(melody,(1),octave_size),expand_variable_part(melody,(2),octave_size),expand_variable_part(melody,(3),octave_size)]])}else{if((melody[(0)] == "?")){(ret=get_var_from_heap(melody[(1)])[(1)])}else{(ret=[melody[(0)],expand_variables_whole(melody[(1)]),expand_variables_whole(melody[(2)])])}};return ret}));(get_var_from_heap=(function (variable_name){var get_var_from_heap_ret=[];for((i=(0));(i < heap["length"]);i++){if((heap[i][(0)] == variable_name)){(get_var_from_heap_ret=heap[i]);break}else{undefined}};return get_var_from_heap_ret}));(add_var_to_heap=(function (arg){var result=[];(result=result.concat(arg[(0)]));(result=result.concat([expand_variables_whole(arg[(1)])]));(heap=heap.concat([result]))}));(num2ff=(function (num){(first_loop=true);(num2ff_ret=[(0)]);while((num > (0))){(remainder=(num % (256)));(num=(num - remainder));(num=(num / (256)));if(first_loop){(num2ff_ret=[remainder]);(first_loop=false)}else{(num2ff_ret=[remainder].concat(num2ff_ret))}};return num2ff_ret}));(num2vlen=(function (num){(first_loop=true);(num2vlen_ret=[(0)]);while((num > (0))){(remainder=(num % (128)));(num=(num - remainder));(num=(num / (128)));if(first_loop){(num2vlen_ret=[remainder]);(first_loop=false)}else{(num2vlen_ret=[(remainder + (128))].concat(num2vlen_ret))}};return num2vlen_ret}));(track_header=(function (size_of_track){(track_header_ret=[(77),(84),(114),(107)]);(ff_size_of_track=num2ff(size_of_track));while((ff_size_of_track["length"] < (4))){(ff_size_of_track=[(0)].concat(ff_size_of_track))};(track_header_ret=track_header_ret.concat(ff_size_of_track));return track_header_ret}));(bpm2ff=(function (bpm){return num2ff((((60000000) - ((60000000) % bpm)) / bpm))}));(file_header=(function (){(file_header_ret=[(77),(84),(104),(100)]);(file_header_ret=file_header_ret.concat([(0),(0),(0),(6)]));(file_header_ret=file_header_ret.concat([(0),(1)]));(file_header_ret=file_header_ret.concat([(0),number_of_tracks]));(fftpb=num2ff(ticks_per_beat));if((fftpb["length"] < (2))){(fftpb=[(0)].concat(fftpb))}else{undefined};(file_header_ret=file_header_ret.concat(fftpb));(file_header_ret=file_header_ret.concat(track_header((17))));(file_header_ret=file_header_ret.concat([(0),(255),(89),(2),(0),(0)]));(file_header_ret=file_header_ret.concat([(0),(255),(81),(3)]));(fftempo=bpm2ff(beats_per_second));while((fftempo["length"] < (3))){(fftempo=[(0)].concat(fftempo))};(file_header_ret=file_header_ret.concat(fftempo));(file_header_ret=file_header_ret.concat(end_of_track()));return file_header_ret}));(note_on=(function (vlength_time,ffnote,channel){return vlength_time.concat([((144) + channel),ffnote,(127)])}));(note_off=(function (vlength_time,ffnote,channel){return vlength_time.concat([((128) + channel),ffnote,(0)])}));(end_of_track=(function (){return [(0),(255),(47),(0)]}));(program_change=(function (channel,instrument){return [(0),((192) + channel),instrument]}));(note2ff=(function (note,scale,position){var ret=undefined;if((note == (0))){(ret=(- (1)))}else{if((note < (0))){var positive=((0) - note);var scale_width=(scale["length"] - (1));var scale_height=(scale[scale_width] - scale[(0)]);var remainder=(positive % scale_width);var octave_count=(((positive - remainder) / scale_width) + (1));if((remainder == (0))){(ret=(((position - ((octave_count - (1)) * scale_height)) + scale[(0)]) - (1)))}else{(ret=(((position - (octave_count * scale_height)) + scale[(scale_width - remainder)]) - (1)))}}else{var scale_width=(scale["length"] - (1));var scale_height=(scale[scale_width] - scale[(0)]);var remainder=((note - (1)) % scale_width);var octave_count=(((note - (1)) - remainder) / scale_width);(ret=(((position + (octave_count * scale_height)) + scale[remainder]) - (1)))}};return ret}));(ir2midi=(function (ir,channel){(i_on=(0));(i_off=(0));(note_on_ir=ir[(0)]);(note_off_ir=ir[(1)]);(current_time=(0));(ir2midi_ret=[]);while(((i_on < note_on_ir["length"]) || (i_off < note_off_ir["length"]))){if((i_on == note_on_ir["length"])){(delta=(note_off_ir[i_off][(0)] - current_time));(ir2midi_ret=ir2midi_ret.concat(note_off(num2vlen(delta),note_off_ir[i_off][(1)],channel)));i_off++;(current_time+=delta);continue}else{undefined};if((i_off == note_off_ir["length"])){(delta=(note_on_ir[i_on][(0)] - current_time));(ir2midi_ret=ir2midi_ret.concat(note_on(num2vlen(delta),note_on_ir[i_on][(1)],channel)));i_on++;(current_time+=delta);continue}else{undefined};if((note_on_ir[i_on][(0)] < note_off_ir[i_off][(0)])){(delta=(note_on_ir[i_on][(0)] - current_time));(ir2midi_ret=ir2midi_ret.concat(note_on(num2vlen(delta),note_on_ir[i_on][(1)],channel)));i_on++;(current_time+=delta)}else{(delta=(note_off_ir[i_off][(0)] - current_time));(ir2midi_ret=ir2midi_ret.concat(note_off(num2vlen(delta),note_off_ir[i_off][(1)],channel)));i_off++;(current_time+=delta)}};return ir2midi_ret}));(write2file=(function (input){(midi_file=midi_file.concat(input))}));(create_binary=(function (){var raw_data=undefined;eval("\n uuencode64 = function(bytes) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\n var output = \"\"\n var b1, b2, b3\n var e1, e2, e3, e4\n var i = 0\n while (i < bytes.length) {\n b1 = bytes[i++]\n b2 = bytes[i++]\n b3 = bytes[i++]\n e1 = b1 >> 2\n e2 = ((b1 & 3) << 4) | (b2 >> 4)\n e3 = ((b2 & 15) << 2) | (b3 >> 6)\n e4 = b3 & 63\n if (isNaN(b2)) { e3 = e4 = 64 }\n else if (isNaN(b3)) { e4 = 64 }\n output += keyStr.charAt(e1) + keyStr.charAt(e2) + keyStr.charAt(e3) + keyStr.charAt(e4)\n }\n return output\n }\n\n raw_data = uuencode64(midi_file)\n ");(midi=document.createElement("embed"));midi.setAttribute("src",("data:audio/midi;base64," + raw_data));$("playArea").appendChild(midi)}));(melody2ir=(function (melody,end_of_melody){var note_on_ir=[];var note_off_ir=[];var ret_end_of_melody=(0);if((melody[(0)] == "!")){var i=undefined;var elapsed=(0);var tune=melody[(1)][(0)];var timing=melody[(1)][(1)];var scale=melody[(1)][(2)];var position=melody[(1)][(3)];for((i=(0));(i < tune["length"]);i++){var note_ff=note2ff(tune[i],scale,position[(0)]);if((note_ff != (- (1)))){(note_on_ir=note_on_ir.concat([[elapsed,note_ff]]))}else{undefined};(elapsed+=timing[i]);if((note_ff != (- (1)))){(note_off_ir=note_off_ir.concat([[elapsed,note_ff]]))}else{undefined}};(ret_end_of_melody=elapsed)}else{if((melody[(0)] == "&")){var left=melody2ir(melody[(1)]);var right=melody2ir(melody[(2)]);var i=(0);var j=(0);while(((i < left[(0)]["length"]) || (j < right[(0)]["length"]))){if((i == left[(0)]["length"])){(note_on_ir=note_on_ir.concat([right[(0)][j]]));j++;continue}else{undefined};if((j == right[(0)]["length"])){(note_on_ir=note_on_ir.concat([left[(0)][i]]));i++;continue}else{undefined};if((left[(0)][i][(0)] < right[(0)][j][(0)])){(note_on_ir=note_on_ir.concat([left[(0)][i]]));i++}else{(note_on_ir=note_on_ir.concat([right[(0)][j]]));j++}};(i=(0));(j=(0));while(((i < left[(1)]["length"]) || (j < right[(1)]["length"]))){if((i == left[(1)]["length"])){(note_off_ir=note_off_ir.concat([right[(1)][j]]));j++;continue}else{undefined};if((j == right[(1)]["length"])){(note_off_ir=note_off_ir.concat([left[(1)][i]]));i++;continue}else{undefined};if((left[(1)][i][(0)] < right[(1)][j][(0)])){(note_off_ir=note_off_ir.concat([left[(1)][i]]));i++}else{(note_off_ir=note_off_ir.concat([right[(1)][j]]));j++}};(ret_end_of_melody=note_off_ir[(note_off_ir["length"] - (1))][(0)])}else{if((melody[(0)] == ".")){var left=melody2ir(melody[(1)]);var right=melody2ir(melody[(2)]);(end_of_left=left[(2)]);var i=(0);var j=(0);for((i=(0));(i < left[(0)]["length"]);i++){(note_on_ir=note_on_ir.concat([left[(0)][i]]));(note_off_ir=note_off_ir.concat([left[(1)][i]]))};for((i=(0));(i < right[(0)]["length"]);i++){(note_on_ir=note_on_ir.concat([[(end_of_left + right[(0)][i][(0)]),right[(0)][i][(1)]]]));(note_off_ir=note_off_ir.concat([[(end_of_left + right[(1)][i][(0)]),right[(1)][i][(1)]]]))};(ret_end_of_melody=note_off_ir[(note_off_ir["length"] - (1))][(0)])}else{undefined}}};return [note_on_ir,note_off_ir,ret_end_of_melody]}));(reset_program_state=(function (){var i=undefined;for((i=(0));(i < instrument_list["length"]);i++){(instrument_list[i][(2)]=(0))};(midi_file=[]);(heap=[]);(number_of_tracks=(1))}));(get_instrument=(function (name){var ret=[];var i=undefined;for((i=(0));(i < instrument_list["length"]);i++){if((instrument_list[i][(0)] == name)){(ret=instrument_list[i]);break}else{undefined}};return ret}));(set_instrument=(function (name){var i=undefined;for((i=(0));(i < instrument_list["length"]);i++){if((instrument_list[i][(0)] == name)){(instrument_list[i][(2)]=(1));break}else{undefined}}}));A=objectThatDelegatesTo(Parser,{ "d":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("digit")}, "n":function(){var $elf=this,_fromIdx=this.input.idx,x,y;return this._or((function(){return (function(){x=this._apply("d");y=this._apply("n");return (x + y)}).call(this)}),(function(){return this._apply("d")}))}, "a":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("letter")}, "w":function(){var $elf=this,_fromIdx=this.input.idx,x,y;return this._or((function(){return (function(){x=this._apply("a");y=this._apply("w");return (x + y)}).call(this)}),(function(){return this._apply("a")}))}, "space":function(){var $elf=this,_fromIdx=this.input.idx;return (function(){this._not((function(){return this._applyWithArgs("exactly","\n")}));return Parser._superApplyWithArgs(this,"space")}).call(this)}, "variable":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._apply("spaces");x=this._apply("w");this._pred((x != "v"));return ["?",x]}).call(this)}, "literal":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._apply("spaces");x=this._apply("n");return [parseInt(x)]}).call(this)}, "nlist":function(){var $elf=this,_fromIdx=this.input.idx;return this._applyWithArgs("listOf","literal","")}, "element":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return this._apply("literal")}),(function(){return this._apply("variable")}))}, "tune_op":function(){var $elf=this,_fromIdx=this.input.idx,x,x,x,x;return this._or((function(){return (function(){this._applyWithArgs("token","(");x=this._apply("tune_op_add");this._applyWithArgs("token",")");return x}).call(this)}),(function(){return (function(){this._applyWithArgs("token","^");x=this._apply("tune_expr_list");return ["^"].concat(x)}).call(this)}),(function(){return (function(){this._applyWithArgs("token","v");x=this._apply("tune_expr_list");return ["v"].concat(x)}).call(this)}),(function(){return (function(){x=this._apply("element");return x}).call(this)}))}, "tune_op_mul":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,y;return this._or((function(){return (function(){x=this._apply("tune_op_mul");this._applyWithArgs("token","*");y=this._apply("tune_op");return ["*"].concat([x]).concat([y])}).call(this)}),(function(){return (function(){x=this._apply("tune_op_mul");this._applyWithArgs("token","/");y=this._apply("tune_op");return ["/"].concat([x]).concat([y])}).call(this)}),(function(){return this._apply("tune_op")}))}, "tune_op_add":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,y;return this._or((function(){return (function(){x=this._apply("tune_op_add");this._applyWithArgs("token","+");y=this._apply("tune_op_mul");return ["+"].concat([x]).concat([y])}).call(this)}),(function(){return (function(){x=this._apply("tune_op_add");this._applyWithArgs("token","-");y=this._apply("tune_op_mul");return ["-"].concat([x]).concat([y])}).call(this)}),(function(){return this._apply("tune_op_mul")}))}, "tune_expr":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("tune_op_add")}, "tune_expr_list":function(){var $elf=this,_fromIdx=this.input.idx;return this._applyWithArgs("listOf","tune_expr","")}, "op":function(){var $elf=this,_fromIdx=this.input.idx,x,x;return this._or((function(){return (function(){this._applyWithArgs("token","(");x=this._apply("op_add");this._applyWithArgs("token",")");return x}).call(this)}),(function(){return (function(){x=this._apply("element");return x}).call(this)}))}, "op_mul":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,y;return this._or((function(){return (function(){x=this._apply("op_mul");this._applyWithArgs("token","*");y=this._apply("op");return ["*"].concat([x]).concat([y])}).call(this)}),(function(){return (function(){x=this._apply("op_mul");this._applyWithArgs("token","/");y=this._apply("op");return ["/"].concat([x]).concat([y])}).call(this)}),(function(){return this._apply("op")}))}, "op_add":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,y;return this._or((function(){return (function(){x=this._apply("op_add");this._applyWithArgs("token","+");y=this._apply("op_mul");return ["+"].concat([x]).concat([y])}).call(this)}),(function(){return (function(){x=this._apply("op_add");this._applyWithArgs("token","-");y=this._apply("op_mul");return ["-"].concat([x]).concat([y])}).call(this)}),(function(){return this._apply("op_mul")}))}, "expr":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("op_add")}, "expr_list":function(){var $elf=this,_fromIdx=this.input.idx;return this._applyWithArgs("listOf","expr","")}, "tune":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._applyWithArgs("token","\"");x=this._apply("tune_expr_list");this._applyWithArgs("token","\"");return x}).call(this)}, "timing":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._applyWithArgs("token",":");x=this._apply("expr_list");this._applyWithArgs("token",":");return x}).call(this)}, "scale":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._applyWithArgs("token","$");x=this._apply("expr_list");this._applyWithArgs("token","$");return x}).call(this)}, "position":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._applyWithArgs("token","@");x=this._apply("expr_list");this._pred((x["length"] == (1)));return x}).call(this)}, "melody_literal":function(){var $elf=this,_fromIdx=this.input.idx,x1,x2,x3,x4;return (function(){x1=this._apply("tune");this._applyWithArgs("token","\n");x2=this._apply("timing");this._applyWithArgs("token","\n");x3=this._apply("scale");this._applyWithArgs("token","\n");x4=this._apply("position");return ["!",[x1,x2,x3,x4]]}).call(this)}, "melody_variable":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("variable")}, "tune_optional":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return (function(){this._applyWithArgs("token","\n");return this._apply("tune")}).call(this)}),(function(){return (function(){this._apply("empty");return [[]]}).call(this)}))}, "timing_optional":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return (function(){this._applyWithArgs("token","\n");return this._apply("timing")}).call(this)}),(function(){return (function(){this._apply("empty");return [[]]}).call(this)}))}, "scale_optional":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return (function(){this._applyWithArgs("token","\n");return this._apply("scale")}).call(this)}),(function(){return (function(){this._apply("empty");return [[]]}).call(this)}))}, "position_optional":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return (function(){this._applyWithArgs("token","\n");return this._apply("position")}).call(this)}),(function(){return (function(){this._apply("empty");return [[]]}).call(this)}))}, "melody_extend":function(){var $elf=this,_fromIdx=this.input.idx,x1,x2,x3,x4,x5;return (function(){x1=this._apply("variable");this._applyWithArgs("token","except");x2=this._apply("tune_optional");x3=this._apply("timing_optional");x4=this._apply("scale_optional");x5=this._apply("position_optional");return (function (){var tune=undefined;var timing=undefined;var scale=undefined;var position=undefined;if((x2[(0)]["length"] > (0))){(tune=x2)}else{(tune=[x1])};if((x3[(0)]["length"] > (0))){(timing=x3)}else{(timing=[x1])};if((x4[(0)]["length"] > (0))){(scale=x4)}else{(scale=[x1])};if((x5[(0)]["length"] > (0))){(position=x5)}else{(position=[x1])};return ["!",[tune,timing,scale,position]]}).call(this)}).call(this)}, "melody_element":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return this._apply("melody_literal")}),(function(){return this._apply("melody_extend")}),(function(){return this._apply("melody_variable")}))}, "optional_newlines":function(){var $elf=this,_fromIdx=this.input.idx;return this._many((function(){return this._applyWithArgs("token","\n")}))}, "melody_op":function(){var $elf=this,_fromIdx=this.input.idx,x;return this._or((function(){return (function(){this._applyWithArgs("token","(");x=this._apply("melody_op_concat");this._applyWithArgs("token",")");return x}).call(this)}),(function(){return this._apply("melody_element")}))}, "melody_op_and":function(){var $elf=this,_fromIdx=this.input.idx,x,y;return this._or((function(){return (function(){x=this._apply("melody_op_and");this._apply("optional_newlines");this._applyWithArgs("token","&");this._apply("optional_newlines");y=this._apply("melody_op");return ["&",x,y]}).call(this)}),(function(){return this._apply("melody_op")}))}, "melody_op_concat":function(){var $elf=this,_fromIdx=this.input.idx,x,y;return this._or((function(){return (function(){x=this._apply("melody_op_concat");this._apply("optional_newlines");this._applyWithArgs("token",".");this._apply("optional_newlines");y=this._apply("melody_op_and");return [".",x,y]}).call(this)}),(function(){return this._apply("melody_op_and")}))}, "melody_expr":function(){var $elf=this,_fromIdx=this.input.idx;return this._apply("melody_op_concat")}, "definition":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,y;return this._or((function(){return (function(){x=this._apply("variable");this._applyWithArgs("token","=");this._apply("optional_newlines");y=this._apply("melody_expr");this._pred(((get_instrument(x[(1)])["length"] > (0)) && (get_instrument(x[(1)])[(2)] == (0))));return (function (){number_of_tracks++;set_instrument(x[(1)]);return add_var_to_heap([x[(1)]].concat([y]))}).call(this)}).call(this)}),(function(){return (function(){x=this._apply("variable");this._applyWithArgs("token","=");this._apply("optional_newlines");y=this._apply("melody_expr");this._pred((get_instrument(x[(1)])["length"] == (0)));return add_var_to_heap([x[(1)]].concat([y]))}).call(this)}))}, "at_least_one_newline":function(){var $elf=this,_fromIdx=this.input.idx;return this._many1((function(){return this._applyWithArgs("token","\n")}))}, "definitions":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return (function(){this._apply("definition");this._apply("at_least_one_newline");return this._apply("definitions")}).call(this)}),(function(){return this._apply("definition")}))}, "program":function(){var $elf=this,_fromIdx=this.input.idx;return (function(){this._apply("optional_newlines");this._apply("definitions");this._apply("optional_newlines");return (function (){write2file(file_header());var i=undefined;var channel=(0);for((i=(0));(i < instrument_list["length"]);i++){if((instrument_list[i][(2)] == (1))){var heap_melody=get_var_from_heap(instrument_list[i][(0)]);(ir=melody2ir(heap_melody[(1)],(0)));var midi_events=[];var final_channel=channel;if((instrument_list[i][(0)] == "drums")){(final_channel=(9))}else{undefined};(midi_events=midi_events.concat(program_change(final_channel,instrument_list[i][(1)])));(midi_events=midi_events.concat(ir2midi(ir,final_channel)));(midi_events=midi_events.concat(end_of_track()));write2file(track_header(midi_events["length"]));write2file(midi_events);if((final_channel != (9))){channel++}else{undefined};if((channel == (9))){channel++}else{undefined}}else{undefined}};return create_binary()}).call(this)}).call(this)}});(compile=(function (source_code){reset_program_state();A.matchAll(source_code,"program")}))}