@modelcontextprotocol/server-sheet-music 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp-app.html +1 -1
- package/package.json +1 -1
package/dist/mcp-app.html
CHANGED
|
@@ -236,7 +236,7 @@ X:`),o=s.length;return o===0&&(o=1),o};var t=i.TuneBook=function(a){var s=r(a);t
|
|
|
236
236
|
`}if(k&&($+=`<span class="abcjs-midi-clock"></span>
|
|
237
237
|
`),w){var T=h.warpTitle?h.warpTitle:"Change the playback speed.",I=h.warpAria?h.warpAria:T,N=h.bpm?h.bpm:"BPM";$+='<span class="abcjs-tempo-wrapper"><label><input class="abcjs-midi-tempo" type="number" min="1" max="300" value="100" title="'+T+'" aria-label="'+I+'">%</label><span> (<span class="abcjs-midi-current-tempo"></span> '+N+`)</span></span>
|
|
238
238
|
`}$+='<div class="abcjs-css-warning" style="font-size: 12px;color:red;border: 1px solid red;text-align: center;width: 300px;margin-top: 4px;font-weight: bold;border-radius: 4px;">CSS required: load abcjs-audio.css</div>',$+=`</div>
|
|
239
|
-
`,u.innerHTML=$}function p(u,h,c,m,b){var g=!0;if(n()?g=n().state==="suspended":r(),!e())throw{status:"NotSupported",message:"This browser does not support audio."};(g||b)&&c&&c.classList.add("abcjs-loading"),g?n().resume().then(function(){m?m().then(function(w){v(u,h,c,b)}):v(u,h,c,b)}):v(u,h,c,b)}function v(u,h,c,m){m?u(h).then(function(){c&&c.classList.remove("abcjs-loading")}):(u(h),c&&c.classList.remove("abcjs-loading"))}function f(u){var h=!!u.options.loopHandler,c=!!u.options.restartHandler,m=!!u.options.playHandler||!!u.options.playPromiseHandler,b=!!u.options.progressHandler,g=!!u.options.warpHandler,w=u.parent.querySelector(".abcjs-midi-start");h&&u.parent.querySelector(".abcjs-midi-loop").addEventListener("click",function(k){p(u.options.loopHandler,k,w,u.options.afterResume)}),c&&u.parent.querySelector(".abcjs-midi-reset").addEventListener("click",function(k){p(u.options.restartHandler,k,w,u.options.afterResume)}),m&&w.addEventListener("click",function(k){p(u.options.playPromiseHandler||u.options.playHandler,k,w,u.options.afterResume,!!u.options.playPromiseHandler)}),b&&u.parent.querySelector(".abcjs-midi-progress-background").addEventListener("click",function(k){p(u.options.progressHandler,k,w,u.options.afterResume)}),g&&u.parent.querySelector(".abcjs-midi-tempo").addEventListener("change",function(k){p(u.options.warpHandler,k,w,u.options.afterResume)})}return Eo=l,Eo}var No,ih;function J$(){if(ih)return No;ih=1;var e=Sb(),r=Pu(),n=Nr();function i(a,s,o,l,d){for(var p=new e,v=0;v<a.length;v++){var f=a[v],u=p.addTrack();if(p.setInstrument(u,f.instrument),v===0&&s)for(var h=0;h<s.length;h++){var c=s[h];p.appendNote(u,c.pitch,1/64,c.volume,c.cents)}p.appendNote(u,f.pitch,f.duration,f.volume,f.cents)}var m=n();return m.state==="suspended"?m.resume().then(function(){return t(p,o,l,d)}):t(p,o,l,d)}function t(a,s,o,l){var d=new r;return d.init({sequence:a,millisecondsPerMeasure:s,options:{soundFontUrl:o},debugCallback:l}).then(function(){return d.prime()}).then(function(){return d.start(),Promise.resolve()})}return No=i,No}var Ao,ah;function Tb(){if(ah)return Ao;ah=1;var e=Ib(),r=Pu(),n=wu(),i=Nr();function t(){var a=this;a.warp=100,a.cursorControl=null,a.visualObj=null,a.timer=null,a.midiBuffer=null,a.options=null,a.currentTempo=null,a.control=null,a.isLooping=!1,a.isStarted=!1,a.isLoaded=!1,a.isLoading=!1,a.load=function(o,l,d){d||(d={}),d.displayPlay===void 0&&(d.displayPlay=!0),d.displayProgress===void 0&&(d.displayProgress=!0),a.control=new e(o,{loopHandler:d.displayLoop?a.toggleLoop:void 0,restartHandler:d.displayRestart?a.restart:void 0,playPromiseHandler:d.displayPlay?a.play:void 0,progressHandler:d.displayProgress?a.randomAccess:void 0,warpHandler:d.displayWarp?a.onWarp:void 0,afterResume:a.init}),a.cursorControl=l,a.disable(!0)},a.disable=function(o){a.control&&a.control.disable(o)},a.setTune=function(o,l,d){return a.visualObj=o,a.disable(!1),a.options=d||{},a.control&&(a.pause(),a.setProgress(0,1),a.control.resetAll(),a.restart(),a.isStarted=!1),a.isLooping=!1,l?a.go():Promise.resolve({status:"no-audio-context"})},a.go=function(){a.isLoading=!0;var o=a.visualObj.millisecondsPerMeasure()*100/a.warp;a.currentTempo=Math.round(a.visualObj.getBeatsPerMeasure()/o*6e4),a.control&&a.control.setTempo(a.currentTempo),a.percent=0;var l;return a.midiBuffer||(a.midiBuffer=new r),i().resume().then(function(d){return a.midiBuffer.init({visualObj:a.visualObj,options:a.options,millisecondsPerMeasure:o})}).then(function(d){return l=d,a.midiBuffer.prime()}).then(function(){var d=16;return a.cursorControl&&a.cursorControl.beatSubdivisions!==void 0&&parseInt(a.cursorControl.beatSubdivisions,10)>=1&&parseInt(a.cursorControl.beatSubdivisions,10)<=64&&(d=parseInt(a.cursorControl.beatSubdivisions,10)),a.timer=new n(a.visualObj,{beatCallback:a.beatCallback,eventCallback:a.eventCallback,lineEndCallback:a.lineEndCallback,qpm:a.currentTempo,extraMeasuresAtBeginning:a.cursorControl?a.cursorControl.extraMeasuresAtBeginning:void 0,lineEndAnticipation:a.cursorControl?a.cursorControl.lineEndAnticipation:0,beatSubdivisions:d}),a.cursorControl&&a.cursorControl.onReady&&typeof a.cursorControl.onReady=="function"&&a.cursorControl.onReady(a),a.isLoaded=!0,a.isLoading=!1,Promise.resolve({status:"created",notesStatus:l})})},a.destroy=function(){a.timer&&(a.timer.reset(),a.timer.stop(),a.timer=null),a.midiBuffer&&(a.midiBuffer.stop(),a.midiBuffer=null),a.setProgress(0,1),a.control&&a.control.resetAll()},a.play=function(){return a.runWhenReady(a._play,void 0)};function s(o){return new Promise(function(l){setTimeout(l,o)})}a.runWhenReady=function(o,l){return a.visualObj?a.isLoading?s(500).then(function(){return a.isLoading?a.runWhenReady(o,l):o(l)}):a.isLoaded?o(l):a.go().then(function(){return o(l)}):Promise.resolve({status:"loading"})},a._play=function(){return i().resume().then(function(){return a.isStarted=!a.isStarted,a.isStarted?(a.cursorControl&&a.cursorControl.onStart&&typeof a.cursorControl.onStart=="function"&&a.cursorControl.onStart(),a.midiBuffer.start(),a.timer.start(a.percent),a.control&&a.control.pushPlay(!0)):a.pause(),Promise.resolve({status:"ok"})})},a.pause=function(){a.timer&&(a.timer.pause(),a.midiBuffer.pause(),a.control&&a.control.pushPlay(!1))},a.toggleLoop=function(){a.isLooping=!a.isLooping,a.control&&a.control.pushLoop(a.isLooping)},a.restart=function(){a.timer&&(a.timer.setProgress(0),a.midiBuffer.seek(0))},a.randomAccess=function(o){return a.runWhenReady(a._randomAccess,o)},a._randomAccess=function(o){var l=o.target.classList.contains("abcjs-midi-progress-indicator")?o.target.parentNode:o.target,d=(o.x-l.getBoundingClientRect().left)/l.offsetWidth;return d<0&&(d=0),d>1&&(d=1),a.seek(d),Promise.resolve({status:"ok"})},a.seek=function(o,l){a.timer&&a.midiBuffer&&(a.timer.setProgress(o,l),a.midiBuffer.seek(o,l))},a.setWarp=function(o){if(parseInt(o,10)>0){a.warp=parseInt(o,10);var l=a.isStarted,d=a.percent;return a.destroy(),a.isStarted=!1,a.go().then(function(){return a.setProgress(d,a.midiBuffer.duration*1e3),a.control&&a.control.setWarp(a.currentTempo,a.warp),l?a.play().then(function(){return a.seek(d),Promise.resolve()}):(a.seek(d),Promise.resolve())})}return Promise.resolve()},a.onWarp=function(o){var l=o.target.value;return a.setWarp(l)},a.setProgress=function(o,l){a.percent=o,a.control&&a.control.setProgress(o,l)},a.finished=function(){if(a.timer.reset(),a.isLooping)return a.timer.start(0),a.midiBuffer.finished(),a.midiBuffer.start(),"continue";a.timer.stop(),a.isStarted&&(a.control&&a.control.pushPlay(!1),a.isStarted=!1,a.midiBuffer.finished(),a.cursorControl&&a.cursorControl.onFinished&&typeof a.cursorControl.onFinished=="function"&&a.cursorControl.onFinished(),a.setProgress(0,1))},a.beatCallback=function(o,l,d,p){var v=o/l;a.setProgress(v,d),a.cursorControl&&a.cursorControl.onBeat&&typeof a.cursorControl.onBeat=="function"&&a.cursorControl.onBeat(o,l,d,p)},a.eventCallback=function(o){if(o)a.cursorControl&&a.cursorControl.onEvent&&typeof a.cursorControl.onEvent=="function"&&a.cursorControl.onEvent(o);else return a.finished()},a.lineEndCallback=function(o,l){a.cursorControl&&a.cursorControl.onLineEnd&&typeof a.cursorControl.onLineEnd=="function"&&a.cursorControl.onLineEnd(o,l)},a.getUrl=function(){return a.midiBuffer.download()},a.download=function(o){var l=a.getUrl(),d=document.createElement("a");document.body.appendChild(d),d.setAttribute("style","display: none;"),d.href=l,d.download=o||"output.wav",d.click(),window.URL.revokeObjectURL(l),document.body.removeChild(d)}}return Ao=t,Ao}var Po,sh;function Cb(){if(sh)return Po;sh=1;var e=xb(),r;return(function(){function n(f,u){for(var h in u)u.hasOwnProperty(h)&&f.setAttribute(h,u[h]);return f}function i(){this.trackstrings="",this.trackcount=0,this.noteOnAndChannel="%90",this.noteOffAndChannel="%80"}i.prototype.setTempo=function(f){this.trackcount===0&&(this.startTrack(),this.track+="%00%FF%51%03"+d(Math.round(6e7/f),6),this.endTrack())},i.prototype.setGlobalInfo=function(f,u,h,c){if(this.trackcount===0){this.startTrack();var m=Math.round(6e7/f);this.track+="%00%FF%51%03"+d(m,6),h&&(this.track+=s(h)),c&&(this.track+=o(c)),u&&(this.track+=a(u,"%01")),this.endTrack()}},i.prototype.startTrack=function(){this.noteWarped={},this.track="",this.trackName="",this.trackInstrument="",this.silencelength=0,this.trackcount++,this.instrument&&this.setInstrument(this.instrument)},i.prototype.endTrack=function(){this.track=this.trackName+this.trackInstrument+this.track;var f=d(this.track.length/3+4,8);this.track="MTrk"+f+this.track+"%00%FF%2F%00",this.trackstrings+=this.track},i.prototype.setText=function(f,u){switch(f){case"name":this.trackName=a(u,"%03");break}},i.prototype.setInstrument=function(f){this.trackInstrument="%00%C0"+d(f,2),this.instrument=f},i.prototype.setChannel=function(f,u){this.channel=f;var h="%00%B"+this.channel.toString(16);this.track+=h+"%79%00",this.track+=h+"%40%00",this.track+=h+"%5B%30",u||(u=0),u=Math.round((u+1)*64),this.track+=h+"%0A"+d(u,2),this.track+=h+"%07%64",this.noteOnAndChannel="%9"+this.channel.toString(16),this.noteOffAndChannel="%8"+this.channel.toString(16)};var t=4096;i.prototype.startNote=function(f,u,h){if(this.track+=v(this.silencelength),this.silencelength=0,h){this.track+="%e"+this.channel.toString(16);var c=Math.round(e(h)*t);this.track+=p(8192+c),this.track+=v(0),this.noteWarped[f]=!0}this.track+=this.noteOnAndChannel,this.track+="%"+f.toString(16)+d(u,2)},i.prototype.endNote=function(f){this.track+=v(this.silencelength),this.silencelength=0,this.noteWarped[f]&&(this.track+="%e"+this.channel.toString(16),this.track+=p(8192),this.track+=v(0),this.noteWarped[f]=!1),this.track+=this.noteOffAndChannel,this.track+="%"+f.toString(16)+"%00"},i.prototype.addRest=function(f){this.silencelength+=f,this.silencelength<0&&(this.silencelength=0)},i.prototype.getData=function(){return"data:audio/midi,MThd%00%00%00%06%00%01"+d(this.trackcount,4)+"%01%e0"+this.trackstrings},i.prototype.embed=function(f,u){var h=this.getData(),c=n(document.createElement("a"),{href:h});if(c.innerHTML="download midi",f.insertBefore(c,f.firstChild),!u){var m=n(document.createElement("embed"),{src:h,type:"video/quicktime",controller:"true",autoplay:"false",loop:"false",enablejavascript:"true",style:"display:block; height: 20px;"});f.insertBefore(m,f.firstChild)}};function a(f,u){for(var h="",c=0;c<f.length;c++)h+=d(f.charCodeAt(c),2);return"%00%FF"+u+d(h.length/3,2)+h}function s(f){if(!f||!f.accidentals)return"";for(var u="%00%FF%59%02",h=0,c=256,m=0;m<f.accidentals.length;m++)f.accidentals[m].acc==="sharp"?h++:f.accidentals[m].acc==="flat"&&c--;var b=d(c!==256?c:h,2),g=f.mode==="m"?"%01":"%00";return u+b+g}function o(f){var u="%00%FF%58%04"+d(f.num,2),h={1:0,2:1,4:2,8:3,16:4,32:5},c=h[f.den];if(!c)return"";u+=d(c,2);var m;switch(f.num+"/"+f.den){case"2/4":case"3/4":case"4/4":case"5/4":m=24;break;case"6/4":m=72;break;case"2/2":case"3/2":case"4/2":m=48;break;case"3/8":case"6/8":case"9/8":case"12/8":m=36;break}return m?(u+=d(m,2),u+"%08"):""}function l(f){for(var u="",h=0;h<f.length;h+=2)u+="%",u+=f.substr(h,2);return u}function d(f,u){var h=f.toString(16);for(h=h.split(".")[0];h.length<u;)h="0"+h;return h.length>u&&(h=h.substring(0,u)),l(h)}function p(f){f=Math.round(f);var u=f%128,h=f-u;return d(h*2+u,4)}function v(f){var u=0,h=[];for(f=Math.round(f);f!==0;)h.push(f&127),f=f>>7;for(var c=h.length-1;c>=0;c--){u=u<<8;var m=h[c];c!==0&&(m=m|128),u=u|m}var b=u.toString(16).length;return b+=b%2,d(u,b)}r=function(){return new i}})(),Po=r,Po}var Oo,oh;function W$(){if(oh)return Oo;oh=1;var e=Cb(),r;return(function(){var n=1920;r=function(a,s){s===void 0&&(s={});var o=a.setUpAudio(s),l=e(),d=a.metaText?a.metaText.title:void 0;d&&d.length>128&&(d=d.substring(0,124)+"...");var p=a.getKeySignature(),v=a.getMeterFraction(),f=o.tempo,u=f/60;if(v.den===8&&v.num!==5&&v.num!==7){var h=a.millisecondsPerMeasure();f=6e4/(h/v.num)/2,u=f/60}l.setGlobalInfo(f,d,p,v);for(var c=0;c<o.tracks.length;c++){l.startTrack();for(var m={},b=0;b<o.tracks[c].length;b++){var g=o.tracks[c][b];switch(g.cmd){case"text":l.setText(g.type,g.text);break;case"program":var w=0;s.pan&&s.pan.length>c&&(w=s.pan[c]),g.instrument===128?(l.setChannel(9,w),l.setInstrument(0)):(l.setChannel(g.channel,w),l.setInstrument(g.instrument));break;case"note":var k=g.gap*u,$=g.start,O=$+g.duration-k;m[$]||(m[$]=[]),m[$].push({pitch:g.pitch,volume:g.volume,cents:g.cents}),m[O]||(m[O]=[]),m[O].push({pitch:g.pitch,volume:0});break;default:console.log("MIDI create Unknown: "+g.cmd)}}i(l,m,n),l.endTrack()}return l.getData()};function i(t,a,s){for(var o=Object.keys(a),l=0;l<o.length;l++)o[l]=parseFloat(o[l]);o.sort(function(c,m){return c-m});for(var d=0,p=0;p<o.length;p++){var v=a[o[p]];if(o[p]>d){var f=(o[p]-d)*s;t.addRest(f),d=o[p]}for(var u=0;u<v.length;u++){var h=v[u];h.volume?t.startNote(h.pitch,h.volume,h.cents):t.endNote(h.pitch)}}}})(),Oo=r,Oo}var Mo,ch;function Y$(){if(ch)return Mo;ch=1;var e=Gi(),r=W$(),n=function(a,s){var o={};if(s)for(var l in s)s.hasOwnProperty(l)&&(o[l]=s[l]);o.generateInline=!1;function d(p,v,f){var u=r(v,o);switch(o.midiOutputType){case"encoded":return u;case"binary":var h=u.replace("data:audio/midi,","");h=h.replace(/MThd/g,"%4d%54%68%64"),h=h.replace(/MTrk/g,"%4d%54%72%6b");for(var c=new ArrayBuffer(h.length/3),m=new Uint8Array(c),b=0;b<h.length/3;b++){var g=b*3+1,w=parseInt(h.substring(g,g+2),16);m[b]=w}return m;case"link":default:return t(v,o,u,f)}}return typeof a=="string"?e.renderEngine(d,"*",a,o):d(null,a,0)};function i(a){var s={};return a&&s.toString.call(a)==="[object Function]"}var t=function(a,s,o,l){var d=["abcjs-download-midi","abcjs-midi-"+l];s.downloadClass&&d.push(s.downloadClass);var p='<div class="'+d.join(" ")+'">';s.preTextDownload&&(p+=s.preTextDownload);var v=a.metaText&&a.metaText.title?a.metaText.title:"Untitled",f;s.downloadLabel&&i(s.downloadLabel)?f=s.downloadLabel(a,l):s.downloadLabel?f=s.downloadLabel.replace(/%T/,v):f='Download MIDI for "'+v+'"',v=v.toLowerCase().replace(/'/g,"").replace(/\W/g,"_").replace(/__/g,"_");var u=s.fileName?s.fileName:v+".midi";return p+='<a download="'+u+'" href="'+o+'">'+f+"</a>",s.postTextDownload&&(p+=s.postTextDownload),p+"</div>"};return Mo=n,Mo}var Do,uh;function zb(){if(uh)return Do;uh=1;try{if(typeof window.CustomEvent!="function"){var e=function(n,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var t=document.createEvent("CustomEvent");return t.initCustomEvent(n,i.bubbles,i.cancelable,i.detail),t};e.prototype=window.Event.prototype,window.CustomEvent=e}}catch{}var r=function(n){this.isEditArea=!0,typeof n=="string"?(this.textarea=document.getElementById(n),this.textarea||(this.textarea=document.querySelector(n))):this.textarea=n,this.initialText=this.textarea.value,this.isDragging=!1};return r.prototype.addSelectionListener=function(n){this.textarea.onmousemove=function(i){this.isDragging&&n.fireSelectionChanged()}},r.prototype.addChangeListener=function(n){this.changelistener=n,this.textarea.onkeyup=function(){n.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,n.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,n.fireChanged()},this.textarea.onchange=function(){n.fireChanged()}},r.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},r.prototype.setSelection=function(n,i){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(n,i);else if(this.textarea.createTextRange){var t=this.textarea.createTextRange();t.collapse(!0),t.moveEnd("character",i),t.moveStart("character",n),t.select()}this.textarea.focus()},r.prototype.getString=function(){return this.textarea.value},r.prototype.setString=function(n){this.textarea.value=n,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},r.prototype.getElem=function(){return this.textarea},Do=r,Do}var Ro,lh;function V$(){if(lh)return Ro;lh=1;var e=Et(),r=Tb(),n=Wi(),i=$b(),t=zb();function a(o){var l={},d;if(o.abcjsParams)for(d in o.abcjsParams)o.abcjsParams.hasOwnProperty(d)&&(l[d]=o.abcjsParams[d]);if(o.midi_options)for(d in o.midi_options)o.midi_options.hasOwnProperty(d)&&(l[d]=o.midi_options[d]);if(o.parser_options)for(d in o.parser_options)o.parser_options.hasOwnProperty(d)&&(l[d]=o.parser_options[d]);if(o.render_options)for(d in o.render_options)o.render_options.hasOwnProperty(d)&&(l[d]=o.render_options[d]);return l.tablature&&o.warnings_id&&(l.tablature.warnings_id=o.warnings_id),l}var s=function(o,l){this.abcjsParams=a(l),l.indicate_changed&&(this.indicate_changed=!0),typeof o=="string"?this.editarea=new t(o):o.isEditArea?this.editarea=o:this.editarea=new t(o),this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),l.canvas_id?this.div=l.canvas_id:l.paper_id?this.div=l.paper_id:(this.div=document.createElement("DIV"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),typeof this.div=="string"&&(this.div=document.getElementById(this.div)),l.selectionChangeCallback&&(this.selectionChangeCallback=l.selectionChangeCallback),this.clientClickListener=this.abcjsParams.clickListener,this.abcjsParams.clickListener=this.highlight.bind(this),l.synth&&n()&&(this.synth={el:l.synth.el,cursorControl:l.synth.cursorControl,options:l.synth.options}),l.generate_midi&&(this.generate_midi=l.generate_midi,this.abcjsParams.generateDownload&&(typeof l.midi_download_id=="string"?this.downloadMidi=document.getElementById(l.midi_download_id):l.midi_download_id&&(this.downloadMidi=l.midi_download_id)),this.abcjsParams.generateInline!==!1&&(typeof l.midi_id=="string"?this.inlineMidi=document.getElementById(l.midi_id):l.midi_id&&(this.inlineMidi=l.midi_id))),l.warnings_id?typeof l.warnings_id=="string"?this.warningsdiv=document.getElementById(l.warnings_id):this.warningsdiv=l.warnings_id:l.generate_warnings&&(this.warningsdiv=document.createElement("div"),this.div.parentNode.insertBefore(this.warningsdiv,this.div)),this.onchangeCallback=l.onchange,this.redrawCallback=l.redrawCallback,this.currentAbc="",this.tunes=[],this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(d,p){var v=function(f,u){var h=f.className;return h.length>0&&(h===u||new RegExp("(^|\\s)"+u+"(\\s|$)").test(h))};return v(d,p)||(d.className+=(d.className?" ":"")+p),d},this.removeClassName=function(d,p){return d.className=e.strip(d.className.replace(new RegExp("(^|\\s+)"+p+"(\\s+|$)")," ")),d},this.setReadOnly=function(d){var p="abc_textarea_readonly",v=this.editarea.getElem();d?(v.setAttribute("readonly","yes"),this.addClassName(v,p)):(v.removeAttribute("readonly"),this.removeClassName(v,p))}};return s.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var o=new window.CustomEvent("generateMidi",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(o)}if(this.synth){var l=this.synth.synthControl;this.synth.synthControl||(this.synth.synthControl=new r,this.synth.synthControl.load(this.synth.el,this.synth.cursorControl,this.synth.options)),this.synth.synthControl.setTune(this.tunes[0],l,this.synth.options)}},s.prototype.modelChanged=function(){if(!this.bReentry){this.bReentry=!0;try{this.timerId=null,this.redrawCallback&&this.redrawCallback(!0),this.synth&&this.synth.synthControl&&this.synth.synthControl.disable(!0),this.tunes=i(this.div,this.currentAbc,this.abcjsParams),this.tunes.length>0&&(this.warnings=this.tunes[0].warnings),this.redrawMidi(),this.redrawCallback&&this.redrawCallback(!1)}catch(o){console.error("ABCJS error: ",o),this.warnings||(this.warnings=[]),this.warnings.push(o.message)}this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join("<br />"):"No errors"),this.updateSelection(),this.bReentry=!1}},s.prototype.paramChanged=function(o){if(o)for(var l in o)o.hasOwnProperty(l)&&(this.abcjsParams[l]=o[l]);this.currentAbc="",this.fireChanged()},s.prototype.getTunes=function(){return this.tunes},s.prototype.synthParamChanged=function(o){if(this.synth){if(this.synth.options={},o)for(var l in o)o.hasOwnProperty(l)&&(this.synth.options[l]=o[l]);this.currentAbc="",this.fireChanged()}},s.prototype.parseABC=function(){var o=this.editarea.getString();return o===this.currentAbc?(this.updateSelection(),!1):(this.currentAbc=o,!0)},s.prototype.updateSelection=function(){var o=this.editarea.getSelection();try{this.tunes.length>0&&this.tunes[0].engraver&&this.tunes[0].engraver.rangeHighlight(o.start,o.end)}catch{}this.selectionChangeCallback&&this.selectionChangeCallback(o.start,o.end)},s.prototype.fireSelectionChanged=function(){this.updateSelection()},s.prototype.setDirtyStyle=function(o){if(this.indicate_changed!==void 0){var l=function(f,u){var h=function(c,m){var b=c.className;return b.length>0&&(b===m||new RegExp("(^|\\s)"+m+"(\\s|$)").test(b))};return h(f,u)||(f.className+=(f.className?" ":"")+u),f},d=function(f,u){return f.className=e.strip(f.className.replace(new RegExp("(^|\\s+)"+u+"(\\s+|$)")," ")),f},p="abc_textarea_dirty",v=this.editarea.getElem();o?l(v,p):d(v,p)}},s.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var o=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){o.modelChanged()},300);var l=this.isDirty();this.wasDirty!==l&&(this.wasDirty=l,this.setDirtyStyle(l)),this.onchangeCallback&&this.onchangeCallback(this)}},s.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},s.prototype.isDirty=function(){return this.indicate_changed===void 0?!1:this.editarea.initialText!==this.editarea.getString()},s.prototype.highlight=function(o,l,d,p,v,f){this.editarea.setSelection(o.startChar,o.endChar),this.selectionChangeCallback&&this.selectionChangeCallback(o.startChar,o.endChar),this.clientClickListener&&this.clientClickListener(o,l,d,p,v,f)},s.prototype.pause=function(o){this.bIsPaused=o,o||this.fireChanged()},s.prototype.millisecondsPerMeasure=function(){return!this.synth||!this.synth.synthControl||!this.synth.synthControl.visualObj?0:this.synth.synthControl.visualObj.millisecondsPerMeasure()},s.prototype.pauseMidi=function(o){this.midiPause=o,o||this.redrawMidi()},Ro=s,Ro}var Lo,fh;function X$(){if(fh)return Lo;fh=1;var e=d7(),r=h7(),n=Gi(),i=ab(),t=A7(),a={};a.signature="abcjs-basic v"+e,Object.keys(r).forEach(function(w){a[w]=r[w]}),Object.keys(n).forEach(function(w){a[w]=n[w]}),a.renderAbc=$b(),a.tuneMetrics=R$(),a.TimingCallbacks=wu();var s=Yt();a.setGlyph=s.setSymbol,a.strTranspose=t;var o=Pu(),l=Nu(),d=Au(),p=Sb(),v=Ib(),f=Ji(),u=Nr(),h=Wi(),c=J$(),m=Tb(),b=Y$(),g=Cb();return a.synth={CreateSynth:o,instrumentIndexToName:l,pitchToNoteName:d,SynthController:m,SynthSequence:p,CreateSynthControl:v,registerAudioContext:f,activeAudioContext:u,supportsAudio:h,playEvent:c,getMidiFile:b,sequence:i,midiRenderer:g},a.Editor=V$(),a.EditArea=zb(),Lo=a,Lo}var K$=X$();const Uo=f7(K$),Qt={visualObj:null,synthControl:null},Nn=document.querySelector(".main"),dh=document.getElementById("status"),hh=document.getElementById("sheet-music"),Zo=document.getElementById("audio-controls");function An(e,r=!1){dh.textContent=e,dh.classList.toggle("error",r)}async function Q$(e){try{if(An("Rendering..."),hh.innerHTML="",Zo.innerHTML="",Qt.visualObj=Uo.renderAbc(hh,e,{responsive:"resize",add_classes:!0}),!Qt.visualObj||Qt.visualObj.length===0)throw new Error("Failed to parse music notation");if(!Uo.synth.supportsAudio())throw new Error("Audio not supported in this browser");Qt.synthControl=new Uo.synth.SynthController,Qt.synthControl.load(Zo,null,{displayLoop:!0,displayPlay:!0,displayProgress:!0}),await Qt.synthControl.setTune(Qt.visualObj[0],!1,{}),An("Ready to play!")}catch(r){console.error("Render error:",r),An(`Error: ${r.message}`,!0),Zo.innerHTML=""}}const qr=new l7({name:"Sheet Music App",version:"1.0.0"});qr.ontoolinput=e=>{var n;console.info("Received tool input:",e);const r=(n=e.arguments)==null?void 0:n.abcNotation;r?Q$(r):An("No ABC notation provided",!0)};qr.onerror=console.error;function Eb(e){e.safeAreaInsets&&(Nn.style.paddingTop=`${e.safeAreaInsets.top}px`,Nn.style.paddingRight=`${e.safeAreaInsets.right}px`,Nn.style.paddingBottom=`${e.safeAreaInsets.bottom}px`,Nn.style.paddingLeft=`${e.safeAreaInsets.left}px`)}qr.onhostcontextchanged=Eb;qr.connect().then(()=>{const e=qr.getHostContext();e&&Eb(e)});</script>
|
|
239
|
+
`,u.innerHTML=$}function p(u,h,c,m,b){var g=!0;if(n()?g=n().state==="suspended":r(),!e())throw{status:"NotSupported",message:"This browser does not support audio."};(g||b)&&c&&c.classList.add("abcjs-loading"),g?n().resume().then(function(){m?m().then(function(w){v(u,h,c,b)}):v(u,h,c,b)}):v(u,h,c,b)}function v(u,h,c,m){m?u(h).then(function(){c&&c.classList.remove("abcjs-loading")}):(u(h),c&&c.classList.remove("abcjs-loading"))}function f(u){var h=!!u.options.loopHandler,c=!!u.options.restartHandler,m=!!u.options.playHandler||!!u.options.playPromiseHandler,b=!!u.options.progressHandler,g=!!u.options.warpHandler,w=u.parent.querySelector(".abcjs-midi-start");h&&u.parent.querySelector(".abcjs-midi-loop").addEventListener("click",function(k){p(u.options.loopHandler,k,w,u.options.afterResume)}),c&&u.parent.querySelector(".abcjs-midi-reset").addEventListener("click",function(k){p(u.options.restartHandler,k,w,u.options.afterResume)}),m&&w.addEventListener("click",function(k){p(u.options.playPromiseHandler||u.options.playHandler,k,w,u.options.afterResume,!!u.options.playPromiseHandler)}),b&&u.parent.querySelector(".abcjs-midi-progress-background").addEventListener("click",function(k){p(u.options.progressHandler,k,w,u.options.afterResume)}),g&&u.parent.querySelector(".abcjs-midi-tempo").addEventListener("change",function(k){p(u.options.warpHandler,k,w,u.options.afterResume)})}return Eo=l,Eo}var No,ih;function J$(){if(ih)return No;ih=1;var e=Sb(),r=Pu(),n=Nr();function i(a,s,o,l,d){for(var p=new e,v=0;v<a.length;v++){var f=a[v],u=p.addTrack();if(p.setInstrument(u,f.instrument),v===0&&s)for(var h=0;h<s.length;h++){var c=s[h];p.appendNote(u,c.pitch,1/64,c.volume,c.cents)}p.appendNote(u,f.pitch,f.duration,f.volume,f.cents)}var m=n();return m.state==="suspended"?m.resume().then(function(){return t(p,o,l,d)}):t(p,o,l,d)}function t(a,s,o,l){var d=new r;return d.init({sequence:a,millisecondsPerMeasure:s,options:{soundFontUrl:o},debugCallback:l}).then(function(){return d.prime()}).then(function(){return d.start(),Promise.resolve()})}return No=i,No}var Ao,ah;function Tb(){if(ah)return Ao;ah=1;var e=Ib(),r=Pu(),n=wu(),i=Nr();function t(){var a=this;a.warp=100,a.cursorControl=null,a.visualObj=null,a.timer=null,a.midiBuffer=null,a.options=null,a.currentTempo=null,a.control=null,a.isLooping=!1,a.isStarted=!1,a.isLoaded=!1,a.isLoading=!1,a.load=function(o,l,d){d||(d={}),d.displayPlay===void 0&&(d.displayPlay=!0),d.displayProgress===void 0&&(d.displayProgress=!0),a.control=new e(o,{loopHandler:d.displayLoop?a.toggleLoop:void 0,restartHandler:d.displayRestart?a.restart:void 0,playPromiseHandler:d.displayPlay?a.play:void 0,progressHandler:d.displayProgress?a.randomAccess:void 0,warpHandler:d.displayWarp?a.onWarp:void 0,afterResume:a.init}),a.cursorControl=l,a.disable(!0)},a.disable=function(o){a.control&&a.control.disable(o)},a.setTune=function(o,l,d){return a.visualObj=o,a.disable(!1),a.options=d||{},a.control&&(a.pause(),a.setProgress(0,1),a.control.resetAll(),a.restart(),a.isStarted=!1),a.isLooping=!1,l?a.go():Promise.resolve({status:"no-audio-context"})},a.go=function(){a.isLoading=!0;var o=a.visualObj.millisecondsPerMeasure()*100/a.warp;a.currentTempo=Math.round(a.visualObj.getBeatsPerMeasure()/o*6e4),a.control&&a.control.setTempo(a.currentTempo),a.percent=0;var l;return a.midiBuffer||(a.midiBuffer=new r),i().resume().then(function(d){return a.midiBuffer.init({visualObj:a.visualObj,options:a.options,millisecondsPerMeasure:o})}).then(function(d){return l=d,a.midiBuffer.prime()}).then(function(){var d=16;return a.cursorControl&&a.cursorControl.beatSubdivisions!==void 0&&parseInt(a.cursorControl.beatSubdivisions,10)>=1&&parseInt(a.cursorControl.beatSubdivisions,10)<=64&&(d=parseInt(a.cursorControl.beatSubdivisions,10)),a.timer=new n(a.visualObj,{beatCallback:a.beatCallback,eventCallback:a.eventCallback,lineEndCallback:a.lineEndCallback,qpm:a.currentTempo,extraMeasuresAtBeginning:a.cursorControl?a.cursorControl.extraMeasuresAtBeginning:void 0,lineEndAnticipation:a.cursorControl?a.cursorControl.lineEndAnticipation:0,beatSubdivisions:d}),a.cursorControl&&a.cursorControl.onReady&&typeof a.cursorControl.onReady=="function"&&a.cursorControl.onReady(a),a.isLoaded=!0,a.isLoading=!1,Promise.resolve({status:"created",notesStatus:l})})},a.destroy=function(){a.timer&&(a.timer.reset(),a.timer.stop(),a.timer=null),a.midiBuffer&&(a.midiBuffer.stop(),a.midiBuffer=null),a.setProgress(0,1),a.control&&a.control.resetAll()},a.play=function(){return a.runWhenReady(a._play,void 0)};function s(o){return new Promise(function(l){setTimeout(l,o)})}a.runWhenReady=function(o,l){return a.visualObj?a.isLoading?s(500).then(function(){return a.isLoading?a.runWhenReady(o,l):o(l)}):a.isLoaded?o(l):a.go().then(function(){return o(l)}):Promise.resolve({status:"loading"})},a._play=function(){return i().resume().then(function(){return a.isStarted=!a.isStarted,a.isStarted?(a.cursorControl&&a.cursorControl.onStart&&typeof a.cursorControl.onStart=="function"&&a.cursorControl.onStart(),a.midiBuffer.start(),a.timer.start(a.percent),a.control&&a.control.pushPlay(!0)):a.pause(),Promise.resolve({status:"ok"})})},a.pause=function(){a.timer&&(a.timer.pause(),a.midiBuffer.pause(),a.control&&a.control.pushPlay(!1))},a.toggleLoop=function(){a.isLooping=!a.isLooping,a.control&&a.control.pushLoop(a.isLooping)},a.restart=function(){a.timer&&(a.timer.setProgress(0),a.midiBuffer.seek(0))},a.randomAccess=function(o){return a.runWhenReady(a._randomAccess,o)},a._randomAccess=function(o){var l=o.target.classList.contains("abcjs-midi-progress-indicator")?o.target.parentNode:o.target,d=(o.x-l.getBoundingClientRect().left)/l.offsetWidth;return d<0&&(d=0),d>1&&(d=1),a.seek(d),Promise.resolve({status:"ok"})},a.seek=function(o,l){a.timer&&a.midiBuffer&&(a.timer.setProgress(o,l),a.midiBuffer.seek(o,l))},a.setWarp=function(o){if(parseInt(o,10)>0){a.warp=parseInt(o,10);var l=a.isStarted,d=a.percent;return a.destroy(),a.isStarted=!1,a.go().then(function(){return a.setProgress(d,a.midiBuffer.duration*1e3),a.control&&a.control.setWarp(a.currentTempo,a.warp),l?a.play().then(function(){return a.seek(d),Promise.resolve()}):(a.seek(d),Promise.resolve())})}return Promise.resolve()},a.onWarp=function(o){var l=o.target.value;return a.setWarp(l)},a.setProgress=function(o,l){a.percent=o,a.control&&a.control.setProgress(o,l)},a.finished=function(){if(a.timer.reset(),a.isLooping)return a.timer.start(0),a.midiBuffer.finished(),a.midiBuffer.start(),"continue";a.timer.stop(),a.isStarted&&(a.control&&a.control.pushPlay(!1),a.isStarted=!1,a.midiBuffer.finished(),a.cursorControl&&a.cursorControl.onFinished&&typeof a.cursorControl.onFinished=="function"&&a.cursorControl.onFinished(),a.setProgress(0,1))},a.beatCallback=function(o,l,d,p){var v=o/l;a.setProgress(v,d),a.cursorControl&&a.cursorControl.onBeat&&typeof a.cursorControl.onBeat=="function"&&a.cursorControl.onBeat(o,l,d,p)},a.eventCallback=function(o){if(o)a.cursorControl&&a.cursorControl.onEvent&&typeof a.cursorControl.onEvent=="function"&&a.cursorControl.onEvent(o);else return a.finished()},a.lineEndCallback=function(o,l){a.cursorControl&&a.cursorControl.onLineEnd&&typeof a.cursorControl.onLineEnd=="function"&&a.cursorControl.onLineEnd(o,l)},a.getUrl=function(){return a.midiBuffer.download()},a.download=function(o){var l=a.getUrl(),d=document.createElement("a");document.body.appendChild(d),d.setAttribute("style","display: none;"),d.href=l,d.download=o||"output.wav",d.click(),window.URL.revokeObjectURL(l),document.body.removeChild(d)}}return Ao=t,Ao}var Po,sh;function Cb(){if(sh)return Po;sh=1;var e=xb(),r;return(function(){function n(f,u){for(var h in u)u.hasOwnProperty(h)&&f.setAttribute(h,u[h]);return f}function i(){this.trackstrings="",this.trackcount=0,this.noteOnAndChannel="%90",this.noteOffAndChannel="%80"}i.prototype.setTempo=function(f){this.trackcount===0&&(this.startTrack(),this.track+="%00%FF%51%03"+d(Math.round(6e7/f),6),this.endTrack())},i.prototype.setGlobalInfo=function(f,u,h,c){if(this.trackcount===0){this.startTrack();var m=Math.round(6e7/f);this.track+="%00%FF%51%03"+d(m,6),h&&(this.track+=s(h)),c&&(this.track+=o(c)),u&&(this.track+=a(u,"%01")),this.endTrack()}},i.prototype.startTrack=function(){this.noteWarped={},this.track="",this.trackName="",this.trackInstrument="",this.silencelength=0,this.trackcount++,this.instrument&&this.setInstrument(this.instrument)},i.prototype.endTrack=function(){this.track=this.trackName+this.trackInstrument+this.track;var f=d(this.track.length/3+4,8);this.track="MTrk"+f+this.track+"%00%FF%2F%00",this.trackstrings+=this.track},i.prototype.setText=function(f,u){switch(f){case"name":this.trackName=a(u,"%03");break}},i.prototype.setInstrument=function(f){this.trackInstrument="%00%C0"+d(f,2),this.instrument=f},i.prototype.setChannel=function(f,u){this.channel=f;var h="%00%B"+this.channel.toString(16);this.track+=h+"%79%00",this.track+=h+"%40%00",this.track+=h+"%5B%30",u||(u=0),u=Math.round((u+1)*64),this.track+=h+"%0A"+d(u,2),this.track+=h+"%07%64",this.noteOnAndChannel="%9"+this.channel.toString(16),this.noteOffAndChannel="%8"+this.channel.toString(16)};var t=4096;i.prototype.startNote=function(f,u,h){if(this.track+=v(this.silencelength),this.silencelength=0,h){this.track+="%e"+this.channel.toString(16);var c=Math.round(e(h)*t);this.track+=p(8192+c),this.track+=v(0),this.noteWarped[f]=!0}this.track+=this.noteOnAndChannel,this.track+="%"+f.toString(16)+d(u,2)},i.prototype.endNote=function(f){this.track+=v(this.silencelength),this.silencelength=0,this.noteWarped[f]&&(this.track+="%e"+this.channel.toString(16),this.track+=p(8192),this.track+=v(0),this.noteWarped[f]=!1),this.track+=this.noteOffAndChannel,this.track+="%"+f.toString(16)+"%00"},i.prototype.addRest=function(f){this.silencelength+=f,this.silencelength<0&&(this.silencelength=0)},i.prototype.getData=function(){return"data:audio/midi,MThd%00%00%00%06%00%01"+d(this.trackcount,4)+"%01%e0"+this.trackstrings},i.prototype.embed=function(f,u){var h=this.getData(),c=n(document.createElement("a"),{href:h});if(c.innerHTML="download midi",f.insertBefore(c,f.firstChild),!u){var m=n(document.createElement("embed"),{src:h,type:"video/quicktime",controller:"true",autoplay:"false",loop:"false",enablejavascript:"true",style:"display:block; height: 20px;"});f.insertBefore(m,f.firstChild)}};function a(f,u){for(var h="",c=0;c<f.length;c++)h+=d(f.charCodeAt(c),2);return"%00%FF"+u+d(h.length/3,2)+h}function s(f){if(!f||!f.accidentals)return"";for(var u="%00%FF%59%02",h=0,c=256,m=0;m<f.accidentals.length;m++)f.accidentals[m].acc==="sharp"?h++:f.accidentals[m].acc==="flat"&&c--;var b=d(c!==256?c:h,2),g=f.mode==="m"?"%01":"%00";return u+b+g}function o(f){var u="%00%FF%58%04"+d(f.num,2),h={1:0,2:1,4:2,8:3,16:4,32:5},c=h[f.den];if(!c)return"";u+=d(c,2);var m;switch(f.num+"/"+f.den){case"2/4":case"3/4":case"4/4":case"5/4":m=24;break;case"6/4":m=72;break;case"2/2":case"3/2":case"4/2":m=48;break;case"3/8":case"6/8":case"9/8":case"12/8":m=36;break}return m?(u+=d(m,2),u+"%08"):""}function l(f){for(var u="",h=0;h<f.length;h+=2)u+="%",u+=f.substr(h,2);return u}function d(f,u){var h=f.toString(16);for(h=h.split(".")[0];h.length<u;)h="0"+h;return h.length>u&&(h=h.substring(0,u)),l(h)}function p(f){f=Math.round(f);var u=f%128,h=f-u;return d(h*2+u,4)}function v(f){var u=0,h=[];for(f=Math.round(f);f!==0;)h.push(f&127),f=f>>7;for(var c=h.length-1;c>=0;c--){u=u<<8;var m=h[c];c!==0&&(m=m|128),u=u|m}var b=u.toString(16).length;return b+=b%2,d(u,b)}r=function(){return new i}})(),Po=r,Po}var Oo,oh;function W$(){if(oh)return Oo;oh=1;var e=Cb(),r;return(function(){var n=1920;r=function(a,s){s===void 0&&(s={});var o=a.setUpAudio(s),l=e(),d=a.metaText?a.metaText.title:void 0;d&&d.length>128&&(d=d.substring(0,124)+"...");var p=a.getKeySignature(),v=a.getMeterFraction(),f=o.tempo,u=f/60;if(v.den===8&&v.num!==5&&v.num!==7){var h=a.millisecondsPerMeasure();f=6e4/(h/v.num)/2,u=f/60}l.setGlobalInfo(f,d,p,v);for(var c=0;c<o.tracks.length;c++){l.startTrack();for(var m={},b=0;b<o.tracks[c].length;b++){var g=o.tracks[c][b];switch(g.cmd){case"text":l.setText(g.type,g.text);break;case"program":var w=0;s.pan&&s.pan.length>c&&(w=s.pan[c]),g.instrument===128?(l.setChannel(9,w),l.setInstrument(0)):(l.setChannel(g.channel,w),l.setInstrument(g.instrument));break;case"note":var k=g.gap*u,$=g.start,O=$+g.duration-k;m[$]||(m[$]=[]),m[$].push({pitch:g.pitch,volume:g.volume,cents:g.cents}),m[O]||(m[O]=[]),m[O].push({pitch:g.pitch,volume:0});break;default:console.log("MIDI create Unknown: "+g.cmd)}}i(l,m,n),l.endTrack()}return l.getData()};function i(t,a,s){for(var o=Object.keys(a),l=0;l<o.length;l++)o[l]=parseFloat(o[l]);o.sort(function(c,m){return c-m});for(var d=0,p=0;p<o.length;p++){var v=a[o[p]];if(o[p]>d){var f=(o[p]-d)*s;t.addRest(f),d=o[p]}for(var u=0;u<v.length;u++){var h=v[u];h.volume?t.startNote(h.pitch,h.volume,h.cents):t.endNote(h.pitch)}}}})(),Oo=r,Oo}var Mo,ch;function Y$(){if(ch)return Mo;ch=1;var e=Gi(),r=W$(),n=function(a,s){var o={};if(s)for(var l in s)s.hasOwnProperty(l)&&(o[l]=s[l]);o.generateInline=!1;function d(p,v,f){var u=r(v,o);switch(o.midiOutputType){case"encoded":return u;case"binary":var h=u.replace("data:audio/midi,","");h=h.replace(/MThd/g,"%4d%54%68%64"),h=h.replace(/MTrk/g,"%4d%54%72%6b");for(var c=new ArrayBuffer(h.length/3),m=new Uint8Array(c),b=0;b<h.length/3;b++){var g=b*3+1,w=parseInt(h.substring(g,g+2),16);m[b]=w}return m;case"link":default:return t(v,o,u,f)}}return typeof a=="string"?e.renderEngine(d,"*",a,o):d(null,a,0)};function i(a){var s={};return a&&s.toString.call(a)==="[object Function]"}var t=function(a,s,o,l){var d=["abcjs-download-midi","abcjs-midi-"+l];s.downloadClass&&d.push(s.downloadClass);var p='<div class="'+d.join(" ")+'">';s.preTextDownload&&(p+=s.preTextDownload);var v=a.metaText&&a.metaText.title?a.metaText.title:"Untitled",f;s.downloadLabel&&i(s.downloadLabel)?f=s.downloadLabel(a,l):s.downloadLabel?f=s.downloadLabel.replace(/%T/,v):f='Download MIDI for "'+v+'"',v=v.toLowerCase().replace(/'/g,"").replace(/\W/g,"_").replace(/__/g,"_");var u=s.fileName?s.fileName:v+".midi";return p+='<a download="'+u+'" href="'+o+'">'+f+"</a>",s.postTextDownload&&(p+=s.postTextDownload),p+"</div>"};return Mo=n,Mo}var Do,uh;function zb(){if(uh)return Do;uh=1;try{if(typeof window.CustomEvent!="function"){var e=function(n,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var t=document.createEvent("CustomEvent");return t.initCustomEvent(n,i.bubbles,i.cancelable,i.detail),t};e.prototype=window.Event.prototype,window.CustomEvent=e}}catch{}var r=function(n){this.isEditArea=!0,typeof n=="string"?(this.textarea=document.getElementById(n),this.textarea||(this.textarea=document.querySelector(n))):this.textarea=n,this.initialText=this.textarea.value,this.isDragging=!1};return r.prototype.addSelectionListener=function(n){this.textarea.onmousemove=function(i){this.isDragging&&n.fireSelectionChanged()}},r.prototype.addChangeListener=function(n){this.changelistener=n,this.textarea.onkeyup=function(){n.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,n.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,n.fireChanged()},this.textarea.onchange=function(){n.fireChanged()}},r.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},r.prototype.setSelection=function(n,i){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(n,i);else if(this.textarea.createTextRange){var t=this.textarea.createTextRange();t.collapse(!0),t.moveEnd("character",i),t.moveStart("character",n),t.select()}this.textarea.focus()},r.prototype.getString=function(){return this.textarea.value},r.prototype.setString=function(n){this.textarea.value=n,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},r.prototype.getElem=function(){return this.textarea},Do=r,Do}var Ro,lh;function V$(){if(lh)return Ro;lh=1;var e=Et(),r=Tb(),n=Wi(),i=$b(),t=zb();function a(o){var l={},d;if(o.abcjsParams)for(d in o.abcjsParams)o.abcjsParams.hasOwnProperty(d)&&(l[d]=o.abcjsParams[d]);if(o.midi_options)for(d in o.midi_options)o.midi_options.hasOwnProperty(d)&&(l[d]=o.midi_options[d]);if(o.parser_options)for(d in o.parser_options)o.parser_options.hasOwnProperty(d)&&(l[d]=o.parser_options[d]);if(o.render_options)for(d in o.render_options)o.render_options.hasOwnProperty(d)&&(l[d]=o.render_options[d]);return l.tablature&&o.warnings_id&&(l.tablature.warnings_id=o.warnings_id),l}var s=function(o,l){this.abcjsParams=a(l),l.indicate_changed&&(this.indicate_changed=!0),typeof o=="string"?this.editarea=new t(o):o.isEditArea?this.editarea=o:this.editarea=new t(o),this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),l.canvas_id?this.div=l.canvas_id:l.paper_id?this.div=l.paper_id:(this.div=document.createElement("DIV"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),typeof this.div=="string"&&(this.div=document.getElementById(this.div)),l.selectionChangeCallback&&(this.selectionChangeCallback=l.selectionChangeCallback),this.clientClickListener=this.abcjsParams.clickListener,this.abcjsParams.clickListener=this.highlight.bind(this),l.synth&&n()&&(this.synth={el:l.synth.el,cursorControl:l.synth.cursorControl,options:l.synth.options}),l.generate_midi&&(this.generate_midi=l.generate_midi,this.abcjsParams.generateDownload&&(typeof l.midi_download_id=="string"?this.downloadMidi=document.getElementById(l.midi_download_id):l.midi_download_id&&(this.downloadMidi=l.midi_download_id)),this.abcjsParams.generateInline!==!1&&(typeof l.midi_id=="string"?this.inlineMidi=document.getElementById(l.midi_id):l.midi_id&&(this.inlineMidi=l.midi_id))),l.warnings_id?typeof l.warnings_id=="string"?this.warningsdiv=document.getElementById(l.warnings_id):this.warningsdiv=l.warnings_id:l.generate_warnings&&(this.warningsdiv=document.createElement("div"),this.div.parentNode.insertBefore(this.warningsdiv,this.div)),this.onchangeCallback=l.onchange,this.redrawCallback=l.redrawCallback,this.currentAbc="",this.tunes=[],this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(d,p){var v=function(f,u){var h=f.className;return h.length>0&&(h===u||new RegExp("(^|\\s)"+u+"(\\s|$)").test(h))};return v(d,p)||(d.className+=(d.className?" ":"")+p),d},this.removeClassName=function(d,p){return d.className=e.strip(d.className.replace(new RegExp("(^|\\s+)"+p+"(\\s+|$)")," ")),d},this.setReadOnly=function(d){var p="abc_textarea_readonly",v=this.editarea.getElem();d?(v.setAttribute("readonly","yes"),this.addClassName(v,p)):(v.removeAttribute("readonly"),this.removeClassName(v,p))}};return s.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var o=new window.CustomEvent("generateMidi",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(o)}if(this.synth){var l=this.synth.synthControl;this.synth.synthControl||(this.synth.synthControl=new r,this.synth.synthControl.load(this.synth.el,this.synth.cursorControl,this.synth.options)),this.synth.synthControl.setTune(this.tunes[0],l,this.synth.options)}},s.prototype.modelChanged=function(){if(!this.bReentry){this.bReentry=!0;try{this.timerId=null,this.redrawCallback&&this.redrawCallback(!0),this.synth&&this.synth.synthControl&&this.synth.synthControl.disable(!0),this.tunes=i(this.div,this.currentAbc,this.abcjsParams),this.tunes.length>0&&(this.warnings=this.tunes[0].warnings),this.redrawMidi(),this.redrawCallback&&this.redrawCallback(!1)}catch(o){console.error("ABCJS error: ",o),this.warnings||(this.warnings=[]),this.warnings.push(o.message)}this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join("<br />"):"No errors"),this.updateSelection(),this.bReentry=!1}},s.prototype.paramChanged=function(o){if(o)for(var l in o)o.hasOwnProperty(l)&&(this.abcjsParams[l]=o[l]);this.currentAbc="",this.fireChanged()},s.prototype.getTunes=function(){return this.tunes},s.prototype.synthParamChanged=function(o){if(this.synth){if(this.synth.options={},o)for(var l in o)o.hasOwnProperty(l)&&(this.synth.options[l]=o[l]);this.currentAbc="",this.fireChanged()}},s.prototype.parseABC=function(){var o=this.editarea.getString();return o===this.currentAbc?(this.updateSelection(),!1):(this.currentAbc=o,!0)},s.prototype.updateSelection=function(){var o=this.editarea.getSelection();try{this.tunes.length>0&&this.tunes[0].engraver&&this.tunes[0].engraver.rangeHighlight(o.start,o.end)}catch{}this.selectionChangeCallback&&this.selectionChangeCallback(o.start,o.end)},s.prototype.fireSelectionChanged=function(){this.updateSelection()},s.prototype.setDirtyStyle=function(o){if(this.indicate_changed!==void 0){var l=function(f,u){var h=function(c,m){var b=c.className;return b.length>0&&(b===m||new RegExp("(^|\\s)"+m+"(\\s|$)").test(b))};return h(f,u)||(f.className+=(f.className?" ":"")+u),f},d=function(f,u){return f.className=e.strip(f.className.replace(new RegExp("(^|\\s+)"+u+"(\\s+|$)")," ")),f},p="abc_textarea_dirty",v=this.editarea.getElem();o?l(v,p):d(v,p)}},s.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var o=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){o.modelChanged()},300);var l=this.isDirty();this.wasDirty!==l&&(this.wasDirty=l,this.setDirtyStyle(l)),this.onchangeCallback&&this.onchangeCallback(this)}},s.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},s.prototype.isDirty=function(){return this.indicate_changed===void 0?!1:this.editarea.initialText!==this.editarea.getString()},s.prototype.highlight=function(o,l,d,p,v,f){this.editarea.setSelection(o.startChar,o.endChar),this.selectionChangeCallback&&this.selectionChangeCallback(o.startChar,o.endChar),this.clientClickListener&&this.clientClickListener(o,l,d,p,v,f)},s.prototype.pause=function(o){this.bIsPaused=o,o||this.fireChanged()},s.prototype.millisecondsPerMeasure=function(){return!this.synth||!this.synth.synthControl||!this.synth.synthControl.visualObj?0:this.synth.synthControl.visualObj.millisecondsPerMeasure()},s.prototype.pauseMidi=function(o){this.midiPause=o,o||this.redrawMidi()},Ro=s,Ro}var Lo,fh;function X$(){if(fh)return Lo;fh=1;var e=d7(),r=h7(),n=Gi(),i=ab(),t=A7(),a={};a.signature="abcjs-basic v"+e,Object.keys(r).forEach(function(w){a[w]=r[w]}),Object.keys(n).forEach(function(w){a[w]=n[w]}),a.renderAbc=$b(),a.tuneMetrics=R$(),a.TimingCallbacks=wu();var s=Yt();a.setGlyph=s.setSymbol,a.strTranspose=t;var o=Pu(),l=Nu(),d=Au(),p=Sb(),v=Ib(),f=Ji(),u=Nr(),h=Wi(),c=J$(),m=Tb(),b=Y$(),g=Cb();return a.synth={CreateSynth:o,instrumentIndexToName:l,pitchToNoteName:d,SynthController:m,SynthSequence:p,CreateSynthControl:v,registerAudioContext:f,activeAudioContext:u,supportsAudio:h,playEvent:c,getMidiFile:b,sequence:i,midiRenderer:g},a.Editor=V$(),a.EditArea=zb(),Lo=a,Lo}var K$=X$();const Uo=f7(K$),Qt={visualObj:null,synthControl:null},Nn=document.querySelector(".main"),dh=document.getElementById("status"),hh=document.getElementById("sheet-music"),Zo=document.getElementById("audio-controls");"audioSession"in navigator&&(navigator.audioSession.type="playback");function An(e,r=!1){dh.textContent=e,dh.classList.toggle("error",r)}async function Q$(e){try{if(An("Rendering..."),hh.innerHTML="",Zo.innerHTML="",Qt.visualObj=Uo.renderAbc(hh,e,{responsive:"resize",add_classes:!0}),!Qt.visualObj||Qt.visualObj.length===0)throw new Error("Failed to parse music notation");if(!Uo.synth.supportsAudio())throw new Error("Audio not supported in this browser");Qt.synthControl=new Uo.synth.SynthController,Qt.synthControl.load(Zo,null,{displayLoop:!0,displayPlay:!0,displayProgress:!0}),await Qt.synthControl.setTune(Qt.visualObj[0],!1,{}),An("Ready to play!")}catch(r){console.error("Render error:",r),An(`Error: ${r.message}`,!0),Zo.innerHTML=""}}const qr=new l7({name:"Sheet Music App",version:"1.0.0"});qr.ontoolinput=e=>{var n;console.info("Received tool input:",e);const r=(n=e.arguments)==null?void 0:n.abcNotation;r?Q$(r):An("No ABC notation provided",!0)};qr.onerror=console.error;function Eb(e){e.safeAreaInsets&&(Nn.style.paddingTop=`${e.safeAreaInsets.top}px`,Nn.style.paddingRight=`${e.safeAreaInsets.right}px`,Nn.style.paddingBottom=`${e.safeAreaInsets.bottom}px`,Nn.style.paddingLeft=`${e.safeAreaInsets.left}px`)}qr.onhostcontextchanged=Eb;qr.connect().then(()=>{const e=qr.getHostContext();e&&Eb(e)});</script>
|
|
240
240
|
<style rel="stylesheet" crossorigin>.abcjs-inline-audio{height:26px;padding:0 5px;border-radius:3px;background-color:#424242;display:flex;align-items:center;box-sizing:border-box}.abcjs-inline-audio.abcjs-disabled{opacity:.5}.abcjs-inline-audio .abcjs-btn{display:block;width:28px;height:34px;margin-right:2px;padding:7px 4px;background:none!important;border:1px solid transparent;box-sizing:border-box;line-height:1}.abcjs-btn g{fill:#f4f4f4;stroke:#f4f4f4}.abcjs-inline-audio .abcjs-btn:hover g{fill:#ccc;stroke:#ccc}.abcjs-inline-audio .abcjs-midi-selection.abcjs-pushed,.abcjs-inline-audio .abcjs-midi-loop.abcjs-pushed,.abcjs-inline-audio .abcjs-midi-reset.abcjs-pushed{border:1px solid #cccccc;background-color:#666;box-sizing:border-box}.abcjs-inline-audio .abcjs-midi-start .abcjs-pause-svg,.abcjs-inline-audio .abcjs-midi-start .abcjs-loading-svg,.abcjs-inline-audio .abcjs-midi-start.abcjs-pushed .abcjs-play-svg,.abcjs-inline-audio .abcjs-midi-start.abcjs-loading .abcjs-play-svg{display:none}.abcjs-inline-audio .abcjs-midi-start.abcjs-pushed .abcjs-pause-svg{display:block}.abcjs-inline-audio .abcjs-midi-progress-background{background-color:#424242;height:10px;border-radius:5px;border:2px solid #cccccc;margin:0 8px 0 15px;position:relative;flex:1;padding:0;box-sizing:border-box}.abcjs-inline-audio .abcjs-midi-progress-indicator{width:20px;margin-left:-10px;height:14px;background-color:#f4f4f4;position:absolute;display:inline-block;border-radius:6px;top:-4px;left:0;box-sizing:border-box}.abcjs-inline-audio .abcjs-midi-clock{margin-left:4px;margin-top:1px;margin-right:2px;display:inline-block;font-family:sans-serif;font-size:16px;box-sizing:border-box;color:#f4f4f4}.abcjs-inline-audio .abcjs-tempo-wrapper{font-size:10px;color:#f4f4f4;box-sizing:border-box;display:flex;align-items:center}.abcjs-inline-audio .abcjs-midi-tempo{border-radius:2px;border:none;margin:0 2px 0 4px;width:42px;padding-left:2px;box-sizing:border-box}.abcjs-inline-audio .abcjs-loading .abcjs-loading-svg{display:inherit}.abcjs-inline-audio .abcjs-loading{outline:none;animation-name:abcjs-spin;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear}.abcjs-inline-audio .abcjs-loading-svg circle{stroke:#f4f4f4}@keyframes abcjs-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.abcjs-large .abcjs-inline-audio{height:52px}.abcjs-large .abcjs-btn{width:56px;height:52px;font-size:28px;padding:6px 8px}.abcjs-large .abcjs-midi-progress-background{height:20px;border:4px solid #cccccc}.abcjs-large .abcjs-midi-progress-indicator{height:28px;top:-8px;width:40px}.abcjs-large .abcjs-midi-clock{font-size:32px;margin-right:10px;margin-left:10px;margin-top:-1px}.abcjs-large .abcjs-midi-tempo{font-size:20px;width:50px}.abcjs-large .abcjs-tempo-wrapper{font-size:20px}.abcjs-css-warning{display:none}*{box-sizing:border-box}html,body{font-family:system-ui,-apple-system,sans-serif;font-size:1rem}code{font-size:1em}:root{--color-bg: #ffffff;--color-text: #1f2937;--color-text-muted: #6b7280;--color-primary: #2563eb;--color-success: #10b981;--color-danger: #ef4444;--color-card-bg: #f9fafb;--color-border: #e5e7eb}@media(prefers-color-scheme:dark){:root{--color-bg: #111827;--color-text: #f9fafb;--color-text-muted: #9ca3af;--color-primary: #3b82f6;--color-success: #34d399;--color-danger: #f87171;--color-card-bg: #1f2937;--color-border: #374151}}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-text)}.main{width:100%;margin:0 auto;padding:8px;display:flex;flex-direction:column;gap:8px}#audio-controls:empty{display:none}#audio-controls:not(:empty)~#status{display:none}.audio-controls{width:100%}.audio-controls .abcjs-inline-audio{border-radius:8px}.audio-controls .abcjs-inline-audio .abcjs-midi-loop.abcjs-pushed{background-color:var(--color-success)!important;border-color:var(--color-success)!important}.status{font-size:.875rem;color:var(--color-text-muted)}.status.error{color:var(--color-danger)}.sheet-section{background:var(--color-card-bg);border-radius:8px;padding:16px;border:1px solid var(--color-border);min-height:500px}.sheet-section .sheet-music-container{width:100%;overflow-x:auto}</style>
|
|
241
241
|
</head>
|
|
242
242
|
<body>
|