abcjs
Version:
Renderer for abc music notation
3 lines • 408 kB
JavaScript
/*! abcjs_plugin v6.2.0 Copyright © 2009-2022 Paul Rosen and Gregory Dyke (https://abcjs.net) */
/*! For license information please see abcjs_plugin.LICENSE */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.abcjs=t():e.ABCJS=t()}(this,(function(){return e={7001:function(e,t,r){"use strict";var i=r(1592).TuneBook,n=r(8905),a=r(5253),s=function(){var e=!1;try{e=abcjs_is_user_script}catch(e){}this.show_midi=!e,this.hide_abc=!1,this.render_before=!1,this.midi_options={},this.render_options={},this.render_classname="abcrendered",this.text_classname="abctext",this.auto_render_threshold=20,this.show_text="show score for: ",this.debug=!1},o=new s;o.start=function(){var e=window.document.body;this.errors="";var t=this.getABCContainingElements(e);if(0!==t.length){if(this.debug)for(var r=0;r<t.length;r++){var i="Possible ABC found ("+(r+1)+" of "+t.length+"):\n\n"+t[r].innerText;alert(i)}var n=t.map(this.convertToDivs,this).reduce((function(e,t){return e.concat(t)}));this.auto_render=n.length<=this.auto_render_threshold,n.forEach((function(e){this.render(e,e.abctext_)}),this)}},o.getABCContainingElements=function(e){for(var t,r=[],i=!1,n=0,a=e.childNodes.length;n<a;++n)3!==(t=e.childNodes[n]).nodeType||i?1===t.nodeType&&"TEXTAREA"!==t.tagName&&(r=r.concat(this.getABCContainingElements(t))):t.nodeValue.match(/^\s*X:/m)&&"TEXTAREA"!==t.parentNode.tagName&&(r.push(e),i=!0);return r},o.convertToDivs=function(e){for(var t,r="",i=null,n=!1,a=[],s=Array.prototype.slice.call(e.childNodes),o=0,c=s.length;o<c;++o)if(3!==(t=s[o]).nodeType||t.nodeValue.match(/^\s*$/))n&&"BR"===t.tagName||n&&1===t.nodeType?(r+="\n",i.appendChild(t)):n&&(n=!1,r=r.replace(/\n+/,"\n"),i.abctext_=r,a.push(i));else{var l=t.nodeValue;l.match(/^\s*X:/m)&&(n=!0,r="",(i=document.createElement("DIV")).className=this.text_classname,t.parentElement.insertBefore(i,t),this.hide_abc&&(i.style.display="none")),n&&(r+=l.replace(/^\n+/,""),i.appendChild(t))}return n&&(r=r.replace(/\n+$/,"\n").replace(/^\n+/,"\n"),i.abctext_=r,a.push(i)),a},o.render=function(e,t){var r=document.createElement("DIV");r.className=this.render_classname,this.render_before?e.parentElement.insertBefore(r,e):e.nextSibling?e.parentElement.insertBefore(r,e.nextSibling):e.parentElement.appendChild(r);var s=this;try{this.debug&&alert("About to render:\n\n"+t);var o=new i(t),c=new n;c.parse(o.tunes[0].abc);var l=c.getTune(),h=function(){try{var t=new a(r,s.render_options);t.engraveABC(l)}catch(i){r.remove(),(r=document.createElement("DIV")).className=s.render_classname,(t=new a(r)).engraveABC(l),s.render_before?e.parentElement.insertBefore(r,e):e.nextSibling?e.parentElement.insertBefore(r,e.nextSibling):e.parentElement.appendChild(r)}},u=document.createElement("A");u.className="abcshow",u.href="#",u.innerHTML=this.show_text+(l.metaText.title||"untitled"),this.auto_render?h():(u.onclick=function(){return h(),u.remove(),!1},r.parentElement.insertBefore(u,r))}catch(e){this.errors+=e}};var c=!0;"undefined"!=typeof abcjs_plugin_autostart&&(c=abcjs_plugin_autostart),c&&"undefined"!=typeof window&&void 0!==window.document&&("loading"!==window.document.readyState?o.start():document.addEventListener("DOMContentLoaded",(function(){o.start()})));var l={plugin:s};e.exports=l},4321:function(e,t,r){var i=r(4916),n=r(5952),a={violin:"ViolinTab",guitar:"GuitarTab"},s={inited:!1,plugins:{},register:function(e){var t=e.name,r=e.tablature;this.plugins[t]=r},setError:function(e,t){e.warnings?e.warning.push(t):e.warnings=[t]},preparePlugins:function(e,t,r){var i=null;if(r.tablature){var n=r.tablature;i=[];for(var s=0;s<n.length;s++){var o=n[s],c=o.instrument;if(null==c)return this.setError(e,"tablature 'instrument' is missing"),i;var l=a[c],h=null;if(l&&(h=this.plugins[l]),!h)return this.setError(e,"Undefined tablature plugin: "+c),i;0!=r.visualTranspose&&(o.visualTranspose=r.visualTranspose),o.abcSrc=r.tablature.abcSrc;var u={classz:h,tuneNumber:t,params:o,instance:null};i.push(u)}}return i},layoutTablatures:function(e,t){for(var r=t.tablatures,i=0;i<t.lines.length;i++){var n=t.lines[i],a=n.staff;if(a)for(var s=0;s<a.length;s++)if(r[s]){var o=r[s];null==o.instance&&(o.instance=new o.classz,o.instance.init(t,o.tuneNumber,o.params,s)),o.instance.render(e,n,s)}}},init:function(){this.inited||(this.register(new i),this.register(new n),this.inited=!0)}};e.exports=s},1592:function(e,t,r){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}var n=r(8905),a=r(9565),s=r(4321),o={};!function(){"use strict";o.numberOfTunes=function(e){var t=e.split("\nX:").length;return 0===t&&(t=1),t};var e=o.TuneBook=function(e){var t=a(e);this.header=t.header,this.tunes=t.tunes};e.prototype.getTuneById=function(e){for(var t=0;t<this.tunes.length;t++)if(this.tunes[t].id===""+e)return this.tunes[t];return null},e.prototype.getTuneByTitle=function(e){for(var t=0;t<this.tunes.length;t++)if(this.tunes[t].title===e)return this.tunes[t];return null},o.parseOnly=function(e,t){for(var r=o.numberOfTunes(e),i=[],n=0;n<r;n++)i.push(1);return o.renderEngine((function(){}),i,e,t)},o.renderEngine=function(t,r,a,o){var c=[];if(void 0!==r&&void 0!==a){var l;(!(l=r)||l.propertyIsEnumerable("length")||"object"!==i(l)||"number"!=typeof l.length)&&(r=[r]),void 0===o&&(o={});for(var h=o.startingTune?parseInt(o.startingTune,10):0,u=new e(a),f=new n,d=0;d<r.length;d++){var p=r[d];if("*"===p||"string"==typeof p&&(p=document.getElementById(p)),p)if(h>=0&&h<u.tunes.length){f.parse(u.tunes[h].abc,o,u.tunes[h].startPos-u.header.length);var m=f.getTune();o.tablature&&(s.init(),m.tablatures=s.preparePlugins(m,h,o));var g=f.getWarnings();g&&(m.warnings=g);var v=t(p,m,d,u.tunes[h].abc);c.push(v||m)}else p.innerHTML&&(p.innerHTML="");h++}return c}},o.extractMeasures=function(t){for(var r=[],i=new e(t),n=0;n<i.tunes.length;n++){for(var a=i.tunes[n],s=a.abc.split("K:"),c=s[1].split("\n"),l=s[0]+"K:"+c[0]+"\n",h=null,u=null,f=null,d=[],p=!1,m=o.parseOnly(a.abc)[0],g=m.getPickupLength()>0,v=0;v<m.lines.length;v++){var b=m.lines[v];if(b.staff)for(var y=0;y<1;y++)for(var x=b.staff[y],w=0;w<1;w++)for(var k=x.voices[w],C=0;C<k.length;C++){var T=k[C];if(null===f&&T.startChar>=0&&(f=T.startChar,u=void 0===T.chord?h:null),T.chord&&(h=T),"bar"===T.el_type){if(p){var S={abc:a.abc.substring(f,T.endChar)};(h=u&&u.chord&&u.chord.length>0?u.chord[0].name:null)&&(S.lastChord=h),T.startEnding&&(S.startEnding=T.startEnding),T.endEnding&&(S.endEnding=T.endEnding),d.push(S),f=null,p=!1}}else"note"===T.el_type&&(p=!0)}}r.push({header:l,measures:d,hasPickup:g})}return r}}(),e.exports=o},9447:function(e,t,r){var i=r(4914).relativeMajor,n={acc:"sharp",note:"f"},a={acc:"sharp",note:"c"},s={acc:"sharp",note:"g"},o={acc:"sharp",note:"d"},c={acc:"sharp",note:"A"},l={acc:"sharp",note:"e"},h={acc:"flat",note:"B"},u={acc:"flat",note:"e"},f={acc:"flat",note:"A"},d={acc:"flat",note:"d"},p={acc:"flat",note:"G"},m={acc:"flat",note:"c"},g={"C#":[n,a,s,o,c,l,{acc:"sharp",note:"B"}],"F#":[n,a,s,o,c,l],B:[n,a,s,o,c],E:[n,a,s,o],A:[n,a,s],D:[n,a],G:[n],C:[],F:[h],Bb:[h,u],Eb:[h,u,f],Cm:[h,u,f],Ab:[h,u,f,d],Db:[h,u,f,d,p],Gb:[h,u,f,d,p,m],Cb:[h,u,f,d,p,m,{acc:"flat",note:"F"}],"A#":[h,u],"B#":[],"D#":[h,u,f],"E#":[h],"G#":[h,u,f,d],none:[]};e.exports=function(e){var t=g[i(e)];return t?JSON.parse(JSON.stringify(t)):null}},4914:function(e){var t={C:{modes:["CMaj","Amin","Am","GMix","DDor","EPhr","FLyd","BLoc"],stepsFromC:0},Db:{modes:["DbMaj","Bbmin","Bbm","AbMix","EbDor","FPhr","GbLyd","CLoc"],stepsFromC:1},D:{modes:["DMaj","Bmin","Bm","AMix","EDor","F#Phr","GLyd","C#Loc"],stepsFromC:2},Eb:{modes:["EbMaj","Cmin","Cm","BbMix","FDor","GPhr","AbLyd","DLoc"],stepsFromC:3},E:{modes:["EMaj","C#min","C#m","BMix","F#Dor","G#Phr","ALyd","D#Loc"],stepsFromC:4},F:{modes:["FMaj","Dmin","Dm","CMix","GDor","APhr","BbLyd","ELoc"],stepsFromC:5},Gb:{modes:["GbMaj","Ebmin","Ebm","DbMix","AbDor","BbPhr","CbLyd","FLoc"],stepsFromC:6},G:{modes:["GMaj","Emin","Em","DMix","ADor","BPhr","CLyd","F#Loc"],stepsFromC:7},Ab:{modes:["AbMaj","Fmin","Fm","EbMix","BbDor","CPhr","DbLyd","GLoc"],stepsFromC:8},A:{modes:["AMaj","F#min","F#m","EMix","BDor","C#Phr","DLyd","G#Loc"],stepsFromC:9},Bb:{modes:["BbMaj","Gmin","Gm","FMix","CDor","DPhr","EbLyd","ALoc"],stepsFromC:10},B:{modes:["BMaj","G#min","G#m","F#Mix","C#Dor","D#Phr","ELyd","A#Loc"],stepsFromC:11},"C#":{modes:["C#Maj","A#min","A#m","G#Mix","D#Dor","E#Phr","F#Lyd","B#Loc"],stepsFromC:1},"F#":{modes:["F#Maj","D#min","D#m","C#Mix","G#Dor","A#Phr","BLyd","E#Loc"],stepsFromC:6},Cb:{modes:["CbMaj","Abmin","Abm","GbMix","DbDor","EbPhr","FbLyd","BbLoc"],stepsFromC:11}},r=null;e.exports={relativeMajor:function(e){r||function(){r={};for(var e=Object.keys(t),i=0;i<e.length;i++){var n=t[e[i]];r[e[i].toLowerCase()]=e[i];for(var a=0;a<n.modes.length;a++){var s=n.modes[a].toLowerCase();r[s]=e[i]}}}();var i=e.toLowerCase().match(/([a-g][b#]?)(maj|min|mix|dor|phr|lyd|loc|m)?/);if(!i||!i[2])return e;i=i[1]+i[2];var n=r[i];return n||e},relativeMode:function(e,r){var i=t[e];if(!i)return e;if(""===r)return e;var n=r.toLowerCase().match(/^(maj|min|mix|dor|phr|lyd|loc|m)/);if(!n)return e;for(var a=n[1],s=0;s<i.modes.length;s++){var o=i.modes[s],c=o.toLowerCase().indexOf(a);if(-1!==c&&c===o.length-a.length)return o.substring(0,o.length-a.length)}return e},transposeKey:function(e,r){var i=t[e];if(!i)return e;for(;r<0;)r+=12;for(var n=(i.stepsFromC+r)%12,a=0;a<Object.keys(t).length;a++){var s=Object.keys(t)[a];if(t[s].stepsFromC===n)return s}return e}}},6780:function(e,t,r){var i=r(5008),n=r(4331),a=r(1028),s=r(9716),o=r(351);e.exports=function(){function e(e,t,r,i){for(var n=0;n<i.length;n++)e[r][i[n]]=t[r][i[n]]}function t(e,t){for(;t<e.length&&null===e[t].left;)t++;return e[t]}this.reset=function(){this.version="1.1.0",this.media="screen",this.metaText={},this.metaTextInfo={},this.formatting={},this.lines=[],this.staffNum=0,this.voiceNum=0,this.lineNum=0,this.runningFonts={},delete this.visualTranspose},this.reset(),this.copyTopInfo=function(t){var r=["tempo","title","header","rhythm","origin","composer","author","partOrder"];e(this,t,"metaText",r),e(this,t,"metaTextInfo",r)},this.copyBottomInfo=function(t){var r=["unalignedWords","book","source","discography","notes","transcription","history","abc-copyright","abc-creator","abc-edited-by","footer"];e(this,t,"metaText",r),e(this,t,"metaTextInfo",r)},this.getBeatLength=function(){var e=this.getMeterFraction(),t=1;return(6===e.num||9===e.num||12===e.num||3===e.num&&8===e.den)&&(t=3),t/e.den},this.getPickupLength=function(){var e=this.getBarLength(),t=function(e,t){for(var r=0,i=0;i<e.length;i++)if(e[i].staff)for(var n=0;n<e[i].staff.length;n++)for(var a=0;a<e[i].staff[n].voices.length;a++)for(var s=e[i].staff[n].voices[a],o=1,c=0;c<s.length;c++){var l=s[c].rest&&"spacer"===s[c].rest.type;if(s[c].startTriplet&&(o=s[c].tripletMultiplier),s[c].duration&&!l&&"tempo"!==s[c].el_type&&(r+=s[c].duration*o),s[c].endTriplet&&(o=1),r>=t&&(r-=t),"bar"===s[c].el_type)return r}return r}(this.lines,e);return t<1e-8||e-t<1e-8?0:t},this.getBarLength=function(){var e=this.getMeterFraction();return e.num/e.den},this.getTotalTime=function(){return this.totalTime},this.getTotalBeats=function(){return this.totalBeats},this.millisecondsPerMeasure=function(e){var t;if(e)t=e;else{var r=this.metaText?this.metaText.tempo:null;t=this.getBpm(r)}return t<=0&&(t=1),this.getBeatsPerMeasure()/t*6e4},this.getBeatsPerMeasure=function(){var e=this.getBeatLength();return this.getBarLength()/e},this.getMeter=function(){for(var e=0;e<this.lines.length;e++){var t=this.lines[e];if(t.staff)for(var r=0;r<t.staff.length;r++){var i=t.staff[r].meter;if(i)return i}}return{type:"common_time"}},this.getMeterFraction=function(){var e=this.getMeter(),t=4,r=4;return e&&("specified"===e.type?(t=parseInt(e.value[0].num,10),r=parseInt(e.value[0].den,10)):"cut_time"===e.type?(t=2,r=2):"common_time"===e.type&&(t=4,r=4)),this.meter={num:t,den:r},this.meter},this.getKeySignature=function(){for(var e=0;e<this.lines.length;e++){var t=this.lines[e];if(t.staff)for(var r=0;r<t.staff.length;r++)if(t.staff[r].key)return t.staff[r].key}return{}},this.getElementFromChar=function(e){for(var t=0;t<this.lines.length;t++){var r=this.lines[t];if(r.staff)for(var i=0;i<r.staff.length;i++)for(var n=r.staff[i],a=0;a<n.voices.length;a++)for(var s=n.voices[a],o=0;o<s.length;o++){var c=s[o];if(c.startChar&&c.endChar&&c.startChar<=e&&c.endChar>e)return c}}return null},this.addElementToEvents=function(e,t,r,n,a,s,o,c,l,h){if(t.hint)return{isTiedState:void 0,duration:0};var u=t.durationClass?t.durationClass:t.duration;if(t.abcelem.rest&&"spacer"===t.abcelem.rest.type&&(u=0),u>0){for(var f=[],d=0;d<t.elemset.length;d++)null!==t.elemset[d]&&f.push(t.elemset[d]);var p=t.startTie;if(void 0!==l)e["event"+l].elements.push(f),h&&(e["event"+r]||(e["event"+r]={type:"event",milliseconds:r,line:s,measureNumber:o,top:n,height:a,left:null,width:0,elements:[],startChar:null,endChar:null,startCharArray:[],endCharArray:[]}),e["event"+r].measureStart=!0,h=!1),p||(l=void 0);else{if(e["event"+r]){if(e["event"+r].left?e["event"+r].left=Math.min(e["event"+r].left,t.x):e["event"+r].left=t.x,e["event"+r].elements.push(f),e["event"+r].startCharArray.push(t.abcelem.startChar),e["event"+r].endCharArray.push(t.abcelem.endChar),null===e["event"+r].startChar&&(e["event"+r].startChar=t.abcelem.startChar),null===e["event"+r].endChar&&(e["event"+r].endChar=t.abcelem.endChar),t.abcelem.midiPitches&&t.abcelem.midiPitches.length)for(e["event"+r].midiPitches||(e["event"+r].midiPitches=[]),d=0;d<t.abcelem.midiPitches.length;d++)e["event"+r].midiPitches.push(t.abcelem.midiPitches[d]);if(t.abcelem.midiGraceNotePitches&&t.abcelem.midiGraceNotePitches.length){e["event"+r].midiGraceNotePitches||(e["event"+r].midiGraceNotePitches=[]);for(var m=0;m<t.abcelem.midiGraceNotePitches.length;m++)e["event"+r].midiGraceNotePitches.push(t.abcelem.midiGraceNotePitches[m])}}else e["event"+r]={type:"event",milliseconds:r,line:s,measureNumber:o,top:n,height:a,left:t.x,width:t.w,elements:[f],startChar:t.abcelem.startChar,endChar:t.abcelem.endChar,startCharArray:[t.abcelem.startChar],endCharArray:[t.abcelem.endChar],midiPitches:t.abcelem.midiPitches?i.cloneArray(t.abcelem.midiPitches):[]},t.abcelem.midiGraceNotePitches&&(e["event"+r].midiGraceNotePitches=i.cloneArray(t.abcelem.midiGraceNotePitches));h&&(e["event"+r].measureStart=!0,h=!1),p&&(l=r)}}return{isTiedState:l,duration:u/c,nextIsBar:h||"bar"===t.type}},this.makeVoicesArray=function(){for(var e=[],t=[],r={},i=0;i<this.engraver.staffgroups.length;i++){var a=this.engraver.staffgroups[i];if(a&&a.staffs&&a.staffs.length>0)for(var s=a.staffs[0],o=s.absoluteY,c=o-s.top*n.STEP,l=a.staffs[a.staffs.length-1],h=(o=l.absoluteY)-l.bottom*n.STEP-c,u=a.voices,f=0;f<u.length;f++)if(!u[f].staff||!u[f].staff.isTabStaff){var d=!1;e[f]||(e[f]=[]),void 0===t[f]&&(t[f]=0);for(var p=u[f].children,m=0;m<p.length;m++)"tempo"===p[m].type&&(r[t[f]]=this.getBpm(p[m].abcelem)),e[f].push({top:c,height:h,line:a.line,measureNumber:t[f],elem:p[m]}),"bar"===p[m].type&&d&&t[f]++,"note"!==p[m].type&&"rest"!==p[m].type||(d=!0)}}return this.tempoLocations=r,e},this.setupEvents=function(e,r,i,n){n||(n=1);for(var a,s=[],o={},c=e,l=!0,h=this.makeVoicesArray(),u=0,f=0;f<h.length;f++){var d=c,p=Math.round(1e3*d),m=0,g=-1,v=h[f],b=i;r=this.getBeatLength()*b/60;for(var y=-1,x=0;x<v.length;x++){var w=v[x].measureNumber;y!==w&&this.tempoLocations[w]&&(b=this.tempoLocations[w],r=n*this.getBeatLength()*b/60,y=w);var k,C=v[x].elem,T=this.addElementToEvents(o,C,p,v[x].top,v[x].height,v[x].line,v[x].measureNumber,r,a,l);if(a=T.isTiedState,l=T.nextIsBar,d+=T.duration,C.duration>0&&o["event"+p]&&(k="event"+p),p=Math.round(1e3*d),"bar"===C.type){var S=C.abcelem.type,N="bar_right_repeat"===S||"bar_dbl_repeat"===S,_="1"===C.abcelem.startEnding,E="bar_left_repeat"===S||"bar_dbl_repeat"===S||"bar_right_repeat"===S;if(N){x>0&&(o[k].endX=C.x),-1===g&&(g=x);var M=0;y=-1;for(var A=m;A<g;A++){y!==(w=v[A].measureNumber)&&this.tempoLocations[w]&&(b=this.tempoLocations[w],r=n*this.getBeatLength()*b/60,y=w);var B=v[A].elem;a=(T=this.addElementToEvents(o,B,p,v[A].top,v[A].height,v[A].line,v[A].measureNumber,r,a,l)).isTiedState,l=T.nextIsBar,d+=T.duration,M=p,p=Math.round(1e3*d)}o["event"+M]&&(o["event"+M].endX=v[g].elem.x),l=!0,g=-1}_&&(g=x),E&&(m=x)}}u=Math.max(u,p)}return function(e){for(var t,r,i,n,a=e.length-1;a>=0;a--){var s=e[a];"bar"===s.type?(s.top=i,s.nextTop=t,t=i,s.bottom=n,s.nextBottom=r,r=n):"event"===s.type&&(i=s.top,n=s.top+s.height)}}(s=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t.sort((function(e,t){var r=e.milliseconds-t.milliseconds;return 0!==r?r:"bar"===e.type?-1:1}))}(o)),function(e,r){if(!(r.length<1)){for(var i=0;i<r.length-1;i++){var n=r[i],a=t(r,i+1);if(null!==n.left){var s=a&&n.top===a.top?a.left:e[n.line].staffGroup.w;void 0!==n.endX?s>n.left&&(n.endX=Math.min(n.endX,s)):n.endX=s}}var o=r[r.length-1];o.endX=e[o.line].staffGroup.w}}(this.lines,s),s.push({type:"end",milliseconds:u}),this.addUsefulCallbackInfo(s,b*n),s},this.addUsefulCallbackInfo=function(e,t){for(var r=this.millisecondsPerMeasure(t),i=0;i<e.length;i++)e[i].millisecondsPerMeasure=r},this.getBpm=function(e){var t;if(e){t=e.bpm;var r=this.getBeatLength();t=t*(e.duration&&e.duration.length>0?e.duration[0]:r)/r}if(!t){t=180;var i=this.getMeterFraction();i&&3!==i.num&&i.num%3==0&&(t=120)}return t},this.setTiming=function(e,t){if(t=t||0,!this.engraver||!this.engraver.staffgroups)return console.log("setTiming cannot be called before the tune is drawn."),void(this.noteTimings=[]);var r=this.metaText?this.metaText.tempo:null,i=this.getBpm(r),n=1;e?r&&(n=e/i):e=i;var a=this.getBeatLength(),s=e/60,o=this.getBarLength()/a*t/s;o&&(o-=this.getPickupLength()/a/s);var c=a*s;return this.noteTimings=this.setupEvents(o,c,e,n),this.noteTimings.length>0?(this.totalTime=this.noteTimings[this.noteTimings.length-1].milliseconds/1e3,this.totalBeats=this.totalTime*s):(this.totalTime=void 0,this.totalBeats=void 0),this.noteTimings},this.setUpAudio=function(e){e||(e={});var t=a(this,e);return s(t,e,this.formatting.percmap,this.formatting.midi)},this.deline=function(e){return o(this.lines,e)}}},351:function(e){function t(e,t){return"abselem"===e?"abselem":t}function r(e,t){e.el_type="meter",e.startChar=-1,e.endChar=-1;for(var r=0;r<t.length;r++)t[r].unshift(e)}function i(e,t){e.el_type="key",e.startChar=-1,e.endChar=-1;for(var r=0;r<t.length;r++)t[r].unshift(e)}function n(e,t){e.el_type="clef",e.startChar=-1,e.endChar=-1;for(var r=0;r<t.length;r++)t[r].unshift(e)}function a(e,t,r){e.el_type="font",e.type=r,e.startChar=-1,e.endChar=-1;for(var i=0;i<t.length;i++)t[i].unshift(e)}function s(e,r){return!e||JSON.stringify(e,t)===JSON.stringify(r,t)}function o(e){for(var t={},r=Object.keys(e),i=0;i<r.length;i++)if("staff"!==r[i])t[r[i]]=e[r[i]];else{t.staff=[];for(var n=0;n<e.staff.length;n++){for(var a={},s=Object.keys(e.staff[n]),o=0;o<s.length;o++)if("voices"!==s[o])a[s[o]]=e.staff[n][s[o]];else{a.voices=[];for(var c=0;c<e.staff[n].voices.length;c++)a.voices.push([].concat(e.staff[n].voices[c]))}t.staff.push(a)}}return t}e.exports=function(e,t){t||(t={});for(var c=!!t.lineBreaks,l=[],h=!1,u=[],f=[],d=[],p=[],m=[],g=[],v=[],b=0;b<e.length;b++){var y=e[b];if(y.staff){if(h&&!y.vskip)for(var x=l[l.length-1],w=0;w<x.staff.length;w++){var k=y.staff[w],C=x.staff[w];if(k&&(s(k.meter,u[w])||(r(k.meter,k.voices),u[w]=k.meter,delete k.meter),s(k.key,f[w])||(i(k.key,k.voices),f[w]=k.key,delete k.key),k.title&&(C.abbrevTitle=k.title),s(k.clef,d[w])||(n(k.clef,k.voices),d[w]=k.clef,delete k.clef),s(k.vocalfont,p[w])||(a(k.vocalfont,k.voices,"vocalfont"),p[w]=k.vocalfont,delete k.vocalfont),s(k.gchordfont,m[w])||(a(k.gchordfont,k.voices,"gchordfont"),m[w]=k.gchordfont,delete k.gchordfont),s(k.tripletfont,g[w])||(a(k.tripletfont,k.voices,"tripletfont"),g[w]=k.tripletfont,delete k.tripletfont),s(k.annotationfont,v[w])||(a(k.annotationfont,k.voices,"annotationfont"),v[w]=k.annotationfont,delete k.annotationfont)),k)for(var T=0;T<C.voices.length;T++){var S=C.voices[T],N=k.voices[T];c&&S.push({el_type:"break"}),N&&(C.voices[T]=S.concat(N))}}else{for(var _=0;_<y.staff.length;_++)f[_]=y.staff[_].key,u[_]=y.staff[_].meter,d[_]=y.staff[_].clef;l.push(o(y))}h=!0}else h=!1,l.push(y)}return l}},5008:function(e){var t={clone:function(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t},cloneArray:function(e){for(var r=[],i=0;i<e.length;i++)r.push(t.clone(e[i]));return r},cloneHashOfHash:function(e){var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.clone(e[i]));return r},cloneHashOfArrayOfHash:function(e){var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.cloneArray(e[i]));return r},strip:function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"")},startsWith:function(e,t){return 0===e.indexOf(t)},endsWith:function(e,t){var r=e.length-t.length;return r>=0&&e.lastIndexOf(t)===r},last:function(e){return 0===e.length?null:e[e.length-1]}};e.exports=t},8905:function(e,t,r){var i=r(5008),n=r(8360),a=r(9928),s=r(6476),o=r(1881),c=r(1756),l=r(6780),h=r(575);e.exports=function(){"use strict";var e,t=new l,r=new h(t),u="",f="";function d(e,t,r){e.positioning||(e.positioning={}),e.positioning[t]=r}function p(e,t,r){e.fonts||(e.fonts={}),e.fonts[t]=r}this.getTune=function(){var e={formatting:t.formatting,lines:t.lines,media:t.media,metaText:t.metaText,metaTextInfo:t.metaTextInfo,version:t.version,addElementToEvents:t.addElementToEvents,addUsefulCallbackInfo:t.addUsefulCallbackInfo,getTotalTime:t.getTotalTime,getTotalBeats:t.getTotalBeats,getBarLength:t.getBarLength,getBeatLength:t.getBeatLength,getBeatsPerMeasure:t.getBeatsPerMeasure,getBpm:t.getBpm,getMeter:t.getMeter,getMeterFraction:t.getMeterFraction,getPickupLength:t.getPickupLength,getKeySignature:t.getKeySignature,getElementFromChar:t.getElementFromChar,makeVoicesArray:t.makeVoicesArray,millisecondsPerMeasure:t.millisecondsPerMeasure,setupEvents:t.setupEvents,setTiming:t.setTiming,setUpAudio:t.setUpAudio,deline:t.deline};return t.lineBreaks&&(e.lineBreaks=t.lineBreaks),t.visualTranspose&&(e.visualTranspose=t.visualTranspose),e};var m,g,v={reset:function(){for(var e in this)this.hasOwnProperty(e)&&"function"!=typeof this[e]&&delete this[e];this.iChar=0,this.key={accidentals:[],root:"none",acc:"",mode:""},this.meter=null,this.origMeter=null,this.hasMainTitle=!1,this.default_length=.125,this.clef={type:"treble",verticalPos:0},this.octave=0,this.next_note_duration=0,this.start_new_line=!0,this.is_in_header=!0,this.partForNextLine={},this.tempoForNextLine=[],this.havent_set_length=!0,this.voices={},this.staves=[],this.macros={},this.currBarNumber=1,this.barCounter={},this.ignoredDecorations=[],this.score_is_present=!1,this.inEnding=!1,this.inTie=[],this.inTieChord={},this.vocalPosition="auto",this.dynamicPosition="auto",this.chordPosition="auto",this.ornamentPosition="auto",this.volumePosition="auto",this.openSlurs=[],this.freegchord=!1,this.endingHoldOver={}},differentFont:function(e,t){return this[e].decoration!==t[e].decoration||this[e].face!==t[e].face||this[e].size!==t[e].size||this[e].style!==t[e].style||this[e].weight!==t[e].weight},addFormattingOptions:function(e,t,r){"note"===r?("auto"!==this.vocalPosition&&d(e,"vocalPosition",this.vocalPosition),"auto"!==this.dynamicPosition&&d(e,"dynamicPosition",this.dynamicPosition),"auto"!==this.chordPosition&&d(e,"chordPosition",this.chordPosition),"auto"!==this.ornamentPosition&&d(e,"ornamentPosition",this.ornamentPosition),"auto"!==this.volumePosition&&d(e,"volumePosition",this.volumePosition),this.differentFont("annotationfont",t)&&p(e,"annotationfont",this.annotationfont),this.differentFont("gchordfont",t)&&p(e,"gchordfont",this.gchordfont),this.differentFont("vocalfont",t)&&p(e,"vocalfont",this.vocalfont),this.differentFont("tripletfont",t)&&p(e,"tripletfont",this.tripletfont)):"bar"===r&&("auto"!==this.dynamicPosition&&d(e,"dynamicPosition",this.dynamicPosition),"auto"!==this.chordPosition&&d(e,"chordPosition",this.chordPosition),"auto"!==this.ornamentPosition&&d(e,"ornamentPosition",this.ornamentPosition),"auto"!==this.volumePosition&&d(e,"volumePosition",this.volumePosition),this.differentFont("measurefont",t)&&p(e,"measurefont",this.measurefont),this.differentFont("repeatfont",t)&&p(e,"repeatfont",this.repeatfont))},duplicateStartEndingHoldOvers:function(){this.endingHoldOver={inTie:[],inTieChord:{}};for(var e=0;e<this.inTie.length;e++)if(this.endingHoldOver.inTie.push([]),this.inTie[e])for(var t=0;t<this.inTie[e].length;t++)this.endingHoldOver.inTie[e].push(this.inTie[e][t]);for(var r in this.inTieChord)this.inTieChord.hasOwnProperty(r)&&(this.endingHoldOver.inTieChord[r]=this.inTieChord[r])},restoreStartEndingHoldOvers:function(){if(this.endingHoldOver.inTie){this.inTie=[],this.inTieChord={};for(var e=0;e<this.endingHoldOver.inTie.length;e++){this.inTie.push([]);for(var t=0;t<this.endingHoldOver.inTie[e].length;t++)this.inTie[e].push(this.endingHoldOver.inTie[e][t])}for(var r in this.endingHoldOver.inTieChord)this.endingHoldOver.inTieChord.hasOwnProperty(r)&&(this.inTieChord[r]=this.endingHoldOver.inTieChord[r])}}},b=function(e){var t=e.replace(/\x12/g," ");return(t=(t=t.replace(/&/g,"&")).replace(/</g,"<")).replace(/>/g,">")},y=function(t,r,i){r||(r=" ");var n=r[i];" "!==n&&n||(n="SPACE");var a,s=b(r.substring(i-64,i))+'<span style="text-decoration:underline;font-size:1.3em;font-weight:bold;">'+n+"</span>"+b(r.substring(i+1).substring(0,64));!function(e){v.warnings||(v.warnings=[]),v.warnings.push(e)}("Music Line:"+e.lineIndex+":"+(i+1)+": "+t+": "+s),a={message:t,line:r,startChar:v.iChar+i,column:i},v.warningObjects||(v.warningObjects=[]),v.warningObjects.push(a)};this.getWarnings=function(){return v.warnings},this.getWarningObjects=function(){return v.warningObjects};var x=function(t,r){if(r.indexOf("")>=0)u+=r;else if(r=u+r,u="",t){"-"!==(r=i.strip(r))[r.length-1]&&(r+=" ");for(var n=[],a=0,s=!1,o=function(t){var o=i.strip(r.substring(a,t));if(o=o.replace(/\\([-_*|~])/g,"$1"),a=t+1,o.length>0){s&&(o=o.replace(/~/g," "));var c=r[t];return"_"!==c&&"-"!==c&&(c=" "),n.push({syllable:e.translateString(o),divider:c}),s=!1,!0}return!1},c=!1,l=0;l<r.length;l++){switch(r[l]){case" ":case"":o(l);break;case"-":!c&&!o(l)&&n.length>0&&(i.last(n).divider="-",n.push({skip:!0,to:"next"}));break;case"_":c||(o(l),n.push({skip:!0,to:"slur"}));break;case"*":c||(o(l),n.push({skip:!0,to:"next"}));break;case"|":c||(o(l),n.push({skip:!0,to:"bar"}));break;case"~":c||(s=!0)}c="\\"===r[l]}t.forEach((function(e){if(0!==n.length)if(n[0].skip){switch(n[0].to){case"next":case"slur":"note"===e.el_type&&null!==e.pitches&&n.shift();break;case"bar":"bar"===e.el_type&&n.shift()}"bar"!==e.el_type&&(void 0===e.lyric?e.lyric=[{syllable:"",divider:" "}]:e.lyric.push({syllable:"",divider:" "}))}else if("note"===e.el_type&&void 0===e.rest){var t=n.shift();t.syllable&&(t.syllable=t.syllable.replace(/ +/g," ")),void 0===e.lyric?e.lyric=[t]:e.lyric.push(t)}}))}else y("Can't add words before the first line of music",t,0)},w=function(t,r){if(r.indexOf("")>=0)f+=r;else if(r=f+r,f="",t){"-"!==(r=i.strip(r))[r.length-1]&&(r+=" ");for(var n=[],a=0,s=!1,o=function(t){var o=i.strip(r.substring(a,t));if(a=t+1,o.length>0){s&&(o=o.replace(/~/g," "));var c=r[t];return"_"!==c&&"-"!==c&&(c=" "),n.push({syllable:e.translateString(o),divider:c}),s=!1,!0}return!1},c=0;c<r.length;c++)switch(r[c]){case" ":case"":o(c);break;case"-":!o(c)&&n.length>0&&(i.last(n).divider="-",n.push({skip:!0,to:"next"}));break;case"_":o(c),n.push({skip:!0,to:"slur"});break;case"*":o(c),n.push({skip:!0,to:"next"});break;case"|":o(c),n.push({skip:!0,to:"bar"});break;case"~":s=!0}t.forEach((function(e){if(0!==n.length)if(n[0].skip)switch(n[0].to){case"next":case"slur":"note"===e.el_type&&null!==e.pitches&&n.shift();break;case"bar":"bar"===e.el_type&&n.shift()}else if("note"===e.el_type&&void 0===e.rest){var t=n.shift();void 0===e.lyric?e.lyric=[t]:e.lyric.push(t)}}))}else y("Can't add symbols before the first line of music",t,0)},k=function(e){if(i.startsWith(e,"%%")){var t=n.addDirective(e.substring(2));t&&y(t,e,2)}else{var a=e.indexOf("%");if(a>=0&&(e=e.substring(0,a)),0!==(e=e.replace(/\s+$/,"")).length)if(u)x(r.getCurrentVoice(),e.substring(2));else if(f)w(r.getCurrentVoice(),e.substring(2));else if(e.length<2||":"!==e[1]||g.lineContinuation)g.parseMusic(e);else{var s=m.parseHeader(e);s.regular&&g.parseMusic(e),s.newline&&g.startNewLine(),s.words&&x(r.getCurrentVoice(),e.substring(2)),s.symbols&&w(r.getCurrentVoice(),e.substring(2))}}};function C(e,t){e.push({el_type:"hint"});for(var r=0;r<t.length;r++){var n=t[r],a=i.clone(n);if(e.push(a),"bar"===n.el_type)return}}function T(e,t){for(var r=0;r<e.length;r++){var i=e[r],n=t[r];if(n)for(var a=0;a<n.voices.length;a++){var s=n.voices[a],o=i.voices[a];o&&C(o,s)}}}this.parse=function(l,h,d){h||(h={}),d||(d=0),t.reset();var p=(l=l.replace(/\r\n?/g,"\n")+"\n").split("\n\\");if(p.length>1){for(var b=1;b<p.length;b++)for(;p[b].length>0&&"\n"!==p[b][0];)p[b]=p[b].substr(1),p[b-1]+=" ";l=p.join(" ")}var C=(l=l.replace(/\\([ \t]*)(%.*)*\n/g,(function(e,t,r){return t+""+(r?Array(r.length+1).join(" "):"")+"\n"}))).split("\n");0===i.last(C).length&&C.pop(),e=new o(C,v),m=new a(e,y,v,t,r),g=new s(e,y,v,t,r,m),h.print&&(t.media="print"),v.reset(),v.iChar=d,h.visualTranspose?(v.globalTranspose=parseInt(h.visualTranspose),0===v.globalTranspose?v.globalTranspose=void 0:r.setVisualTranspose(h.visualTranspose)):v.globalTranspose=void 0,h.lineBreaks&&(v.lineBreaks=h.lineBreaks),m.reset(e,y,v,t);try{h.format&&n.globalFormatting(h.format);for(var S=e.nextLine();S;){if(h.header_only&&!1===v.is_in_header)throw"normal_abort";if(h.stop_on_warning&&v.warnings)throw"normal_abort";var N=v.is_in_header;k(S),N&&!v.is_in_header&&(r.setRunningFont("annotationfont",v.annotationfont),r.setRunningFont("gchordfont",v.gchordfont),r.setRunningFont("tripletfont",v.tripletfont),r.setRunningFont("vocalfont",v.vocalfont)),S=e.nextLine()}u&&x(r.getCurrentVoice(),""),f&&w(r.getCurrentVoice(),""),v.openSlurs=r.cleanUp(v.barsperstaff,v.staffnonote,v.openSlurs)}catch(e){if("normal_abort"!==e)throw e}var _=792,E=612;switch(v.papersize){case"legal":_=1008,E=612;break;case"A4":_=842.4,E=597.6}if(v.landscape){var M=_;_=E,E=M}t.formatting.pagewidth||(t.formatting.pagewidth=E),t.formatting.pageheight||(t.formatting.pageheight=_),h.hint_measures&&function(){for(var e=0;e<t.lines.length;e++){var r=t.lines[e].staff;if(r){for(var i=e+1;i<t.lines.length&&void 0===t.lines[i].staff;)i++;i<t.lines.length&&T(r,t.lines[i].staff)}}}(),c.wrapLines(t,v.lineBreaks,v.barNumbers)}}},9565:function(e,t,r){var i=r(5008);e.exports=function(e){"use strict";for(var t="",r=e.match(/(\s*)/),n=(e=i.strip(e)).split("\nX:"),a=1;a<n.length;a++)n[a]="X:"+n[a];var s=r?r[0].length:0,o=[];n.forEach((function(e){o.push({abc:e,startPos:s}),s+=e.length+1})),o.length>1&&!i.startsWith(o[0].abc,"X:")&&o.shift().abc.split("\n").forEach((function(e){i.startsWith(e,"%%")&&(t+=e+"\n")}));var c=t;return o.forEach((function(e){var r=e.abc.indexOf("\n\n");r>0&&(e.abc=e.abc.substring(0,r)),e.pure=e.abc,e.abc=t+e.abc,e.title="";var n=e.pure.split("T:");n.length>1&&(n=n[1].split("\n"),e.title=i.strip(n[0]));var a=e.pure.substring(2,e.pure.indexOf("\n"));e.id=i.strip(a)})),{header:c,tunes:o}}},8360:function(e,t,r){var i=r(5008),n={};!function(){"use strict";var e,t,r,a,s;n.initialize=function(i,n,o,c,l){e=i,t=n,a=c,s=l,(r=o).annotationfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},r.gchordfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},r.historyfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.infofont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},r.measurefont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},r.partsfont={face:'"Times New Roman"',size:15,weight:"normal",style:"normal",decoration:"none"},r.repeatfont={face:'"Times New Roman"',size:13,weight:"normal",style:"normal",decoration:"none"},r.textfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.tripletfont={face:"Times",size:11,weight:"normal",style:"italic",decoration:"none"},r.vocalfont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},r.wordsfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},a.formatting.composerfont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},a.formatting.subtitlefont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},a.formatting.tempofont={face:'"Times New Roman"',size:15,weight:"bold",style:"normal",decoration:"none"},a.formatting.titlefont={face:'"Times New Roman"',size:20,weight:"normal",style:"normal",decoration:"none"},a.formatting.footerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},a.formatting.headerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},a.formatting.voicefont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},a.formatting.tablabelfont={face:'"Trebuchet MS"',size:16,weight:"normal",style:"normal",decoration:"none"},a.formatting.tabnumberfont={face:'"Arial"',size:11,weight:"normal",style:"normal",decoration:"none"},a.formatting.tabgracefont={face:'"Arial"',size:8,weight:"normal",style:"normal",decoration:"none"},a.formatting.annotationfont=r.annotationfont,a.formatting.gchordfont=r.gchordfont,a.formatting.historyfont=r.historyfont,a.formatting.infofont=r.infofont,a.formatting.measurefont=r.measurefont,a.formatting.partsfont=r.partsfont,a.formatting.repeatfont=r.repeatfont,a.formatting.textfont=r.textfont,a.formatting.tripletfont=r.tripletfont,a.formatting.vocalfont=r.vocalfont,a.formatting.wordsfont=r.wordsfont};var o={gchordfont:!0,measurefont:!0,partsfont:!0,annotationfont:!0,composerfont:!0,historyfont:!0,infofont:!0,subtitlefont:!0,textfont:!0,titlefont:!0,voicefont:!0},c=function(e,r,i,n,a){function s(){var s=parseInt(e[0].token);return e.shift(),r?0===e.length?{face:r.face,weight:r.weight,style:r.style,decoration:r.decoration,size:s}:1===e.length&&"box"===e[0].token&&o[a]?{face:r.face,weight:r.weight,style:r.style,decoration:r.decoration,size:s,box:!0}:(t("Extra parameters in font definition.",i,n),{face:r.face,weight:r.weight,style:r.style,decoration:r.decoration,size:s}):(t("Can't set just the size of the font since there is no default value.",i,n),{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none",size:s})}if("*"===e[0].token){if(e.shift(),"number"===e[0].type)return s();t("Expected font size number after *.",i,n)}if("number"===e[0].type)return s();for(var c,l=[],h="normal",u="normal",f="none",d=!1,p="face",m=!1;e.length;){var g=e.shift(),v=g.token.toLowerCase();switch(p){case"face":m||"utf"!==v&&"number"!==g.type&&"bold"!==v&&"italic"!==v&&"underline"!==v&&"box"!==v?l.length>0&&"-"===g.token?(m=!0,l[l.length-1]=l[l.length-1]+g.token):m?(m=!1,l[l.length-1]=l[l.length-1]+g.token):l.push(g.token):"number"===g.type?(c?t("Font size specified twice in font definition.",i,n):c=g.token,p="modifier"):"bold"===v?h="bold":"italic"===v?u="italic":"underline"===v?f="underline":"box"===v?(o[a]?d=!0:t('This font style doesn\'t support "box"',i,n),p="finished"):"utf"===v?(g=e.shift(),p="size"):t("Unknown parameter "+g.token+" in font definition.",i,n);break;case"size":"number"===g.type?c?t("Font size specified twice in font definition.",i,n):c=g.token:t("Expected font size in font definition.",i,n),p="modifier";break;case"modifier":"bold"===v?h="bold":"italic"===v?u="italic":"underline"===v?f="underline":"box"===v?(o[a]?d=!0:t('This font style doesn\'t support "box"',i,n),p="finished"):t("Unknown parameter "+g.token+" in font definition.",i,n);break;case"finished":t('Extra characters found after "box" in font definition.',i,n)}}void 0===c?r?c=r.size:(t("Must specify the size of the font since there is no default value.",i,n),c=12):c=parseFloat(c),""===(l=l.join(" "))&&(r?l=r.face:(t("Must specify the name of the font since there is no default value.",i,n),l="sans-serif"));var b=function(e){switch(e){case"Arial-Italic":return{face:"Arial",weight:"normal",style:"italic",decoration:"none"};case"Arial-Bold":return{face:"Arial",weight:"bold",style:"normal",decoration:"none"};case"Bookman-Demi":return{face:"Bookman,serif",weight:"bold",style:"normal",decoration:"none"};case"Bookman-DemiItalic":return{face:"Bookman,serif",weight:"bold",style:"italic",decoration:"none"};case"Bookman-Light":return{face:"Bookman,serif",weight:"normal",style:"normal",decoration:"none"};case"Bookman-LightItalic":return{face:"Bookman,serif",weight:"normal",style:"italic",decoration:"none"};case"Courier":return{face:'"Courier New"',weight:"normal",style:"normal",decoration:"none"};case"Courier-Oblique":return{face:'"Courier New"',weight:"normal",style:"italic",decoration:"none"};case"Courier-Bold":return{face:'"Courier New"',weight:"bold",style:"normal",decoration:"none"};case"Courier-BoldOblique":return{face:'"Courier New"',weight:"bold",style:"italic",decoration:"none"};case"AvantGarde-Book":return{face:"AvantGarde,Arial",weight:"normal",style:"normal",decoration:"none"};case"AvantGarde-BookOblique":return{face:"AvantGarde,Arial",weight:"normal",style:"italic",decoration:"none"};case"AvantGarde-Demi":case"Avant-Garde-Demi":return{face:"AvantGarde,Arial",weight:"bold",style:"normal",decoration:"none"};case"AvantGarde-DemiOblique":return{face:"AvantGarde,Arial",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Oblique":return{face:"Helvetica",weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Bold":return{face:"Helvetica",weight:"bold",style:"normal",decoration:"none"};case"Helvetica-BoldOblique":return{face:"Helvetica",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Narrow":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"normal",decoration:"none"};case"Helvetica-Narrow-Oblique":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Narrow-Bold":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"normal",decoration:"none"};case"Helvetica-Narrow-BoldOblique":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"italic",decoration:"none"};case"Palatino-Roman":return{face:"Palatino",weight:"normal",style:"normal",decoration:"none"};case"Palatino-Italic":return{face:"Palatino",weight:"normal",style:"italic",decoration:"none"};case"Palatino-Bold":return{face:"Palatino",weight:"bold",style:"normal",decoration:"none"};case"Palatino-BoldItalic":return{face:"Palatino",weight:"bold",style:"italic",decoration:"none"};case"NewCenturySchlbk-Roman":return{face:'"New Century",serif',weight:"normal",style:"normal",decoration:"none"};case"NewCenturySchlbk-Italic":return{face:'"New Century",serif',weight:"normal",style:"italic",decoration:"none"};case"NewCenturySchlbk-Bold":return{face:'"New Century",serif',weight:"bold",style:"normal",decoration:"none"};case"NewCenturySchlbk-BoldItalic":return{face:'"New Century",serif',weight:"bold",style:"italic",decoration:"none"};case"Times":case"Times-Roman":case"Times-Narrow":case"Times-Courier":case"Times-New-Roman":return{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none"};case"Times-Italic":case"Times-Italics":return{face:'"Times New Roman"',weight:"normal",style:"italic",decoration:"none"};case"Times-Bold":return{face:'"Times New Roman"',weight:"bold",style:"normal",decoration:"none"};case"Times-BoldItalic":return{face:'"Times New Roman"',weight:"bold",style:"italic",decoration:"none"};case"ZapfChancery-MediumItalic":return{face:'"Zapf Chancery",cursive,serif',weight:"normal",style:"normal",decoration:"none"};default:return null}}(l),y={};return b?(y.face=b.face,y.weight=b.weight,y.style=b.style,y.decoration=b.decoration,y.size=c,d&&(y.box=!0),y):(y.face=l,y.weight=h,y.style=u,y.decoration=f,y.size=c,d&&(y.box=!0),y)},l=function(e,t,i){return 0===t.length?'Directive "'+e+'" requires a font as a parameter.':(r[e]=c(t,r[e],i,0,e),r.is_in_header&&(a.formatting[e]=r[e]),null)},h=function(e,t){var r="";t.forEach((function(e){r+=e.token}));var i=parseFloat(r);if(isNaN(i)||0===i)return'Directive "'+e+'" requires a number as a parameter.';a.formatting.scale=i},u=["acoustic-bass-drum","bass-drum-1","side-stick","acoustic-snare","hand-clap","electric-snare","low-floor-tom","closed-hi-hat","high-floor-tom","pedal-hi-hat","low-tom","open-hi-hat","low-mid-tom","hi-mid-tom","crash-cymbal-1","high-tom","ride-cymbal-1","chinese-cymbal","ride-bell","tambourine","splash-cymbal","cowbell","crash-cymbal-2","vibraslap","ride-cymbal-2","hi-bongo","low-bongo","mute-hi-conga","open-hi-conga","low-conga","high-timbale","low-timbale","high-agogo","low-agogo","cabasa","maracas","short-whistle","long-whistle","short-guiro","long-guiro","claves","hi-wood-block","low-wood-block","mute-cuica","open-cuica","mute-triangle","open-triangle"],f=function(e,t,i,n,a){if(1!==i.length||"number"!==i[0].type)return'Directive "'+t+'" requires a number as a parameter.';var s=i[0].intt;return void 0!==n&&s<n?'Directive "'+t+'" requires a number greater than or equal to '+n+" as a parameter.":void 0!==a&&s>a?'Directive "'+t+'" requires a number less than or equal to '+a+" as a parameter.":(r[e]=s,null)},d=function(e,t,i){if(1===i.length&&("true"===i[0].token||"false"===i[0].token))return r[e]="true"===i[0].token,null;var n=f(e,t,i,0,1);return null!==n?n:(r[e]=1===r[e],null)},p=function(e,t,i,n){if(1!==i.length)return'Directive "'+t+'" requires one of [ '+n.join(", ")+" ] as a parameter.";for(var a=i[0].token,s=!1,o=0;!s&&o<n.length;o++)n[o]===a&&(s=!0);return s?(r[e]=a,null):'Directive "'+t+'" requires one of [ '+n.join(", ")+" ] as a parameter."},m=["nobarlines","barlines","beataccents","nobeataccents","droneon","droneoff","drumon","drumoff","fermatafixed","fermataproportional","gchordon","gchordoff","controlcombo","temperamentnormal","noportamento"],g=["gchord","ptstress","beatstring"],v=["bassvol","chordvol","bassprog","chordprog","c","channel","beatmod","deltaloudness","drumbars","gracedivider","makechordchannels","randomchordattack","chordattack","stressmodel","transpose","rtranspose","vol","volinc"],b=["program"],y=["ratio","snt","bendvelocity","pitchbend","control","temperamentlinear"],x=["beat"],w=["drone"],k=["portamento"],C=["expand","grace","trim"],T=["drum","chordname"];n.parseFontChangeLine=function(e){var t=e.split("$");if(t.length>1&&r.setfont){for(var i=[{text:t[0]}],n=1;n<t.length;n++)"0"===t[n][0]?i.push({text:t[n].substring(1)}):"1"===t[n][0]&&r.setfont[1]?i.push({font:r.setfont[1],text:t[n].substring(1)}):"2"===t[n][0]&&r.setfont[2]?i.push({font:r.setfont[2],text:t[n].substring(1)}):"3"===t[n][0]&&r.setfont[3]?i.push({font:r.setfont[3],text:t[n].substring(1)}):"4"===t[n][0]&&r.setfont[4]?i.push({font:r.setfont[4],text:t[n].substring(1)}):i[i.length-1].text+="$"+t[n];if(i.length>1)return i}return e};var S=["auto","above","below","hidden"];function N(e){if(0===e.length)return{value:1};if(1===e.length)if("number"===e[0].type){if(e[0].floatt>=0||e[0].floatt<=1)return{value:e[0].floatt}}else{if("false"===e[0].token)return{value:0};if("true"===e[0].token)return{value:1}}return{error:"Directive stretchlast requires zero or one parameter: false, true, or number between 0 and 1 (received "+e[0].token+")"}}n.addDirective=function(o){var _=e.tokenize(o,0,o.length);if(0===_.length||"alpha"!==_[0].type)return null;var E=o.substring(o.indexOf(_[0].token)+_[0].token.length);E=e.stripComment(E);var M,A=_.shift().token.toLowerCase(),B="";switch(A){case"bagpipes":a.formatting.bagpipes=!0;break;case"flatbeams":a.formatting.flatbeams=!0;break;case"jazzchords":a.formatting.jazzchords=!0;break;case"germanAlphabet":a.formatting.germanAlphabet=!0;break;case"landscape":r.landscape=!0;break;case"papersize":r.papersize=E;break;case"graceslurs":if(1!==_.length)return"Directive graceslurs requires one parameter: 0 or 1";if("0"===_[0].token||"false"===_[0].token)a.formatting.graceSlurs=!1;else{if("1"!==_[0].token&&"true"!==_[0].token)return"Directive graceslurs requires one parameter: 0 or 1 (received "+_[0].token+")";a.formatting.graceSlurs=!0}break;case"lineThickness":var L=N(_);if(void 0!==L.value&&(a.formatting.lineThickness=L.value),L.error)return L.error;break;case"stretchlast":var P=N(_);if(void 0!==P.value&&(a.formatting.stretchlast=P.value),P.error)return P.error;break;case"titlecaps":r.titlecaps=!0;break;case"titleleft":a.formatting.titleleft=!0;break;case"measurebox":a.formatting.measurebox=!0;break;case"vocal":return p("vocalPosition",A,_,S);case"dynamic":return p("dynamicPosition",A,_,S);case"gchord":return p("chordPosition",A,_,S);case"ornament":return p("ornamentPosition",A,_,S);case"volume":return p("volumePosition",A,_,S);case"botmargin":case"botspace":case"composerspace":case"indent":case"leftmargin":case"linesep":case"musicspace":case"partsspace":case"pageheight":case"pagewidth":case"rightmargin":case"staffsep":case"staffwidth":case"subtitlespace":case"sysstaffsep":case"systemsep":case"textspace":case"titlespace":case"topmargin":case"topspace":case"vocalspace":case"wordsspace":return function(t,r){var i=e.getMeasurement(r);return 0===i.used||0!==r.length?'Directive "'+t+'" requires a measurement as a parameter.':(a.formatting[t]=i.value,null)}(A,_);case"voicescale":if(1!==_.length||"number"!==_[0].type)return"voicescale requires one float as a parameter";var z=_.shift();return r.currentVoice&&(r.currentVoice.scale=z.floatt,s.changeVoiceScale(r.currentVoice.scale)),null;case"voicecolor":if(1!==_.length)return"voicecolor requires one string as a parameter";var H=_.shift();return r.currentVoice&&(r.currentVoice.color=H.token,s.changeVoiceColor(r.currentVoice.color)),null;case"vskip":var O=Math.round(function(t,r){var i=e.getMeasurement(r);return 0===i.used||0!==r.length?{error:'Directive "'+t+'" requires a measurement as a parameter.'}:i.value}(A,_));return O.error?O.error:(s.addSpacing(O),null);case"scale":h(A,_);break;case"sep":if(0===_.length)s.addSeparator(14,14,85,{startChar:r.iChar,endChar:r.iChar+5});else{var D=e.getMeasurement(_);if(0===D.used)return'Directive "'+A+'" requires 3 numbers: space above, space below, length of line';var F=D.value;if(0===(D=e.getMeasurement(_)).used)return'Directive "'+A+'" requires 3 numbers: space above, space below, length of line';var I=D.value;if(0===(D=e.getMeasurement(_)).used||0!==_.length)return'Directive "'+A+'" requires 3 numbers: space above, space below, length of line';var V=D.value;s.addSeparator(F,I,V,{startChar:r.iChar,endChar:r.iChar+E.length})}break;case"barsperstaff":if(null!==(B=f("barsperstaff",A,_)))return B;break;case"staffnonote":if(1!==_.length)return"Directive staffnonote requires one parameter: 0 or 1";if("0"===_[0].token)r.staffnonote=!0;else{if("1"!==_[0].token)return"Directive staffnonote requires one parameter: 0 or 1 (received "+_[0].token+")";r.staffnonote=!1}break;case"printtempo":if(null!==(B=d("printTempo",A,_)))return B;break;case"partsbox":if(null!==(B=d("partsBox",A,_)))return B;r.partsfont.box=r.partsBox;break;case"freegchord":if(null!==(B=d("freegchord",A,_)))return B;break;case"measurenb":case"barnumbers":if(null!==(B=f("barNumbers",A,_)))return B;break;case"setbarnb":if(1!==_.length||"number"!==_[0].type)return"Directive setbarnb requires a number as a parameter.";r.currBarNumber=s.setBarNumberImmediate(_[0].intt);break;case"begintext":var Y="";for(M=e.nextLine();M&&0!==M.indexOf("%%endtext");)i.startsWith(M,"%%")?Y+=M.substring(2)+"\n":Y+=M+"\n",M=e.nextLine();s.addText(Y,{startChar:r.iChar,endChar:r.iChar+Y.length+7});break;case"continueall":r.continueall=!0;break;case"beginps":for(M=e.nextLine();M&&0!==M.indexOf("%%endps");)e.nextLine();t("Postscript ignored",o,0);break;case"deco":E.length>0&&r.ignoredDecorations.push(E.substring(0,E.indexOf(" "))),t("Decoration redefinition ignored",o,0);break;case"text":var G=e.translateString(E);s.addText(n.parseFontChangeLine(G),{startChar:r.iChar,endChar:r.iChar+E.length+7});break;case"center":var W=e.translateString(E);s.addCentered(n.parseFontChangeLine(W));break;case"font":break;case"setfont":var q=e.tokenize(E,0,E.length);if(q.length>=4&&"-"===q[0].token&&"number"===q[1].type){var j=parseInt(q[1].token);j>=1&&j<=4&&(r.setfont||(r.setfont=[]),q.shift(),q.shift(),r.setfont[j]=c(q,r.setfont[j],o,0,"setfont"))}break;case"gchordfont":case"partsfont":case"tripletfont":case"vocalfont":case"textfont":case"annotationfont":case"historyfont":case"infofont":case"measurefont":case"repeatfont":case"wordsfont":return l(A,_,o);case"composerfont":case"subtitlefont":case"tempofont":case"titlefont":case"voicefont":case"footerfont":case"headerfont":return function(e,t,r){return 0===t.length?'Directive "'+e+'" requires a font as a parameter.':(a.formatting[e]=c(t,a.formatting[e],r,0,e),null)}(A,_,o);case"barlabelfont":case"barnumberfont":case"barnumfont":return l("measurefont",_,o);case"staves":case"score":r.score_is_present=!0;for(var X,R=function(e,t,n,a,s){(t||0===r.staves.length)&&r.staves.push({index:r.staves.length,numVoices:0});var o=i.last(r.staves);void 0!==n&&void 0===o.bracket&&(o.bracket=n),void 0!==a&&void 0===o.brace&&(o.brace=a),s&&(o.connectBarLines="end"),void 0===r.voices[e]&&(r.voices[e]={staffNum:o.index,index:o.numVoices},o.numVoices++)},U=!1,K=!1,Q=!1,$=!1,Z=!1,J=!1,ee=!1,te=function(){if(ee=!0,X){var e="start";X.staffNum>0&&("start"!==r.staves[X.staffNum-1].connectBarLines&&"continue"!==r.staves[X.staffNum-1].connectBarLines||(e="continue")),r.staves[X.