├── .gitmodules ├── index.html ├── js ├── alda.js ├── app.js ├── log.js ├── player.js └── processor.js └── style.css /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "MIDI.js"] 2 | path = MIDI.js 3 | url = https://github.com/mudcube/MIDI.js.git 4 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |

24 |

Download MusicXML

25 |

26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /js/alda.js: -------------------------------------------------------------------------------- 1 | if(typeof Math.imul == "undefined" || (Math.imul(0xffffffff,5) == 0)) { 2 | Math.imul = function (a, b) { 3 | var ah = (a >>> 16) & 0xffff; 4 | var al = a & 0xffff; 5 | var bh = (b >>> 16) & 0xffff; 6 | var bl = b & 0xffff; 7 | // the shift by 0 fixes the sign on the high part 8 | // the final |0 converts the unsigned value into a signed value 9 | return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); 10 | } 11 | } 12 | 13 | 14 | var g,ba=this;function ca(b,a){var c=b.split("."),d=ba;c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)c.length||void 0===a?d=d[e]?d[e]:d[e]={}:d[e]=a} 15 | function m(b){var a=typeof b;if("object"==a)if(b){if(b instanceof Array)return"array";if(b instanceof Object)return a;var c=Object.prototype.toString.call(b);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof b.length&&"undefined"!=typeof b.splice&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof b.call&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("call"))return"function"}else return"null"; 16 | else if("function"==a&&"undefined"==typeof b.call)return"object";return a}var da="closure_uid_"+(1E9*Math.random()>>>0),ea=0;function fa(b,a){for(var c in b)a.call(void 0,b[c],c,b)};function ga(b,a){null!=b&&this.append.apply(this,arguments)}g=ga.prototype;g.rb="";g.set=function(b){this.rb=""+b};g.append=function(b,a,c){this.rb+=b;if(null!=a)for(var d=1;da?1:b>>16&65535)*d+c*(a>>>16&65535)<<16>>>0)|0};function Tb(b){b=Sb(b|0,-862048943);return Sb(b<<15|b>>>-15,461845907)}function Vb(b,a){var c=(b|0)^(a|0);return Sb(c<<13|c>>>-13,5)+-430675100|0}function Wb(b,a){var c=(b|0)^a,c=Sb(c^c>>>16,-2048144789),c=Sb(c^c>>>13,-1028477387);return c^c>>>16} 45 | function Xb(b){var a;a:{a=1;for(var c=0;;)if(a>2)}function dc(b,a){if(b.Xa===a.Xa)return 0;var c=va(b.Aa);if(q(c?a.Aa:c))return-1;if(q(b.Aa)){if(va(a.Aa))return 1;c=ha(b.Aa,a.Aa);return 0===c?ha(b.name,a.name):c}return ha(b.name,a.name)} 47 | function ec(b,a,c,d,e){this.Aa=b;this.name=a;this.Xa=c;this.Eb=d;this.Ba=e;this.m=2154168321;this.G=4096}g=ec.prototype;g.toString=function(){return this.Xa};g.equiv=function(b){return this.B(null,b)};g.B=function(b,a){return a instanceof ec?this.Xa===a.Xa:!1}; 48 | g.call=function(){function b(a,b,c){return fc?fc(b,this,c):hc.call(null,b,this,c)}function a(a,b){return x?x(b,this):hc.call(null,b,this)}var c=null,c=function(c,e,f){switch(arguments.length){case 2:return a.call(this,0,e);case 3:return b.call(this,0,e,f)}throw Error("Invalid arity: "+arguments.length);};c.b=a;c.c=b;return c}();g.apply=function(b,a){return this.call.apply(this,[this].concat(ya(a)))};g.a=function(b){return x?x(b,this):hc.call(null,b,this)}; 49 | g.b=function(b,a){return fc?fc(b,this,a):hc.call(null,b,this,a)};g.U=function(){return this.Ba};g.V=function(b,a){return new ec(this.Aa,this.name,this.Xa,this.Eb,a)};g.T=function(){var b=this.Eb;return null!=b?b:this.Eb=b=cc(Xb(this.name),$b(this.Aa))};g.P=function(b,a){return wb(a,this.Xa)}; 50 | function A(b){if(null==b)return null;if(null!=b&&(b.m&8388608||b.Pc))return b.Y(null);if(ua(b)||"string"===typeof b)return 0===b.length?null:new C(b,0);if(r(pb,b))return qb(b);throw Error([u(b),u(" is not ISeqable")].join(""));}function D(b){if(null==b)return null;if(null!=b&&(b.m&64||b.wa))return b.ga(null);b=A(b);return null==b?null:La(b)}function ic(b){return null!=b?null!=b&&(b.m&64||b.wa)?b.ra(null):(b=A(b))?Ma(b):jc:jc} 51 | function F(b){return null==b?null:null!=b&&(b.m&128||b.ac)?b.ya(null):A(ic(b))}var G=function G(){for(var a=[],c=arguments.length,d=0;;)if(db?0:b};g.Hb=function(){var b=Ga(this);return 0d)c=1;else if(0===c)c=0;else a:for(d=0;;){var e=hd(Nc(b,d),Nc(a,d));if(0===e&&d+1a};nd.h=function(b,a,c){for(;;)if(b>a)if(F(c))b=a,a=D(c),c=F(c);else return a>D(c);else return!1};nd.C=function(b){var a=D(b),c=F(b);b=D(c);c=F(c);return nd.h(a,b,c)};nd.D=2; 95 | function od(b){if("number"===typeof b)return String.fromCharCode(b);if("string"===typeof b&&1===b.length)return b;throw Error("Argument to char must be a character or number");}function pd(b){return 0<=b?Math.floor(b):Math.ceil(b)}function qd(b){return pd((b-b%2)/2)}function rd(b){b-=b>>1&1431655765;b=(b&858993459)+(b>>2&858993459);return 16843009*(b+(b>>4)&252645135)>>24}function sd(b){var a=1;for(b=A(b);;)if(b&&0b?0:b-1>>>5<<5}function Ke(b,a,c){for(;;){if(0===a)return c;var d=He(b);d.g[0]=c;c=d;a-=5}}var Le=function Le(a,c,d,e){var f=Ie(d),h=a.l-1>>>c&31;5===c?f.g[h]=e:(d=d.g[h],a=null!=d?Le(a,c-5,d,e):Ke(null,c-5,e),f.g[h]=a);return f};function Me(b,a){throw Error([u("No item "),u(b),u(" in vector of length "),u(a)].join(""));} 168 | function Ne(b,a){if(a>=Je(b))return b.va;for(var c=b.root,d=b.shift;;)if(0>>d&31],d=e;else return c.g}function Oe(b,a){return 0<=a&&a>>c&31;a=Pe(a,c-5,d.g[k],e,f);h.g[k]=a}return h},Qe=function Qe(a,c,d){var e=a.l-2>>>c&31;if(5=this.l)return new C(this.va,0);var b;a:{b=this.root;for(var a=this.shift;;)if(0this.l-Je(this)){for(var c=this.va.length,d=Array(c+1),e=0;;)if(e>>5>1<a)b=new S(null,a,5,T,b,null);else for(var c=32,d=(new S(null,32,5,T,b.slice(0,32),null)).Gb(null);;)if(ca||this.end<=this.start+a?Me(a,this.end-this.start):w.b(this.S,this.start+a)}; 186 | g.xa=function(b,a,c){return 0>a||this.end<=this.start+a?c:w.c(this.S,this.start+a,c)};g.lb=function(b,a,c){var d=this.start+a;b=this.v;c=M.c(this.S,d,c);a=this.start;var e=this.end,d=d+1,d=e>d?e:d;return cf.O?cf.O(b,c,a,d,null):cf.call(null,b,c,a,d,null)};g.U=function(){return this.v};g.Z=function(){return this.end-this.start};g.Ua=function(){return w.b(this.S,this.end-1)}; 187 | g.Va=function(){if(this.start===this.end)throw Error("Can't pop empty vector");var b=this.v,a=this.S,c=this.start,d=this.end-1;return cf.O?cf.O(b,a,c,d,null):cf.call(null,b,a,c,d,null)};g.Hb=function(){return this.start!==this.end?new Bc(this,this.end-this.start-1,null):null};g.T=function(){var b=this.o;return null!=b?b:this.o=b=nc(this)};g.B=function(b,a){return Cc(this,a)};g.ba=function(){return Ec(Kc,this.v)};g.ka=function(b,a){return tc(this,a)};g.la=function(b,a,c){return uc(this,a,c)}; 188 | g.Ka=function(b,a,c){if("number"===typeof a)return cb(this,a,c);throw Error("Subvec's key for assoc must be a number.");};g.Y=function(){var b=this;return function(a){return function d(e){return e===b.end?null:I(w.b(b.S,e),new Fd(null,function(){return function(){return d(e+1)}}(a),null,null))}}(this)(b.start)};g.V=function(b,a){return cf.O?cf.O(a,this.S,this.start,this.end,this.o):cf.call(null,a,this.S,this.start,this.end,this.o)}; 189 | g.X=function(b,a){var c=this.v,d=cb(this.S,this.end,a),e=this.start,f=this.end+1;return cf.O?cf.O(c,d,e,f,null):cf.call(null,c,d,e,f,null)};g.call=function(){var b=null,b=function(a,b,d){switch(arguments.length){case 2:return this.N(null,b);case 3:return this.xa(null,b,d)}throw Error("Invalid arity: "+arguments.length);};b.b=function(a,b){return this.N(null,b)};b.c=function(a,b,d){return this.xa(null,b,d)};return b}();g.apply=function(b,a){return this.call.apply(this,[this].concat(ya(a)))}; 190 | g.a=function(b){return this.N(null,b)};g.b=function(b,a){return this.xa(null,b,a)};bf.prototype[xa]=function(){return lc(this)};function cf(b,a,c,d,e){for(;;)if(a instanceof bf)c=a.start+c,d=a.start+d,a=a.S;else{var f=K(a);if(0>c||0>d||c>f||d>f)throw Error("Index out of bounds");return new bf(b,a,c,d,e)}} 191 | function $e(){for(var b=[],a=arguments.length,c=0;;)if(c>>c&31;if(5===c)a=e;else{var h=d.g[f];a=null!=h?ef(a,c-5,h,e):Ke(a.root.$,c-5,e)}d.g[f]=a;return d};function Se(b,a,c,d){this.l=b;this.shift=a;this.root=c;this.va=d;this.G=88;this.m=275}g=Se.prototype; 193 | g.xb=function(b,a){if(this.root.$){if(32>this.l-Je(this))this.va[this.l&31]=a;else{var c=new Ge(this.root.$,this.va),d=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];d[0]=a;this.va=d;if(this.l>>>5>1<>>b&31,v=f(b-5,l.g[n]);l.g[n]=v}return l}}(this).call(null,d.shift,d.root),d.root=b),this;if(a===d.l)return Bb(this,c);throw Error([u("Index "),u(a),u(" out of bounds for TransientVector of length"),u(d.l)].join(""));}throw Error("assoc! after persistent!");}; 197 | g.Z=function(){if(this.root.$)return this.l;throw Error("count after persistent!");};g.N=function(b,a){if(this.root.$)return Oe(this,a)[a&31];throw Error("nth after persistent!");};g.xa=function(b,a,c){return 0<=a&&a=c)return new p(this.v,this.l-1,d,null);G.b(a,this.g[e])||(d[f]=this.g[e],d[f+1]=this.g[e+1],f+=2);e+=2}}else return this}; 213 | g.Ka=function(b,a,c){b=sf(this.g,a);if(-1===b){if(this.la?4:2*(a+1));ad(this.g,0,c,0,2*a);return new If(b,this.da,c)}; 222 | g.Sb=function(){return Jf?Jf(this.g):Kf.call(null,this.g)};g.ub=function(b,a,c,d){var e=1<<(a>>>b&31);if(0===(this.da&e))return d;var f=rd(this.da&e-1),e=this.g[2*f],f=this.g[2*f+1];return null==e?f.ub(b+5,a,c,d):Df(c,e)?f:d}; 223 | g.Pa=function(b,a,c,d,e,f){var h=1<<(c>>>a&31),k=rd(this.da&h-1);if(0===(this.da&h)){var l=rd(this.da);if(2*l>>a&31]=Lf.Pa(b,a+5,c,d,e,f);for(e=d=0;;)if(32>d)0!== 224 | (this.da>>>d&1)&&(k[d]=null!=this.g[e]?Lf.Pa(b,a+5,bc(this.g[e]),this.g[e],this.g[e+1],f):this.g[e+1],e+=2),d+=1;else break;return new Mf(b,l+1,k)}a=Array(2*(l+4));ad(this.g,0,a,0,2*k);a[2*k]=d;a[2*k+1]=e;ad(this.g,2*k,a,2*(k+1),2*(l-k));f.A=!0;b=this.yb(b);b.g=a;b.da|=h;return b}l=this.g[2*k];h=this.g[2*k+1];if(null==l)return l=h.Pa(b,a+5,c,d,e,f),l===h?this:Gf(this,b,2*k+1,l);if(Df(d,l))return e===h?this:Gf(this,b,2*k+1,e);f.A=!0;f=a+5;d=Nf?Nf(b,f,l,h,c,d,e):Of.call(null,b,f,l,h,c,d,e);e=2*k;k= 225 | 2*k+1;b=this.yb(b);b.g[e]=null;b.g[k]=d;return b}; 226 | g.Oa=function(b,a,c,d,e){var f=1<<(a>>>b&31),h=rd(this.da&f-1);if(0===(this.da&f)){var k=rd(this.da);if(16<=k){h=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];h[a>>>b&31]=Lf.Oa(b+5,a,c,d,e);for(d=c=0;;)if(32>c)0!==(this.da>>>c&1)&&(h[c]=null!=this.g[d]?Lf.Oa(b+5,bc(this.g[d]),this.g[d],this.g[d+1],e):this.g[d+1],d+=2),c+=1;else break;return new Mf(null,k+1,h)}b=Array(2*(k+1));ad(this.g, 227 | 0,b,0,2*h);b[2*h]=c;b[2*h+1]=d;ad(this.g,2*h,b,2*(h+1),2*(k-h));e.A=!0;return new If(null,this.da|f,b)}var l=this.g[2*h],f=this.g[2*h+1];if(null==l)return k=f.Oa(b+5,a,c,d,e),k===f?this:new If(null,this.da,Ef(this.g,2*h+1,k));if(Df(c,l))return d===f?this:new If(null,this.da,Ef(this.g,2*h+1,d));e.A=!0;e=this.da;k=this.g;b+=5;b=Pf?Pf(b,l,f,a,c,d):Of.call(null,b,l,f,a,c,d);c=2*h;h=2*h+1;d=ya(k);d[c]=null;d[h]=b;return new If(null,e,d)}; 228 | g.Tb=function(b,a,c){var d=1<<(a>>>b&31);if(0===(this.da&d))return this;var e=rd(this.da&d-1),f=this.g[2*e],h=this.g[2*e+1];return null==f?(b=h.Tb(b+5,a,c),b===h?this:null!=b?new If(null,this.da,Ef(this.g,2*e+1,b)):this.da===d?null:new If(null,this.da^d,Ff(this.g,e))):Df(c,f)?new If(null,this.da^d,Ff(this.g,e)):this};g.Ga=function(){return new Hf(this.g,0,null,null)};var Lf=new If(null,0,[]);function Qf(b,a,c){this.g=b;this.w=a;this.Qa=c} 229 | Qf.prototype.pa=function(){for(var b=this.g.length;;){if(null!=this.Qa&&this.Qa.pa())return!0;if(this.w>>b&31];return null!=e?e.ub(b+5,a,c,d):d};g.Pa=function(b,a,c,d,e,f){var h=c>>>a&31,k=this.g[h];if(null==k)return b=Gf(this,b,h,Lf.Pa(b,a+5,c,d,e,f)),b.l+=1,b;a=k.Pa(b,a+5,c,d,e,f);return a===k?this:Gf(this,b,h,a)}; 231 | g.Oa=function(b,a,c,d,e){var f=a>>>b&31,h=this.g[f];if(null==h)return new Mf(null,this.l+1,Ef(this.g,f,Lf.Oa(b+5,a,c,d,e)));b=h.Oa(b+5,a,c,d,e);return b===h?this:new Mf(null,this.l,Ef(this.g,f,b))}; 232 | g.Tb=function(b,a,c){var d=a>>>b&31,e=this.g[d];if(null!=e){b=e.Tb(b+5,a,c);if(b===e)d=this;else if(null==b)if(8>=this.l)a:{e=this.g;b=e.length;a=Array(2*(this.l-1));c=0;for(var f=1,h=0;;)if(cb?d:Df(c,this.g[b])?this.g[b+1]:d}; 234 | g.Pa=function(b,a,c,d,e,f){if(c===this.mb){a=Tf(this.g,this.l,d);if(-1===a){if(this.g.length>2*this.l)return a=2*this.l,c=2*this.l+1,b=this.yb(b),b.g[a]=d,b.g[c]=e,f.A=!0,b.l+=1,b;c=this.g.length;a=Array(c+2);ad(this.g,0,a,0,c);a[c]=d;a[c+1]=e;f.A=!0;d=this.l+1;b===this.$?(this.g=a,this.l=d,b=this):b=new Uf(this.$,this.mb,d,a);return b}return this.g[a+1]===e?this:Gf(this,b,a+1,e)}return(new If(b,1<<(this.mb>>>a&31),[null,this,null,null])).Pa(b,a,c,d,e,f)}; 235 | g.Oa=function(b,a,c,d,e){return a===this.mb?(b=Tf(this.g,this.l,c),-1===b?(b=2*this.l,a=Array(b+2),ad(this.g,0,a,0,b),a[b]=c,a[b+1]=d,e.A=!0,new Uf(null,this.mb,this.l+1,a)):G.b(this.g[b],d)?this:new Uf(null,this.mb,this.l,Ef(this.g,b+1,d))):(new If(null,1<<(this.mb>>>b&31),[null,this])).Oa(b,a,c,d,e)};g.Tb=function(b,a,c){b=Tf(this.g,this.l,c);return-1===b?this:1===this.l?null:new Uf(null,this.mb,this.l-1,Ff(this.g,qd(b)))};g.Ga=function(){return new Hf(this.g,0,null,null)}; 236 | function Of(){for(var b=[],a=arguments.length,c=0;;)if(cthis.l?K(F(this))+1:this.l};g.T=function(){var b=this.o;return null!=b?b:this.o=b=nc(this)}; 255 | g.B=function(b,a){return Cc(this,a)};g.ba=function(){return Ec(jc,this.v)};g.ka=function(b,a){return Fc(a,this)};g.la=function(b,a,c){return Hc(a,c,this)};g.ga=function(){return Sc(this.stack)};g.ra=function(){var b=D(this.stack),b=cg(this.Xb?b.right:b.left,F(this.stack),this.Xb);return null!=b?new dg(null,b,this.Xb,this.l-1,null):jc};g.Y=function(){return this};g.V=function(b,a){return new dg(a,this.stack,this.Xb,this.l,this.o)};g.X=function(b,a){return I(a,this)};dg.prototype[xa]=function(){return lc(this)}; 256 | function eg(b,a,c){return new dg(null,cg(b,null,a),a,c,null)}function fg(b,a,c,d){return c instanceof V?c.left instanceof V?new V(c.key,c.A,c.left.Ya(),new gg(b,a,c.right,d,null),null):c.right instanceof V?new V(c.right.key,c.right.A,new gg(c.key,c.A,c.left,c.right.left,null),new gg(b,a,c.right.right,d,null),null):new gg(b,a,c,d,null):new gg(b,a,c,d,null)} 257 | function ig(b,a,c,d){return d instanceof V?d.right instanceof V?new V(d.key,d.A,new gg(b,a,c,d.left,null),d.right.Ya(),null):d.left instanceof V?new V(d.left.key,d.left.A,new gg(b,a,c,d.left.left,null),new gg(d.key,d.A,d.left.right,d.right,null),null):new gg(b,a,c,d,null):new gg(b,a,c,d,null)} 258 | function jg(b,a,c,d){if(c instanceof V)return new V(b,a,c.Ya(),d,null);if(d instanceof gg)return ig(b,a,c,d.Vb());if(d instanceof V&&d.left instanceof gg)return new V(d.left.key,d.left.A,new gg(b,a,c,d.left.left,null),ig(d.key,d.A,d.left.right,d.right.Vb()),null);throw Error("red-black tree invariant violation");}function gg(b,a,c,d,e){this.key=b;this.A=a;this.left=c;this.right=d;this.o=e;this.m=32402207;this.G=0}g=gg.prototype;g.nc=function(b){return b.pc(this)}; 259 | g.Vb=function(){return new V(this.key,this.A,this.left,this.right,null)};g.Ya=function(){return this};g.mc=function(b){return b.oc(this)};g.replace=function(b,a,c,d){return new gg(b,a,c,d,null)};g.oc=function(b){return new gg(b.key,b.A,this,b.right,null)};g.pc=function(b){return new gg(b.key,b.A,b.left,this,null)};g.K=function(b,a){return w.c(this,a,null)};g.H=function(b,a,c){return w.c(this,a,c)};g.N=function(b,a){return 0===a?this.key:1===a?this.A:null}; 260 | g.xa=function(b,a,c){return 0===a?this.key:1===a?this.A:c};g.lb=function(b,a,c){return(new S(null,2,5,T,[this.key,this.A],null)).lb(null,a,c)};g.U=function(){return null};g.Z=function(){return 2};g.Ob=function(){return this.key};g.Pb=function(){return this.A};g.Ua=function(){return this.A};g.Va=function(){return new S(null,1,5,T,[this.key],null)};g.T=function(){var b=this.o;return null!=b?b:this.o=b=nc(this)};g.B=function(b,a){return Cc(this,a)};g.ba=function(){return Kc}; 261 | g.ka=function(b,a){return tc(this,a)};g.la=function(b,a,c){return uc(this,a,c)};g.Ka=function(b,a,c){return M.c(new S(null,2,5,T,[this.key,this.A],null),a,c)};g.Y=function(){return Ja(Ja(jc,this.A),this.key)};g.V=function(b,a){return Ec(new S(null,2,5,T,[this.key,this.A],null),a)};g.X=function(b,a){return new S(null,3,5,T,[this.key,this.A,a],null)}; 262 | g.call=function(){var b=null,b=function(a,b,d){switch(arguments.length){case 2:return this.K(null,b);case 3:return this.H(null,b,d)}throw Error("Invalid arity: "+arguments.length);};b.b=function(a,b){return this.K(null,b)};b.c=function(a,b,d){return this.H(null,b,d)};return b}();g.apply=function(b,a){return this.call.apply(this,[this].concat(ya(a)))};g.a=function(b){return this.K(null,b)};g.b=function(b,a){return this.H(null,b,a)};gg.prototype[xa]=function(){return lc(this)}; 263 | function V(b,a,c,d,e){this.key=b;this.A=a;this.left=c;this.right=d;this.o=e;this.m=32402207;this.G=0}g=V.prototype;g.nc=function(b){return new V(this.key,this.A,this.left,b,null)};g.Vb=function(){throw Error("red-black tree invariant violation");};g.Ya=function(){return new gg(this.key,this.A,this.left,this.right,null)};g.mc=function(b){return new V(this.key,this.A,b,this.right,null)};g.replace=function(b,a,c,d){return new V(b,a,c,d,null)}; 264 | g.oc=function(b){return this.left instanceof V?new V(this.key,this.A,this.left.Ya(),new gg(b.key,b.A,this.right,b.right,null),null):this.right instanceof V?new V(this.right.key,this.right.A,new gg(this.key,this.A,this.left,this.right.left,null),new gg(b.key,b.A,this.right.right,b.right,null),null):new gg(b.key,b.A,this,b.right,null)}; 265 | g.pc=function(b){return this.right instanceof V?new V(this.key,this.A,new gg(b.key,b.A,b.left,this.left,null),this.right.Ya(),null):this.left instanceof V?new V(this.left.key,this.left.A,new gg(b.key,b.A,b.left,this.left.left,null),new gg(this.key,this.A,this.left.right,this.right,null),null):new gg(b.key,b.A,b.left,this,null)};g.K=function(b,a){return w.c(this,a,null)};g.H=function(b,a,c){return w.c(this,a,c)};g.N=function(b,a){return 0===a?this.key:1===a?this.A:null}; 266 | g.xa=function(b,a,c){return 0===a?this.key:1===a?this.A:c};g.lb=function(b,a,c){return(new S(null,2,5,T,[this.key,this.A],null)).lb(null,a,c)};g.U=function(){return null};g.Z=function(){return 2};g.Ob=function(){return this.key};g.Pb=function(){return this.A};g.Ua=function(){return this.A};g.Va=function(){return new S(null,1,5,T,[this.key],null)};g.T=function(){var b=this.o;return null!=b?b:this.o=b=nc(this)};g.B=function(b,a){return Cc(this,a)};g.ba=function(){return Kc}; 267 | g.ka=function(b,a){return tc(this,a)};g.la=function(b,a,c){return uc(this,a,c)};g.Ka=function(b,a,c){return M.c(new S(null,2,5,T,[this.key,this.A],null),a,c)};g.Y=function(){return Ja(Ja(jc,this.A),this.key)};g.V=function(b,a){return Ec(new S(null,2,5,T,[this.key,this.A],null),a)};g.X=function(b,a){return new S(null,3,5,T,[this.key,this.A,a],null)}; 268 | g.call=function(){var b=null,b=function(a,b,d){switch(arguments.length){case 2:return this.K(null,b);case 3:return this.H(null,b,d)}throw Error("Invalid arity: "+arguments.length);};b.b=function(a,b){return this.K(null,b)};b.c=function(a,b,d){return this.H(null,b,d)};return b}();g.apply=function(b,a){return this.call.apply(this,[this].concat(ya(a)))};g.a=function(b){return this.K(null,b)};g.b=function(b,a){return this.H(null,b,a)};V.prototype[xa]=function(){return lc(this)}; 269 | var kg=function kg(a,c,d,e,f){if(null==c)return new V(d,e,null,null,null);var h;h=c.key;h=a.b?a.b(d,h):a.call(null,d,h);if(0===h)return f[0]=c,null;if(0>h)return a=kg(a,c.left,d,e,f),null!=a?c.mc(a):null;a=kg(a,c.right,d,e,f);return null!=a?c.nc(a):null},lg=function lg(a,c){if(null==a)return c;if(null==c)return a;if(a instanceof V){if(c instanceof V){var d=lg(a.right,c.left);return d instanceof V?new V(d.key,d.A,new V(a.key,a.A,a.left,d.left,null),new V(c.key,c.A,d.right,c.right,null),null):new V(a.key, 270 | a.A,a.left,new V(c.key,c.A,d,c.right,null),null)}return new V(a.key,a.A,a.left,lg(a.right,c),null)}if(c instanceof V)return new V(c.key,c.A,lg(a,c.left),c.right,null);d=lg(a.right,c.left);return d instanceof V?new V(d.key,d.A,new gg(a.key,a.A,a.left,d.left,null),new gg(c.key,c.A,d.right,c.right,null),null):jg(a.key,a.A,a.left,new gg(c.key,c.A,d,c.right,null))},mg=function mg(a,c,d,e){if(null!=c){var f;f=c.key;f=a.b?a.b(d,f):a.call(null,d,f);if(0===f)return e[0]=c,lg(c.left,c.right);if(0>f)return a= 271 | mg(a,c.left,d,e),null!=a||null!=e[0]?c.left instanceof gg?jg(c.key,c.A,a,c.right):new V(c.key,c.A,a,c.right,null):null;a=mg(a,c.right,d,e);if(null!=a||null!=e[0])if(c.right instanceof gg)if(e=c.key,d=c.A,c=c.left,a instanceof V)c=new V(e,d,c,a.Ya(),null);else if(c instanceof gg)c=fg(e,d,c.Vb(),a);else if(c instanceof V&&c.right instanceof gg)c=new V(c.right.key,c.right.A,fg(c.key,c.A,c.left.Vb(),c.right.left),new gg(e,d,c.right.right,a,null),null);else throw Error("red-black tree invariant violation"); 272 | else c=new V(c.key,c.A,c.left,a,null);else c=null;return c}return null},ng=function ng(a,c,d,e){var f=c.key,h=a.b?a.b(d,f):a.call(null,d,f);return 0===h?c.replace(f,e,c.left,c.right):0>h?c.replace(f,c.A,ng(a,c.left,d,e),c.right):c.replace(f,c.A,c.left,ng(a,c.right,d,e))};function og(b,a,c,d,e){this.Na=b;this.Cb=a;this.l=c;this.v=d;this.o=e;this.m=418776847;this.G=8192}g=og.prototype; 273 | g.forEach=function(b){for(var a=A(this),c=null,d=0,e=0;;)if(ed?c.left:c.right}else return null}g.has=function(b){return gd(this,b)};g.K=function(b,a){return Pa.c(this,a,null)};g.H=function(b,a,c){b=pg(this,a);return null!=b?b.A:c};g.U=function(){return this.v};g.Z=function(){return this.l}; 275 | g.Hb=function(){return 0(b.a?b.a(c):b.call(null,c))?a:c};Dg.h=function(b,a,c,d){return Ca(function(a,c){return Dg.c(b,a,c)},Dg.c(b,a,c),d)};Dg.C=function(b){var a=D(b),c=F(b);b=D(c);var d=F(c),c=D(d),d=F(d);return Dg.h(a,b,c,d)};Dg.D=3;function Eg(b,a){return new Fd(null,function(){var c=A(a);if(c){var d;d=D(c);d=b.a?b.a(d):b.call(null,d);c=q(d)?I(D(c),Eg(b,ic(c))):null}else c=null;return c},null,null)} 295 | function Fg(b,a){return new Fd(null,function(){var c=A(a);if(c){var d=D(c),e=b.a?b.a(d):b.call(null,d),d=I(d,Eg(function(a,c){return function(a){return G.b(c,b.a?b.a(a):b.call(null,a))}}(d,e,c,c),F(c)));return I(d,Fg(b,A(ye(K(d),c))))}return null},null,null)}function Gg(b,a){if("string"===typeof a){var c=b.exec(a);return G.b(D(c),a)?1===K(c)?D(c):Xe(c):null}throw new TypeError("re-matches must match against a string.");} 296 | function Hg(b,a){if("string"===typeof a){var c=b.exec(a);return null==c?null:1===K(c)?D(c):Xe(c)}throw new TypeError("re-find must match against a string.");}function Ig(b){if(b instanceof RegExp)return b;var a=Hg(/^\(\?([idmsux]*)\)/,b),c=L(a,0),a=L(a,1);b=td(b,K(c));return new RegExp(b,q(a)?a:"")} 297 | function Jg(b,a,c,d,e,f,h){var k=ma;ma=null==ma?null:ma-1;try{if(null!=ma&&0>ma)return wb(b,"#");wb(b,c);if(0===ta.a(f))A(h)&&wb(b,function(){var a=Kg.a(f);return q(a)?a:"..."}());else{if(A(h)){var l=D(h);a.c?a.c(l,b,f):a.call(null,l,b,f)}for(var n=F(h),v=ta.a(f)-1;;)if(!n||null!=v&&0===v){A(n)&&0===v&&(wb(b,d),wb(b,function(){var a=Kg.a(f);return q(a)?a:"..."}()));break}else{wb(b,d);var z=D(n);c=b;h=f;a.c?a.c(z,c,h):a.call(null,z,c,h);var y=F(n);c=v-1;n=y;v=c}}return wb(b,e)}finally{ma=k}} 298 | function Lg(b,a){for(var c=A(a),d=null,e=0,f=0;;)if(f=K(a)){var c=Vj(this,a),d=this.l+K(a),e=Ce.b(this.S,a),f=c,c=mc(c,d),h=this.Jb;return new bk(e,f,c,d,h?h:a.Jb,null)}c=Vj(this,a);d=this.l+K(a);return new bk(Jc.b(this.S,a),c,mc(c,d),d,!0,null)}c=Sb(31,this.cc)+bc(a)|0;d=this.l+1;return new bk(Jc.b(this.S,a),c,mc(c,d),d,this.Jb,null)}; 334 | function dk(b){b=Xe(b);var a=K(b),c;a:{c=1;for(var d=A(b);;)if(null!=d)c=Sb(31,c)+bc(D(d))|0,d=F(d);else break a}return new bk(b,c,mc(c,a),a,!1,null)}var ck=dk(Kc);function Xj(b){return b instanceof bk}function Zj(b){return q(Xj(b))?K(b.S):K(b)} 335 | var ek=function ek(a,c){for(;;)if(A(c)){var d=D(c);if(q(Xj(d)))var d=ek(a,d),e=F(c);else d=Td.b(a,d),e=F(c);a=d;c=e}else return a},fk=function fk(a){if(null!=a&&null!=a.Ab)return a.Ab();var c=fk[m(null==a?null:a)];if(null!=c)return c.a?c.a(a):c.call(null,a);c=fk._;if(null!=c)return c.a?c.a(a):c.call(null,a);throw t("GetVec.get-vec",a);};function gk(b,a,c,d){this.S=b;this.ob=a;this.l=c;this.Da=d;this.m=150364959;this.G=2048}g=gk.prototype;g.toString=function(){return Rb(this.Ab())}; 336 | g.K=function(b,a){return fk(this).K(null,a)};g.H=function(b,a,c){return fk(this).H(null,a,c)};g.Ab=function(){var b=this;va(rc.a?rc.a(b.Da):rc.call(null,b.Da))&&(ue.b(b.Da,function(){return function(){var a;a=rc.a?rc.a(b.S):rc.call(null,b.S);var c;c=zb(Kc);a=Sd(ek(c,a));return Ec(a,Rc(rc.a?rc.a(b.S):rc.call(null,b.S)))}}(this)),ue.b(b.S,function(){return function(){return null}}(this)));return rc.a?rc.a(b.Da):rc.call(null,b.Da)};g.N=function(b,a){return fk(this).N(null,a)}; 337 | g.xa=function(b,a,c){return fk(this).xa(null,a,c)};g.lb=function(b,a,c){return fk(this).lb(null,a,c)};g.U=function(){return q(rc.a?rc.a(this.Da):rc.call(null,this.Da))?Rc(rc.a?rc.a(this.Da):rc.call(null,this.Da)):Rc(rc.a?rc.a(this.S):rc.call(null,this.S))};g.Z=function(){return this.l};g.Ua=function(){return fk(this).Ua(null)};g.Va=function(){return fk(this).Va(null)};g.Hb=function(){var b;0=b?[u("0000"),u(b.toString(16))].join("").substr(-4):b.toString(16)}function Sk(b){var a=null!=b&&(b.m&64||b.wa)?N.b(ne,b):b;b=x(a,ti);a=x(a,Pj);return G.b(b,a)?[u("%x"),u(Rk(b))].join(""):[u("%x"),u(Rk(b)),u("-"),u(Rk(a))].join("")} 361 | function Nk(){for(var b=[],a=arguments.length,c=0;;)if(c=b?65536<=b&&1114111>=b?String.fromCharCode((b>>10)+55232)+String.fromCharCode((b&1023)+56320):String.fromCharCode(b):null} 368 | function Wk(b,a){var c=b.charCodeAt(a);if(55296<=c&&56319>=c&&a+1=d)return 55296<=c&&56319>=c&&56320<=d&&57343>=d?(c<<10)-56623104+(d-56320+65536):null}else if(56320<=c&&57343>=c&&0=d))return-(55296<=d&&56319>=d&&56320<=c&&57343>=c?(d<<10)-56623104+(c-56320+65536):0);return c};function Xk(b){return ed((new wg(null,new p(null,2,["\n",null,"\r",null],null),null)).call(null,b))}function Yk(b){return Uc(b)?null:U.b(he(N,u),Ae(function(a){return q(Xk(D(a)))?U.b(fe(),a):Ja(jc,a)},J([Fg(Xk,Jk(b,"\r\n","\n"))],0)))}function Zk(b){q(uh.a(b))?($g.h(J(["NOT "],0)),$g.h(J([uh.a(b)],0))):q(Nj.a(b))?$g.h(J([Sk(b)],0)):b instanceof RegExp?$g.h(J([Qk(b)],0)):Zg(J([b],0))} 369 | function $k(b){var a=null!=b&&(b.m&64||b.wa)?N.b(ne,b):b;b=x(a,bj);var c=x(a,ui),d=x(a,Tj),a=x(a,Ki);bh(J(["Parse error at line",b,", column",c,":\n"],0));bh(J([d],0));bh(J([fd(c)?1>=c?"^":N.b(u,Rd.b(ve(c-1,ze(" ")),new S(null,1,5,T,["^"],null))):null],0));c=Bg(U.b(wi,Be(Bh,a)));b=Bg(U.b(wi,Be(ee(Bh),a)));d=K(c)+K(b);0!==d&&(G.b(1,d)?bh(J(["Expected:"],0)):bh(J(["Expected one of:"],0)));for(var c=A(c),d=null,e=a=0;;)if(eb.na?b.ia=Jc.b(b.ia,d):b.stack=Jc.b(b.stack,d);b.oa=M.c(b.oa,f,h+1)}function Ql(b,a){var c=b.W,c=c.a?c.a(a):c.call(null,a);return q(c)?0=K(f))return $l(c,new S(null,2,5,T,[a,b],null),a,new p(null,2,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null)],null));if(65535>=e)return f=f.charCodeAt(a),d<=f&&f<=e?Vl(c,new S(null,2,5,T,[a,b],null),Ml(od(f),a+1)):$l(c,new S(null,2,5,T,[a,b],null),a,new p(null,2,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null)],null));var f=Wk(f,a|0),h=Vk(f);return d<=f&&f<=e?Vl(c,new S(null,2,5,T,[a,b],null),Ml(h,a+K(h))):$l(c,new S(null,2,5,T,[a,b],null),a,new p(null, 414 | 2,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null)],null))} 415 | function Gl(b,a,c){var d=ti.a(b),e=Pj.a(b),f=Tj.a(c),h=K(f);if(a>=K(f))return $l(c,new S(null,2,5,T,[a,b],null),a,new p(null,3,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null),Bh,!0],null));if(65535>=e)return f=f.charCodeAt(a),G.b(a+1,h)&&d<=f&&f<=e?Vl(c,new S(null,2,5,T,[a,b],null),Ml(od(f),h)):$l(c,new S(null,2,5,T,[a,b],null),a,new p(null,3,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null),Bh,!0],null));var f=Wk(f,a|0),k=Vk(f);return G.b(a+K(k),h)&&d<=f&&f<=e?Vl(c,new S(null,2,5,T,[a,b],null),Ml(k,h)): 416 | $l(c,new S(null,2,5,T,[a,b],null),a,new p(null,3,[X,Qj,wi,new p(null,3,[Nj,!0,ti,d,Pj,e],null),Bh,!0],null))}function mm(b,a){var c=(new RegExp(b.source,"g")).exec(a);return q(q(c)?0===c.index:c)?D(c):null}function ml(b,a,c){var d=Ui.a(b),e=c.ua,f=K(e),e=al(new bl(e.text,e.offset+a,f-a)),e=mm(d,e);return q(e)?Vl(c,new S(null,2,5,T,[a,b],null),Ml(e,a+K(e))):$l(c,new S(null,2,5,T,[a,b],null),a,new p(null,2,[X,Ui,wi,d],null))} 417 | function Cl(b,a,c){var d=Ui.a(b),e=gj.a(c),f=K(e),f=al(new bl(e.text,e.offset+a,f-a)),f=mm(d,f),h=K(e)-a;return q(q(f)?G.b(K(f),h):f)?Vl(c,new S(null,2,5,T,[a,b],null),Ml(f,K(e))):$l(c,new S(null,2,5,T,[a,b],null),a,new p(null,3,[X,Ui,wi,d,Bh,!0],null))} 418 | var nm=ck,el=function(b){return function(a,c,d){var e=Ij.a(a);return Wl(d,new S(null,2,5,T,[c,D(e)],null),fm(b,F(e),new S(null,2,5,T,[c,a],null),d))}}(nm),tl=function(b){return function(a,c,d){var e=Ij.a(a);return Wl(d,new S(null,2,5,T,[c,D(e)],null),gm(b,F(e),new S(null,2,5,T,[c,a],null),d))}}(nm),nl=function(b){return function(a,c,d){var e=Ti.a(a);return Wl(d,new S(null,2,5,T,[c,e],null),hm(b,e,c,new S(null,2,5,T,[c,a],null),d))}}(nm),Dl=function(b){return function(a,c,d){var e=Ti.a(a);return Wl(d, 419 | new S(null,2,5,T,[c,e],null),im(b,e,c,new S(null,2,5,T,[c,a],null),d))}}(nm),jl=function(b){return function(a,c,d){var e=Ti.a(a),f=sh.a(a),h=hj.a(a);return 0===f?(Vl(d,new S(null,2,5,T,[c,a],null),Ml(null,c)),1<=h?Wl(d,new S(null,2,5,T,[c,e],null),jm(b,e,1,h,c,new S(null,2,5,T,[c,a],null),d)):null):Wl(d,new S(null,2,5,T,[c,e],null),jm(b,e,f,h,c,new S(null,2,5,T,[c,a],null),d))}}(nm),zl=function(b){return function(a,c,d){var e=Ti.a(a),f=sh.a(a),h=hj.a(a);return 0===f?(Vl(d,new S(null,2,5,T,[c,a],null), 420 | Ml(null,c)),1<=h?Wl(d,new S(null,2,5,T,[c,e],null),km(b,e,1,h,c,new S(null,2,5,T,[c,a],null),d)):null):Wl(d,new S(null,2,5,T,[c,e],null),km(b,e,f,h,c,new S(null,2,5,T,[c,a],null),d))}}(nm),kl=function(b){return function(a,c,d){var e=Ti.a(a);Wl(d,new S(null,2,5,T,[c,e],null),hm(b,e,c,new S(null,2,5,T,[c,a],null),d));return Vl(d,new S(null,2,5,T,[c,a],null),Ml(null,c))}}(nm),Al=function(b){return function(a,c,d){var e=Ti.a(a);return G.b(c,K(Tj.a(d)))?Vl(d,new S(null,2,5,T,[c,a],null),Ml(null,c)):Wl(d, 421 | new S(null,2,5,T,[c,e],null),im(b,e,c,new S(null,2,5,T,[c,a],null),d))}}(nm);function gl(b,a,c){for(var d=Ij.a(b),d=A(d),e=null,f=0,h=0;;)if(ha.rb.length)a=a.append("0");else{a=a.toString();break a}a=Em(a);return q(a)?a:0}(),n=(G.b(n,"-")?-1:1)*(60*function(){var a=Em(v);return q(a)?a:0}()+function(){var a=Em(z);return q(a)?a:0}());return new S(null,8,5,T,[y,Fm(1,B,12,"timestamp month field must be in range 1..12"),Fm(1,b,function(){var a;a=0===(y%4+4)%4;q(a)&&(a=va(0===(y%100+100)%100),a=q(a)?a:0===(y%400+400)%400);return Cm.b?Cm.b(B,a):Cm.call(null,B,a)}(),"timestamp day field must be in range 1..last day in month"), 438 | Fm(0,a,23,"timestamp hour field must be in range 0..23"),Fm(0,c,59,"timestamp minute field must be in range 0..59"),Fm(0,E,G.b(c,59)?60:59,"timestamp second field must be in range 0..60"),Fm(0,H,999,"timestamp millisecond field must be in range 0..999"),n],null)} 439 | var Hm=new p(null,4,["inst",function(b){var a;if("string"===typeof b)if(a=Gm(b),q(a)){b=L(a,0);var c=L(a,1),d=L(a,2),e=L(a,3),f=L(a,4),h=L(a,5),k=L(a,6);a=L(a,7);a=new Date(Date.UTC(b,c-1,d,e,f,h,k)-6E4*a)}else a=wm(J([[u("Unrecognized date/time syntax: "),u(b)].join("")],0));else a=wm(J(["Instance literal expects a string for its timestamp."],0));return a},"uuid",function(b){return"string"===typeof b?new ih(b,null):wm(J(["UUID literal expects a string as its representation."],0))},"queue",function(b){return Yc(b)? 440 | Ce.b(jf,b):wm(J(["Queue literal expects a vector for its elements."],0))},"js",function(b){if(Yc(b)){var a=[];b=A(b);for(var c=null,d=0,e=0;;)if(e=c?b:b=-1b?"-":0<=a.indexOf("+")?"+":0<=a.indexOf(" ")?" ":"";0<=b&&(d=f+d);if(isNaN(c)||d.length>=c)return d;d=isNaN(e)?Math.abs(b).toString():Math.abs(b).toFixed(e);b=c-d.length-f.length;return d=0<=a.indexOf("-",0)?f+d+Array(b+1).join(" "):f+Array(b+1).join(0<=a.indexOf("0",0)?"0":" ")+d};Um.nb.d=function(b,a,c,d,e,f,h,k){return Um.nb.f(parseInt(b,10),a,c,d,0,f,h,k)};Um.nb.i=Um.nb.d;Um.nb.u=Um.nb.d;var Vm=Oc([xh,Ah,Hh,Ih,Yh,Zh,ki,Ci,Di,Hi,fj,oj,rj,Aj,Fj,Hj],[Y("\r\n"),Y("\t"),sk.h(J([sk.h(J([Y(" "),Y("\t")],0)),qk(uk.h(J([Y("\r\n"),sk.h(J([Y(" "),Y("\t")],0))],0)))],0)),Y("\n"),yk("[\\u0021-\\u007E]"),yk("[0-9]"),Y(" "),yk("[0-9a-fA-F]"),yk("[\\u0000-\\u001F|\\u007F]"),Y('"'),sk.h(J([Y(" "),Y("\t")],0)),Y("\r"),yk("[\\u0000-\\u00FF]"),yk("[a-zA-Z]"),yk("[\\u0001-\\u007F]"),yk("[01]")]),Wm=function Wm(){for(var a=[],c=arguments.length,d=0;;)if(d */ 6 | 7 | process: function(data) { 8 | if (data[0] != "score") { 9 | log.error("first token is not 'score'"); 10 | return; 11 | } 12 | 13 | var doctype = document.implementation.createDocumentType( 14 | "score-partwise", 15 | "-//Recordare//DTD MusicXML 1.0 Partwise//EN", 16 | "http://www.musicxml.org/dtds/partwise.dtd" 17 | ); 18 | this.xml = document.implementation.createDocument("", "score-partwise", doctype); 19 | 20 | var partListNode = this.xml.createElement("part-list"); 21 | this.xml.documentElement.appendChild(partListNode); 22 | 23 | this.score = this._processScore(data, partListNode); 24 | 25 | return this.score; 26 | }, 27 | 28 | _processScore: function(data, partListNode) { 29 | var score = { 30 | parts: [] 31 | }; 32 | 33 | var attributes = { 34 | tempo: 120, 35 | duration: 4, /* quarter note */ 36 | octave: 4, 37 | quantization: 0.9, 38 | volume: 1, 39 | panning: 0.5, 40 | "track-volume": 100/127 41 | }; 42 | 43 | data.forEach(function(data, index) { 44 | if (!index) { return; } 45 | 46 | switch (data[0]) { 47 | case "global-attribute-change": 48 | attributes[data[1]] = this._processNumber(data[2]); 49 | break; 50 | 51 | case "part": 52 | var part = this._processPart(data, attributes, partListNode); 53 | score.parts.push(part); 54 | break; 55 | 56 | default: 57 | log.error("unkown score token", data[0]); 58 | break; 59 | } 60 | 61 | }, this); 62 | 63 | return score; 64 | }, 65 | 66 | _processPart: function(data, globalAttributes, partListNode) { 67 | log.log("processing next part"); 68 | var attributes = {}; 69 | for (var p in globalAttributes) { attributes[p] = globalAttributes[p]; } 70 | 71 | var time = 0; 72 | var result = { 73 | notes: [] 74 | }; 75 | 76 | var id = "P" + this.xml.querySelectorAll("score-part").length; 77 | var scorePartNode = this.xml.createElement("score-part"); 78 | scorePartNode.setAttribute("id", id); 79 | partListNode.appendChild(scorePartNode); 80 | 81 | var partNode = this.xml.createElement("part"); 82 | this.xml.documentElement.appendChild(partNode); 83 | partNode.setAttribute("id", id); 84 | 85 | var measureNode = this.xml.createElement("measure"); 86 | partNode.appendChild(measureNode); 87 | measureNode.setAttribute("number", "1"); 88 | 89 | var attributeNode = this.xml.createElement("attributes"); 90 | measureNode.appendChild(attributeNode); 91 | var divisionsNode = this.xml.createElement("divisions"); 92 | attributeNode.appendChild(divisionsNode); 93 | divisionsNode.textContent = this._divisions; 94 | 95 | data.forEach(function(data, index) { 96 | if (!index) { return; } 97 | 98 | switch (data[0]) { 99 | case "calls": 100 | result.instrument = data[1][1]; 101 | log.log("part will be played on", result.instrument); 102 | 103 | var partNameNode = this.xml.createElement("part-name"); 104 | partNameNode.textContent = result.instrument; 105 | scorePartNode.appendChild(partNameNode); 106 | break; 107 | 108 | case "note": 109 | var note = this._processNote(data, attributes, time, measureNode); 110 | result.notes.push(note); 111 | time += note.duration; 112 | break; 113 | 114 | case "rest": 115 | time += this._processRest(data, attributes, measureNode); 116 | break; 117 | 118 | case "octave-up": attributes["octave"]++; break; 119 | case "octave-down": attributes["octave"]--; break; 120 | case "octave-set": attributes["octave"] = this._processNumber(data[1]); break; 121 | 122 | default: log.error("unkown part token", data[0]); break; 123 | } 124 | }, this); 125 | 126 | return result; 127 | }, 128 | 129 | _processNote: function(data, attributes, time, measureNode) { 130 | var pitch = data[1][1]; 131 | 132 | var noteNode = this.xml.createElement("note"); 133 | var pitchNode = this.xml.createElement("pitch"); 134 | noteNode.appendChild(pitchNode); 135 | var stepNode = this.xml.createElement("step"); 136 | pitchNode.appendChild(stepNode); 137 | stepNode.textContent = pitch[0]; 138 | if (pitch.length > 1) { 139 | var alterNode = this.xml.createElement("alter"); 140 | pitchNode.appendChild(alterNode); 141 | alterNode.textContent = (pitch[1] == "+" ? 1 : -1); 142 | } 143 | var octaveNode = this.xml.createElement("octave"); 144 | pitchNode.appendChild(octaveNode); 145 | octaveNode.textContent = attributes.octave; 146 | 147 | var playTime = 0; 148 | if (data.length > 2) { 149 | var duration = this._processDuration(data[2]); 150 | attributes.duration = duration[0].length; 151 | 152 | duration.forEach(function(item) { 153 | playTime += this._durationToSec(item.length, item.dots, attributes); 154 | 155 | var clone = noteNode.cloneNode(true); 156 | 157 | var durationNode = this.xml.createElement("duration"); 158 | clone.appendChild(durationNode); 159 | durationNode.textContent = this._divisions*4/item.length; 160 | 161 | for (var i=0;i 1) { 189 | var duration = this._processDuration(data[1]); 190 | attributes.duration = duration[0].length; 191 | 192 | duration.forEach(function(item) { 193 | playTime += this._durationToSec(item.length, item.dots, attributes); 194 | 195 | var clone = noteNode.cloneNode(true); 196 | 197 | var durationNode = this.xml.createElement("duration"); 198 | clone.appendChild(durationNode); 199 | durationNode.textContent = this._divisions*4/item.length; 200 | 201 | for (var i=0;i 2 ? data[2][1].length : 0 244 | }; 245 | }, 246 | 247 | _processNumber: function(data) { 248 | return Number(data[1]); 249 | }, 250 | 251 | _durationToSec: function(length, dots, attributes) { 252 | var bps = attributes.tempo / 60; /* quater notes per second */ 253 | var base = 4 / (bps * length); 254 | var sec = base; 255 | for (var i=0;i