From 40e1d0ead2a76bd9475d0004888e46ffd77ad821 Mon Sep 17 00:00:00 2001 From: Lev Date: Wed, 28 Jul 2021 20:12:31 -0500 Subject: [PATCH] Add completed pixel array testing --- .../Week 13/13.3.1 Pixels/index.html | 15 ++++++++ .../Week 13/13.3.1 Pixels/libraries/.DS_Store | Bin 0 -> 6148 bytes .../Week 13/13.3.1 Pixels/libraries/p5.min.js | 3 ++ .../13.3.1 Pixels/libraries/p5.sound.min.js | 28 +++++++++++++++ .../Week 13/13.3.1 Pixels/rockets.png | Bin 0 -> 72360 bytes .../Week 13/13.3.1 Pixels/sketch.js | 32 ++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/index.html create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/.DS_Store create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/p5.min.js create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/p5.sound.min.js create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/rockets.png create mode 100644 CM2030 Graphics Programming/Week 13/13.3.1 Pixels/sketch.js diff --git a/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/index.html b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/index.html new file mode 100644 index 0000000..d6d2561 --- /dev/null +++ b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/index.html @@ -0,0 +1,15 @@ + + + + + graphicsProgramming - Coursera + + + + + + + + + + diff --git a/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/.DS_Store b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0>16&255,n[o++]=t>>8&255,n[o++]=255&t;var u,h;2===a&&(t=d[e.charCodeAt(l)]<<2|d[e.charCodeAt(l+1)]>>4,n[o++]=255&t);1===a&&(t=d[e.charCodeAt(l)]<<10|d[e.charCodeAt(l+1)]<<4|d[e.charCodeAt(l+2)]>>2,n[o++]=t>>8&255,n[o++]=255&t);return n},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=[],n=0,o=r-i;n>2]+s[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],a.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return a.join("")};for(var s=[],d=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,n=i.length;a>18&63]+s[a>>12&63]+s[a>>6&63]+s[63&a]);return n.join("")}d["-".charCodeAt(0)]=62,d["_".charCodeAt(0)]=63},{}],2:[function(e,t,r){},{}],3:[function(e,t,r){"use strict";var i=e("base64-js"),n=e("ieee754");r.Buffer=d,r.SlowBuffer=function(e){+e!=e&&(e=0);return d.alloc(+e)},r.INSPECT_MAX_BYTES=50;var a=2147483647;function o(e){if(a>>1;case"base64":return I(e).length;default:if(a)return i?-1:A(e).length;t=(""+t).toLowerCase(),a=!0}}function p(e,t,r){var i=e[t];e[t]=e[r],e[r]=i}function m(e,t,r,i,a){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):2147483647=e.length){if(a)return-1;r=e.length-1}else if(r<0){if(!a)return-1;r=0}if("string"==typeof t&&(t=d.from(t,i)),d.isBuffer(t))return 0===t.length?-1:v(e,t,r,i,a);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):v(e,[t],r,i,a);throw new TypeError("val must be string, number or Buffer")}function v(e,t,r,i,a){var n,o=1,s=e.length,l=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;s/=o=2,l/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var h=-1;for(n=r;n>>10&1023|55296),h=56320|1023&h),i.push(h),a+=d}return function(e){var t=e.length;if(t<=x)return String.fromCharCode.apply(String,e);var r="",i=0;for(;ithis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,r);case"utf8":case"utf-8":return b(this,t,r);case"ascii":return w(this,t,r);case"latin1":case"binary":return S(this,t,r);case"base64":return _(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}.apply(this,arguments)},d.prototype.equals=function(e){if(!d.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===d.compare(this,e)},d.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},d.prototype.compare=function(e,t,r,i,a){if(U(e,Uint8Array)&&(e=d.from(e,e.offset,e.byteLength)),!d.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===a&&(a=this.length),t<0||r>e.length||i<0||a>this.length)throw new RangeError("out of range index");if(a<=i&&r<=t)return 0;if(a<=i)return-1;if(r<=t)return 1;if(this===e)return 0;for(var n=(a>>>=0)-(i>>>=0),o=(r>>>=0)-(t>>>=0),s=Math.min(n,o),l=this.slice(i,a),u=e.slice(t,r),h=0;h>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}var a=this.length-t;if((void 0===r||athis.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var n,o,s,l,u,h,d,c,f,p=!1;;)switch(i){case"hex":return g(this,e,t,r);case"utf8":case"utf-8":return c=t,f=r,k(A(e,(d=this).length-c),d,c,f);case"ascii":return y(this,e,t,r);case"latin1":case"binary":return y(this,e,t,r);case"base64":return l=this,u=t,h=r,k(I(e),l,u,h);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o=t,s=r,k(function(e,t){for(var r,i,a,n=[],o=0;o>8,a=r%256,n.push(a),n.push(i);return n}(e,(n=this).length-o),n,o,s);default:if(p)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),p=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var x=4096;function w(e,t,r){var i="";r=Math.min(e.length,r);for(var a=t;ae.length)throw new RangeError("Index out of range")}function P(e,t,r,i,a,n){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,i,a){return t=+t,r>>>=0,a||P(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function R(e,t,r,i,a){return t=+t,r>>>=0,a||P(e,0,r,8),n.write(e,t,r,i,52,8),r+8}d.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):r>>=0,t>>>=0,r||T(e,t,this.length);for(var i=this[e],a=1,n=0;++n>>=0,t>>>=0,r||T(e,t,this.length);for(var i=this[e+--t],a=1;0>>=0,t||T(e,1,this.length),this[e]},d.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},d.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},d.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},d.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},d.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);for(var i=this[e],a=1,n=0;++n>>=0,t>>>=0,r||T(e,t,this.length);for(var i=t,a=1,n=this[e+--i];0>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},d.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},d.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},d.prototype.readFloatLE=function(e,t){return e>>>=0,t||T(e,4,this.length),n.read(this,e,!0,23,4)},d.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),n.read(this,e,!1,23,4)},d.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),n.read(this,e,!0,52,8)},d.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),n.read(this,e,!1,52,8)},d.prototype.writeUIntLE=function(e,t,r,i){(e=+e,t>>>=0,r>>>=0,i)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var a=1,n=0;for(this[t]=255&e;++n>>=0,r>>>=0,i)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var a=r-1,n=1;for(this[t+a]=255&e;0<=--a&&(n*=256);)this[t+a]=e/n&255;return t+r},d.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,255,0),this[t]=255&e,t+1},d.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},d.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t>>>=0,!i){var a=Math.pow(2,8*r-1);C(this,e,t,r,a-1,-a)}var n=0,o=1,s=0;for(this[t]=255&e;++n>0)-s&255;return t+r},d.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t>>>=0,!i){var a=Math.pow(2,8*r-1);C(this,e,t,r,a-1,-a)}var n=r-1,o=1,s=0;for(this[t+n]=255&e;0<=--n&&(o*=256);)e<0&&0===s&&0!==this[t+n+1]&&(s=1),this[t+n]=(e/o>>0)-s&255;return t+r},d.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},d.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},d.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},d.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},d.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},d.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},d.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},d.prototype.writeDoubleLE=function(e,t,r){return R(this,e,t,!0,r)},d.prototype.writeDoubleBE=function(e,t,r){return R(this,e,t,!1,r)},d.prototype.copy=function(e,t,r,i){if(!d.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),0=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(n=t;n>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;n.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return n}function I(e){return i.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function k(e,t,r,i){for(var a=0;a=t.length||a>=e.length);++a)t[a+r]=e[a];return a}function U(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function F(e){return e!=e}},{"base64-js":1,ieee754:8}],4:[function(e,t,r){"use strict";t.exports=e("./").polyfill()},{"./":5}],5:[function(V,r,i){(function(G,j){var e,t;e=this,t=function(){"use strict";function u(e){return"function"==typeof e}var r=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=0,t=void 0,a=void 0,s=function(e,t){c[i]=e,c[i+1]=t,2===(i+=2)&&(a?a(f):y())};var e="undefined"!=typeof window?window:void 0,n=e||{},o=n.MutationObserver||n.WebKitMutationObserver,l="undefined"==typeof self&&void 0!==G&&"[object process]"==={}.toString.call(G),h="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function d(){var e=setTimeout;return function(){return e(f,1)}}var c=new Array(1e3);function f(){for(var e=0;e>1,h=-7,d=r?a-1:0,c=r?-1:1,f=e[t+d];for(d+=c,n=f&(1<<-h)-1,f>>=-h,h+=s;0>=-h,h+=i;0>1,c=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:n-1,p=i?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),2<=(t+=1<=o+d?c/l:c*Math.pow(2,1-d))*l&&(o++,l/=2),h<=o+d?(s=0,o=h):1<=o+d?(s=(t*l-1)*Math.pow(2,a),o+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,a),o=0));8<=a;e[r+f]=255&s,f+=p,s/=256,a-=8);for(o=o<Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t}var C=4e150;function P(e,t){e.f+=t.f,e.b.f+=t.b.f}function u(e,t,r){return e=e.a,t=t.a,r=r.a,t.b.a===e?r.b.a===e?g(t.a,r.a)?_(r.b.a,t.a,r.a)<=0:0<=_(t.b.a,r.a,t.a):_(r.b.a,e,r.a)<=0:r.b.a===e?0<=_(t.b.a,e,t.a):(t=y(t.b.a,e,t.a),(e=y(r.b.a,e,r.a))<=t)}function L(e){e.a.i=null;var t=e.e;t.a.c=t.c,t.c.a=t.a,e.e=null}function h(e,t){d(e.a),e.c=!1,(e.a=t).i=e}function R(e){for(var t=e.a.a;(e=ce(e)).a.a===t;);return e.c&&(h(e,t=c(de(e).a.b,e.a.e)),e=ce(e)),e}function O(e,t,r){var i=new he;return i.a=r,i.e=W(e.f,t.e,i),r.i=i}function D(e,t){switch(e.s){case 100130:return 0!=(1&t);case 100131:return 0!==t;case 100132:return 0>1]],s[o[u]])?le(r,u):ue(r,u)),s[n]=null,l[n]=r.b,r.b=n}else for(r.c[-(n+1)]=null;0Math.max(o.a,l.a))return!1;if(g(n,o)){if(0<_(l,n,o))return!1}else if(_(s,o,n)<0)return!1;var h,d,c=s,f=n,p=l,m=o;if(g(c,f)||(h=c,c=f,f=h),g(p,m)||(h=p,p=m,m=h),g(c,p)||(h=c,c=p,p=h,h=f,f=m,m=h),g(p,f)?g(f,m)?((h=y(c,p,f))+(d=y(p,f,m))<0&&(h=-h,d=-d),u.b=S(h,p.b,d,f.b)):((h=_(c,p,f))+(d=-_(c,m,f))<0&&(h=-h,d=-d),u.b=S(h,p.b,d,m.b)):u.b=(p.b+f.b)/2,b(c,f)||(h=c,c=f,f=h),b(p,m)||(h=p,p=m,m=h),b(c,p)||(h=c,c=p,p=h,h=f,f=m,m=h),b(p,f)?b(f,m)?((h=x(c,p,f))+(d=x(p,f,m))<0&&(h=-h,d=-d),u.a=S(h,p.a,d,f.a)):((h=w(c,p,f))+(d=-w(c,m,f))<0&&(h=-h,d=-d),u.a=S(h,p.a,d,m.a)):u.a=(p.a+f.a)/2,g(u,e.a)&&(u.b=e.a.b,u.a=e.a.a),g(c=g(n,o)?n:o,u)&&(u.b=c.b,u.a=c.a),v(u,n)||v(u,o))return B(e,t),!1;if(!v(s,e.a)&&0<=_(s,e.a,u)||!v(l,e.a)&&_(l,e.a,u)<=0){if(l===e.a)return E(i.b),M(a.b,i),i=de(t=R(t)).a,I(e,de(t),r),k(e,t,J(i),i,i,!0),!0;if(s!==e.a)return 0<=_(s,e.a,u)&&(ce(t).b=t.b=!0,E(i.b),i.a.b=e.a.b,i.a.a=e.a.a),_(l,e.a,u)<=0&&(t.b=r.b=!0,E(a.b),a.a.b=e.a.b,a.a.a=e.a.a),!1;for(E(a.b),M(i.e,J(a)),o=(n=r=t).a.b.a;(n=ce(n)).a.b.a===o;);return n=de(t=n).a.b.c,r.a=J(a),k(e,t,(a=I(e,r,null)).c,i.b.c,n,!0),!0}return E(i.b),E(a.b),M(J(a),i),i.a.b=u.b,i.a.a=u.a,i.a.h=re(e.e,i.a),i=i.a,a=[0,0,0,0],u=[n.d,s.d,o.d,l.d],i.g[0]=i.g[1]=i.g[2]=0,N(i,n,s,a,0),N(i,o,l,a,2),U(e,i,u,a,!0),ce(t).b=t.b=r.b=!0,!1}function j(e,t){for(var r=de(t);;){for(;r.b;)r=de(t=r);if(!t.b&&(null===(t=ce(r=t))||!t.b))break;t.b=!1;var i,a=t.a,n=r.a;if(i=a.b.a!==n.b.a)e:{var o=de(i=t),s=i.a,l=o.a,u=void 0;if(g(s.b.a,l.b.a)){if(_(s.b.a,l.b.a,s.a)<0){i=!1;break e}ce(i).b=i.b=!0,u=E(s),M(l.b,u),u.d.c=i.d}else{if(0<_(l.b.a,s.b.a,l.a)){i=!1;break e}i.b=o.b=!0,u=E(l),M(s.e,l.b),u.b.d.c=i.d}i=!0}if(i&&(r.c?(L(r),d(n),n=(r=de(t)).a):t.c&&(L(t),d(a),a=(t=ce(r)).a)),a.a!==n.a)if(a.b.a===n.b.a||t.c||r.c||a.b.a!==e.a&&n.b.a!==e.a)B(e,t);else if(G(e,t))break;a.a===n.a&&a.b.a===n.b.a&&(P(n,a),L(t),d(a),t=ce(r))}}function V(e,t){for(var r=(e.a=t).c;null===r.i;)if((r=r.c)===t.c){r=e;var i=t;(o=new he).a=i.c.b;for(var a=(l=r.f).a;null!==(a=a.a).b&&!l.c(l.b,o,a.b););var n=de(l=a.b),o=l.a;a=n.a;if(0===_(o.b.a,i,o.a))v((o=l.a).a,i)||v(o.b.a,i)||(E(o.b),l.c&&(d(o.c),l.c=!1),M(i.c,o),V(r,i));else{var s=g(a.b.a,o.b.a)?l:n;n=void 0;l.d||s.c?(n=s===l?c(i.c.b,o.e):c(a.b.c.b,i.c).b,s.c?h(s,n):((l=O(o=r,l,n)).f=ce(l).f+l.a.f,l.d=D(o,l.f)),V(r,i)):k(r,l,i.c,i.c,null,!0)}return}if(l=(o=de(r=R(r.i))).a,(o=I(e,o,null)).c===l){o=(l=o).c,a=de(r),n=r.a,s=a.a;var l,u=!1;n.b.a!==s.b.a&&G(e,r),v(n.a,e.a)&&(M(J(o),n),o=de(r=R(r)).a,I(e,de(r),a),u=!0),v(s.a,e.a)&&(M(l,J(s)),l=I(e,a,null),u=!0),u?k(e,r,l.c,o,o,!0):(i=g(s.a,n.a)?J(s):n,k(e,r,i=c(l.c.b,i),i.c,i.c,!1),i.b.i.c=!0,j(e,r))}else k(e,r,o.c,l,l,!0)}function z(e,t){var r=new he,i=o(e.b);i.a.b=C,i.a.a=t,i.b.a.b=-C,i.b.a.a=t,e.a=i.b.a,r.a=i,r.f=0,r.d=!1,r.c=!1,r.h=!0,r.b=!1,i=W(i=e.f,i.a,r),r.e=i}function H(e){this.a=new X,this.b=e,this.c=u}function W(e,t,r){for(;null!==(t=t.c).b&&!e.c(e.b,t.b,r););return e=new X(r,t.a,t),t.a.c=e,t.a=e}function X(e,t,r){this.b=e||null,this.a=t||this,this.c=r||this}function q(){this.d=0,this.p=this.b=this.q=null,this.j=[0,0,0],this.s=100130,this.n=!1,this.o=this.a=this.e=this.f=null,this.m=!1,this.c=this.r=this.i=this.k=this.l=this.h=null}function Y(e,t){if(e.d!==t)for(;e.d!==t;)if(e.di.f&&(i.f*=2,i.c=ne(i.c,i.f+1)),0===i.b?r=a:(r=i.b,i.b=i.c[i.b]),i.e[r]=t,i.c[r]=a,i.d[a]=r,i.h&&ue(i,a),r}return i=e.a++,e.c[i]=t,-(i+1)}function ie(e){if(0===e.a)return se(e.b);var t=e.c[e.d[e.a-1]];if(0!==e.b.a&&g(oe(e.b),t))return se(e.b);for(;--e.a,0e.a||g(i[o],i[l])){a[r[n]=o]=n;break}a[r[n]=l]=n,n=s}}function ue(e,t){for(var r=e.d,i=e.e,a=e.c,n=t,o=r[n];;){var s=n>>1,l=r[s];if(0===s||g(i[l],i[o])){a[r[n]=o]=n;break}a[r[n]=l]=n,n=s}}function he(){this.e=this.a=null,this.f=0,this.c=this.b=this.h=this.d=!1}function de(e){return e.e.c.b}function ce(e){return e.e.a.b}(i=q.prototype).x=function(){Y(this,0)},i.B=function(e,t){switch(e){case 100142:return;case 100140:switch(t){case 100130:case 100131:case 100132:case 100133:case 100134:return void(this.s=t)}break;case 100141:return void(this.m=!!t);default:return void Z(this,100900)}Z(this,100901)},i.y=function(e){switch(e){case 100142:return 0;case 100140:return this.s;case 100141:return this.m;default:Z(this,100900)}return!1},i.A=function(e,t,r){this.j[0]=e,this.j[1]=t,this.j[2]=r},i.z=function(e,t){var r=t||null;switch(e){case 100100:case 100106:this.h=r;break;case 100104:case 100110:this.l=r;break;case 100101:case 100107:this.k=r;break;case 100102:case 100108:this.i=r;break;case 100103:case 100109:this.p=r;break;case 100105:case 100111:this.o=r;break;case 100112:this.r=r;break;default:Z(this,100900)}},i.C=function(e,t){var r=!1,i=[0,0,0];Y(this,2);for(var a=0;a<3;++a){var n=e[a];n<-1e150&&(n=-1e150,r=!0),1e150a[u]&&(a[u]=h,o[u]=l)}if(l=0,a[1]-n[1]>a[0]-n[0]&&(l=1),a[2]-n[2]>a[l]-n[l]&&(l=2),n[l]>=a[l])i[0]=0,i[1]=0,i[2]=1;else{for(a=0,n=s[l],o=o[l],s=[0,0,0],n=[n.g[0]-o.g[0],n.g[1]-o.g[1],n.g[2]-o.g[2]],u=[0,0,0],l=r.e;l!==r;l=l.e)u[0]=l.g[0]-o.g[0],u[1]=l.g[1]-o.g[1],u[2]=l.g[2]-o.g[2],s[0]=n[1]*u[2]-n[2]*u[1],s[1]=n[2]*u[0]-n[0]*u[2],s[2]=n[0]*u[1]-n[1]*u[0],a<(h=s[0]*s[0]+s[1]*s[1]+s[2]*s[2])&&(a=h,i[0]=s[0],i[1]=s[1],i[2]=s[2]);a<=0&&(i[0]=i[1]=i[2]=0,i[T(n)]=1)}r=!0}for(s=T(i),l=this.b.c,a=(s+1)%3,o=(s+2)%3,s=0>=l,h-=l,v!==n){if(v===o)break;for(var g=v>8,++y;var b=_;if(i>=8;null!==m&&s<4096&&(p[s++]=m<<8|b,u+1<=s&&l<12&&(++l,u=u<<1|1)),m=v}else s=o+1,u=(1<<(l=a+1))-1,m=null}return c!==i&&console.log("Warning, gif stream shorter than expected."),r}try{r.GifWriter=function(g,e,t,r){var y=0,i=void 0===(r=void 0===r?{}:r).loop?null:r.loop,_=void 0===r.palette?null:r.palette;if(e<=0||t<=0||65535>=1;)++a;if(o=1<>8&255,g[y++]=255&t,g[y++]=t>>8&255,g[y++]=(null!==_?128:0)|a,g[y++]=n,g[y++]=0,null!==_)for(var s=0,l=_.length;s>16&255,g[y++]=u>>8&255,g[y++]=255&u}if(null!==i){if(i<0||65535>8&255,g[y++]=0}var x=!1;this.addFrame=function(e,t,r,i,a,n){if(!0===x&&(--y,x=!1),n=void 0===n?{}:n,e<0||t<0||65535>=1;)++u;l=1<>8&255,g[y++]=f,g[y++]=0),g[y++]=44,g[y++]=255&e,g[y++]=e>>8&255,g[y++]=255&t,g[y++]=t>>8&255,g[y++]=255&r,g[y++]=r>>8&255,g[y++]=255&i,g[y++]=i>>8&255,g[y++]=!0===o?128|u-1:0,!0===o)for(var p=0,m=s.length;p>16&255,g[y++]=v>>8&255,g[y++]=255&v}return y=function(t,r,e,i){t[r++]=e;var a=r++,n=1<>=8,h-=8,r===a+256&&(t[a]=255,a=r++)}function f(e){d|=e<>=8,h-=8,r===a+256&&(t[a]=255,a=r++);4096===l?(f(n),l=s+1,u=e+1,m={}):(1<>7,a=1<<1+(7&r);x[e++],x[e++];var n=null,o=null;i&&(n=e,e+=3*(o=a));var s=!0,l=[],u=0,h=null,d=0,c=null;for(this.width=w,this.height=t;s&&e>2&7,e++;break;case 254:for(;;){if(!(0<=(C=x[e++])))throw Error("Invalid block size");if(0===C)break;e+=C}break;default:throw new Error("Unknown graphic control label: 0x"+x[e-1].toString(16))}break;case 44:var p=x[e++]|x[e++]<<8,m=x[e++]|x[e++]<<8,v=x[e++]|x[e++]<<8,g=x[e++]|x[e++]<<8,y=x[e++],_=y>>6&1,b=1<<1+(7&y),S=n,M=o,E=!1;y>>7&&(E=!0,S=e,e+=3*(M=b));var T=e;for(e++;;){var C;if(!(0<=(C=x[e++])))throw Error("Invalid block size");if(0===C)break;e+=C}l.push({x:p,y:m,width:v,height:g,has_local_palette:E,palette_offset:S,palette_size:M,data_offset:T,data_length:e-T,transparent_index:h,interlaced:!!_,delay:u,disposal:d});break;case 59:s=!1;break;default:throw new Error("Unknown gif block: 0x"+x[e-1].toString(16))}this.numFrames=function(){return l.length},this.loopCount=function(){return c},this.frameInfo=function(e){if(e<0||e>=l.length)throw new Error("Frame index out of range.");return l[e]},this.decodeAndBlitFrameBGRA=function(e,t){var r=this.frameInfo(e),i=r.width*r.height,a=new Uint8Array(i);P(x,r.data_offset,a,i);var n=r.palette_offset,o=r.transparent_index;null===o&&(o=256);var s=r.width,l=w-s,u=s,h=4*(r.y*w+r.x),d=4*((r.y+r.height)*w+r.x),c=h,f=4*l;!0===r.interlaced&&(f+=4*w*7);for(var p=8,m=0,v=a.length;m>=1)),g===o)c+=4;else{var y=x[n+3*g],_=x[n+3*g+1],b=x[n+3*g+2];t[c++]=b,t[c++]=_,t[c++]=y,t[c++]=255}--u}},this.decodeAndBlitFrameRGBA=function(e,t){var r=this.frameInfo(e),i=r.width*r.height,a=new Uint8Array(i);P(x,r.data_offset,a,i);var n=r.palette_offset,o=r.transparent_index;null===o&&(o=256);var s=r.width,l=w-s,u=s,h=4*(r.y*w+r.x),d=4*((r.y+r.height)*w+r.x),c=h,f=4*l;!0===r.interlaced&&(f+=4*w*7);for(var p=8,m=0,v=a.length;m>=1)),g===o)c+=4;else{var y=x[n+3*g],_=x[n+3*g+1],b=x[n+3*g+2];t[c++]=y,t[c++]=_,t[c++]=b,t[c++]=255}--u}}}}catch(e){}},{}],11:[function(jr,t,r){(function(Gr){var e;e=this,function(E){"use strict";var e,t;String.prototype.codePointAt||(e=function(){try{var e={},t=Object.defineProperty,r=t(e,e,e)&&t}catch(e){}return r}(),t=function(e){if(null==this)throw TypeError();var t=String(this),r=t.length,i=e?Number(e):0;if(i!=i&&(i=0),!(i<0||r<=i)){var a,n=t.charCodeAt(i);return 55296<=n&&n<=56319&&i+1>>=1,t}function b(e,t,r){if(!t)return r;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>16-t;return e.tag>>>=t,e.bitcount-=t,i+r}function x(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<>>=1,++a,r+=t.table[a],0<=(i-=t.table[a]););return e.tag=n,e.bitcount-=a,t.trans[r+i]}function w(e,t,r){var i,a,n,o,s,l;for(i=b(e,5,257),a=b(e,5,1),n=b(e,4,4),o=0;o<19;++o)v[o]=0;for(o=0;othis.x2&&(this.x2=e)),"number"==typeof t&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),tthis.y2&&(this.y2=t))},C.prototype.addX=function(e){this.addPoint(e,null)},C.prototype.addY=function(e){this.addPoint(null,e)},C.prototype.addBezier=function(e,t,r,i,a,n,o,s){var l=this,u=[e,t],h=[r,i],d=[a,n],c=[o,s];this.addPoint(e,t),this.addPoint(o,s);for(var f=0;f<=1;f++){var p=6*u[f]-12*h[f]+6*d[f],m=-3*u[f]+9*h[f]-9*d[f]+3*c[f],v=3*h[f]-3*u[f];if(0!==m){var g=Math.pow(p,2)-4*v*m;if(!(g<0)){var y=(-p+Math.sqrt(g))/(2*m);0>8&255,255&e]},I.USHORT=U(2),A.SHORT=function(e){return 32768<=e&&(e=-(65536-e)),[e>>8&255,255&e]},I.SHORT=U(2),A.UINT24=function(e){return[e>>16&255,e>>8&255,255&e]},I.UINT24=U(3),A.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},I.ULONG=U(4),A.LONG=function(e){return O<=e&&(e=-(2*O-e)),[e>>24&255,e>>16&255,e>>8&255,255&e]},I.LONG=U(4),A.FIXED=A.ULONG,I.FIXED=I.ULONG,A.FWORD=A.SHORT,I.FWORD=I.SHORT,A.UFWORD=A.USHORT,I.UFWORD=I.USHORT,A.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,255&e]},I.LONGDATETIME=U(8),A.TAG=function(e){return R.argument(4===e.length,"Tag should be exactly 4 ASCII characters."),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},I.TAG=U(4),A.Card8=A.BYTE,I.Card8=I.BYTE,A.Card16=A.USHORT,I.Card16=I.USHORT,A.OffSize=A.BYTE,I.OffSize=I.BYTE,A.SID=A.USHORT,I.SID=I.USHORT,A.NUMBER=function(e){return-107<=e&&e<=107?[e+139]:108<=e&&e<=1131?[247+((e-=108)>>8),255&e]:-1131<=e&&e<=-108?[251+((e=-e-108)>>8),255&e]:-32768<=e&&e<=32767?A.NUMBER16(e):A.NUMBER32(e)},I.NUMBER=function(e){return A.NUMBER(e).length},A.NUMBER16=function(e){return[28,e>>8&255,255&e]},I.NUMBER16=U(3),A.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,255&e]},I.NUMBER32=U(5),A.REAL=function(e){var t=e.toString(),r=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(r){var i=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*i)/i).toString()}for(var a="",n=0,o=t.length;n>8&255,t[t.length]=255&i}return t},I.UTF16=function(e){return 2*e.length};var F={"x-mac-croatian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ","x-mac-cyrillic":"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю","x-mac-gaelic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ","x-mac-greek":"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­","x-mac-icelandic":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-inuit":"ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł","x-mac-ce":"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ",macintosh:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-romanian":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ","x-mac-turkish":"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"};D.MACSTRING=function(e,t,r,i){var a=F[i];if(void 0!==a){for(var n="",o=0;o>8&255,l+256&255)}return n}A.MACSTRING=function(e,t){var r=function(e){if(!N)for(var t in N={},F)N[t]=new String(t);var r=N[e];if(void 0!==r){if(B){var i=B.get(r);if(void 0!==i)return i}var a=F[e];if(void 0!==a){for(var n={},o=0;o>8,t[d+1]=255&c,t=t.concat(i[h])}return t},I.TABLE=function(e){for(var t=0,r=e.fields.length,i=0;i>1,t.skip("uShort",3),e.glyphIndexMap={};for(var o=new se.Parser(r,i+a+14),s=new se.Parser(r,i+a+16+2*n),l=new se.Parser(r,i+a+16+4*n),u=new se.Parser(r,i+a+16+6*n),h=i+a+16+8*n,d=0;d>4,n=15&i;if(15===a)break;if(t+=r[a],15===n)break;t+=r[n]}return parseFloat(t)}(e);if(32<=t&&t<=246)return t-139;if(247<=t&&t<=250)return 256*(t-247)+e.parseByte()+108;if(251<=t&&t<=254)return 256*-(t-251)-e.parseByte()-108;throw new Error("Invalid b0 "+t)}function Te(e,t,r){t=void 0!==t?t:0;var i=new se.Parser(e,t),a=[],n=[];for(r=void 0!==r?r:e.length;i.relativeOffset>1,T.length=0,P=!0}return function e(t){for(var r,i,a,n,o,s,l,u,h,d,c,f,p=0;pMath.abs(f-O)?R=c+T.shift():O=f+T.shift(),E.curveTo(y,_,b,x,l,u),E.curveTo(h,d,c,f,R,O);break;default:console.log("Glyph "+g.index+": unknown operator 1200"+m),T.length=0}break;case 14:0>3;break;case 21:2>16),p+=2;break;case 29:o=T.pop()+v.gsubrsBias,(s=v.gsubrs[o])&&e(s);break;case 30:for(;0=r.begin&&e=ce.length){var o=i.parseChar();r.names.push(i.parseString(o))}break;case 2.5:r.numberOfGlyphs=i.parseUShort(),r.offset=new Array(r.numberOfGlyphs);for(var s=0;st.value.tag?1:-1}),t.fields=t.fields.concat(i),t.fields=t.fields.concat(a),t}function vt(e,t,r){for(var i=0;i 123 are reserved for internal usage");f|=1<>>1,n=e[a].tag;if(n===t)return a;n>>1,n=e[a];if(n===t)return a;n>>1,o=(r=e[n]).start;if(o===t)return r;o(r=e[i-1]).end?0:r}function xt(e,t){this.font=e,this.tableName=t}function wt(e){xt.call(this,e,"gpos")}function St(e){xt.call(this,e,"gsub")}function Mt(e,t){var r=e.length;if(r!==t.length)return!1;for(var i=0;it.points.length-1||i.matchedPoints[1]>a.points.length-1)throw Error("Matched points out of range in "+t.name);var o=t.points[i.matchedPoints[0]],s=a.points[i.matchedPoints[1]],l={xScale:i.xScale,scale01:i.scale01,scale10:i.scale10,yScale:i.yScale,dx:0,dy:0};s=Rt([s],l)[0],l.dx=o.x-s.x,l.dy=o.y-s.y,n=Rt(a.points,l)}t.points=t.points.concat(n)}}return Ot(t.points)}(wt.prototype=xt.prototype={searchTag:yt,binSearch:_t,getTable:function(e){var t=this.font.tables[this.tableName];return!t&&e&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var e=this.getTable();return e?e.scripts.map(function(e){return e.tag}):[]},getDefaultScriptName:function(){var e=this.getTable();if(e){for(var t=!1,r=0;r=s[u-1].tag,"Features must be added in alphabetical order."),n={tag:r,feature:{params:0,lookupListIndexes:[]}},s.push(n),o.push(u),n.feature}}},getLookupTables:function(e,t,r,i,a){var n=this.getFeatureTable(e,t,r,a),o=[];if(n){for(var s,l=n.lookupListIndexes,u=this.font.tables[this.tableName].lookups,h=0;h",s),t.stack.push(Math.round(64*s))}function gr(e,t){var r=t.stack,i=r.pop(),a=t.fv,n=t.pv,o=t.ppem,s=t.deltaBase+16*(e-1),l=t.deltaShift,u=t.z0;E.DEBUG&&console.log(t.step,"DELTAP["+e+"]",i,r);for(var h=0;h>4)===o){var f=(15&c)-8;0<=f&&f++,E.DEBUG&&console.log(t.step,"DELTAPFIX",d,"by",f*l);var p=u[d];a.setRelative(p,p,f*l,n)}}}function yr(e,t){var r=t.stack,i=r.pop();E.DEBUG&&console.log(t.step,"ROUND[]"),r.push(64*t.round(i/64))}function _r(e,t){var r=t.stack,i=r.pop(),a=t.ppem,n=t.deltaBase+16*(e-1),o=t.deltaShift;E.DEBUG&&console.log(t.step,"DELTAC["+e+"]",i,r);for(var s=0;s>4)===a){var h=(15&u)-8;0<=h&&h++;var d=h*o;E.DEBUG&&console.log(t.step,"DELTACFIX",l,"by",d),t.cvt[l]+=d}}}function br(e,t){var r,i,a=t.stack,n=a.pop(),o=a.pop(),s=t.z2[n],l=t.z1[o];E.DEBUG&&console.log(t.step,"SDPVTL["+e+"]",n,o),i=e?(r=s.y-l.y,l.x-s.x):(r=l.x-s.x,l.y-s.y),t.dpv=Zt(r,i)}function xr(e,t){var r=t.stack,i=t.prog,a=t.ip;E.DEBUG&&console.log(t.step,"PUSHB["+e+"]");for(var n=0;n":"_")+(i?"R":"_")+(0===a?"Gr":1===a?"Bl":2===a?"Wh":"")+"]",e?d+"("+n.cvt[d]+","+u+")":"",c,"(d =",o,"->",l*s,")"),n.rp1=n.rp0,n.rp2=c,t&&(n.rp0=c)}Nt.prototype.exec=function(e,t){if("number"!=typeof t)throw new Error("Point size is not a number!");if(!(2",i),s.interpolate(d,n,o,l),s.touch(d)}e.loop=1},fr.bind(void 0,0),fr.bind(void 0,1),function(e){for(var t=e.stack,r=e.rp0,i=e.z0[r],a=e.loop,n=e.fv,o=e.pv,s=e.z1;a--;){var l=t.pop(),u=s[l];E.DEBUG&&console.log(e.step,(1=o.width||t>=o.height?[0,0,0,0]:this._getPixel(e,t);var s=new l.default.Image(r,i);return s.canvas.getContext("2d").drawImage(o,e,t,r*n,i*n,0,0,r,i),s},l.default.Renderer.prototype.textLeading=function(e){return"number"==typeof e?(this._setProperty("_textLeading",e),this._pInst):this._textLeading},l.default.Renderer.prototype.textSize=function(e){return"number"==typeof e?(this._setProperty("_textSize",e),this._setProperty("_textLeading",e*y._DEFAULT_LEADMULT),this._applyTextProperties()):this._textSize},l.default.Renderer.prototype.textStyle=function(e){return e?(e!==y.NORMAL&&e!==y.ITALIC&&e!==y.BOLD&&e!==y.BOLDITALIC||this._setProperty("_textStyle",e),this._applyTextProperties()):this._textStyle},l.default.Renderer.prototype.textAscent=function(){return null===this._textAscent&&this._updateTextMetrics(),this._textAscent},l.default.Renderer.prototype.textDescent=function(){return null===this._textDescent&&this._updateTextMetrics(),this._textDescent},l.default.Renderer.prototype.textAlign=function(e,t){return void 0!==e?(this._setProperty("_textAlign",e),void 0!==t&&this._setProperty("_textBaseline",t),this._applyTextProperties()):{horizontal:this._textAlign,vertical:this._textBaseline}},l.default.Renderer.prototype.text=function(e,t,r,i,a){var n,o,s,l,u,h,d,c,f=this._pInst,p=Number.MAX_VALUE;if((this._doFill||this._doStroke)&&void 0!==e){if("string"!=typeof e&&(e=e.toString()),n=(e=e.replace(/(\t)/g," ")).split("\n"),void 0!==i){for(s=c=0;so.HALF_PI&&e<=3*o.HALF_PI?Math.atan(r/i*Math.tan(e))+o.PI:Math.atan(r/i*Math.tan(e))+o.TWO_PI,t=t<=o.HALF_PI?Math.atan(r/i*Math.tan(t)):t>o.HALF_PI&&t<=3*o.HALF_PI?Math.atan(r/i*Math.tan(t))+o.PI:Math.atan(r/i*Math.tan(t))+o.TWO_PI),tg||Math.abs(this.accelerationY-this.pAccelerationY)>g||Math.abs(this.accelerationZ-this.pAccelerationZ)>g)&&e();var t=this.deviceTurned||window.deviceTurned;if("function"==typeof t){var r=this.rotationX+180,i=this.pRotationX+180,a=d+180;0>>24],i+=x[(16711680&C)>>16],a+=x[(65280&C)>>8],n+=x[255&C],r+=R[b],s++}w[l=T+y]=o/r,S[l]=i/r,M[l]=a/r,E[l]=n/r}T+=f}for(h=(u=-P)*f,_=T=0;_>>16,e[r+1]=(65280&t[i])>>>8,e[r+2]=255&t[i],e[r+3]=(4278190080&t[i])>>>24},D._toImageData=function(e){return e instanceof ImageData?e:e.getContext("2d").getImageData(0,0,e.width,e.height)},D._createImageData=function(e,t){return D._tmpCanvas=document.createElement("canvas"),D._tmpCtx=D._tmpCanvas.getContext("2d"),this._tmpCtx.createImageData(e,t)},D.apply=function(e,t,r){var i=e.getContext("2d"),a=i.getImageData(0,0,e.width,e.height),n=t(a,r);n instanceof ImageData?i.putImageData(n,0,0,0,0,e.width,e.height):i.putImageData(a,0,0,0,0,e.width,e.height)},D.threshold=function(e,t){var r=D._toPixels(e);void 0===t&&(t=.5);for(var i=Math.floor(255*t),a=0;a>8)/i,r[a+1]=255*(o*t>>8)/i,r[a+2]=255*(s*t>>8)/i}},D.dilate=function(e){for(var t,r,i,a,n,o,s,l,u,h,d,c,f,p,m,v,g,y=D._toPixels(e),_=0,b=y.length?y.length/4:0,x=new Int32Array(b);_>16&255)+151*(i>>8&255)+28*(255&i))<(m=77*(d>>16&255)+151*(d>>8&255)+28*(255&d))&&(a=d,n=m),n<(p=77*((h=D._getARGB(y,o))>>16&255)+151*(h>>8&255)+28*(255&h))&&(a=h,n=p),n<(v=77*(c>>16&255)+151*(c>>8&255)+28*(255&c))&&(a=c,n=v),n<(g=77*(f>>16&255)+151*(f>>8&255)+28*(255&f))&&(a=f,n=g),x[_++]=a;D._setPixels(y,x)},D.erode=function(e){for(var t,r,i,a,n,o,s,l,u,h,d,c,f,p,m,v,g,y=D._toPixels(e),_=0,b=y.length?y.length/4:0,x=new Int32Array(b);_>16&255)+151*(d>>8&255)+28*(255&d))<(n=77*(i>>16&255)+151*(i>>8&255)+28*(255&i))&&(a=d,n=m),(p=77*((h=D._getARGB(y,o))>>16&255)+151*(h>>8&255)+28*(255&h))>16&255)+151*(c>>8&255)+28*(255&c))>16&255)+151*(f>>8&255)+28*(255&f))=t.delay){var r=Math.floor(t.timeDisplayed/t.delay);if(t.timeDisplayed=0,t.displayIndex+=r,t.loopCount=Math.floor(t.displayIndex/t.numFrames),null!==t.loopLimit&&t.loopCount>=t.loopLimit)t.playing=!1;else{var i=t.displayIndex%t.numFrames;this.drawingContext.putImageData(t.frames[i],0,0),t.displayIndex=i,this.setModified(!0)}}},a.default.Image.prototype._setProperty=function(e,t){this[e]=t,this.setModified(!0)},a.default.Image.prototype.loadPixels=function(){a.default.Renderer2D.prototype.loadPixels.call(this),this.setModified(!0)},a.default.Image.prototype.updatePixels=function(e,t,r,i){a.default.Renderer2D.prototype.updatePixels.call(this,e,t,r,i),this.setModified(!0)},a.default.Image.prototype.get=function(e,t,r,i){return a.default._validateParameters("p5.Image.get",arguments),a.default.Renderer2D.prototype.get.apply(this,arguments)},a.default.Image.prototype._getPixel=a.default.Renderer2D.prototype._getPixel,a.default.Image.prototype.set=function(e,t,r){a.default.Renderer2D.prototype.set.call(this,e,t,r),this.setModified(!0)},a.default.Image.prototype.resize=function(e,t){0===e&&0===t?(e=this.canvas.width,t=this.canvas.height):0===e?e=this.canvas.width*t/this.canvas.height:0===t&&(t=this.canvas.height*e/this.canvas.width),e=Math.floor(e),t=Math.floor(t);var r=document.createElement("canvas");if(r.width=e,r.height=t,this.gifProperties)for(var i=this.gifProperties,a=function(e,t){for(var r=0,i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function l(e,t){t&&!0!==t&&"true"!==t||(t=""),e||(e="untitled");var r="";return e&&e.includes(".")&&(r=e.split(".").pop()),t&&r!==t&&(r=t,e="".concat(e,".").concat(r)),[e,r]}e("../core/error_helpers"),g.default.prototype.loadJSON=function(){for(var e=arguments.length,t=new Array(e),r=0;r"),a.print("");if('="text/html;charset=utf-8" />',a.print(' '),a.print(""),a.print(""),a.print(" "),"0"!==n[0]){a.print(" ");for(var h=0;h".concat(d)),a.print(" ")}a.print(" ")}for(var c=0;c");for(var f=0;f".concat(p)),a.print(" ")}a.print(" ")}a.print("
"),a.print(""),a.print("")}a.close(),a.clear()},g.default.prototype.writeFile=function(e,t,r){var i="application/octet-stream";g.default.prototype._isSafari()&&(i="text/plain");var a=new Blob(e,{type:i});g.default.prototype.downloadFile(a,t,r)},g.default.prototype.downloadFile=function(e,t,r){var i=l(t,r),a=i[0];if(e instanceof Blob)s.default.saveAs(e,a);else{var n=document.createElement("a");if(n.href=e,n.download=a,n.onclick=function(e){var t;t=e,document.body.removeChild(t.target),e.stopPropagation()},n.style.display="none",document.body.appendChild(n),g.default.prototype._isSafari()){var o="Hello, Safari user! To download this file...\n";o+="1. Go to File --\x3e Save As.\n",o+='2. Choose "Page Source" as the Format.\n',o+='3. Name it with this extension: ."'.concat(i[1],'"'),alert(o)}n.click()}},g.default.prototype._checkFileExtension=l,g.default.prototype._isSafari=function(){return 0>>0},getSeed:function(){return t},rand:function(){return(r=(1664525*r+1013904223)%i)/i}});a.setSeed(e),_=new Array(4096);for(var n=0;n<4096;n++)_[n]=a.rand()};var n=a.default;r.default=n},{"../core/main":26}],59:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i,s=(i=e("../core/main"))&&i.__esModule?i:{default:i},n=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){var i=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,r):{};i.get||i.set?Object.defineProperty(t,r,i):t[r]=e[r]}return t.default=e,t}}(e("../core/constants"));s.default.Vector=function(){var e,t,r;r=arguments[0]instanceof s.default?(this.p5=arguments[0],e=arguments[1][0]||0,t=arguments[1][1]||0,arguments[1][2]||0):(e=arguments[0]||0,t=arguments[1]||0,arguments[2]||0),this.x=e,this.y=t,this.z=r},s.default.Vector.prototype.toString=function(){return"p5.Vector Object : [".concat(this.x,", ").concat(this.y,", ").concat(this.z,"]")},s.default.Vector.prototype.set=function(e,t,r){return e instanceof s.default.Vector?(this.x=e.x||0,this.y=e.y||0,this.z=e.z||0):e instanceof Array?(this.x=e[0]||0,this.y=e[1]||0,this.z=e[2]||0):(this.x=e||0,this.y=t||0,this.z=r||0),this},s.default.Vector.prototype.copy=function(){return this.p5?new s.default.Vector(this.p5,[this.x,this.y,this.z]):new s.default.Vector(this.x,this.y,this.z)},s.default.Vector.prototype.add=function(e,t,r){return e instanceof s.default.Vector?(this.x+=e.x||0,this.y+=e.y||0,this.z+=e.z||0):e instanceof Array?(this.x+=e[0]||0,this.y+=e[1]||0,this.z+=e[2]||0):(this.x+=e||0,this.y+=t||0,this.z+=r||0),this},s.default.Vector.prototype.sub=function(e,t,r){return e instanceof s.default.Vector?(this.x-=e.x||0,this.y-=e.y||0,this.z-=e.z||0):e instanceof Array?(this.x-=e[0]||0,this.y-=e[1]||0,this.z-=e[2]||0):(this.x-=e||0,this.y-=t||0,this.z-=r||0),this},s.default.Vector.prototype.mult=function(e){return"number"==typeof e&&isFinite(e)?(this.x*=e,this.y*=e,this.z*=e):console.warn("p5.Vector.prototype.mult:","n is undefined or not a finite number"),this},s.default.Vector.prototype.div=function(e){return"number"==typeof e&&isFinite(e)?0===e?console.warn("p5.Vector.prototype.div:","divide by 0"):(this.x/=e,this.y/=e,this.z/=e):console.warn("p5.Vector.prototype.div:","n is undefined or not a finite number"),this},s.default.Vector.prototype.mag=function(){return Math.sqrt(this.magSq())},s.default.Vector.prototype.magSq=function(){var e=this.x,t=this.y,r=this.z;return e*e+t*t+r*r},s.default.Vector.prototype.dot=function(e,t,r){return e instanceof s.default.Vector?this.dot(e.x,e.y,e.z):this.x*(e||0)+this.y*(t||0)+this.z*(r||0)},s.default.Vector.prototype.cross=function(e){var t=this.y*e.z-this.z*e.y,r=this.z*e.x-this.x*e.z,i=this.x*e.y-this.y*e.x;return this.p5?new s.default.Vector(this.p5,[t,r,i]):new s.default.Vector(t,r,i)},s.default.Vector.prototype.dist=function(e){return e.copy().sub(this).mag()},s.default.Vector.prototype.normalize=function(){var e=this.mag();return 0!==e&&this.mult(1/e),this},s.default.Vector.prototype.limit=function(e){var t=this.magSq();return e*e>>0},a.default.prototype.randomSeed=function(e){this._lcgSetSeed(n,e),this._gaussian_previous=!1},a.default.prototype.random=function(e,t){var r;if(a.default._validateParameters("random",arguments),r=null!=this[n]?this._lcg(n):Math.random(),void 0===e)return r;if(void 0===t)return e instanceof Array?e[Math.floor(r*e.length)]:r*e;if(tc){var P=p,L=l,R=u;p=f+c*(s&&f=t&&(r=r.substring(r.length-t,r.length)),r}},a.default.prototype.unhex=function(e){return e instanceof Array?e.map(a.default.prototype.unhex):parseInt("0x".concat(e),16)};var n=a.default;r.default=n},{"../core/main":26}],67:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i,o=(i=e("../core/main"))&&i.__esModule?i:{default:i};function a(e,t,r){var i=e<0,a=i?e.toString().substring(1):e.toString(),n=a.indexOf("."),o=-1!==n?a.substring(0,n):a,s=-1!==n?a.substring(n+1):"",l=i?"-":"";if(void 0!==r){var u="";(-1!==n||0r&&(s=s.substring(0,r));for(var h=0;hi.length)for(var n=t-(i+=-1===r?".":"").length+1,o=0;o=f.TWO_PI?"".concat(t="ellipse","|").concat(h,"|"):"".concat(t="arc","|").concat(s,"|").concat(l,"|").concat(u,"|").concat(h,"|"),!this.geometryInHash(r)){var d=new T.default.Geometry(h,1,function(){if(this.strokeIndices=[],s.toFixed(10)!==l.toFixed(10)){u!==f.PIE&&void 0!==u||(this.vertices.push(new T.default.Vector(.5,.5,0)),this.uvs.push([.5,.5]));for(var e=0;e<=h;e++){var t=e/h*(l-s)+s,r=.5+Math.cos(t)/2,i=.5+Math.sin(t)/2;this.vertices.push(new T.default.Vector(r,i,0)),this.uvs.push([r,i]),e>5&31)/31,(y>>10&31)/31):(r=o,i=s,l)}for(var _=1;_<=3;_++){var b=p+12*_,x=new S.default.Vector(u.getFloat32(b,!0),u.getFloat32(b+8,!0),u.getFloat32(b+4,!0));e.vertices.push(x),d&&n.push(r,i,a)}var w=new S.default.Vector(m,v,g);e.vertexNormals.push(w,w,w),e.faces.push([3*f,3*f+1,3*f+2]),e.uvs.push([0,0],[0,0],[0,0])}}(e,t);else{var r=new DataView(t);if(!("TextDecoder"in window))return console.warn("Sorry, ASCII STL loading only works in browsers that support TextDecoder (https://caniuse.com/#feat=textencoder)");var i=new TextDecoder("utf-8"),a=i.decode(r),n=a.split("\n");!function(e,t){for(var r,i,a="",n=[],o=0;oMath.PI?l=Math.PI:l<=0&&(l=.001);var u=Math.sin(l)*o*Math.sin(s),h=Math.cos(l)*o,d=Math.sin(l)*o*Math.cos(s);this.camera(u+this.centerX,h+this.centerY,d+this.centerZ,this.centerX,this.centerY,this.centerZ,0,1,0)},m.default.Camera.prototype._isActive=function(){return this===this._renderer._curCamera},m.default.prototype.setCamera=function(e){this._renderer._curCamera=e,this._renderer.uPMatrix.set(e.projMatrix.mat4[0],e.projMatrix.mat4[1],e.projMatrix.mat4[2],e.projMatrix.mat4[3],e.projMatrix.mat4[4],e.projMatrix.mat4[5],e.projMatrix.mat4[6],e.projMatrix.mat4[7],e.projMatrix.mat4[8],e.projMatrix.mat4[9],e.projMatrix.mat4[10],e.projMatrix.mat4[11],e.projMatrix.mat4[12],e.projMatrix.mat4[13],e.projMatrix.mat4[14],e.projMatrix.mat4[15])};var a=m.default.Camera;r.default=a},{"../core/main":26}],75:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i,h=(i=e("../core/main"))&&i.__esModule?i:{default:i};h.default.Geometry=function(e,t,r){return this.vertices=[],this.lineVertices=[],this.lineNormals=[],this.vertexNormals=[],this.faces=[],this.uvs=[],this.edges=[],this.detailX=void 0!==e?e:1,this.detailY=void 0!==t?t:1,this.dirtyFlags={},r instanceof Function&&r.call(this),this},h.default.Geometry.prototype.reset=function(){this.lineVertices.length=0,this.lineNormals.length=0,this.vertices.length=0,this.edges.length=0,this.vertexColors.length=0,this.vertexNormals.length=0,this.uvs.length=0,this.dirtyFlags={}},h.default.Geometry.prototype.computeFaces=function(){this.faces.length=0;for(var e,t,r,i,a=this.detailX+1,n=0;nthis.vertices.length-1-this.detailX;i--)e.add(this.vertexNormals[i]);e=h.default.Vector.div(e,this.detailX);for(var a=this.vertices.length-1;a>this.vertices.length-1-this.detailX;a--)this.vertexNormals[a]=e;return this},h.default.Geometry.prototype._makeTriangleEdges=function(){if(this.edges.length=0,Array.isArray(this.strokeIndices))for(var e=0,t=this.strokeIndices.length;e vTexCoord.y;\n bool y1 = p1.y > vTexCoord.y;\n bool y2 = p2.y > vTexCoord.y;\n\n // could web be under the curve (after t1)?\n if (y1 ? !y2 : y0) {\n // add the coverage for t1\n coverage.x += saturate(C1.x + 0.5);\n // calculate the anti-aliasing for t1\n weight.x = min(weight.x, abs(C1.x));\n }\n\n // are we outside the curve (after t2)?\n if (y1 ? !y0 : y2) {\n // subtract the coverage for t2\n coverage.x -= saturate(C2.x + 0.5);\n // calculate the anti-aliasing for t2\n weight.x = min(weight.x, abs(C2.x));\n }\n}\n\n// this is essentially the same as coverageX, but with the axes swapped\nvoid coverageY(vec2 p0, vec2 p1, vec2 p2) {\n\n vec2 C1, C2;\n calulateCrossings(p0, p1, p2, C1, C2);\n\n bool x0 = p0.x > vTexCoord.x;\n bool x1 = p1.x > vTexCoord.x;\n bool x2 = p2.x > vTexCoord.x;\n\n if (x1 ? !x2 : x0) {\n coverage.y -= saturate(C1.y + 0.5);\n weight.y = min(weight.y, abs(C1.y));\n }\n\n if (x1 ? !x0 : x2) {\n coverage.y += saturate(C2.y + 0.5);\n weight.y = min(weight.y, abs(C2.y));\n }\n}\n\nvoid main() {\n\n // calculate the pixel scale based on screen-coordinates\n pixelScale = hardness / fwidth(vTexCoord);\n\n // which grid cell is this pixel in?\n ivec2 gridCoord = ifloor(vTexCoord * vec2(uGridSize));\n\n // intersect curves in this row\n {\n // the index into the row info bitmap\n int rowIndex = gridCoord.y + uGridOffset.y;\n // fetch the info texel\n vec4 rowInfo = getTexel(uSamplerRows, rowIndex, uGridImageSize);\n // unpack the rowInfo\n int rowStrokeIndex = getInt16(rowInfo.xy);\n int rowStrokeCount = getInt16(rowInfo.zw);\n\n for (int iRowStroke = INT(0); iRowStroke < N; iRowStroke++) {\n if (iRowStroke >= rowStrokeCount)\n break;\n\n // each stroke is made up of 3 points: the start and control point\n // and the start of the next curve.\n // fetch the indices of this pair of strokes:\n vec4 strokeIndices = getTexel(uSamplerRowStrokes, rowStrokeIndex++, uCellsImageSize);\n\n // unpack the stroke index\n int strokePos = getInt16(strokeIndices.xy);\n\n // fetch the two strokes\n vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n\n // calculate the coverage\n coverageX(stroke0.xy, stroke0.zw, stroke1.xy);\n }\n }\n\n // intersect curves in this column\n {\n int colIndex = gridCoord.x + uGridOffset.x;\n vec4 colInfo = getTexel(uSamplerCols, colIndex, uGridImageSize);\n int colStrokeIndex = getInt16(colInfo.xy);\n int colStrokeCount = getInt16(colInfo.zw);\n \n for (int iColStroke = INT(0); iColStroke < N; iColStroke++) {\n if (iColStroke >= colStrokeCount)\n break;\n\n vec4 strokeIndices = getTexel(uSamplerColStrokes, colStrokeIndex++, uCellsImageSize);\n\n int strokePos = getInt16(strokeIndices.xy);\n vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n coverageY(stroke0.xy, stroke0.zw, stroke1.xy);\n }\n }\n\n weight = saturate(1.0 - weight * 2.0);\n float distance = max(weight.x + weight.y, minDistance); // manhattan approx.\n float antialias = abs(dot(coverage, weight) / distance);\n float cover = min(abs(coverage.x), abs(coverage.y));\n gl_FragColor = uMaterialColor;\n gl_FragColor.a *= saturate(max(antialias, cover));\n}",lineVert:"/*\n Part of the Processing project - http://processing.org\n Copyright (c) 2012-15 The Processing Foundation\n Copyright (c) 2004-12 Ben Fry and Casey Reas\n Copyright (c) 2001-04 Massachusetts Institute of Technology\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation, version 2.1.\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General\n Public License along with this library; if not, write to the\n Free Software Foundation, Inc., 59 Temple Place, Suite 330,\n Boston, MA 02111-1307 USA\n*/\n\n#define PROCESSING_LINE_SHADER\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uStrokeWeight;\n\nuniform vec4 uViewport;\nuniform int uPerspective;\n\nattribute vec4 aPosition;\nattribute vec4 aDirection;\n \nvoid main() {\n // using a scale <1 moves the lines towards the camera\n // in order to prevent popping effects due to half of\n // the line disappearing behind the geometry faces.\n vec3 scale = vec3(0.9995);\n\n vec4 posp = uModelViewMatrix * aPosition;\n vec4 posq = uModelViewMatrix * (aPosition + vec4(aDirection.xyz, 0));\n\n // Moving vertices slightly toward the camera\n // to avoid depth-fighting with the fill triangles.\n // Discussed here:\n // http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252848 \n posp.xyz = posp.xyz * scale;\n posq.xyz = posq.xyz * scale;\n\n vec4 p = uProjectionMatrix * posp;\n vec4 q = uProjectionMatrix * posq;\n\n // formula to convert from clip space (range -1..1) to screen space (range 0..[width or height])\n // screen_p = (p.xy/p.w + <1,1>) * 0.5 * uViewport.zw\n\n // prevent division by W by transforming the tangent formula (div by 0 causes\n // the line to disappear, see https://github.com/processing/processing/issues/5183)\n // t = screen_q - screen_p\n //\n // tangent is normalized and we don't care which aDirection it points to (+-)\n // t = +- normalize( screen_q - screen_p )\n // t = +- normalize( (q.xy/q.w+<1,1>)*0.5*uViewport.zw - (p.xy/p.w+<1,1>)*0.5*uViewport.zw )\n //\n // extract common factor, <1,1> - <1,1> cancels out\n // t = +- normalize( (q.xy/q.w - p.xy/p.w) * 0.5 * uViewport.zw )\n //\n // convert to common divisor\n // t = +- normalize( ((q.xy*p.w - p.xy*q.w) / (p.w*q.w)) * 0.5 * uViewport.zw )\n //\n // remove the common scalar divisor/factor, not needed due to normalize and +-\n // (keep uViewport - can't remove because it has different components for x and y\n // and corrects for aspect ratio, see https://github.com/processing/processing/issues/5181)\n // t = +- normalize( (q.xy*p.w - p.xy*q.w) * uViewport.zw )\n\n vec2 tangent = normalize((q.xy*p.w - p.xy*q.w) * uViewport.zw);\n\n // flip tangent to normal (it's already normalized)\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n float thickness = aDirection.w * uStrokeWeight;\n vec2 offset = normal * thickness / 2.0;\n\n vec2 curPerspScale;\n\n if(uPerspective == 1) {\n // Perspective ---\n // convert from world to clip by multiplying with projection scaling factor\n // to get the right thickness (see https://github.com/processing/processing/issues/5182)\n // invert Y, projections in Processing invert Y\n curPerspScale = (uProjectionMatrix * vec4(1, -1, 0, 0)).xy;\n } else {\n // No Perspective ---\n // multiply by W (to cancel out division by W later in the pipeline) and\n // convert from screen to clip (derived from clip to screen above)\n curPerspScale = p.w / (0.5 * uViewport.zw);\n }\n\n gl_Position.xy = p.xy + offset.xy * curPerspScale;\n gl_Position.zw = p.zw;\n}\n",lineFrag:"precision mediump float;\nprecision mediump int;\n\nuniform vec4 uMaterialColor;\n\nvoid main() {\n gl_FragColor = uMaterialColor;\n}",pointVert:"attribute vec3 aPosition;\nuniform float uPointSize;\nvarying float vStrokeWeight;\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nvoid main() {\n\tvec4 positionVec4 = vec4(aPosition, 1.0);\n\tgl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n\tgl_PointSize = uPointSize;\n\tvStrokeWeight = uPointSize;\n}",pointFrag:"precision mediump float;\nprecision mediump int;\nuniform vec4 uMaterialColor;\nvarying float vStrokeWeight;\n\nvoid main(){\n\tfloat mask = 0.0;\n\n\t// make a circular mask using the gl_PointCoord (goes from 0 - 1 on a point)\n // might be able to get a nicer edge on big strokeweights with smoothstep but slightly less performant\n\n\tmask = step(0.98, length(gl_PointCoord * 2.0 - 1.0));\n\n\t// if strokeWeight is 1 or less lets just draw a square\n\t// this prevents weird artifacting from carving circles when our points are really small\n\t// if strokeWeight is larger than 1, we just use it as is\n\n\tmask = mix(0.0, mask, clamp(floor(vStrokeWeight - 0.5),0.0,1.0));\n\n\t// throw away the borders of the mask\n // otherwise we get weird alpha blending issues\n\n\tif(mask > 0.98){\n discard;\n \t}\n\n \tgl_FragColor = vec4(uMaterialColor.rgb * (1.0 - mask), uMaterialColor.a) ;\n}"};u.default.RendererGL=function(e,t,r,i){return u.default.Renderer.call(this,e,t,r),this._setAttributeDefaults(t),this._initContext(),this.isP3D=!0,this.GL=this.drawingContext,this._isErasing=!1,this._enableLighting=!1,this.ambientLightColors=[],this.specularColors=[1,1,1],this.directionalLightDirections=[],this.directionalLightDiffuseColors=[],this.directionalLightSpecularColors=[],this.pointLightPositions=[],this.pointLightDiffuseColors=[],this.pointLightSpecularColors=[],this.spotLightPositions=[],this.spotLightDirections=[],this.spotLightDiffuseColors=[],this.spotLightSpecularColors=[],this.spotLightAngle=[],this.spotLightConc=[],this.drawMode=n.FILL,this.curFillColor=this._cachedFillStyle=[1,1,1,1],this.curStrokeColor=this._cachedStrokeStyle=[0,0,0,1],this.curBlendMode=this._cachedBlendMode=n.BLEND,this.blendExt=this.GL.getExtension("EXT_blend_minmax"),this._useSpecularMaterial=!1,this._useEmissiveMaterial=!1,this._useNormalMaterial=!1,this._useShininess=1,this._tint=[255,255,255,255],this.constantAttenuation=1,this.linearAttenuation=0,this.quadraticAttenuation=0,this.uMVMatrix=new u.default.Matrix,this.uPMatrix=new u.default.Matrix,this.uNMatrix=new u.default.Matrix("mat3"),this._curCamera=new u.default.Camera(this),this._curCamera._computeCameraDefaultSettings(),this._curCamera._setDefaultCamera(),this.gHash={},this._defaultLightShader=void 0,this._defaultImmediateModeShader=void 0,this._defaultNormalShader=void 0,this._defaultColorShader=void 0,this._defaultPointShader=void 0,this._pointVertexBuffer=this.GL.createBuffer(),this.userFillShader=void 0,this.userStrokeShader=void 0,this.userPointShader=void 0,this.isImmediateDrawing=!1,this.immediateMode={},this.pointSize=5,this.curStrokeWeight=1,this.textures=[],this.textureMode=n.IMAGE,this.textureWrapX=n.CLAMP,this.textureWrapY=n.CLAMP,this._tex=null,this._curveTightness=6,this._lookUpTableBezier=[],this._lookUpTableQuadratic=[],this._lutBezierDetail=0,this._lutQuadraticDetail=0,this._tessy=this._initTessy(),this.fontInfos={},this},u.default.RendererGL.prototype=Object.create(u.default.Renderer.prototype),u.default.RendererGL.prototype._setAttributeDefaults=function(e){var t={alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,perPixelLighting:!1};null===e._glAttributes?e._glAttributes=t:e._glAttributes=Object.assign(t,e._glAttributes)},u.default.RendererGL.prototype._initContext=function(){try{if(this.drawingContext=this.canvas.getContext("webgl",this._pInst._glAttributes)||this.canvas.getContext("experimental-webgl",this._pInst._glAttributes),null===this.drawingContext)throw new Error("Error creating webgl context");var e=this.drawingContext;e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),this._viewport=this.drawingContext.getParameter(this.drawingContext.VIEWPORT)}catch(e){throw e}},u.default.RendererGL.prototype._resetContext=function(e,t){var r=this.width,i=this.height,a=this.canvas.id,n=this._pInst instanceof u.default.Graphics;if(n){var o=this._pInst;o.canvas.parentNode.removeChild(o.canvas),o.canvas=document.createElement("canvas"),(o._pInst._userNode||document.body).appendChild(o.canvas),u.default.Element.call(o,o.canvas,o._pInst),o.width=r,o.height=i}else{var s=this.canvas;s&&s.parentNode.removeChild(s),(s=document.createElement("canvas")).id=a,this._pInst._userNode?this._pInst._userNode.appendChild(s):document.body.appendChild(s),this._pInst.canvas=s}var l=new u.default.RendererGL(this._pInst.canvas,this._pInst,!n);this._pInst._setProperty("_renderer",l),l.resize(r,i),l._applyDefaults(),n||this._pInst._elements.push(l),"function"==typeof t&&setTimeout(function(){t.apply(window._renderer,e)},0)},u.default.prototype.setAttributes=function(e,t){if(void 0!==this._glAttributes){var r=!0;if(void 0!==t?(null===this._glAttributes&&(this._glAttributes={}),this._glAttributes[e]!==t&&(this._glAttributes[e]=t,r=!1)):e instanceof Object&&this._glAttributes!==e&&(this._glAttributes=e,r=!1),this._renderer.isP3D&&!r){if(!this._setupDone)for(var i in this._renderer.gHash)if(this._renderer.gHash.hasOwnProperty(i))return void console.error("Sorry, Could not set the attributes, you need to call setAttributes() before calling the other drawing methods in setup()");this.push(),this._renderer._resetContext(),this.pop(),this._renderer._curCamera&&(this._renderer._curCamera._renderer=this._renderer)}}else console.log("You are trying to use setAttributes on a p5.Graphics object that does not use a WEBGL renderer.")},u.default.RendererGL.prototype._update=function(){this.uMVMatrix.set(this._curCamera.cameraMatrix.mat4[0],this._curCamera.cameraMatrix.mat4[1],this._curCamera.cameraMatrix.mat4[2],this._curCamera.cameraMatrix.mat4[3],this._curCamera.cameraMatrix.mat4[4],this._curCamera.cameraMatrix.mat4[5],this._curCamera.cameraMatrix.mat4[6],this._curCamera.cameraMatrix.mat4[7],this._curCamera.cameraMatrix.mat4[8],this._curCamera.cameraMatrix.mat4[9],this._curCamera.cameraMatrix.mat4[10],this._curCamera.cameraMatrix.mat4[11],this._curCamera.cameraMatrix.mat4[12],this._curCamera.cameraMatrix.mat4[13],this._curCamera.cameraMatrix.mat4[14],this._curCamera.cameraMatrix.mat4[15]),this.ambientLightColors.length=0,this.specularColors=[1,1,1],this.directionalLightDirections.length=0,this.directionalLightDiffuseColors.length=0,this.directionalLightSpecularColors.length=0,this.pointLightPositions.length=0,this.pointLightDiffuseColors.length=0,this.pointLightSpecularColors.length=0,this.spotLightPositions.length=0,this.spotLightDirections.length=0,this.spotLightDiffuseColors.length=0,this.spotLightSpecularColors.length=0,this.spotLightAngle.length=0,this.spotLightConc.length=0,this._enableLighting=!1,this._tint=[255,255,255,255],this.GL.clear(this.GL.DEPTH_BUFFER_BIT)},u.default.RendererGL.prototype.background=function(){var e,t=(e=this._pInst).color.apply(e,arguments),r=t.levels[0]/255,i=t.levels[1]/255,a=t.levels[2]/255,n=t.levels[3]/255;this.GL.clearColor(r,i,a,n),this.GL.depthMask(!0),this.GL.clear(this.GL.COLOR_BUFFER_BIT|this.GL.DEPTH_BUFFER_BIT)},u.default.RendererGL.prototype.fill=function(e,t,r,i){var a=u.default.prototype.color.apply(this._pInst,arguments);this.curFillColor=a._array,this.drawMode=n.FILL,this._useNormalMaterial=!1,this._tex=null},u.default.RendererGL.prototype.stroke=function(e,t,r,i){i=255;var a=u.default.prototype.color.apply(this._pInst,arguments);this.curStrokeColor=a._array},u.default.RendererGL.prototype.strokeCap=function(e){console.error("Sorry, strokeCap() is not yet implemented in WEBGL mode")},u.default.RendererGL.prototype.strokeJoin=function(e){console.error("Sorry, strokeJoin() is not yet implemented in WEBGL mode")},u.default.RendererGL.prototype.blendMode=function(e){e===n.DARKEST||e===n.LIGHTEST||e===n.ADD||e===n.BLEND||e===n.SUBTRACT||e===n.SCREEN||e===n.EXCLUSION||e===n.REPLACE||e===n.MULTIPLY||e===n.REMOVE?this.curBlendMode=e:e!==n.BURN&&e!==n.OVERLAY&&e!==n.HARD_LIGHT&&e!==n.SOFT_LIGHT&&e!==n.DODGE||console.warn("BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.")},u.default.RendererGL.prototype.erase=function(e,t){this._isErasing||(this._cachedBlendMode=this.curBlendMode,this.blendMode(n.REMOVE),this._cachedFillStyle=this.curFillColor.slice(),this.curFillColor=[1,1,1,e/255],this._cachedStrokeStyle=this.curStrokeColor.slice(),this.curStrokeColor=[1,1,1,t/255],this._isErasing=!0)},u.default.RendererGL.prototype.noErase=function(){this._isErasing&&(this.curFillColor=this._cachedFillStyle.slice(),this.curStrokeColor=this._cachedStrokeStyle.slice(),this.blendMode(this._cachedBlendMode),this._isErasing=!1)},u.default.RendererGL.prototype.strokeWeight=function(e){this.curStrokeWeight!==e&&(this.pointSize=e,this.curStrokeWeight=e)},u.default.RendererGL.prototype._getPixel=function(e,t){var r;return r=new Uint8Array(4),this.drawingContext.readPixels(e,t,1,1,this.drawingContext.RGBA,this.drawingContext.UNSIGNED_BYTE,r),[r[0],r[1],r[2],r[3]]},u.default.RendererGL.prototype.loadPixels=function(){var e=this._pixelsState;if(!0===this._pInst._glAttributes.preserveDrawingBuffer){var t=e.pixels,r=this.GL.drawingBufferWidth*this.GL.drawingBufferHeight*4;t instanceof Uint8Array&&t.length===r||(t=new Uint8Array(r),this._pixelsState._setProperty("pixels",t));var i=this._pInst._pixelDensity;this.GL.readPixels(0,0,this.width*i,this.height*i,this.GL.RGBA,this.GL.UNSIGNED_BYTE,t)}else console.log("loadPixels only works in WebGL when preserveDrawingBuffer is true.")},u.default.RendererGL.prototype.geometryInHash=function(e){return void 0!==this.gHash[e]},u.default.RendererGL.prototype.resize=function(e,t){u.default.Renderer.prototype.resize.call(this,e,t),this.GL.viewport(0,0,this.GL.drawingBufferWidth,this.GL.drawingBufferHeight),this._viewport=this.GL.getParameter(this.GL.VIEWPORT),this._curCamera._resize();var r=this._pixelsState;void 0!==r.pixels&&r._setProperty("pixels",new Uint8Array(this.GL.drawingBufferWidth*this.GL.drawingBufferHeight*4))},u.default.RendererGL.prototype.clear=function(){var e=(arguments.length<=0?void 0:arguments[0])||0,t=(arguments.length<=1?void 0:arguments[1])||0,r=(arguments.length<=2?void 0:arguments[2])||0,i=(arguments.length<=3?void 0:arguments[3])||0;this.GL.clearColor(e,t,r,i),this.GL.clear(this.GL.COLOR_BUFFER_BIT|this.GL.DEPTH_BUFFER_BIT)},u.default.RendererGL.prototype.applyMatrix=function(e,t,r,i,a,n){16===arguments.length?u.default.Matrix.prototype.apply.apply(this.uMVMatrix,arguments):this.uMVMatrix.apply([e,t,0,0,r,i,0,0,0,0,1,0,a,n,0,1])},u.default.RendererGL.prototype.translate=function(e,t,r){return e instanceof u.default.Vector&&(r=e.z,t=e.y,e=e.x),this.uMVMatrix.translate([e,t,r]),this},u.default.RendererGL.prototype.scale=function(e,t,r){return this.uMVMatrix.scale(e,t,r),this},u.default.RendererGL.prototype.rotate=function(e,t){return void 0===t?this.rotateZ(e):(u.default.Matrix.prototype.rotate.apply(this.uMVMatrix,arguments),this)},u.default.RendererGL.prototype.rotateX=function(e){return this.rotate(e,1,0,0),this},u.default.RendererGL.prototype.rotateY=function(e){return this.rotate(e,0,1,0),this},u.default.RendererGL.prototype.rotateZ=function(e){return this.rotate(e,0,0,1),this},u.default.RendererGL.prototype.push=function(){var e=u.default.Renderer.prototype.push.apply(this),t=e.properties;return t.uMVMatrix=this.uMVMatrix.copy(),t.uPMatrix=this.uPMatrix.copy(),t._curCamera=this._curCamera,this._curCamera=this._curCamera.copy(),t.ambientLightColors=this.ambientLightColors.slice(),t.specularColors=this.specularColors.slice(),t.directionalLightDirections=this.directionalLightDirections.slice(),t.directionalLightDiffuseColors=this.directionalLightDiffuseColors.slice(),t.directionalLightSpecularColors=this.directionalLightSpecularColors.slice(),t.pointLightPositions=this.pointLightPositions.slice(),t.pointLightDiffuseColors=this.pointLightDiffuseColors.slice(),t.pointLightSpecularColors=this.pointLightSpecularColors.slice(),t.spotLightPositions=this.spotLightPositions.slice(),t.spotLightDirections=this.spotLightDirections.slice(),t.spotLightDiffuseColors=this.spotLightDiffuseColors.slice(),t.spotLightSpecularColors=this.spotLightSpecularColors.slice(),t.spotLightAngle=this.spotLightAngle.slice(),t.spotLightConc=this.spotLightConc.slice(),t.userFillShader=this.userFillShader,t.userStrokeShader=this.userStrokeShader,t.userPointShader=this.userPointShader,t.pointSize=this.pointSize,t.curStrokeWeight=this.curStrokeWeight,t.curStrokeColor=this.curStrokeColor,t.curFillColor=this.curFillColor,t._useSpecularMaterial=this._useSpecularMaterial,t._useEmissiveMaterial=this._useEmissiveMaterial,t._useShininess=this._useShininess,t.constantAttenuation=this.constantAttenuation,t.linearAttenuation=this.linearAttenuation,t.quadraticAttenuation=this.quadraticAttenuation,t._enableLighting=this._enableLighting,t._useNormalMaterial=this._useNormalMaterial,t._tex=this._tex,t.drawMode=this.drawMode,e},u.default.RendererGL.prototype.resetMatrix=function(){return this.uMVMatrix=u.default.Matrix.identity(this._pInst),this},u.default.RendererGL.prototype._getImmediateStrokeShader=function(){var e=this.userStrokeShader;return e&&e.isStrokeShader()?e:this._getLineShader()},u.default.RendererGL.prototype._getRetainedStrokeShader=u.default.RendererGL.prototype._getImmediateStrokeShader,u.default.RendererGL.prototype._getImmediateFillShader=function(){if(this._useNormalMaterial)return console.log("Sorry, normalMaterial() does not currently work with custom WebGL geometry created with beginShape(). Falling back to standard fill material."),this._getImmediateModeShader();var e=this.userFillShader;if(this._enableLighting){if(!e||!e.isLightShader())return this._getLightShader()}else if(this._tex){if(!e||!e.isTextureShader())return this._getLightShader()}else if(!e)return this._getImmediateModeShader();return e},u.default.RendererGL.prototype._getRetainedFillShader=function(){if(this._useNormalMaterial)return this._getNormalShader();var e=this.userFillShader;if(this._enableLighting){if(!e||!e.isLightShader())return this._getLightShader()}else if(this._tex){if(!e||!e.isTextureShader())return this._getLightShader()}else if(!e)return this._getColorShader();return e},u.default.RendererGL.prototype._getImmediatePointShader=function(){var e=this.userPointShader;return e&&e.isPointShader()?e:this._getPointShader()},u.default.RendererGL.prototype._getRetainedLineShader=u.default.RendererGL.prototype._getImmediateLineShader,u.default.RendererGL.prototype._getLightShader=function(){return this._defaultLightShader||(this._pInst._glAttributes.perPixelLighting?this._defaultLightShader=new u.default.Shader(this,l.phongVert,l.phongFrag):this._defaultLightShader=new u.default.Shader(this,l.lightVert,l.lightTextureFrag)),this._defaultLightShader},u.default.RendererGL.prototype._getImmediateModeShader=function(){return this._defaultImmediateModeShader||(this._defaultImmediateModeShader=new u.default.Shader(this,l.immediateVert,l.vertexColorFrag)),this._defaultImmediateModeShader},u.default.RendererGL.prototype._getNormalShader=function(){return this._defaultNormalShader||(this._defaultNormalShader=new u.default.Shader(this,l.normalVert,l.normalFrag)),this._defaultNormalShader},u.default.RendererGL.prototype._getColorShader=function(){return this._defaultColorShader||(this._defaultColorShader=new u.default.Shader(this,l.normalVert,l.basicFrag)),this._defaultColorShader},u.default.RendererGL.prototype._getPointShader=function(){return this._defaultPointShader||(this._defaultPointShader=new u.default.Shader(this,l.pointVert,l.pointFrag)),this._defaultPointShader},u.default.RendererGL.prototype._getLineShader=function(){return this._defaultLineShader||(this._defaultLineShader=new u.default.Shader(this,l.lineVert,l.lineFrag)),this._defaultLineShader},u.default.RendererGL.prototype._getFontShader=function(){return this._defaultFontShader||(this.GL.getExtension("OES_standard_derivatives"),this._defaultFontShader=new u.default.Shader(this,l.fontVert,l.fontFrag)),this._defaultFontShader},u.default.RendererGL.prototype._getEmptyTexture=function(){if(!this._emptyTexture){var e=new u.default.Image(1,1);e.set(0,0,255),this._emptyTexture=new u.default.Texture(this,e)}return this._emptyTexture},u.default.RendererGL.prototype.getTexture=function(e){var t=this.textures,r=!0,i=!1,a=void 0;try{for(var n,o=t[Symbol.iterator]();!(r=(n=o.next()).done);r=!0){var s=n.value;if(s.src===e)return s}}catch(e){i=!0,a=e}finally{try{r||null==o.return||o.return()}finally{if(i)throw a}}var l=new u.default.Texture(this,e);return t.push(l),l},u.default.RendererGL.prototype._setStrokeUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curStrokeColor),e.setUniform("uStrokeWeight",this.curStrokeWeight)},u.default.RendererGL.prototype._setFillUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curFillColor),e.setUniform("isTexture",!!this._tex),this._tex&&e.setUniform("uSampler",this._tex),e.setUniform("uTint",this._tint),e.setUniform("uSpecular",this._useSpecularMaterial),e.setUniform("uEmissive",this._useEmissiveMaterial),e.setUniform("uShininess",this._useShininess),e.setUniform("uUseLighting",this._enableLighting);var t=this.pointLightDiffuseColors.length/3;e.setUniform("uPointLightCount",t),e.setUniform("uPointLightLocation",this.pointLightPositions),e.setUniform("uPointLightDiffuseColors",this.pointLightDiffuseColors),e.setUniform("uPointLightSpecularColors",this.pointLightSpecularColors);var r=this.directionalLightDiffuseColors.length/3;e.setUniform("uDirectionalLightCount",r),e.setUniform("uLightingDirection",this.directionalLightDirections),e.setUniform("uDirectionalDiffuseColors",this.directionalLightDiffuseColors),e.setUniform("uDirectionalSpecularColors",this.directionalLightSpecularColors);var i=this.ambientLightColors.length/3;e.setUniform("uAmbientLightCount",i),e.setUniform("uAmbientColor",this.ambientLightColors);var a=this.spotLightDiffuseColors.length/3;e.setUniform("uSpotLightCount",a),e.setUniform("uSpotLightAngle",this.spotLightAngle),e.setUniform("uSpotLightConc",this.spotLightConc),e.setUniform("uSpotLightDiffuseColors",this.spotLightDiffuseColors),e.setUniform("uSpotLightSpecularColors",this.spotLightSpecularColors),e.setUniform("uSpotLightLocation",this.spotLightPositions),e.setUniform("uSpotLightDirection",this.spotLightDirections),e.setUniform("uConstantAttenuation",this.constantAttenuation),e.setUniform("uLinearAttenuation",this.linearAttenuation),e.setUniform("uQuadraticAttenuation",this.quadraticAttenuation),e.bindTextures()},u.default.RendererGL.prototype._setPointUniforms=function(e){e.bindShader(),e.setUniform("uMaterialColor",this.curStrokeColor),e.setUniform("uPointSize",this.pointSize)},u.default.RendererGL.prototype._bindBuffer=function(e,t,r,i,a){if(t||(t=this.GL.ARRAY_BUFFER),this.GL.bindBuffer(t,e),void 0!==r){var n=new(i||Float32Array)(r);this.GL.bufferData(t,n,a||this.GL.STATIC_DRAW)}},u.default.RendererGL.prototype._flatten=function(e){if(0===e.length)return[];if(2e4>7,127&c,d>>7,127&d);for(var f=0;f>7,127&p,0,0)}}return{cellImageInfo:l,dimOffset:n,dimImageInfo:a}}return(t=this.glyphInfos[e.index]={glyph:e,uGlyphRect:[i.x1,-i.y1,i.x2,-i.y2],strokeImageInfo:U,strokes:f,colInfo:G(m,this.colDimImageInfos,this.colCellImageInfos),rowInfo:G(p,this.rowDimImageInfos,this.rowCellImageInfos)}).uGridOffset=[t.colInfo.dimOffset,t.rowInfo.dimOffset],t}};j.default.RendererGL.prototype._renderText=function(e,t,r,i,a){if(this._textFont&&"string"!=typeof this._textFont){if(!(a<=i)&&this._doFill){if(!this._isOpenType())return console.log("WEBGL: only Opentype (.otf) and Truetype (.ttf) fonts are supported"),e;e.push();var n=this._doStroke,o=this.drawMode;this._doStroke=!1,this.drawMode=P.TEXTURE;var s=this._textFont.font,l=this._textFont._fontInfo;l||(l=this._textFont._fontInfo=new L(s));var u=this._textFont._handleAlignment(this,t,r,i),h=this._textSize/s.unitsPerEm;this.translate(u.x,u.y,0),this.scale(h,h,1);var d=this.GL,c=!this._defaultFontShader,f=this._getFontShader();f.init(),f.bindShader(),c&&(f.setUniform("uGridImageSize",[64,64]),f.setUniform("uCellsImageSize",[64,64]),f.setUniform("uStrokeImageSize",[64,64]),f.setUniform("uGridSize",[9,9])),this._applyColorBlend(this.curFillColor);var p=this.gHash.glyph;if(!p){var m=this._textGeom=new j.default.Geometry(1,1,function(){for(var e=0;e<=1;e++)for(var t=0;t<=1;t++)this.vertices.push(new j.default.Vector(t,e,0)),this.uvs.push(t,e)});m.computeFaces().computeNormals(),p=this.createBuffers("glyph",m)}this._prepareBuffers(p,f,j.default.RendererGL._textBuffers),this._bindBuffer(p.indexBuffer,d.ELEMENT_ARRAY_BUFFER),f.setUniform("uMaterialColor",this.curFillColor);try{var v=0,g=null,y=s.stringToGlyphs(t),_=!0,b=!1,x=void 0;try{for(var w,S=y[Symbol.iterator]();!(_=(w=S.next()).done);_=!0){var M=w.value;g&&(v+=s.getKerningValue(g,M));var E=l.getGlyphInfo(M);if(E.uGlyphRect){var T=E.rowInfo,C=E.colInfo;f.setUniform("uSamplerStrokes",E.strokeImageInfo.imageData),f.setUniform("uSamplerRowStrokes",T.cellImageInfo.imageData),f.setUniform("uSamplerRows",T.dimImageInfo.imageData),f.setUniform("uSamplerColStrokes",C.cellImageInfo.imageData),f.setUniform("uSamplerCols",C.dimImageInfo.imageData),f.setUniform("uGridOffset",E.uGridOffset),f.setUniform("uGlyphRect",E.uGlyphRect),f.setUniform("uGlyphOffset",v),f.bindTextures(),d.drawElements(d.TRIANGLES,6,this.GL.UNSIGNED_SHORT,0)}v+=M.advanceWidth,g=M}}catch(e){b=!0,x=e}finally{try{_||null==S.return||S.return()}finally{if(b)throw x}}}finally{f.unbindShader(),this._doStroke=n,this.drawMode=o,e.pop()}return e}}else console.log("WEBGL: you must load and set a font before drawing text. See `loadFont` and `textFont` for more details.")}},{"../core/constants":20,"../core/main":26,"./p5.RendererGL.Retained":78,"./p5.Shader":80}]},{},[15])(15)}); \ No newline at end of file diff --git a/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/p5.sound.min.js b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/p5.sound.min.js new file mode 100644 index 0000000..899f447 --- /dev/null +++ b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/libraries/p5.sound.min.js @@ -0,0 +1,28 @@ +/*! p5.sound.min.js v0.3.11 2019-03-14 */ + +/** + * p5.sound + * https://p5js.org/reference/#/libraries/p5.sound + * + * From the Processing Foundation and contributors + * https://github.com/processing/p5.js-sound/graphs/contributors + * + * MIT License (MIT) + * https://github.com/processing/p5.js-sound/blob/master/LICENSE + * + * Some of the many audio libraries & resources that inspire p5.sound: + * - TONE.js (c) Yotam Mann. Licensed under The MIT License (MIT). https://github.com/TONEnoTONE/Tone.js + * - buzz.js (c) Jay Salvat. Licensed under The MIT License (MIT). http://buzz.jaysalvat.com/ + * - Boris Smus Web Audio API book, 2013. Licensed under the Apache License http://www.apache.org/licenses/LICENSE-2.0 + * - wavesurfer.js https://github.com/katspaugh/wavesurfer.js + * - Web Audio Components by Jordan Santell https://github.com/web-audio-components + * - Wilm Thoben's Sound library for Processing https://github.com/processing/processing/tree/master/java/libraries/sound + * + * Web Audio API: http://w3.org/TR/webaudio/ + */ + +!function(t,e){"function"==typeof define&&define.amd?define("p5.sound",["p5"],function(t){e(t)}):e("object"==typeof exports?require("../p5"):t.p5)}(this,function(t){var e;e=function(){!function(){function t(t){t&&(t.setTargetAtTime||(t.setTargetAtTime=t.setTargetValueAtTime))}window.hasOwnProperty("webkitAudioContext")&&!window.hasOwnProperty("AudioContext")&&(window.AudioContext=window.webkitAudioContext,"function"!=typeof AudioContext.prototype.createGain&&(AudioContext.prototype.createGain=AudioContext.prototype.createGainNode),"function"!=typeof AudioContext.prototype.createDelay&&(AudioContext.prototype.createDelay=AudioContext.prototype.createDelayNode),"function"!=typeof AudioContext.prototype.createScriptProcessor&&(AudioContext.prototype.createScriptProcessor=AudioContext.prototype.createJavaScriptNode),"function"!=typeof AudioContext.prototype.createPeriodicWave&&(AudioContext.prototype.createPeriodicWave=AudioContext.prototype.createWaveTable),AudioContext.prototype.internal_createGain=AudioContext.prototype.createGain,AudioContext.prototype.createGain=function(){var e=this.internal_createGain();return t(e.gain),e},AudioContext.prototype.internal_createDelay=AudioContext.prototype.createDelay,AudioContext.prototype.createDelay=function(e){var i=e?this.internal_createDelay(e):this.internal_createDelay();return t(i.delayTime),i},AudioContext.prototype.internal_createBufferSource=AudioContext.prototype.createBufferSource,AudioContext.prototype.createBufferSource=function(){var e=this.internal_createBufferSource();return e.start?(e.internal_start=e.start,e.start=function(t,i,n){"undefined"!=typeof n?e.internal_start(t||0,i,n):e.internal_start(t||0,i||0)}):e.start=function(t,e,i){e||i?this.noteGrainOn(t||0,e,i):this.noteOn(t||0)},e.stop?(e.internal_stop=e.stop,e.stop=function(t){e.internal_stop(t||0)}):e.stop=function(t){this.noteOff(t||0)},t(e.playbackRate),e},AudioContext.prototype.internal_createDynamicsCompressor=AudioContext.prototype.createDynamicsCompressor,AudioContext.prototype.createDynamicsCompressor=function(){var e=this.internal_createDynamicsCompressor();return t(e.threshold),t(e.knee),t(e.ratio),t(e.reduction),t(e.attack),t(e.release),e},AudioContext.prototype.internal_createBiquadFilter=AudioContext.prototype.createBiquadFilter,AudioContext.prototype.createBiquadFilter=function(){var e=this.internal_createBiquadFilter();return t(e.frequency),t(e.detune),t(e.Q),t(e.gain),e},"function"!=typeof AudioContext.prototype.createOscillator&&(AudioContext.prototype.internal_createOscillator=AudioContext.prototype.createOscillator,AudioContext.prototype.createOscillator=function(){var e=this.internal_createOscillator();return e.start?(e.internal_start=e.start,e.start=function(t){e.internal_start(t||0)}):e.start=function(t){this.noteOn(t||0)},e.stop?(e.internal_stop=e.stop,e.stop=function(t){e.internal_stop(t||0)}):e.stop=function(t){this.noteOff(t||0)},e.setPeriodicWave||(e.setPeriodicWave=e.setWaveTable),t(e.frequency),t(e.detune),e})),window.hasOwnProperty("webkitOfflineAudioContext")&&!window.hasOwnProperty("OfflineAudioContext")&&(window.OfflineAudioContext=window.webkitOfflineAudioContext)}(window),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;var e=document.createElement("audio");t.prototype.isSupported=function(){return!!e.canPlayType};var i=function(){return!!e.canPlayType&&e.canPlayType('audio/ogg; codecs="vorbis"')},n=function(){return!!e.canPlayType&&e.canPlayType("audio/mpeg;")},o=function(){return!!e.canPlayType&&e.canPlayType('audio/wav; codecs="1"')},r=function(){return!!e.canPlayType&&(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;"))},s=function(){return!!e.canPlayType&&e.canPlayType("audio/x-aiff;")};t.prototype.isFileSupported=function(t){switch(t.toLowerCase()){case"mp3":return n();case"wav":return o();case"ogg":return i();case"aac":case"m4a":case"mp4":return r();case"aif":case"aiff":return s();default:return!1}}}();var i;!function(t,e){i=function(){return e()}()}(this,function(){function t(t){var e=t.createBuffer(1,1,t.sampleRate),i=t.createBufferSource();i.buffer=e,i.connect(t.destination),i.start(0),t.resume&&t.resume()}function e(t){return"running"===t.state}function i(t,i){function n(){e(t)?i():(requestAnimationFrame(n),t.resume&&t.resume())}e(t)?i():n()}function n(t,e,i){if(Array.isArray(t)||NodeList&&t instanceof NodeList)for(var o=0;o1&&(this.input=new Array(t)),this.isUndef(e)||1===e?this.output=this.context.createGain():e>1&&(this.output=new Array(t))};t.prototype.set=function(e,i,n){if(this.isObject(e))n=i;else if(this.isString(e)){var o={};o[e]=i,e=o}t:for(var r in e){i=e[r];var s=this;if(-1!==r.indexOf(".")){for(var a=r.split("."),u=0;u1)for(var t=arguments[0],e=1;e0)for(var t=this,e=0;e0)for(var t=0;tn;n++)i[n].apply(this,e)}return this},t.Emitter.mixin=function(e){var i=["on","off","emit"];e._events={};for(var n=0;n1?t.getChannelData(1):e;var s=i(e,r),a=new window.ArrayBuffer(44+2*s.length),u=new window.DataView(a);n(u,0,"RIFF"),u.setUint32(4,36+2*s.length,!0),n(u,8,"WAVE"),n(u,12,"fmt "),u.setUint32(16,16,!0),u.setUint16(20,1,!0),u.setUint16(22,2,!0),u.setUint32(24,o.audiocontext.sampleRate,!0),u.setUint32(28,4*o.audiocontext.sampleRate,!0),u.setUint16(32,4,!0),u.setUint16(34,16,!0),n(u,36,"data"),u.setUint32(40,2*s.length,!0);for(var c=s.length,p=44,h=1,l=0;c>l;l++)u.setInt16(p,s[l]*(32767*h),!0),p+=2;return u}function i(t,e){for(var i=t.length+e.length,n=new Float32Array(i),o=0,r=0;i>r;)n[r++]=t[o],n[r++]=e[o],o++;return n}function n(t,e,i){for(var n=i.length,o=0;n>o;o++)t.setUint8(e+o,i.charCodeAt(o))}var o=a;t.prototype.sampleRate=function(){return o.audiocontext.sampleRate},t.prototype.freqToMidi=function(t){var e=Math.log(t/440)/Math.log(2),i=Math.round(12*e)+69;return i};var r=t.prototype.midiToFreq=function(t){return 440*Math.pow(2,(t-69)/12)},s=function(t){if("string"!=typeof t)return t;var e={A:21,B:23,C:24,D:26,E:28,F:29,G:31},i=e[t[0].toUpperCase()],n=~~t.slice(-1);switch(i+=12*(n-1),t[1]){case"#":i+=1;break;case"b":i-=1}return r(i)};return t.prototype.soundFormats=function(){o.extensions=[];for(var t=0;t-1))throw arguments[t]+" is not a valid sound format!";o.extensions.push(arguments[t])}},t.prototype.disposeSound=function(){for(var t=0;t-1)if(t.prototype.isFileSupported(n))i=i;else for(var r=i.split("."),s=r[r.length-1],a=0;a1?(this.splitter=i.createChannelSplitter(2),this.input.connect(this.splitter),this.splitter.connect(this.left,1),this.splitter.connect(this.right,0)):(this.input.connect(this.left),this.input.connect(this.right)),this.output=i.createChannelMerger(2),this.left.connect(this.output,0,1),this.right.connect(this.output,0,0),this.output.connect(e)},t.Panner.prototype.pan=function(t,e){var n=e||0,o=i.currentTime+n,r=(t+1)/2,s=Math.cos(r*Math.PI/2),a=Math.sin(r*Math.PI/2);this.left.gain.linearRampToValueAtTime(a,o),this.right.gain.linearRampToValueAtTime(s,o)},t.Panner.prototype.inputChannels=function(t){1===t?(this.input.disconnect(),this.input.connect(this.left),this.input.connect(this.right)):2===t&&(this.splitter=i.createChannelSplitter(2),this.input.disconnect(),this.input.connect(this.splitter),this.splitter.connect(this.left,1),this.splitter.connect(this.right,0))},t.Panner.prototype.connect=function(t){this.output.connect(t)},t.Panner.prototype.disconnect=function(){this.output&&this.output.disconnect()})}(a);var h;h=function(){function e(t,e){for(var i={},n=t.length,o=0;n>o;o++){if(t[o]>e){var r=t[o],s=new v(r,o);i[o]=s,o+=6e3}o++}return i}function i(t){for(var e=[],i=Object.keys(t).sort(),n=0;no;o++){var r=t[i[n]],s=t[i[n+o]];if(r&&s){var a=r.sampleIndex,u=s.sampleIndex,c=u-a;c>0&&r.intervals.push(c);var p=e.some(function(t){return t.interval===c?(t.count++,t):void 0});p||e.push({interval:c,count:1})}}return e}function n(t,e){var i=[];return t.forEach(function(t){try{var n=Math.abs(60/(t.interval/e));n=r(n);var o=i.some(function(e){return e.tempo===n?e.count+=t.count:void 0});if(!o){if(isNaN(n))return;i.push({tempo:Math.round(n),count:t.count})}}catch(s){throw s}}),i}function o(t,e,i,n){for(var o=[],s=Object.keys(t).sort(),a=0;a.01?!0:void 0})}function r(t){if(isFinite(t)&&0!==t){for(;90>t;)t*=2;for(;t>180&&t>90;)t/=2;return t}}function s(t){var e=t.inputBuffer.getChannelData(0);this._lastPos=e[e.length-1]||0,this._onTimeUpdate(self._lastPos)}function p(t){const e=t.target,i=this;e._playing=!1,e.removeEventListener("ended",i._clearOnEnd),i._onended(i),i.bufferSourceNodes.forEach(function(t,e){t._playing===!1&&i.bufferSourceNodes.splice(e)}),0===i.bufferSourceNodes.length&&(i._playing=!1)}var h=c,l=a,f=l.audiocontext,d=u.midiToFreq,m=u.convertToWav;t.SoundFile=function(e,i,n,o){if("undefined"!=typeof e){if("string"==typeof e||"string"==typeof e[0]){var r=t.prototype._checkFileFormats(e);this.url=r}else if("object"==typeof e&&!(window.File&&window.FileReader&&window.FileList&&window.Blob))throw"Unable to load file because the File API is not supported";e.file&&(e=e.file),this.file=e}this._onended=function(){},this._looping=!1,this._playing=!1,this._paused=!1,this._pauseTime=0,this._cues=[],this._cueIDCounter=0,this._lastPos=0,this._counterNode=null,this._scopeNode=null,this.bufferSourceNodes=[],this.bufferSourceNode=null,this.buffer=null,this.playbackRate=1,this.input=l.audiocontext.createGain(),this.output=l.audiocontext.createGain(),this.reversed=!1,this.startTime=0,this.endTime=null,this.pauseTime=0,this.mode="sustain",this.startMillis=null,this.panPosition=0,this.panner=new t.Panner(this.output,l.input,2),(this.url||this.file)&&this.load(i,n),l.soundArray.push(this),"function"==typeof o?this._whileLoading=o:this._whileLoading=function(){},this._onAudioProcess=s.bind(this),this._clearOnEnd=p.bind(this)},t.prototype.registerPreloadMethod("loadSound",t.prototype),t.prototype.loadSound=function(e,i,n,o){window.location.origin.indexOf("file://")>-1&&"undefined"===window.cordova&&window.alert("This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS");var r=this,s=new t.SoundFile(e,function(){"function"==typeof i&&i.apply(r,arguments),"function"==typeof r._decrementPreload&&r._decrementPreload()},n,o);return s},t.SoundFile.prototype.load=function(t,e){var i=this,n=(new Error).stack;if(void 0!==this.url&&""!==this.url){var o=new XMLHttpRequest;o.addEventListener("progress",function(t){i._updateProgress(t)},!1),o.open("GET",this.url,!0),o.responseType="arraybuffer",o.onload=function(){if(200===o.status){if(!i.panner)return;f.decodeAudioData(o.response,function(e){i.panner&&(i.buffer=e,i.panner.inputChannels(e.numberOfChannels),t&&t(i))},function(){if(i.panner){var t=new h("decodeAudioData",n,i.url),o="AudioContext error at decodeAudioData for "+i.url;e?(t.msg=o,e(t)):console.error(o+"\n The error stack trace includes: \n"+t.stack)}})}else{if(!i.panner)return;var r=new h("loadSound",n,i.url),s="Unable to load "+i.url+". The request status was: "+o.status+" ("+o.statusText+")";e?(r.message=s,e(r)):console.error(s+"\n The error stack trace includes: \n"+r.stack)}},o.onerror=function(){var t=new h("loadSound",n,i.url),o="There was no response from the server at "+i.url+". Check the url and internet connectivity.";e?(t.message=o,e(t)):console.error(o+"\n The error stack trace includes: \n"+t.stack)},o.send()}else if(void 0!==this.file){var r=new FileReader;r.onload=function(){i.panner&&f.decodeAudioData(r.result,function(e){i.panner&&(i.buffer=e,i.panner.inputChannels(e.numberOfChannels),t&&t(i))})},r.onerror=function(t){i.panner&&onerror&&onerror(t)},r.readAsArrayBuffer(this.file)}},t.SoundFile.prototype._updateProgress=function(t){if(t.lengthComputable){var e=t.loaded/t.total*.99;this._whileLoading(e,t)}else this._whileLoading("size unknown")},t.SoundFile.prototype.isLoaded=function(){return this.buffer?!0:!1},t.SoundFile.prototype.play=function(t,e,i,n,o){if(!this.output)return void console.warn("SoundFile.play() called after dispose");var r,s,a=l.audiocontext.currentTime,u=t||0;if(0>u&&(u=0),u+=a,"undefined"!=typeof e&&this.rate(e),"undefined"!=typeof i&&this.setVolume(i),!this.buffer)throw"not ready to play file, buffer has yet to load. Try preload()";if(this._pauseTime=0,"restart"===this.mode&&this.buffer&&this.bufferSourceNode&&(this.bufferSourceNode.stop(u),this._counterNode.stop(u)),"untildone"!==this.mode||!this.isPlaying()){if(this.bufferSourceNode=this._initSourceNode(),delete this._counterNode,this._counterNode=this._initCounterNode(),n){if(!(n>=0&&nt&&!this.reversed?(t=Math.abs(t),e=!0):t>0&&this.reversed&&(e=!0),this.bufferSourceNode){var i=l.audiocontext.currentTime;this.bufferSourceNode.playbackRate.cancelScheduledValues(i),this.bufferSourceNode.playbackRate.linearRampToValueAtTime(Math.abs(t),i),this._counterNode.playbackRate.cancelScheduledValues(i),this._counterNode.playbackRate.linearRampToValueAtTime(Math.abs(t),i)}return e&&this.reverseBuffer(),this.playbackRate},t.SoundFile.prototype.setPitch=function(t){var e=d(t)/d(60);this.rate(e)},t.SoundFile.prototype.getPlaybackRate=function(){return this.playbackRate},t.SoundFile.prototype.duration=function(){return this.buffer?this.buffer.duration:0},t.SoundFile.prototype.currentTime=function(){return this.reversed?Math.abs(this._lastPos-this.buffer.length)/f.sampleRate:this._lastPos/f.sampleRate},t.SoundFile.prototype.jump=function(t,e){if(0>t||t>this.buffer.duration)throw"jump time out of range";if(e>this.buffer.duration-t)throw"end time out of range";var i=t||0,n=e||void 0;this.isPlaying()&&this.stop(0),this.play(0,this.playbackRate,this.output.gain.value,i,n); +},t.SoundFile.prototype.channels=function(){return this.buffer.numberOfChannels},t.SoundFile.prototype.sampleRate=function(){return this.buffer.sampleRate},t.SoundFile.prototype.frames=function(){return this.buffer.length},t.SoundFile.prototype.getPeaks=function(t){if(!this.buffer)throw"Cannot load peaks yet, buffer is not loaded";if(t||(t=5*window.width),this.buffer){for(var e=this.buffer,i=e.length/t,n=~~(i/10)||1,o=e.numberOfChannels,r=new Float32Array(Math.round(t)),s=0;o>s;s++)for(var a=e.getChannelData(s),u=0;t>u;u++){for(var c=~~(u*i),p=~~(c+i),h=0,l=c;p>l;l+=n){var f=a[l];f>h?h=f:-f>h&&(h=f)}(0===s||Math.abs(h)>r[u])&&(r[u]=h)}return r}},t.SoundFile.prototype.reverseBuffer=function(){if(!this.buffer)throw"SoundFile is not done loading";var t=this._lastPos/f.sampleRate,e=this.getVolume();this.setVolume(0,.001);const i=this.buffer.numberOfChannels;for(var n=0;i>n;n++)this.buffer.getChannelData(n).reverse();this.reversed=!this.reversed,t&&this.jump(this.duration()-t),this.setVolume(e,.001)},t.SoundFile.prototype.onended=function(t){return this._onended=t,this},t.SoundFile.prototype.add=function(){},t.SoundFile.prototype.dispose=function(){var t=l.audiocontext.currentTime,e=l.soundArray.indexOf(this);if(l.soundArray.splice(e,1),this.stop(t),this.buffer&&this.bufferSourceNode){for(var i=0;io;o++){var r=n.getChannelData(o);r.set(t[o])}this.buffer=n,this.panner.inputChannels(e)};var y=function(t){const e=t.length,i=f.createBuffer(1,t.length,f.sampleRate),n=i.getChannelData(0);for(var o=0;e>o;o++)n[o]=o;return i};t.SoundFile.prototype._initCounterNode=function(){var e=this,i=f.currentTime,n=f.createBufferSource();return e._scopeNode&&(e._scopeNode.disconnect(),e._scopeNode.removeEventListener("audioprocess",e._onAudioProcess),delete e._scopeNode),e._scopeNode=f.createScriptProcessor(256,1,1),n.buffer=y(e.buffer),n.playbackRate.setValueAtTime(e.playbackRate,i),n.connect(e._scopeNode),e._scopeNode.connect(t.soundOut._silentNode),e._scopeNode.addEventListener("audioprocess",e._onAudioProcess),n},t.SoundFile.prototype._initSourceNode=function(){var t=f.createBufferSource();return t.buffer=this.buffer,t.playbackRate.value=this.playbackRate,t.connect(this.output),t},t.SoundFile.prototype.processPeaks=function(t,r,s,a){var u=this.buffer.length,c=this.buffer.sampleRate,p=this.buffer,h=[],l=r||.9,f=l,d=s||.22,m=a||200,y=new window.OfflineAudioContext(1,u,c),v=y.createBufferSource();v.buffer=p;var g=y.createBiquadFilter();g.type="lowpass",v.connect(g),g.connect(y.destination),v.start(0),y.startRendering(),y.oncomplete=function(r){if(self.panner){var s=r.renderedBuffer,a=s.getChannelData(0);do h=e(a,f),f-=.005;while(Object.keys(h).length=d);var u=i(h),c=n(u,s.sampleRate),p=c.sort(function(t,e){return e.count-t.count}).splice(0,5);this.tempo=p[0].tempo;var l=5,y=o(h,p[0].tempo,s.sampleRate,l);t(y)}}};var v=function(t,e){this.sampleIndex=e,this.amplitude=t,this.tempos=[],this.intervals=[]},g=function(t,e,i,n){this.callback=t,this.time=e,this.id=i,this.val=n};t.SoundFile.prototype.addCue=function(t,e,i){var n=this._cueIDCounter++,o=new g(e,t,n,i);return this._cues.push(o),n},t.SoundFile.prototype.removeCue=function(t){for(var e=this._cues.length,i=0;e>i;i++){var n=this._cues[i];if(n.id===t){this._cues.splice(i,1);break}}0===this._cues.length},t.SoundFile.prototype.clearCues=function(){this._cues=[]},t.SoundFile.prototype._onTimeUpdate=function(t){for(var e=t/this.buffer.sampleRate,i=this._cues.length,n=0;i>n;n++){var o=this._cues[n],r=o.time,s=o.val;this._prevTime=r&&o.callback(s)}this._prevTime=e},t.SoundFile.prototype.save=function(e){const i=m(this.buffer);t.prototype.saveSound([i],e,"wav")},t.SoundFile.prototype.getBlob=function(){const t=m(this.buffer);return new Blob([t],{type:"audio/wav"})}}(c,a,u,u);var l;l=function(){var e=a;t.Amplitude=function(t){this.bufferSize=2048,this.audiocontext=e.audiocontext,this.processor=this.audiocontext.createScriptProcessor(this.bufferSize,2,1),this.input=this.processor,this.output=this.audiocontext.createGain(),this.smoothing=t||0,this.volume=0,this.average=0,this.stereoVol=[0,0],this.stereoAvg=[0,0],this.stereoVolNorm=[0,0],this.volMax=.001,this.normalize=!1,this.processor.onaudioprocess=this._audioProcess.bind(this),this.processor.connect(this.output),this.output.gain.value=0,this.output.connect(this.audiocontext.destination),e.meter.connect(this.processor),e.soundArray.push(this)},t.Amplitude.prototype.setInput=function(i,n){e.meter.disconnect(),n&&(this.smoothing=n),null==i?(console.log("Amplitude input source is not ready! Connecting to master output instead"),e.meter.connect(this.processor)):i instanceof t.Signal?i.output.connect(this.processor):i?(i.connect(this.processor),this.processor.disconnect(),this.processor.connect(this.output)):e.meter.connect(this.processor)},t.Amplitude.prototype.connect=function(t){t?t.hasOwnProperty("input")?this.output.connect(t.input):this.output.connect(t):this.output.connect(this.panner.connect(e.input))},t.Amplitude.prototype.disconnect=function(){this.output&&this.output.disconnect()},t.Amplitude.prototype._audioProcess=function(t){for(var e=0;ea;a++)i=n[a],this.normalize?(r+=Math.max(Math.min(i/this.volMax,1),-1),s+=Math.max(Math.min(i/this.volMax,1),-1)*Math.max(Math.min(i/this.volMax,1),-1)):(r+=i,s+=i*i);var u=r/o,c=Math.sqrt(s/o);this.stereoVol[e]=Math.max(c,this.stereoVol[e]*this.smoothing),this.stereoAvg[e]=Math.max(u,this.stereoVol[e]*this.smoothing),this.volMax=Math.max(this.stereoVol[e],this.volMax)}var p=this,h=this.stereoVol.reduce(function(t,e,i){return p.stereoVolNorm[i-1]=Math.max(Math.min(p.stereoVol[i-1]/p.volMax,1),0),p.stereoVolNorm[i]=Math.max(Math.min(p.stereoVol[i]/p.volMax,1),0),t+e});this.volume=h/this.stereoVol.length,this.volNorm=Math.max(Math.min(this.volume/this.volMax,1),0)},t.Amplitude.prototype.getLevel=function(t){return"undefined"!=typeof t?this.normalize?this.stereoVolNorm[t]:this.stereoVol[t]:this.normalize?this.volNorm:this.volume},t.Amplitude.prototype.toggleNormalize=function(t){"boolean"==typeof t?this.normalize=t:this.normalize=!this.normalize},t.Amplitude.prototype.smooth=function(t){t>=0&&1>t?this.smoothing=t:console.log("Error: smoothing must be between 0 and 1")},t.Amplitude.prototype.dispose=function(){var t=e.soundArray.indexOf(this);e.soundArray.splice(t,1),this.input&&(this.input.disconnect(),delete this.input),this.output&&(this.output.disconnect(),delete this.output),delete this.processor}}(a);var f;f=function(){var e=a;t.FFT=function(t,i){this.input=this.analyser=e.audiocontext.createAnalyser(),Object.defineProperties(this,{bins:{get:function(){return this.analyser.fftSize/2},set:function(t){this.analyser.fftSize=2*t},configurable:!0,enumerable:!0},smoothing:{get:function(){return this.analyser.smoothingTimeConstant},set:function(t){this.analyser.smoothingTimeConstant=t},configurable:!0,enumerable:!0}}),this.smooth(t),this.bins=i||1024,e.fftMeter.connect(this.analyser),this.freqDomain=new Uint8Array(this.analyser.frequencyBinCount),this.timeDomain=new Uint8Array(this.analyser.frequencyBinCount),this.bass=[20,140],this.lowMid=[140,400],this.mid=[400,2600],this.highMid=[2600,5200],this.treble=[5200,14e3],e.soundArray.push(this)},t.FFT.prototype.setInput=function(t){t?(t.output?t.output.connect(this.analyser):t.connect&&t.connect(this.analyser),e.fftMeter.disconnect()):e.fftMeter.connect(this.analyser)},t.FFT.prototype.waveform=function(){for(var e,i,n,s=0;si){var o=i;i=t,t=o}for(var r=Math.round(t/n*this.freqDomain.length),s=Math.round(i/n*this.freqDomain.length),a=0,u=0,c=r;s>=c;c++)a+=this.freqDomain[c],u+=1;var p=a/u;return p}throw"invalid input for getEnergy()"}var h=Math.round(t/n*this.freqDomain.length);return this.freqDomain[h]},t.FFT.prototype.getFreq=function(t,e){console.log("getFreq() is deprecated. Please use getEnergy() instead.");var i=this.getEnergy(t,e);return i},t.FFT.prototype.getCentroid=function(){for(var t=e.audiocontext.sampleRate/2,i=0,n=0,o=0;os;s++)o[r]=void 0!==o[r]?(o[r]+e[s])/2:e[s],s%n===n-1&&r++;return o},t.FFT.prototype.logAverages=function(t){for(var i=e.audiocontext.sampleRate/2,n=this.freqDomain,o=n.length,r=new Array(t.length),s=0,a=0;o>a;a++){var u=Math.round(a*i/this.freqDomain.length);u>t[s].hi&&s++,r[s]=void 0!==r[s]?(r[s]+n[a])/2:n[a]}return r},t.FFT.prototype.getOctaveBands=function(t,i){var t=t||3,i=i||15.625,n=[],o={lo:i/Math.pow(2,1/(2*t)),ctr:i,hi:i*Math.pow(2,1/(2*t))};n.push(o);for(var r=e.audiocontext.sampleRate/2;o.hie;e++){var n=e/(i-1)*2-1;this._curve[e]=t(n,e)}return this._shaper.curve=this._curve,this},Object.defineProperty(t.WaveShaper.prototype,"curve",{get:function(){return this._shaper.curve},set:function(t){this._curve=new Float32Array(t),this._shaper.curve=this._curve}}),Object.defineProperty(t.WaveShaper.prototype,"oversample",{get:function(){return this._shaper.oversample},set:function(t){if(-1===["none","2x","4x"].indexOf(t))throw new RangeError("Tone.WaveShaper: oversampling must be either 'none', '2x', or '4x'");this._shaper.oversample=t}}),t.WaveShaper.prototype.dispose=function(){return t.prototype.dispose.call(this),this._shaper.disconnect(),this._shaper=null,this._curve=null,this},t.WaveShaper}(n);var y;y=function(t){return t.TimeBase=function(e,i){if(!(this instanceof t.TimeBase))return new t.TimeBase(e,i);if(this._expr=this._noOp,e instanceof t.TimeBase)this.copy(e);else if(!this.isUndef(i)||this.isNumber(e)){i=this.defaultArg(i,this._defaultUnits);var n=this._primaryExpressions[i].method;this._expr=n.bind(this,e)}else this.isString(e)?this.set(e):this.isUndef(e)&&(this._expr=this._defaultExpr())},t.extend(t.TimeBase),t.TimeBase.prototype.set=function(t){return this._expr=this._parseExprString(t),this},t.TimeBase.prototype.clone=function(){var t=new this.constructor;return t.copy(this),t},t.TimeBase.prototype.copy=function(t){var e=t._expr();return this.set(e)},t.TimeBase.prototype._primaryExpressions={n:{regexp:/^(\d+)n/i,method:function(t){return t=parseInt(t),1===t?this._beatsToUnits(this._timeSignature()):this._beatsToUnits(4/t)}},t:{regexp:/^(\d+)t/i,method:function(t){return t=parseInt(t),this._beatsToUnits(8/(3*parseInt(t)))}},m:{regexp:/^(\d+)m/i,method:function(t){return this._beatsToUnits(parseInt(t)*this._timeSignature())}},i:{regexp:/^(\d+)i/i,method:function(t){return this._ticksToUnits(parseInt(t))}},hz:{regexp:/^(\d+(?:\.\d+)?)hz/i,method:function(t){return this._frequencyToUnits(parseFloat(t))}},tr:{regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method:function(t,e,i){var n=0;return t&&"0"!==t&&(n+=this._beatsToUnits(this._timeSignature()*parseFloat(t))),e&&"0"!==e&&(n+=this._beatsToUnits(parseFloat(e))),i&&"0"!==i&&(n+=this._beatsToUnits(parseFloat(i)/4)),n}},s:{regexp:/^(\d+(?:\.\d+)?s)/,method:function(t){return this._secondsToUnits(parseFloat(t))}},samples:{regexp:/^(\d+)samples/,method:function(t){return parseInt(t)/this.context.sampleRate}},"default":{regexp:/^(\d+(?:\.\d+)?)/,method:function(t){return this._primaryExpressions[this._defaultUnits].method.call(this,t)}}},t.TimeBase.prototype._binaryExpressions={"+":{regexp:/^\+/,precedence:2,method:function(t,e){return t()+e()}},"-":{regexp:/^\-/,precedence:2,method:function(t,e){return t()-e()}},"*":{regexp:/^\*/,precedence:1,method:function(t,e){return t()*e()}},"/":{regexp:/^\//,precedence:1,method:function(t,e){return t()/e()}}},t.TimeBase.prototype._unaryExpressions={neg:{regexp:/^\-/,method:function(t){return-t()}}},t.TimeBase.prototype._syntaxGlue={"(":{regexp:/^\(/},")":{regexp:/^\)/}},t.TimeBase.prototype._tokenize=function(t){function e(t,e){for(var i=["_binaryExpressions","_unaryExpressions","_primaryExpressions","_syntaxGlue"],n=0;n0;){t=t.trim();var o=e(t,this);n.push(o),t=t.substr(o.value.length)}return{next:function(){return n[++i]},peek:function(){return n[i+1]}}},t.TimeBase.prototype._matchGroup=function(t,e,i){var n=!1;if(!this.isUndef(t))for(var o in e){var r=e[o];if(r.regexp.test(t.value)){if(this.isUndef(i))return r;if(r.precedence===i)return r}}return n},t.TimeBase.prototype._parseBinary=function(t,e){this.isUndef(e)&&(e=2);var i;i=0>e?this._parseUnary(t):this._parseBinary(t,e-1);for(var n=t.peek();n&&this._matchGroup(n,this._binaryExpressions,e);)n=t.next(),i=n.method.bind(this,i,this._parseBinary(t,e-1)),n=t.peek();return i},t.TimeBase.prototype._parseUnary=function(t){var e,i;e=t.peek();var n=this._matchGroup(e,this._unaryExpressions);return n?(e=t.next(),i=this._parseUnary(t),n.method.bind(this,i)):this._parsePrimary(t)},t.TimeBase.prototype._parsePrimary=function(t){var e,i;if(e=t.peek(),this.isUndef(e))throw new SyntaxError("Tone.TimeBase: Unexpected end of expression");if(this._matchGroup(e,this._primaryExpressions)){e=t.next();var n=e.value.match(e.regexp);return e.method.bind(this,n[1],n[2],n[3])}if(e&&"("===e.value){if(t.next(),i=this._parseBinary(t),e=t.next(),!e||")"!==e.value)throw new SyntaxError("Expected )");return i}throw new SyntaxError("Tone.TimeBase: Cannot process token "+e.value)},t.TimeBase.prototype._parseExprString=function(t){this.isString(t)||(t=t.toString());var e=this._tokenize(t),i=this._parseBinary(e);return i},t.TimeBase.prototype._noOp=function(){return 0},t.TimeBase.prototype._defaultExpr=function(){return this._noOp},t.TimeBase.prototype._defaultUnits="s",t.TimeBase.prototype._frequencyToUnits=function(t){return 1/t},t.TimeBase.prototype._beatsToUnits=function(e){return 60/t.Transport.bpm.value*e},t.TimeBase.prototype._secondsToUnits=function(t){return t},t.TimeBase.prototype._ticksToUnits=function(e){return e*(this._beatsToUnits(1)/t.Transport.PPQ)},t.TimeBase.prototype._timeSignature=function(){return t.Transport.timeSignature},t.TimeBase.prototype._pushExpr=function(e,i,n){return e instanceof t.TimeBase||(e=new this.constructor(e,n)),this._expr=this._binaryExpressions[i].method.bind(this,this._expr,e._expr),this},t.TimeBase.prototype.add=function(t,e){return this._pushExpr(t,"+",e)},t.TimeBase.prototype.sub=function(t,e){return this._pushExpr(t,"-",e)},t.TimeBase.prototype.mult=function(t,e){return this._pushExpr(t,"*",e)},t.TimeBase.prototype.div=function(t,e){return this._pushExpr(t,"/",e)},t.TimeBase.prototype.valueOf=function(){return this._expr()},t.TimeBase.prototype.dispose=function(){this._expr=null},t.TimeBase}(n);var v;v=function(t){return t.Time=function(e,i){return this instanceof t.Time?(this._plusNow=!1,void t.TimeBase.call(this,e,i)):new t.Time(e,i)},t.extend(t.Time,t.TimeBase),t.Time.prototype._unaryExpressions=Object.create(t.TimeBase.prototype._unaryExpressions),t.Time.prototype._unaryExpressions.quantize={regexp:/^@/,method:function(e){return t.Transport.nextSubdivision(e())}},t.Time.prototype._unaryExpressions.now={regexp:/^\+/,method:function(t){return this._plusNow=!0,t()}},t.Time.prototype.quantize=function(t,e){return e=this.defaultArg(e,1),this._expr=function(t,e,i){t=t(),e=e.toSeconds();var n=Math.round(t/e),o=n*e,r=o-t;return t+r*i}.bind(this,this._expr,new this.constructor(t),e),this},t.Time.prototype.addNow=function(){return this._plusNow=!0,this},t.Time.prototype._defaultExpr=function(){return this._plusNow=!0,this._noOp},t.Time.prototype.copy=function(e){return t.TimeBase.prototype.copy.call(this,e),this._plusNow=e._plusNow,this},t.Time.prototype.toNotation=function(){var t=this.toSeconds(),e=["1m","2n","4n","8n","16n","32n","64n","128n"],i=this._toNotationHelper(t,e),n=["1m","2n","2t","4n","4t","8n","8t","16n","16t","32n","32t","64n","64t","128n"],o=this._toNotationHelper(t,n);return o.split("+").length1-s%1&&(s+=a),s=Math.floor(s),s>0){if(n+=1===s?e[o]:s.toString()+"*"+e[o],t-=s*r,i>t)break;n+=" + "}}return""===n&&(n="0"),n},t.Time.prototype._notationToUnits=function(t){for(var e=this._primaryExpressions,i=[e.n,e.t,e.m],n=0;n3&&(n=parseFloat(n).toFixed(3));var o=[i,e,n];return o.join(":")},t.Time.prototype.toTicks=function(){var e=this._beatsToUnits(1),i=this.valueOf()/e;return Math.floor(i*t.Transport.PPQ)},t.Time.prototype.toSamples=function(){return this.toSeconds()*this.context.sampleRate},t.Time.prototype.toFrequency=function(){return 1/this.toSeconds()},t.Time.prototype.toSeconds=function(){return this.valueOf()},t.Time.prototype.toMilliseconds=function(){return 1e3*this.toSeconds()},t.Time.prototype.valueOf=function(){var t=this._expr();return t+(this._plusNow?this.now():0)},t.Time}(n);var g;g=function(t){t.Frequency=function(e,i){return this instanceof t.Frequency?void t.TimeBase.call(this,e,i):new t.Frequency(e,i)},t.extend(t.Frequency,t.TimeBase),t.Frequency.prototype._primaryExpressions=Object.create(t.TimeBase.prototype._primaryExpressions),t.Frequency.prototype._primaryExpressions.midi={regexp:/^(\d+(?:\.\d+)?midi)/,method:function(t){return this.midiToFrequency(t)}},t.Frequency.prototype._primaryExpressions.note={regexp:/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,method:function(t,i){var n=e[t.toLowerCase()],o=n+12*(parseInt(i)+1);return this.midiToFrequency(o)}},t.Frequency.prototype._primaryExpressions.tr={regexp:/^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,method:function(t,e,i){var n=1;return t&&"0"!==t&&(n*=this._beatsToUnits(this._timeSignature()*parseFloat(t))),e&&"0"!==e&&(n*=this._beatsToUnits(parseFloat(e))),i&&"0"!==i&&(n*=this._beatsToUnits(parseFloat(i)/4)),n}},t.Frequency.prototype.transpose=function(t){return this._expr=function(t,e){var i=t();return i*this.intervalToFrequencyRatio(e)}.bind(this,this._expr,t),this},t.Frequency.prototype.harmonize=function(t){return this._expr=function(t,e){for(var i=t(),n=[],o=0;or&&(o+=-12*r);var s=i[o%12];return s+r.toString()},t.Frequency.prototype.toSeconds=function(){return 1/this.valueOf()},t.Frequency.prototype.toFrequency=function(){return this.valueOf()},t.Frequency.prototype.toTicks=function(){var e=this._beatsToUnits(1),i=this.valueOf()/e;return Math.floor(i*t.Transport.PPQ)},t.Frequency.prototype._frequencyToUnits=function(t){return t},t.Frequency.prototype._ticksToUnits=function(e){return 1/(60*e/(t.Transport.bpm.value*t.Transport.PPQ))},t.Frequency.prototype._beatsToUnits=function(e){return 1/t.TimeBase.prototype._beatsToUnits.call(this,e)},t.Frequency.prototype._secondsToUnits=function(t){return 1/t},t.Frequency.prototype._defaultUnits="hz";var e={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},i=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];return t.Frequency.A4=440,t.Frequency.prototype.midiToFrequency=function(e){return t.Frequency.A4*Math.pow(2,(e-69)/12)},t.Frequency.prototype.frequencyToMidi=function(e){return 69+12*Math.log(e/t.Frequency.A4)/Math.LN2},t.Frequency}(n);var _;_=function(t){return t.TransportTime=function(e,i){return this instanceof t.TransportTime?void t.Time.call(this,e,i):new t.TransportTime(e,i)},t.extend(t.TransportTime,t.Time),t.TransportTime.prototype._unaryExpressions=Object.create(t.Time.prototype._unaryExpressions),t.TransportTime.prototype._unaryExpressions.quantize={regexp:/^@/,method:function(e){var i=this._secondsToTicks(e()),n=Math.ceil(t.Transport.ticks/i);return this._ticksToUnits(n*i)}},t.TransportTime.prototype._secondsToTicks=function(e){var i=this._beatsToUnits(1),n=e/i;return Math.round(n*t.Transport.PPQ)},t.TransportTime.prototype.valueOf=function(){var e=this._secondsToTicks(this._expr());return e+(this._plusNow?t.Transport.ticks:0)},t.TransportTime.prototype.toTicks=function(){return this.valueOf()},t.TransportTime.prototype.toSeconds=function(){var e=this._expr();return e+(this._plusNow?t.Transport.seconds:0)},t.TransportTime.prototype.toFrequency=function(){return 1/this.toSeconds()},t.TransportTime}(n);var T;T=function(t){return t.Type={Default:"number",Time:"time",Frequency:"frequency",TransportTime:"transportTime",Ticks:"ticks",NormalRange:"normalRange",AudioRange:"audioRange",Decibels:"db",Interval:"interval",BPM:"bpm",Positive:"positive",Cents:"cents",Degrees:"degrees",MIDI:"midi",BarsBeatsSixteenths:"barsBeatsSixteenths",Samples:"samples",Hertz:"hertz",Note:"note",Milliseconds:"milliseconds",Seconds:"seconds",Notation:"notation"},t.prototype.toSeconds=function(e){return this.isNumber(e)?e:this.isUndef(e)?this.now():this.isString(e)?new t.Time(e).toSeconds():e instanceof t.TimeBase?e.toSeconds():void 0},t.prototype.toFrequency=function(e){return this.isNumber(e)?e:this.isString(e)||this.isUndef(e)?new t.Frequency(e).valueOf():e instanceof t.TimeBase?e.toFrequency():void 0},t.prototype.toTicks=function(e){return this.isNumber(e)||this.isString(e)?new t.TransportTime(e).toTicks():this.isUndef(e)?t.Transport.ticks:e instanceof t.TimeBase?e.toTicks():void 0},t}(n,v,g,_);var b;b=function(t){"use strict";return t.Param=function(){var e=this.optionsObject(arguments,["param","units","convert"],t.Param.defaults);this._param=this.input=e.param,this.units=e.units,this.convert=e.convert,this.overridden=!1,this._lfo=null,this.isObject(e.lfo)?this.value=e.lfo:this.isUndef(e.value)||(this.value=e.value)},t.extend(t.Param),t.Param.defaults={units:t.Type.Default,convert:!0,param:void 0},Object.defineProperty(t.Param.prototype,"value",{get:function(){return this._toUnits(this._param.value)},set:function(e){if(this.isObject(e)){if(this.isUndef(t.LFO))throw new Error("Include 'Tone.LFO' to use an LFO as a Param value.");this._lfo&&this._lfo.dispose(),this._lfo=new t.LFO(e).start(),this._lfo.connect(this.input)}else{var i=this._fromUnits(e);this._param.cancelScheduledValues(0),this._param.value=i}}}),t.Param.prototype._fromUnits=function(e){if(!this.convert&&!this.isUndef(this.convert))return e;switch(this.units){case t.Type.Time:return this.toSeconds(e);case t.Type.Frequency:return this.toFrequency(e);case t.Type.Decibels:return this.dbToGain(e);case t.Type.NormalRange:return Math.min(Math.max(e,0),1);case t.Type.AudioRange:return Math.min(Math.max(e,-1),1);case t.Type.Positive:return Math.max(e,0);default:return e}},t.Param.prototype._toUnits=function(e){if(!this.convert&&!this.isUndef(this.convert))return e;switch(this.units){case t.Type.Decibels:return this.gainToDb(e);default:return e}},t.Param.prototype._minOutput=1e-5,t.Param.prototype.setValueAtTime=function(t,e){return t=this._fromUnits(t),e=this.toSeconds(e),e<=this.now()+this.blockTime?this._param.value=t:this._param.setValueAtTime(t,e),this},t.Param.prototype.setRampPoint=function(t){t=this.defaultArg(t,this.now());var e=this._param.value;return 0===e&&(e=this._minOutput),this._param.setValueAtTime(e,t),this},t.Param.prototype.linearRampToValueAtTime=function(t,e){return t=this._fromUnits(t),this._param.linearRampToValueAtTime(t,this.toSeconds(e)),this},t.Param.prototype.exponentialRampToValueAtTime=function(t,e){return t=this._fromUnits(t),t=Math.max(this._minOutput,t),this._param.exponentialRampToValueAtTime(t,this.toSeconds(e)),this},t.Param.prototype.exponentialRampToValue=function(t,e,i){return i=this.toSeconds(i),this.setRampPoint(i),this.exponentialRampToValueAtTime(t,i+this.toSeconds(e)),this},t.Param.prototype.linearRampToValue=function(t,e,i){return i=this.toSeconds(i),this.setRampPoint(i),this.linearRampToValueAtTime(t,i+this.toSeconds(e)),this},t.Param.prototype.setTargetAtTime=function(t,e,i){return t=this._fromUnits(t),t=Math.max(this._minOutput,t),i=Math.max(this._minOutput,i),this._param.setTargetAtTime(t,this.toSeconds(e),i),this},t.Param.prototype.setValueCurveAtTime=function(t,e,i){for(var n=0;n1&&(this.input=new Array(e)),1===i?this.output=new t.Gain:i>1&&(this.output=new Array(e))},t.Gain}(n,b);var S;S=function(t){"use strict";return t.Signal=function(){var e=this.optionsObject(arguments,["value","units"],t.Signal.defaults);this.output=this._gain=this.context.createGain(),e.param=this._gain.gain,t.Param.call(this,e),this.input=this._param=this._gain.gain,this.context.getConstant(1).chain(this._gain)},t.extend(t.Signal,t.Param),t.Signal.defaults={value:0,units:t.Type.Default,convert:!0},t.Signal.prototype.connect=t.SignalBase.prototype.connect,t.Signal.prototype.dispose=function(){return t.Param.prototype.dispose.call(this),this._param=null,this._gain.disconnect(),this._gain=null,this},t.Signal}(n,m,T,b);var w;w=function(t){"use strict";return t.Add=function(e){this.createInsOuts(2,0),this._sum=this.input[0]=this.input[1]=this.output=new t.Gain,this._param=this.input[1]=new t.Signal(e),this._param.connect(this._sum)},t.extend(t.Add,t.Signal),t.Add.prototype.dispose=function(){return t.prototype.dispose.call(this),this._sum.dispose(),this._sum=null,this._param.dispose(),this._param=null,this},t.Add}(n,S);var A;A=function(t){"use strict";return t.Multiply=function(e){this.createInsOuts(2,0),this._mult=this.input[0]=this.output=new t.Gain,this._param=this.input[1]=this.output.gain,this._param.value=this.defaultArg(e,0)},t.extend(t.Multiply,t.Signal),t.Multiply.prototype.dispose=function(){return t.prototype.dispose.call(this),this._mult.dispose(),this._mult=null, +this._param=null,this},t.Multiply}(n,S);var P;P=function(t){"use strict";return t.Scale=function(e,i){this._outputMin=this.defaultArg(e,0),this._outputMax=this.defaultArg(i,1),this._scale=this.input=new t.Multiply(1),this._add=this.output=new t.Add(0),this._scale.connect(this._add),this._setRange()},t.extend(t.Scale,t.SignalBase),Object.defineProperty(t.Scale.prototype,"min",{get:function(){return this._outputMin},set:function(t){this._outputMin=t,this._setRange()}}),Object.defineProperty(t.Scale.prototype,"max",{get:function(){return this._outputMax},set:function(t){this._outputMax=t,this._setRange()}}),t.Scale.prototype._setRange=function(){this._add.value=this._outputMin,this._scale.value=this._outputMax-this._outputMin},t.Scale.prototype.dispose=function(){return t.prototype.dispose.call(this),this._add.dispose(),this._add=null,this._scale.dispose(),this._scale=null,this},t.Scale}(n,w,A);var k;k=function(){var e=S,i=w,n=A,o=P;t.Signal=function(t){var i=new e(t);return i},e.prototype.fade=e.prototype.linearRampToValueAtTime,n.prototype.fade=e.prototype.fade,i.prototype.fade=e.prototype.fade,o.prototype.fade=e.prototype.fade,e.prototype.setInput=function(t){t.connect(this)},n.prototype.setInput=e.prototype.setInput,i.prototype.setInput=e.prototype.setInput,o.prototype.setInput=e.prototype.setInput,e.prototype.add=function(t){var e=new i(t);return this.connect(e),e},n.prototype.add=e.prototype.add,i.prototype.add=e.prototype.add,o.prototype.add=e.prototype.add,e.prototype.mult=function(t){var e=new n(t);return this.connect(e),e},n.prototype.mult=e.prototype.mult,i.prototype.mult=e.prototype.mult,o.prototype.mult=e.prototype.mult,e.prototype.scale=function(e,i,n,r){var s,a;4===arguments.length?(s=t.prototype.map(n,e,i,0,1)-.5,a=t.prototype.map(r,e,i,0,1)-.5):(s=arguments[0],a=arguments[1]);var u=new o(s,a);return this.connect(u),u},n.prototype.scale=e.prototype.scale,i.prototype.scale=e.prototype.scale,o.prototype.scale=e.prototype.scale}(S,w,A,P);var O;O=function(){var e=a,i=w,n=A,o=P;t.Oscillator=function(i,n){if("string"==typeof i){var o=n;n=i,i=o}if("number"==typeof n){var o=n;n=i,i=o}this.started=!1,this.phaseAmount=void 0,this.oscillator=e.audiocontext.createOscillator(),this.f=i||440,this.oscillator.type=n||"sine",this.oscillator.frequency.setValueAtTime(this.f,e.audiocontext.currentTime),this.output=e.audiocontext.createGain(),this._freqMods=[],this.output.gain.value=.5,this.output.gain.setValueAtTime(.5,e.audiocontext.currentTime),this.oscillator.connect(this.output),this.panPosition=0,this.connection=e.input,this.panner=new t.Panner(this.output,this.connection,1),this.mathOps=[this.output],e.soundArray.push(this)},t.Oscillator.prototype.start=function(t,i){if(this.started){var n=e.audiocontext.currentTime;this.stop(n)}if(!this.started){var o=i||this.f,r=this.oscillator.type;this.oscillator&&(this.oscillator.disconnect(),delete this.oscillator),this.oscillator=e.audiocontext.createOscillator(),this.oscillator.frequency.value=Math.abs(o),this.oscillator.type=r,this.oscillator.connect(this.output),t=t||0,this.oscillator.start(t+e.audiocontext.currentTime),this.freqNode=this.oscillator.frequency;for(var s in this._freqMods)"undefined"!=typeof this._freqMods[s].connect&&this._freqMods[s].connect(this.oscillator.frequency);this.started=!0}},t.Oscillator.prototype.stop=function(t){if(this.started){var i=t||0,n=e.audiocontext.currentTime;this.oscillator.stop(i+n),this.started=!1}},t.Oscillator.prototype.amp=function(t,i,n){var o=this;if("number"==typeof t){var i=i||0,n=n||0,r=e.audiocontext.currentTime;this.output.gain.linearRampToValueAtTime(t,r+n+i)}else{if(!t)return this.output.gain;t.connect(o.output.gain)}},t.Oscillator.prototype.fade=t.Oscillator.prototype.amp,t.Oscillator.prototype.getAmp=function(){return this.output.gain.value},t.Oscillator.prototype.freq=function(t,i,n){if("number"!=typeof t||isNaN(t)){if(!t)return this.oscillator.frequency;t.output&&(t=t.output),t.connect(this.oscillator.frequency),this._freqMods.push(t)}else{this.f=t;var o=e.audiocontext.currentTime,i=i||0,n=n||0;0===i?this.oscillator.frequency.setValueAtTime(t,n+o):t>0?this.oscillator.frequency.exponentialRampToValueAtTime(t,n+i+o):this.oscillator.frequency.linearRampToValueAtTime(t,n+i+o),this.phaseAmount&&this.phase(this.phaseAmount)}},t.Oscillator.prototype.getFreq=function(){return this.oscillator.frequency.value},t.Oscillator.prototype.setType=function(t){this.oscillator.type=t},t.Oscillator.prototype.getType=function(){return this.oscillator.type},t.Oscillator.prototype.connect=function(t){t?t.hasOwnProperty("input")?(this.panner.connect(t.input),this.connection=t.input):(this.panner.connect(t),this.connection=t):this.panner.connect(e.input)},t.Oscillator.prototype.disconnect=function(){this.output&&this.output.disconnect(),this.panner&&(this.panner.disconnect(),this.output&&this.output.connect(this.panner)),this.oscMods=[]},t.Oscillator.prototype.pan=function(t,e){this.panPosition=t,this.panner.pan(t,e)},t.Oscillator.prototype.getPan=function(){return this.panPosition},t.Oscillator.prototype.dispose=function(){var t=e.soundArray.indexOf(this);if(e.soundArray.splice(t,1),this.oscillator){var i=e.audiocontext.currentTime;this.stop(i),this.disconnect(),this.panner=null,this.oscillator=null}this.osc2&&this.osc2.dispose()},t.Oscillator.prototype.phase=function(i){var n=t.prototype.map(i,0,1,0,1/this.f),o=e.audiocontext.currentTime;this.phaseAmount=i,this.dNode||(this.dNode=e.audiocontext.createDelay(),this.oscillator.disconnect(),this.oscillator.connect(this.dNode),this.dNode.connect(this.output)),this.dNode.delayTime.setValueAtTime(n,o)};var r=function(t,e,i,n,o){var r=t.oscillator;for(var s in t.mathOps)t.mathOps[s]instanceof o&&(r.disconnect(),t.mathOps[s].dispose(),i=s,i0&&(r=t.mathOps[s-1]),r.disconnect(),r.connect(e),e.connect(n),t.mathOps[i]=e,t};t.Oscillator.prototype.add=function(t){var e=new i(t),n=this.mathOps.length-1,o=this.output;return r(this,e,n,o,i)},t.Oscillator.prototype.mult=function(t){var e=new n(t),i=this.mathOps.length-1,o=this.output;return r(this,e,i,o,n)},t.Oscillator.prototype.scale=function(e,i,n,s){var a,u;4===arguments.length?(a=t.prototype.map(n,e,i,0,1)-.5,u=t.prototype.map(s,e,i,0,1)-.5):(a=arguments[0],u=arguments[1]);var c=new o(a,u),p=this.mathOps.length-1,h=this.output;return r(this,c,p,h,o)},t.SinOsc=function(e){t.Oscillator.call(this,e,"sine")},t.SinOsc.prototype=Object.create(t.Oscillator.prototype),t.TriOsc=function(e){t.Oscillator.call(this,e,"triangle")},t.TriOsc.prototype=Object.create(t.Oscillator.prototype),t.SawOsc=function(e){t.Oscillator.call(this,e,"sawtooth")},t.SawOsc.prototype=Object.create(t.Oscillator.prototype),t.SqrOsc=function(e){t.Oscillator.call(this,e,"square")},t.SqrOsc.prototype=Object.create(t.Oscillator.prototype)}(a,w,A,P);var F;F=function(t){"use strict";return t.Timeline=function(){var e=this.optionsObject(arguments,["memory"],t.Timeline.defaults);this._timeline=[],this._toRemove=[],this._iterating=!1,this.memory=e.memory},t.extend(t.Timeline),t.Timeline.defaults={memory:1/0},Object.defineProperty(t.Timeline.prototype,"length",{get:function(){return this._timeline.length}}),t.Timeline.prototype.add=function(t){if(this.isUndef(t.time))throw new Error("Tone.Timeline: events must have a time attribute");if(this._timeline.length){var e=this._search(t.time);this._timeline.splice(e+1,0,t)}else this._timeline.push(t);if(this.length>this.memory){var i=this.length-this.memory;this._timeline.splice(0,i)}return this},t.Timeline.prototype.remove=function(t){if(this._iterating)this._toRemove.push(t);else{var e=this._timeline.indexOf(t);-1!==e&&this._timeline.splice(e,1)}return this},t.Timeline.prototype.get=function(t){var e=this._search(t);return-1!==e?this._timeline[e]:null},t.Timeline.prototype.peek=function(){return this._timeline[0]},t.Timeline.prototype.shift=function(){return this._timeline.shift()},t.Timeline.prototype.getAfter=function(t){var e=this._search(t);return e+10&&this._timeline[e-1].time=0?this._timeline[i-1]:null},t.Timeline.prototype.cancel=function(t){if(this._timeline.length>1){var e=this._search(t);if(e>=0)if(this._timeline[e].time===t){for(var i=e;i>=0&&this._timeline[i].time===t;i--)e=i;this._timeline=this._timeline.slice(0,e)}else this._timeline=this._timeline.slice(0,e+1);else this._timeline=[]}else 1===this._timeline.length&&this._timeline[0].time>=t&&(this._timeline=[]);return this},t.Timeline.prototype.cancelBefore=function(t){if(this._timeline.length){var e=this._search(t);e>=0&&(this._timeline=this._timeline.slice(e+1))}return this},t.Timeline.prototype._search=function(t){var e=0,i=this._timeline.length,n=i;if(i>0&&this._timeline[i-1].time<=t)return i-1;for(;n>e;){var o=Math.floor(e+(n-e)/2),r=this._timeline[o],s=this._timeline[o+1];if(r.time===t){for(var a=o;at)return o;r.time>t?n=o:r.time=n;n++)t(this._timeline[n]);if(this._iterating=!1,this._toRemove.length>0){for(var o=0;o=0&&this._timeline[i].time>=t;)i--;return this._iterate(e,i+1),this},t.Timeline.prototype.forEachAtTime=function(t,e){var i=this._search(t);return-1!==i&&this._iterate(function(i){i.time===t&&e(i)},0,i),this},t.Timeline.prototype.dispose=function(){t.prototype.dispose.call(this),this._timeline=null,this._toRemove=null},t.Timeline}(n);var q;q=function(t){"use strict";return t.TimelineSignal=function(){var e=this.optionsObject(arguments,["value","units"],t.Signal.defaults);this._events=new t.Timeline(10),t.Signal.apply(this,e),e.param=this._param,t.Param.call(this,e),this._initial=this._fromUnits(this._param.value)},t.extend(t.TimelineSignal,t.Param),t.TimelineSignal.Type={Linear:"linear",Exponential:"exponential",Target:"target",Curve:"curve",Set:"set"},Object.defineProperty(t.TimelineSignal.prototype,"value",{get:function(){var t=this.now(),e=this.getValueAtTime(t);return this._toUnits(e)},set:function(t){var e=this._fromUnits(t);this._initial=e,this.cancelScheduledValues(),this._param.value=e}}),t.TimelineSignal.prototype.setValueAtTime=function(e,i){return e=this._fromUnits(e),i=this.toSeconds(i),this._events.add({type:t.TimelineSignal.Type.Set,value:e,time:i}),this._param.setValueAtTime(e,i),this},t.TimelineSignal.prototype.linearRampToValueAtTime=function(e,i){return e=this._fromUnits(e),i=this.toSeconds(i),this._events.add({type:t.TimelineSignal.Type.Linear,value:e,time:i}),this._param.linearRampToValueAtTime(e,i),this},t.TimelineSignal.prototype.exponentialRampToValueAtTime=function(e,i){i=this.toSeconds(i);var n=this._searchBefore(i);n&&0===n.value&&this.setValueAtTime(this._minOutput,n.time),e=this._fromUnits(e);var o=Math.max(e,this._minOutput);return this._events.add({type:t.TimelineSignal.Type.Exponential,value:o,time:i}),ee)this.cancelScheduledValues(e),this.linearRampToValueAtTime(i,e);else{var o=this._searchAfter(e);o&&(this.cancelScheduledValues(e),o.type===t.TimelineSignal.Type.Linear?this.linearRampToValueAtTime(i,e):o.type===t.TimelineSignal.Type.Exponential&&this.exponentialRampToValueAtTime(i,e)),this.setValueAtTime(i,e)}return this},t.TimelineSignal.prototype.linearRampToValueBetween=function(t,e,i){return this.setRampPoint(e),this.linearRampToValueAtTime(t,i),this},t.TimelineSignal.prototype.exponentialRampToValueBetween=function(t,e,i){return this.setRampPoint(e),this.exponentialRampToValueAtTime(t,i),this},t.TimelineSignal.prototype._searchBefore=function(t){return this._events.get(t)},t.TimelineSignal.prototype._searchAfter=function(t){return this._events.getAfter(t)},t.TimelineSignal.prototype.getValueAtTime=function(e){e=this.toSeconds(e);var i=this._searchAfter(e),n=this._searchBefore(e),o=this._initial;if(null===n)o=this._initial;else if(n.type===t.TimelineSignal.Type.Target){var r,s=this._events.getBefore(n.time);r=null===s?this._initial:s.value,o=this._exponentialApproach(n.time,r,n.value,n.constant,e)}else o=n.type===t.TimelineSignal.Type.Curve?this._curveInterpolate(n.time,n.value,n.duration,e):null===i?n.value:i.type===t.TimelineSignal.Type.Linear?this._linearInterpolate(n.time,n.value,i.time,i.value,e):i.type===t.TimelineSignal.Type.Exponential?this._exponentialInterpolate(n.time,n.value,i.time,i.value,e):n.value;return o},t.TimelineSignal.prototype.connect=t.SignalBase.prototype.connect,t.TimelineSignal.prototype._exponentialApproach=function(t,e,i,n,o){return i+(e-i)*Math.exp(-(o-t)/n)},t.TimelineSignal.prototype._linearInterpolate=function(t,e,i,n,o){return e+(n-e)*((o-t)/(i-t))},t.TimelineSignal.prototype._exponentialInterpolate=function(t,e,i,n,o){return e=Math.max(this._minOutput,e),e*Math.pow(n/e,(o-t)/(i-t))},t.TimelineSignal.prototype._curveInterpolate=function(t,e,i,n){var o=e.length;if(n>=t+i)return e[o-1];if(t>=n)return e[0];var r=(n-t)/i,s=Math.floor((o-1)*r),a=Math.ceil((o-1)*r),u=e[s],c=e[a];return a===s?u:this._linearInterpolate(s,u,a,c,r*(o-1))},t.TimelineSignal.prototype.dispose=function(){t.Signal.prototype.dispose.call(this),t.Param.prototype.dispose.call(this),this._events.dispose(),this._events=null},t.TimelineSignal}(n,S);var M;M=function(){var e=a,i=w,n=A,o=P,r=q;t.Envelope=function(t,i,n,o,s,a){this.aTime=t||.1,this.aLevel=i||1,this.dTime=n||.5,this.dLevel=o||0,this.rTime=s||0,this.rLevel=a||0,this._rampHighPercentage=.98,this._rampLowPercentage=.02,this.output=e.audiocontext.createGain(),this.control=new r,this._init(),this.control.connect(this.output),this.connection=null,this.mathOps=[this.control],this.isExponential=!1,this.sourceToClear=null,this.wasTriggered=!1,e.soundArray.push(this)},t.Envelope.prototype._init=function(){var t=e.audiocontext.currentTime,i=t;this.control.setTargetAtTime(1e-5,i,.001),this._setRampAD(this.aTime,this.dTime)},t.Envelope.prototype.set=function(t,e,i,n,o,r){this.aTime=t,this.aLevel=e,this.dTime=i||0,this.dLevel=n||0,this.rTime=o||0,this.rLevel=r||0,this._setRampAD(t,i)},t.Envelope.prototype.setADSR=function(t,e,i,n){this.aTime=t,this.dTime=e||0,this.sPercent=i||0,this.dLevel="undefined"!=typeof i?i*(this.aLevel-this.rLevel)+this.rLevel:0,this.rTime=n||0,this._setRampAD(t,e)},t.Envelope.prototype.setRange=function(t,e){this.aLevel=t||1,this.rLevel=e||0},t.Envelope.prototype._setRampAD=function(t,e){this._rampAttackTime=this.checkExpInput(t),this._rampDecayTime=this.checkExpInput(e);var i=1;i=Math.log(1/this.checkExpInput(1-this._rampHighPercentage)),this._rampAttackTC=t/this.checkExpInput(i),i=Math.log(1/this._rampLowPercentage),this._rampDecayTC=e/this.checkExpInput(i)},t.Envelope.prototype.setRampPercentages=function(t,e){this._rampHighPercentage=this.checkExpInput(t),this._rampLowPercentage=this.checkExpInput(e);var i=1;i=Math.log(1/this.checkExpInput(1-this._rampHighPercentage)),this._rampAttackTC=this._rampAttackTime/this.checkExpInput(i),i=Math.log(1/this._rampLowPercentage),this._rampDecayTC=this._rampDecayTime/this.checkExpInput(i)},t.Envelope.prototype.setInput=function(){for(var t=0;t=t&&(t=1e-8),t},t.Envelope.prototype.play=function(t,e,i){var n=e||0,i=i||0;t&&this.connection!==t&&this.connect(t),this.triggerAttack(t,n),this.triggerRelease(t,n+this.aTime+this.dTime+i)},t.Envelope.prototype.triggerAttack=function(t,i){var n=e.audiocontext.currentTime,o=i||0,r=n+o;this.lastAttack=r,this.wasTriggered=!0,t&&this.connection!==t&&this.connect(t);var s=this.control.getValueAtTime(r);this.isExponential===!0?this.control.exponentialRampToValueAtTime(this.checkExpInput(s),r):this.control.linearRampToValueAtTime(s,r),r+=this.aTime,this.isExponential===!0?(this.control.exponentialRampToValueAtTime(this.checkExpInput(this.aLevel),r),s=this.checkExpInput(this.control.getValueAtTime(r)),this.control.cancelScheduledValues(r),this.control.exponentialRampToValueAtTime(s,r)):(this.control.linearRampToValueAtTime(this.aLevel,r),s=this.control.getValueAtTime(r),this.control.cancelScheduledValues(r),this.control.linearRampToValueAtTime(s,r)),r+=this.dTime,this.isExponential===!0?(this.control.exponentialRampToValueAtTime(this.checkExpInput(this.dLevel),r),s=this.checkExpInput(this.control.getValueAtTime(r)),this.control.cancelScheduledValues(r),this.control.exponentialRampToValueAtTime(s,r)):(this.control.linearRampToValueAtTime(this.dLevel,r),s=this.control.getValueAtTime(r),this.control.cancelScheduledValues(r),this.control.linearRampToValueAtTime(s,r))},t.Envelope.prototype.triggerRelease=function(t,i){if(this.wasTriggered){var n=e.audiocontext.currentTime,o=i||0,r=n+o;t&&this.connection!==t&&this.connect(t);var s=this.control.getValueAtTime(r);this.isExponential===!0?this.control.exponentialRampToValueAtTime(this.checkExpInput(s),r):this.control.linearRampToValueAtTime(s,r),r+=this.rTime,this.isExponential===!0?(this.control.exponentialRampToValueAtTime(this.checkExpInput(this.rLevel),r),s=this.checkExpInput(this.control.getValueAtTime(r)),this.control.cancelScheduledValues(r),this.control.exponentialRampToValueAtTime(s,r)):(this.control.linearRampToValueAtTime(this.rLevel,r),s=this.control.getValueAtTime(r),this.control.cancelScheduledValues(r),this.control.linearRampToValueAtTime(s,r)),this.wasTriggered=!1}},t.Envelope.prototype.ramp=function(t,i,n,o){var r=e.audiocontext.currentTime,s=i||0,a=r+s,u=this.checkExpInput(n),c="undefined"!=typeof o?this.checkExpInput(o):void 0;t&&this.connection!==t&&this.connect(t);var p=this.checkExpInput(this.control.getValueAtTime(a));u>p?(this.control.setTargetAtTime(u,a,this._rampAttackTC),a+=this._rampAttackTime):p>u&&(this.control.setTargetAtTime(u,a,this._rampDecayTC),a+=this._rampDecayTime),void 0!==c&&(c>u?this.control.setTargetAtTime(c,a,this._rampAttackTC):u>c&&this.control.setTargetAtTime(c,a,this._rampDecayTC))},t.Envelope.prototype.connect=function(i){this.connection=i,(i instanceof t.Oscillator||i instanceof t.SoundFile||i instanceof t.AudioIn||i instanceof t.Reverb||i instanceof t.Noise||i instanceof t.Filter||i instanceof t.Delay)&&(i=i.output.gain),i instanceof AudioParam&&i.setValueAtTime(0,e.audiocontext.currentTime),i instanceof t.Signal&&i.setValue(0),this.output.connect(i)},t.Envelope.prototype.disconnect=function(){this.output&&this.output.disconnect()},t.Envelope.prototype.add=function(e){var n=new i(e),o=this.mathOps.length,r=this.output;return t.prototype._mathChain(this,n,o,r,i)},t.Envelope.prototype.mult=function(e){var i=new n(e),o=this.mathOps.length,r=this.output;return t.prototype._mathChain(this,i,o,r,n)},t.Envelope.prototype.scale=function(e,i,n,r){var s=new o(e,i,n,r),a=this.mathOps.length,u=this.output;return t.prototype._mathChain(this,s,a,u,o)},t.Envelope.prototype.dispose=function(){var t=e.soundArray.indexOf(this);e.soundArray.splice(t,1),this.disconnect(),this.control&&(this.control.dispose(),this.control=null);for(var i=1;io;o++)n[o]=1;var r=t.createBufferSource();return r.buffer=e,r.loop=!0,r}var i=a;t.Pulse=function(n,o){t.Oscillator.call(this,n,"sawtooth"),this.w=o||0,this.osc2=new t.SawOsc(n),this.dNode=i.audiocontext.createDelay(),this.dcOffset=e(),this.dcGain=i.audiocontext.createGain(),this.dcOffset.connect(this.dcGain),this.dcGain.connect(this.output),this.f=n||440;var r=this.w/this.oscillator.frequency.value;this.dNode.delayTime.value=r,this.dcGain.gain.value=1.7*(.5-this.w),this.osc2.disconnect(),this.osc2.panner.disconnect(),this.osc2.amp(-1),this.osc2.output.connect(this.dNode),this.dNode.connect(this.output),this.output.gain.value=1,this.output.connect(this.panner)},t.Pulse.prototype=Object.create(t.Oscillator.prototype),t.Pulse.prototype.width=function(e){if("number"==typeof e){if(1>=e&&e>=0){this.w=e;var i=this.w/this.oscillator.frequency.value;this.dNode.delayTime.value=i}this.dcGain.gain.value=1.7*(.5-this.w)}else{e.connect(this.dNode.delayTime);var n=new t.SignalAdd(-.5);n.setInput(e),n=n.mult(-1),n=n.mult(1.7),n.connect(this.dcGain.gain)}},t.Pulse.prototype.start=function(t,n){var o=i.audiocontext.currentTime,r=n||0;if(!this.started){var s=t||this.f,a=this.oscillator.type;this.oscillator=i.audiocontext.createOscillator(),this.oscillator.frequency.setValueAtTime(s,o),this.oscillator.type=a,this.oscillator.connect(this.output),this.oscillator.start(r+o),this.osc2.oscillator=i.audiocontext.createOscillator(),this.osc2.oscillator.frequency.setValueAtTime(s,r+o),this.osc2.oscillator.type=a,this.osc2.oscillator.connect(this.osc2.output),this.osc2.start(r+o),this.freqNode=[this.oscillator.frequency,this.osc2.oscillator.frequency],this.dcOffset=e(),this.dcOffset.connect(this.dcGain),this.dcOffset.start(r+o),void 0!==this.mods&&void 0!==this.mods.frequency&&(this.mods.frequency.connect(this.freqNode[0]),this.mods.frequency.connect(this.freqNode[1])),this.started=!0,this.osc2.started=!0}},t.Pulse.prototype.stop=function(t){if(this.started){var e=t||0,n=i.audiocontext.currentTime;this.oscillator.stop(e+n),this.osc2.oscillator&&this.osc2.oscillator.stop(e+n),this.dcOffset.stop(e+n),this.started=!1,this.osc2.started=!1}},t.Pulse.prototype.freq=function(t,e,n){if("number"==typeof t){this.f=t;var o=i.audiocontext.currentTime,e=e||0,n=n||0,r=this.oscillator.frequency.value;this.oscillator.frequency.cancelScheduledValues(o),this.oscillator.frequency.setValueAtTime(r,o+n),this.oscillator.frequency.exponentialRampToValueAtTime(t,n+e+o),this.osc2.oscillator.frequency.cancelScheduledValues(o),this.osc2.oscillator.frequency.setValueAtTime(r,o+n),this.osc2.oscillator.frequency.exponentialRampToValueAtTime(t,n+e+o),this.freqMod&&(this.freqMod.output.disconnect(),this.freqMod=null)}else t.output&&(t.output.disconnect(),t.output.connect(this.oscillator.frequency),t.output.connect(this.osc2.oscillator.frequency),this.freqMod=t)}}(a,O);var V;V=function(){var e=a;t.Noise=function(e){var r;t.Oscillator.call(this),delete this.f,delete this.freq,delete this.oscillator,r="brown"===e?o:"pink"===e?n:i,this.buffer=r},t.Noise.prototype=Object.create(t.Oscillator.prototype);var i=function(){for(var t=2*e.audiocontext.sampleRate,i=e.audiocontext.createBuffer(1,t,e.audiocontext.sampleRate),n=i.getChannelData(0),o=0;t>o;o++)n[o]=2*Math.random()-1;return i.type="white",i}(),n=function(){var t,i,n,o,r,s,a,u=2*e.audiocontext.sampleRate,c=e.audiocontext.createBuffer(1,u,e.audiocontext.sampleRate),p=c.getChannelData(0);t=i=n=o=r=s=a=0;for(var h=0;u>h;h++){var l=2*Math.random()-1;t=.99886*t+.0555179*l,i=.99332*i+.0750759*l,n=.969*n+.153852*l,o=.8665*o+.3104856*l,r=.55*r+.5329522*l,s=-.7616*s-.016898*l,p[h]=t+i+n+o+r+s+a+.5362*l,p[h]*=.11,a=.115926*l}return c.type="pink",c}(),o=function(){for(var t=2*e.audiocontext.sampleRate,i=e.audiocontext.createBuffer(1,t,e.audiocontext.sampleRate),n=i.getChannelData(0),o=0,r=0;t>r;r++){var s=2*Math.random()-1;n[r]=(o+.02*s)/1.02,o=n[r],n[r]*=3.5}return i.type="brown",i}();t.Noise.prototype.setType=function(t){switch(t){case"white":this.buffer=i;break;case"pink":this.buffer=n;break;case"brown":this.buffer=o;break;default:this.buffer=i}if(this.started){var r=e.audiocontext.currentTime;this.stop(r),this.start(r+.01)}},t.Noise.prototype.getType=function(){return this.buffer.type},t.Noise.prototype.start=function(){this.started&&this.stop(),this.noise=e.audiocontext.createBufferSource(),this.noise.buffer=this.buffer,this.noise.loop=!0,this.noise.connect(this.output);var t=e.audiocontext.currentTime;this.noise.start(t),this.started=!0},t.Noise.prototype.stop=function(){var t=e.audiocontext.currentTime;this.noise&&(this.noise.stop(t),this.started=!1)},t.Noise.prototype.dispose=function(){var t=e.audiocontext.currentTime,i=e.soundArray.indexOf(this);e.soundArray.splice(i,1),this.noise&&(this.noise.disconnect(),this.stop(t)),this.output&&this.output.disconnect(),this.panner&&this.panner.disconnect(),this.output=null,this.panner=null,this.buffer=null,this.noise=null}}(a);var R;R=function(){var e=a;e.inputSources=[],t.AudioIn=function(i){this.input=e.audiocontext.createGain(),this.output=e.audiocontext.createGain(),this.stream=null,this.mediaStream=null,this.currentSource=null,this.enabled=!1,this.amplitude=new t.Amplitude,this.output.connect(this.amplitude.input),window.MediaStreamTrack&&window.navigator.mediaDevices&&window.navigator.mediaDevices.getUserMedia||(i?i():window.alert("This browser does not support MediaStreamTrack and mediaDevices")),e.soundArray.push(this)},t.AudioIn.prototype.start=function(t,i){var n=this;this.stream&&this.stop();var o=e.inputSources[n.currentSource],r={audio:{sampleRate:e.audiocontext.sampleRate,echoCancellation:!1}};e.inputSources[this.currentSource]&&(r.audio.deviceId=o.deviceId),window.navigator.mediaDevices.getUserMedia(r).then(function(i){n.stream=i,n.enabled=!0,n.mediaStream=e.audiocontext.createMediaStreamSource(i),n.mediaStream.connect(n.output),n.amplitude.setInput(n.output),t&&t()})["catch"](function(t){i?i(t):console.error(t)})},t.AudioIn.prototype.stop=function(){this.stream&&(this.stream.getTracks().forEach(function(t){t.stop()}),this.mediaStream.disconnect(),delete this.mediaStream,delete this.stream)},t.AudioIn.prototype.connect=function(t){t?t.hasOwnProperty("input")?this.output.connect(t.input):t.hasOwnProperty("analyser")?this.output.connect(t.analyser):this.output.connect(t):this.output.connect(e.input)},t.AudioIn.prototype.disconnect=function(){this.output&&(this.output.disconnect(),this.output.connect(this.amplitude.input))},t.AudioIn.prototype.getLevel=function(t){return t&&(this.amplitude.smoothing=t),this.amplitude.getLevel()},t.AudioIn.prototype.amp=function(t,i){if(i){var n=i||0,o=this.output.gain.value;this.output.gain.cancelScheduledValues(e.audiocontext.currentTime),this.output.gain.setValueAtTime(o,e.audiocontext.currentTime),this.output.gain.linearRampToValueAtTime(t,n+e.audiocontext.currentTime)}else this.output.gain.cancelScheduledValues(e.audiocontext.currentTime),this.output.gain.setValueAtTime(t,e.audiocontext.currentTime)},t.AudioIn.prototype.getSources=function(t,i){return new Promise(function(n,o){window.navigator.mediaDevices.enumerateDevices().then(function(i){e.inputSources=i.filter(function(t){return"audioinput"===t.kind}),n(e.inputSources),t&&t(e.inputSources)})["catch"](function(t){o(t),i?i(t):console.error("This browser does not support MediaStreamTrack.getSources()")})})},t.AudioIn.prototype.setSource=function(t){e.inputSources.length>0&&t=t?0:1},127),this._scale=this.input=new t.Multiply(1e4),this._scale.connect(this._thresh)},t.extend(t.GreaterThanZero,t.SignalBase),t.GreaterThanZero.prototype.dispose=function(){return t.prototype.dispose.call(this),this._scale.dispose(),this._scale=null,this._thresh.dispose(),this._thresh=null,this},t.GreaterThanZero}(n,S,A);var B;B=function(t){"use strict";return t.GreaterThan=function(e){this.createInsOuts(2,0),this._param=this.input[0]=new t.Subtract(e),this.input[1]=this._param.input[1],this._gtz=this.output=new t.GreaterThanZero,this._param.connect(this._gtz)},t.extend(t.GreaterThan,t.Signal),t.GreaterThan.prototype.dispose=function(){return t.prototype.dispose.call(this),this._param.dispose(),this._param=null,this._gtz.dispose(),this._gtz=null,this},t.GreaterThan}(n,N,D);var U;U=function(t){"use strict";return t.Abs=function(){this._abs=this.input=this.output=new t.WaveShaper(function(t){return 0===t?0:Math.abs(t)},127)},t.extend(t.Abs,t.SignalBase),t.Abs.prototype.dispose=function(){return t.prototype.dispose.call(this),this._abs.dispose(),this._abs=null,this},t.Abs}(n,m);var I;I=function(t){"use strict";return t.Modulo=function(e){this.createInsOuts(1,0),this._shaper=new t.WaveShaper(Math.pow(2,16)),this._multiply=new t.Multiply,this._subtract=this.output=new t.Subtract,this._modSignal=new t.Signal(e),this.input.fan(this._shaper,this._subtract),this._modSignal.connect(this._multiply,0,0),this._shaper.connect(this._multiply,0,1),this._multiply.connect(this._subtract,0,1),this._setWaveShaper(e)},t.extend(t.Modulo,t.SignalBase),t.Modulo.prototype._setWaveShaper=function(t){this._shaper.setMap(function(e){var i=Math.floor((e+1e-4)/t);return i; +})},Object.defineProperty(t.Modulo.prototype,"value",{get:function(){return this._modSignal.value},set:function(t){this._modSignal.value=t,this._setWaveShaper(t)}}),t.Modulo.prototype.dispose=function(){return t.prototype.dispose.call(this),this._shaper.dispose(),this._shaper=null,this._multiply.dispose(),this._multiply=null,this._subtract.dispose(),this._subtract=null,this._modSignal.dispose(),this._modSignal=null,this},t.Modulo}(n,m,A);var G;G=function(t){"use strict";return t.Pow=function(e){this._exp=this.defaultArg(e,1),this._expScaler=this.input=this.output=new t.WaveShaper(this._expFunc(this._exp),8192)},t.extend(t.Pow,t.SignalBase),Object.defineProperty(t.Pow.prototype,"value",{get:function(){return this._exp},set:function(t){this._exp=t,this._expScaler.setMap(this._expFunc(this._exp))}}),t.Pow.prototype._expFunc=function(t){return function(e){return Math.pow(Math.abs(e),t)}},t.Pow.prototype.dispose=function(){return t.prototype.dispose.call(this),this._expScaler.dispose(),this._expScaler=null,this},t.Pow}(n);var L;L=function(t){"use strict";return t.AudioToGain=function(){this._norm=this.input=this.output=new t.WaveShaper(function(t){return(t+1)/2})},t.extend(t.AudioToGain,t.SignalBase),t.AudioToGain.prototype.dispose=function(){return t.prototype.dispose.call(this),this._norm.dispose(),this._norm=null,this},t.AudioToGain}(n,m);var j;j=function(t){"use strict";function e(t,e,i){var n=new t;return i._eval(e[0]).connect(n,0,0),i._eval(e[1]).connect(n,0,1),n}function i(t,e,i){var n=new t;return i._eval(e[0]).connect(n,0,0),n}function n(t){return t?parseFloat(t):void 0}function o(t){return t&&t.args?parseFloat(t.args):void 0}return t.Expr=function(){var t=this._replacements(Array.prototype.slice.call(arguments)),e=this._parseInputs(t);this._nodes=[],this.input=new Array(e);for(var i=0;e>i;i++)this.input[i]=this.context.createGain();var n,o=this._parseTree(t);try{n=this._eval(o)}catch(r){throw this._disposeNodes(),new Error("Tone.Expr: Could evaluate expression: "+t)}this.output=n},t.extend(t.Expr,t.SignalBase),t.Expr._Expressions={value:{signal:{regexp:/^\d+\.\d+|^\d+/,method:function(e){var i=new t.Signal(n(e));return i}},input:{regexp:/^\$\d/,method:function(t,e){return e.input[n(t.substr(1))]}}},glue:{"(":{regexp:/^\(/},")":{regexp:/^\)/},",":{regexp:/^,/}},func:{abs:{regexp:/^abs/,method:i.bind(this,t.Abs)},mod:{regexp:/^mod/,method:function(e,i){var n=o(e[1]),r=new t.Modulo(n);return i._eval(e[0]).connect(r),r}},pow:{regexp:/^pow/,method:function(e,i){var n=o(e[1]),r=new t.Pow(n);return i._eval(e[0]).connect(r),r}},a2g:{regexp:/^a2g/,method:function(e,i){var n=new t.AudioToGain;return i._eval(e[0]).connect(n),n}}},binary:{"+":{regexp:/^\+/,precedence:1,method:e.bind(this,t.Add)},"-":{regexp:/^\-/,precedence:1,method:function(n,o){return 1===n.length?i(t.Negate,n,o):e(t.Subtract,n,o)}},"*":{regexp:/^\*/,precedence:0,method:e.bind(this,t.Multiply)}},unary:{"-":{regexp:/^\-/,method:i.bind(this,t.Negate)},"!":{regexp:/^\!/,method:i.bind(this,t.NOT)}}},t.Expr.prototype._parseInputs=function(t){var e=t.match(/\$\d/g),i=0;if(null!==e)for(var n=0;n0;){e=e.trim();var r=i(e);o.push(r),e=e.substr(r.value.length)}return{next:function(){return o[++n]},peek:function(){return o[n+1]}}},t.Expr.prototype._parseTree=function(e){function i(t,e){return!p(t)&&"glue"===t.type&&t.value===e}function n(e,i,n){var o=!1,r=t.Expr._Expressions[i];if(!p(e))for(var s in r){var a=r[s];if(a.regexp.test(e.value)){if(p(n))return!0;if(a.precedence===n)return!0}}return o}function o(t){p(t)&&(t=5);var e;e=0>t?r():o(t-1);for(var i=c.peek();n(i,"binary",t);)i=c.next(),e={operator:i.value,method:i.method,args:[e,o(t-1)]},i=c.peek();return e}function r(){var t,e;return t=c.peek(),n(t,"unary")?(t=c.next(),e=r(),{operator:t.value,method:t.method,args:[e]}):s()}function s(){var t,e;if(t=c.peek(),p(t))throw new SyntaxError("Tone.Expr: Unexpected termination of expression");if("func"===t.type)return t=c.next(),a(t);if("value"===t.type)return t=c.next(),{method:t.method,args:t.value};if(i(t,"(")){if(c.next(),e=o(),t=c.next(),!i(t,")"))throw new SyntaxError("Expected )");return e}throw new SyntaxError("Tone.Expr: Parse error, cannot process token "+t.value)}function a(t){var e,n=[];if(e=c.next(),!i(e,"("))throw new SyntaxError('Tone.Expr: Expected ( in a function call "'+t.value+'"');if(e=c.peek(),i(e,")")||(n=u()),e=c.next(),!i(e,")"))throw new SyntaxError('Tone.Expr: Expected ) in a function call "'+t.value+'"');return{method:t.method,args:n,name:name}}function u(){for(var t,e,n=[];;){if(e=o(),p(e))break;if(n.push(e),t=c.peek(),!i(t,","))break;c.next()}return n}var c=this._tokenize(e),p=this.isUndef.bind(this);return o()},t.Expr.prototype._eval=function(t){if(!this.isUndef(t)){var e=t.method(t.args,this);return this._nodes.push(e),e}},t.Expr.prototype._disposeNodes=function(){for(var t=0;t0){this.connect(arguments[0]);for(var t=1;t=t&&(t=1),"number"==typeof t?(this.biquad.frequency.cancelScheduledValues(this.ac.currentTime+.01+i),this.biquad.frequency.exponentialRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.biquad.frequency),this.biquad.frequency.value},t.Filter.prototype.res=function(t,e){var i=e||0;return"number"==typeof t?(this.biquad.Q.value=t,this.biquad.Q.cancelScheduledValues(this.ac.currentTime+.01+i),this.biquad.Q.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.biquad.Q),this.biquad.Q.value},t.Filter.prototype.gain=function(t,e){var i=e||0;return"number"==typeof t?(this.biquad.gain.value=t,this.biquad.gain.cancelScheduledValues(this.ac.currentTime+.01+i),this.biquad.gain.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.biquad.gain),this.biquad.gain.value},t.Filter.prototype.toggle=function(){return this._on=!this._on,this._on===!0?this.biquad.type=this._untoggledType:this._on===!1&&(this.biquad.type="allpass"),this._on},t.Filter.prototype.setType=function(t){this.biquad.type=t,this._untoggledType=this.biquad.type},t.Filter.prototype.dispose=function(){e.prototype.dispose.apply(this),this.biquad&&(this.biquad.disconnect(),delete this.biquad)},t.LowPass=function(){t.Filter.call(this,"lowpass")},t.LowPass.prototype=Object.create(t.Filter.prototype),t.HighPass=function(){t.Filter.call(this,"highpass")},t.HighPass.prototype=Object.create(t.Filter.prototype),t.BandPass=function(){t.Filter.call(this,"bandpass")},t.BandPass.prototype=Object.create(t.Filter.prototype),t.Filter}(a,Y);var W;W=function(){var e=z,i=a,n=function(t,i){e.call(this,"peaking"),this.disconnect(),this.set(t,i),this.biquad.gain.value=0,delete this.input,delete this.output,delete this._drywet,delete this.wet};return n.prototype=Object.create(e.prototype),n.prototype.amp=function(){console.warn("`amp()` is not available for p5.EQ bands. Use `.gain()`")},n.prototype.drywet=function(){console.warn("`drywet()` is not available for p5.EQ bands.")},n.prototype.connect=function(e){var i=e||t.soundOut.input;this.biquad?this.biquad.connect(i.input?i.input:i):this.output.connect(i.input?i.input:i)},n.prototype.disconnect=function(){this.biquad&&this.biquad.disconnect()},n.prototype.dispose=function(){var t=i.soundArray.indexOf(this);i.soundArray.splice(t,1),this.disconnect(),delete this.biquad},n}(z,a);var Q;Q=function(){var e=Y,i=W;return t.EQ=function(t){e.call(this),t=3===t||8===t?t:3;var i;i=3===t?Math.pow(2,3):2,this.bands=[];for(var n,o,r=0;t>r;r++)r===t-1?(n=21e3,o=.01):0===r?(n=100,o=.1):1===r?(n=3===t?360*i:360,o=1):(n=this.bands[r-1].freq()*i,o=1),this.bands[r]=this._newBand(n,o),r>0?this.bands[r-1].connect(this.bands[r].biquad):this.input.connect(this.bands[r].biquad);this.bands[t-1].connect(this.output)},t.EQ.prototype=Object.create(e.prototype),t.EQ.prototype.process=function(t){t.connect(this.input)},t.EQ.prototype.set=function(){if(arguments.length===2*this.bands.length)for(var t=0;t0;)delete this.bands.pop().dispose();delete this.bands}},t.EQ}(Y,W);var H;H=function(){var e=Y;return t.Panner3D=function(){e.call(this),this.panner=this.ac.createPanner(),this.panner.panningModel="HRTF",this.panner.distanceModel="linear",this.panner.connect(this.output),this.input.connect(this.panner)},t.Panner3D.prototype=Object.create(e.prototype),t.Panner3D.prototype.process=function(t){t.connect(this.input)},t.Panner3D.prototype.set=function(t,e,i,n){return this.positionX(t,n),this.positionY(e,n),this.positionZ(i,n),[this.panner.positionX.value,this.panner.positionY.value,this.panner.positionZ.value]},t.Panner3D.prototype.positionX=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.positionX.value=t,this.panner.positionX.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.positionX.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.positionX),this.panner.positionX.value},t.Panner3D.prototype.positionY=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.positionY.value=t,this.panner.positionY.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.positionY.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.positionY),this.panner.positionY.value},t.Panner3D.prototype.positionZ=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.positionZ.value=t,this.panner.positionZ.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.positionZ.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.positionZ),this.panner.positionZ.value},t.Panner3D.prototype.orient=function(t,e,i,n){return this.orientX(t,n),this.orientY(e,n),this.orientZ(i,n),[this.panner.orientationX.value,this.panner.orientationY.value,this.panner.orientationZ.value]},t.Panner3D.prototype.orientX=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.orientationX.value=t,this.panner.orientationX.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.orientationX.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.orientationX),this.panner.orientationX.value},t.Panner3D.prototype.orientY=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.orientationY.value=t,this.panner.orientationY.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.orientationY.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.orientationY),this.panner.orientationY.value},t.Panner3D.prototype.orientZ=function(t,e){var i=e||0;return"number"==typeof t?(this.panner.orientationZ.value=t,this.panner.orientationZ.cancelScheduledValues(this.ac.currentTime+.01+i),this.panner.orientationZ.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.panner.orientationZ),this.panner.orientationZ.value},t.Panner3D.prototype.setFalloff=function(t,e){this.maxDist(t),this.rolloff(e)},t.Panner3D.prototype.maxDist=function(t){return"number"==typeof t&&(this.panner.maxDistance=t),this.panner.maxDistance},t.Panner3D.prototype.rolloff=function(t){return"number"==typeof t&&(this.panner.rolloffFactor=t),this.panner.rolloffFactor},t.Panner3D.dispose=function(){e.prototype.dispose.apply(this),this.panner&&(this.panner.disconnect(),delete this.panner)},t.Panner3D}(a,Y);var $;$=function(){var e=a;return t.Listener3D=function(t){this.ac=e.audiocontext,this.listener=this.ac.listener},t.Listener3D.prototype.process=function(t){t.connect(this.input)},t.Listener3D.prototype.position=function(t,e,i,n){return this.positionX(t,n),this.positionY(e,n),this.positionZ(i,n),[this.listener.positionX.value,this.listener.positionY.value,this.listener.positionZ.value]},t.Listener3D.prototype.positionX=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.positionX.value=t,this.listener.positionX.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.positionX.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.positionX),this.listener.positionX.value},t.Listener3D.prototype.positionY=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.positionY.value=t,this.listener.positionY.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.positionY.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.positionY),this.listener.positionY.value},t.Listener3D.prototype.positionZ=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.positionZ.value=t,this.listener.positionZ.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.positionZ.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.positionZ),this.listener.positionZ.value},t.Listener3D.prototype.orient=function(t,e,i,n,o,r,s){return 3===arguments.length||4===arguments.length?(s=arguments[3],this.orientForward(t,e,i,s)):(6===arguments.length||7===arguments)&&(this.orientForward(t,e,i),this.orientUp(n,o,r,s)),[this.listener.forwardX.value,this.listener.forwardY.value,this.listener.forwardZ.value,this.listener.upX.value,this.listener.upY.value,this.listener.upZ.value]},t.Listener3D.prototype.orientForward=function(t,e,i,n){return this.forwardX(t,n),this.forwardY(e,n),this.forwardZ(i,n),[this.listener.forwardX,this.listener.forwardY,this.listener.forwardZ]},t.Listener3D.prototype.orientUp=function(t,e,i,n){return this.upX(t,n),this.upY(e,n),this.upZ(i,n),[this.listener.upX,this.listener.upY,this.listener.upZ]},t.Listener3D.prototype.forwardX=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.forwardX.value=t,this.listener.forwardX.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.forwardX.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.forwardX),this.listener.forwardX.value},t.Listener3D.prototype.forwardY=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.forwardY.value=t,this.listener.forwardY.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.forwardY.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.forwardY),this.listener.forwardY.value},t.Listener3D.prototype.forwardZ=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.forwardZ.value=t,this.listener.forwardZ.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.forwardZ.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.forwardZ),this.listener.forwardZ.value},t.Listener3D.prototype.upX=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.upX.value=t,this.listener.upX.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.upX.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.upX),this.listener.upX.value},t.Listener3D.prototype.upY=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.upY.value=t,this.listener.upY.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.upY.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.upY),this.listener.upY.value},t.Listener3D.prototype.upZ=function(t,e){var i=e||0;return"number"==typeof t?(this.listener.upZ.value=t,this.listener.upZ.cancelScheduledValues(this.ac.currentTime+.01+i),this.listener.upZ.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):t&&t.connect(this.listener.upZ),this.listener.upZ.value},t.Listener3D}(a,Y);var J;J=function(){var e=z,i=Y;t.Delay=function(){i.call(this),this._split=this.ac.createChannelSplitter(2),this._merge=this.ac.createChannelMerger(2),this._leftGain=this.ac.createGain(),this._rightGain=this.ac.createGain(),this.leftDelay=this.ac.createDelay(),this.rightDelay=this.ac.createDelay(),this._leftFilter=new e,this._rightFilter=new e,this._leftFilter.disconnect(),this._rightFilter.disconnect(),this._leftFilter.biquad.frequency.setValueAtTime(1200,this.ac.currentTime),this._rightFilter.biquad.frequency.setValueAtTime(1200,this.ac.currentTime),this._leftFilter.biquad.Q.setValueAtTime(.3,this.ac.currentTime),this._rightFilter.biquad.Q.setValueAtTime(.3,this.ac.currentTime),this.input.connect(this._split),this.leftDelay.connect(this._leftGain),this.rightDelay.connect(this._rightGain),this._leftGain.connect(this._leftFilter.input),this._rightGain.connect(this._rightFilter.input),this._merge.connect(this.wet),this._leftFilter.biquad.gain.setValueAtTime(1,this.ac.currentTime),this._rightFilter.biquad.gain.setValueAtTime(1,this.ac.currentTime),this.setType(0),this._maxDelay=this.leftDelay.delayTime.maxValue,this.feedback(.5)},t.Delay.prototype=Object.create(i.prototype),t.Delay.prototype.process=function(t,e,i,n){var o=i||0,r=e||0;if(o>=1)throw new Error("Feedback value will force a positive feedback loop.");if(r>=this._maxDelay)throw new Error("Delay Time exceeds maximum delay time of "+this._maxDelay+" second.");t.connect(this.input),this.leftDelay.delayTime.setValueAtTime(r,this.ac.currentTime),this.rightDelay.delayTime.setValueAtTime(r,this.ac.currentTime),this._leftGain.gain.value=o,this._rightGain.gain.value=o,n&&(this._leftFilter.freq(n),this._rightFilter.freq(n))},t.Delay.prototype.delayTime=function(t){"number"!=typeof t?(t.connect(this.leftDelay.delayTime),t.connect(this.rightDelay.delayTime)):(this.leftDelay.delayTime.cancelScheduledValues(this.ac.currentTime),this.rightDelay.delayTime.cancelScheduledValues(this.ac.currentTime),this.leftDelay.delayTime.linearRampToValueAtTime(t,this.ac.currentTime),this.rightDelay.delayTime.linearRampToValueAtTime(t,this.ac.currentTime))},t.Delay.prototype.feedback=function(t){if(t&&"number"!=typeof t)t.connect(this._leftGain.gain),t.connect(this._rightGain.gain);else{if(t>=1)throw new Error("Feedback value will force a positive feedback loop.");"number"==typeof t&&(this._leftGain.gain.value=t,this._rightGain.gain.value=t)}return this._leftGain.gain.value},t.Delay.prototype.filter=function(t,e){this._leftFilter.set(t,e),this._rightFilter.set(t,e)},t.Delay.prototype.setType=function(t){switch(1===t&&(t="pingPong"),this._split.disconnect(),this._leftFilter.disconnect(),this._rightFilter.disconnect(),this._split.connect(this.leftDelay,0),this._split.connect(this.rightDelay,1),t){case"pingPong":this._rightFilter.setType(this._leftFilter.biquad.type),this._leftFilter.output.connect(this._merge,0,0),this._rightFilter.output.connect(this._merge,0,1),this._leftFilter.output.connect(this.rightDelay),this._rightFilter.output.connect(this.leftDelay);break;default:this._leftFilter.output.connect(this._merge,0,0),this._rightFilter.output.connect(this._merge,0,1),this._leftFilter.output.connect(this.leftDelay),this._rightFilter.output.connect(this.rightDelay)}},t.Delay.prototype.dispose=function(){i.prototype.dispose.apply(this),this._split.disconnect(),this._leftFilter.dispose(),this._rightFilter.dispose(),this._merge.disconnect(),this._leftGain.disconnect(),this._rightGain.disconnect(),this.leftDelay.disconnect(),this.rightDelay.disconnect(),this._split=void 0,this._leftFilter=void 0,this._rightFilter=void 0,this._merge=void 0,this._leftGain=void 0,this._rightGain=void 0,this.leftDelay=void 0,this.rightDelay=void 0}}(z,Y);var K;K=function(){var e=c,i=Y;t.Reverb=function(){i.call(this),this._initConvolverNode(),this.input.gain.value=.5,this._seconds=3,this._decay=2,this._reverse=!1,this._buildImpulse()},t.Reverb.prototype=Object.create(i.prototype),t.Reverb.prototype._initConvolverNode=function(){this.convolverNode=this.ac.createConvolver(),this.input.connect(this.convolverNode),this.convolverNode.connect(this.wet)},t.Reverb.prototype._teardownConvolverNode=function(){this.convolverNode&&(this.convolverNode.disconnect(),delete this.convolverNode)},t.Reverb.prototype._setBuffer=function(t){this._teardownConvolverNode(),this._initConvolverNode(),this.convolverNode.buffer=t},t.Reverb.prototype.process=function(t,e,i,n){t.connect(this.input);var o=!1;e&&(this._seconds=e,o=!0),i&&(this._decay=i),n&&(this._reverse=n),o&&this._buildImpulse()},t.Reverb.prototype.set=function(t,e,i){var n=!1;t&&(this._seconds=t,n=!0),e&&(this._decay=e),i&&(this._reverse=i),n&&this._buildImpulse()},t.Reverb.prototype._buildImpulse=function(){var t,e,i=this.ac.sampleRate,n=i*this._seconds,o=this._decay,r=this.ac.createBuffer(2,n,i),s=r.getChannelData(0),a=r.getChannelData(1);for(e=0;n>e;e++)t=this._reverse?n-e:e,s[e]=(2*Math.random()-1)*Math.pow(1-t/n,o),a[e]=(2*Math.random()-1)*Math.pow(1-t/n,o);this._setBuffer(r)},t.Reverb.prototype.dispose=function(){i.prototype.dispose.apply(this),this._teardownConvolverNode()},t.Convolver=function(e,i,n){t.Reverb.call(this),this._initConvolverNode(),this.input.gain.value=.5,e?(this.impulses=[],this._loadBuffer(e,i,n)):(this._seconds=3,this._decay=2,this._reverse=!1,this._buildImpulse())},t.Convolver.prototype=Object.create(t.Reverb.prototype),t.prototype.registerPreloadMethod("createConvolver",t.prototype),t.prototype.createConvolver=function(e,i,n){window.location.origin.indexOf("file://")>-1&&"undefined"===window.cordova&&alert("This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS");var o=this,r=new t.Convolver(e,function(t){"function"==typeof i&&i(t),"function"==typeof o._decrementPreload&&o._decrementPreload()},n);return r.impulses=[],r},t.Convolver.prototype._loadBuffer=function(i,n,o){var i=t.prototype._checkFileFormats(i),r=this,s=(new Error).stack,a=t.prototype.getAudioContext(),u=new XMLHttpRequest;u.open("GET",i,!0),u.responseType="arraybuffer",u.onload=function(){if(200===u.status)a.decodeAudioData(u.response,function(t){var e={},o=i.split("/");e.name=o[o.length-1],e.audioBuffer=t,r.impulses.push(e),r._setBuffer(e.audioBuffer),n&&n(e)},function(){var t=new e("decodeAudioData",s,r.url),i="AudioContext error at decodeAudioData for "+r.url;o?(t.msg=i,o(t)):console.error(i+"\n The error stack trace includes: \n"+t.stack)});else{var t=new e("loadConvolver",s,r.url),c="Unable to load "+r.url+". The request status was: "+u.status+" ("+u.statusText+")";o?(t.message=c,o(t)):console.error(c+"\n The error stack trace includes: \n"+t.stack)}},u.onerror=function(){var t=new e("loadConvolver",s,r.url),i="There was no response from the server at "+r.url+". Check the url and internet connectivity.";o?(t.message=i,o(t)):console.error(i+"\n The error stack trace includes: \n"+t.stack)},u.send()},t.Convolver.prototype.set=null,t.Convolver.prototype.process=function(t){t.connect(this.input)},t.Convolver.prototype.impulses=[],t.Convolver.prototype.addImpulse=function(t,e,i){window.location.origin.indexOf("file://")>-1&&"undefined"===window.cordova&&alert("This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS"),this._loadBuffer(t,e,i)},t.Convolver.prototype.resetImpulse=function(t,e,i){window.location.origin.indexOf("file://")>-1&&"undefined"===window.cordova&&alert("This sketch may require a server to load external files. Please see http://bit.ly/1qcInwS"),this.impulses=[],this._loadBuffer(t,e,i)},t.Convolver.prototype.toggleImpulse=function(t){if("number"==typeof t&&tthis._nextTick&&this._state;){var s=this._state.getValueAtTime(this._nextTick);if(s!==this._lastState){this._lastState=s;var a=this._state.get(this._nextTick);s===t.State.Started?(this._nextTick=a.time,this.isUndef(a.offset)||(this.ticks=a.offset),this.emit("start",a.time,this.ticks)):s===t.State.Stopped?(this.ticks=0,this.emit("stop",a.time)):s===t.State.Paused&&this.emit("pause",a.time)}var u=this._nextTick;this.frequency&&(this._nextTick+=1/this.frequency.getValueAtTime(this._nextTick),s===t.State.Started&&(this.callback(u),this.ticks++))}},t.Clock.prototype.getStateAtTime=function(t){return t=this.toSeconds(t),this._state.getValueAtTime(t)},t.Clock.prototype.dispose=function(){t.Emitter.prototype.dispose.call(this),this.context.off("tick",this._boundLoop),this._writable("frequency"),this.frequency.dispose(),this.frequency=null,this._boundLoop=null,this._nextTick=1/0,this.callback=null,this._state.dispose(),this._state=null},t.Clock}(n,q,tt,o);var it;it=function(){var e=a,i=et;t.Metro=function(){this.clock=new i({callback:this.ontick.bind(this)}),this.syncedParts=[],this.bpm=120,this._init(),this.prevTick=0,this.tatumTime=0,this.tickCallback=function(){}},t.Metro.prototype.ontick=function(t){var i=t-this.prevTick,n=t-e.audiocontext.currentTime;if(!(i-this.tatumTime<=-.02)){this.prevTick=t;var o=this;this.syncedParts.forEach(function(t){t.isPlaying&&(t.incrementStep(n),t.phrases.forEach(function(t){var e=t.sequence,i=o.metroTicks%e.length;0!==e[i]&&(o.metroTicks=t.parts.length?(t.scoreStep=0,t.onended()):(t.scoreStep=0,t.parts[t.currentPart-1].stop(),t.parts[t.currentPart].start())}var i=a,n=120;t.prototype.setBPM=function(t,e){n=t;for(var o in i.parts)i.parts[o]&&i.parts[o].setBPM(t,e)},t.Phrase=function(t,e,i){this.phraseStep=0,this.name=t,this.callback=e,this.sequence=i},t.Part=function(e,o){this.length=e||0,this.partStep=0, +this.phrases=[],this.isPlaying=!1,this.noLoop(),this.tatums=o||.0625,this.metro=new t.Metro,this.metro._init(),this.metro.beatLength(this.tatums),this.metro.setBPM(n),i.parts.push(this),this.callback=function(){}},t.Part.prototype.setBPM=function(t,e){this.metro.setBPM(t,e)},t.Part.prototype.getBPM=function(){return this.metro.getBPM()},t.Part.prototype.start=function(t){if(!this.isPlaying){this.isPlaying=!0,this.metro.resetSync(this);var e=t||0;this.metro.start(e)}},t.Part.prototype.loop=function(t){this.looping=!0,this.onended=function(){this.partStep=0};var e=t||0;this.start(e)},t.Part.prototype.noLoop=function(){this.looping=!1,this.onended=function(){this.stop()}},t.Part.prototype.stop=function(t){this.partStep=0,this.pause(t)},t.Part.prototype.pause=function(t){this.isPlaying=!1;var e=t||0;this.metro.stop(e)},t.Part.prototype.addPhrase=function(e,i,n){var o;if(3===arguments.length)o=new t.Phrase(e,i,n);else{if(!(arguments[0]instanceof t.Phrase))throw"invalid input. addPhrase accepts name, callback, array or a p5.Phrase";o=arguments[0]}this.phrases.push(o),o.sequence.length>this.length&&(this.length=o.sequence.length)},t.Part.prototype.removePhrase=function(t){for(var e in this.phrases)this.phrases[e].name===t&&this.phrases.splice(e,1)},t.Part.prototype.getPhrase=function(t){for(var e in this.phrases)if(this.phrases[e].name===t)return this.phrases[e]},t.Part.prototype.replaceSequence=function(t,e){for(var i in this.phrases)this.phrases[i].name===t&&(this.phrases[i].sequence=e)},t.Part.prototype.incrementStep=function(t){this.partStep0&&o.iterations<=o.maxIterations&&o.callback(i)},frequency:this._calcFreq()})},t.SoundLoop.prototype.start=function(t){var i=t||0,n=e.audiocontext.currentTime;this.isPlaying||(this.clock.start(n+i),this.isPlaying=!0)},t.SoundLoop.prototype.stop=function(t){var i=t||0,n=e.audiocontext.currentTime;this.isPlaying&&(this.clock.stop(n+i),this.isPlaying=!1)},t.SoundLoop.prototype.pause=function(t){var i=t||0,n=e.audiocontext.currentTime;this.isPlaying&&(this.clock.pause(n+i),this.isPlaying=!1)},t.SoundLoop.prototype.syncedStart=function(t,i){var n=i||0,o=e.audiocontext.currentTime;if(t.isPlaying){if(t.isPlaying){var r=t.clock._nextTick-e.audiocontext.currentTime;this.clock.start(o+r),this.isPlaying=!0}}else t.clock.start(o+n),t.isPlaying=!0,this.clock.start(o+n),this.isPlaying=!0},t.SoundLoop.prototype._update=function(){this.clock.frequency.value=this._calcFreq()},t.SoundLoop.prototype._calcFreq=function(){return"number"==typeof this._interval?(this.musicalTimeMode=!1,1/this._interval):"string"==typeof this._interval?(this.musicalTimeMode=!0,this._bpm/60/this._convertNotation(this._interval)*(this._timeSignature/4)):void 0},t.SoundLoop.prototype._convertNotation=function(t){var e=t.slice(-1);switch(t=Number(t.slice(0,-1)),e){case"m":return this._measure(t);case"n":return this._note(t);default:console.warn("Specified interval is not formatted correctly. See Tone.js timing reference for more info: https://github.com/Tonejs/Tone.js/wiki/Time")}},t.SoundLoop.prototype._measure=function(t){return t*this._timeSignature},t.SoundLoop.prototype._note=function(t){return this._timeSignature/t},Object.defineProperty(t.SoundLoop.prototype,"bpm",{get:function(){return this._bpm},set:function(t){this.musicalTimeMode||console.warn('Changing the BPM in "seconds" mode has no effect. BPM is only relevant in musicalTimeMode when the interval is specified as a string ("2n", "4n", "1m"...etc)'),this._bpm=t,this._update()}}),Object.defineProperty(t.SoundLoop.prototype,"timeSignature",{get:function(){return this._timeSignature},set:function(t){this.musicalTimeMode||console.warn('Changing the timeSignature in "seconds" mode has no effect. BPM is only relevant in musicalTimeMode when the interval is specified as a string ("2n", "4n", "1m"...etc)'),this._timeSignature=t,this._update()}}),Object.defineProperty(t.SoundLoop.prototype,"interval",{get:function(){return this._interval},set:function(t){this.musicalTimeMode="Number"==typeof t?!1:!0,this._interval=t,this._update()}}),Object.defineProperty(t.SoundLoop.prototype,"iterations",{get:function(){return this.clock.ticks}}),t.SoundLoop}(a,et);var rt;rt=function(){"use strict";var e=Y;return t.Compressor=function(){e.call(this),this.compressor=this.ac.createDynamicsCompressor(),this.input.connect(this.compressor),this.compressor.connect(this.wet)},t.Compressor.prototype=Object.create(e.prototype),t.Compressor.prototype.process=function(t,e,i,n,o,r){t.connect(this.input),this.set(e,i,n,o,r)},t.Compressor.prototype.set=function(t,e,i,n,o){"undefined"!=typeof t&&this.attack(t),"undefined"!=typeof e&&this.knee(e),"undefined"!=typeof i&&this.ratio(i),"undefined"!=typeof n&&this.threshold(n),"undefined"!=typeof o&&this.release(o)},t.Compressor.prototype.attack=function(t,e){var i=e||0;return"number"==typeof t?(this.compressor.attack.value=t,this.compressor.attack.cancelScheduledValues(this.ac.currentTime+.01+i),this.compressor.attack.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):"undefined"!=typeof t&&t.connect(this.compressor.attack),this.compressor.attack.value},t.Compressor.prototype.knee=function(t,e){var i=e||0;return"number"==typeof t?(this.compressor.knee.value=t,this.compressor.knee.cancelScheduledValues(this.ac.currentTime+.01+i),this.compressor.knee.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):"undefined"!=typeof t&&t.connect(this.compressor.knee),this.compressor.knee.value},t.Compressor.prototype.ratio=function(t,e){var i=e||0;return"number"==typeof t?(this.compressor.ratio.value=t,this.compressor.ratio.cancelScheduledValues(this.ac.currentTime+.01+i),this.compressor.ratio.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):"undefined"!=typeof t&&t.connect(this.compressor.ratio),this.compressor.ratio.value},t.Compressor.prototype.threshold=function(t,e){var i=e||0;return"number"==typeof t?(this.compressor.threshold.value=t,this.compressor.threshold.cancelScheduledValues(this.ac.currentTime+.01+i),this.compressor.threshold.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):"undefined"!=typeof t&&t.connect(this.compressor.threshold),this.compressor.threshold.value},t.Compressor.prototype.release=function(t,e){var i=e||0;return"number"==typeof t?(this.compressor.release.value=t,this.compressor.release.cancelScheduledValues(this.ac.currentTime+.01+i),this.compressor.release.linearRampToValueAtTime(t,this.ac.currentTime+.02+i)):"undefined"!=typeof number&&t.connect(this.compressor.release),this.compressor.release.value},t.Compressor.prototype.reduction=function(){return this.compressor.reduction.value},t.Compressor.prototype.dispose=function(){e.prototype.dispose.apply(this),this.compressor&&(this.compressor.disconnect(),delete this.compressor)},t.Compressor}(a,Y,c);var st;st=function(){var e=a,i=u.convertToWav,n=e.audiocontext;t.SoundRecorder=function(){this.input=n.createGain(),this.output=n.createGain(),this.recording=!1,this.bufferSize=1024,this._channels=2,this._clear(),this._jsNode=n.createScriptProcessor(this.bufferSize,this._channels,2),this._jsNode.onaudioprocess=this._audioprocess.bind(this),this._callback=function(){},this._jsNode.connect(t.soundOut._silentNode),this.setInput(),e.soundArray.push(this)},t.SoundRecorder.prototype.setInput=function(e){this.input.disconnect(),this.input=null,this.input=n.createGain(),this.input.connect(this._jsNode),this.input.connect(this.output),e?e.connect(this.input):t.soundOut.output.connect(this.input)},t.SoundRecorder.prototype.record=function(t,e,i){this.recording=!0,e&&(this.sampleLimit=Math.round(e*n.sampleRate)),t&&i?this._callback=function(){this.buffer=this._getBuffer(),t.setBuffer(this.buffer),i()}:t&&(this._callback=function(){this.buffer=this._getBuffer(),t.setBuffer(this.buffer)})},t.SoundRecorder.prototype.stop=function(){this.recording=!1,this._callback(),this._clear()},t.SoundRecorder.prototype._clear=function(){this._leftBuffers=[],this._rightBuffers=[],this.recordedSamples=0,this.sampleLimit=null},t.SoundRecorder.prototype._audioprocess=function(t){if(this.recording!==!1&&this.recording===!0)if(this.sampleLimit&&this.recordedSamples>=this.sampleLimit)this.stop();else{var e=t.inputBuffer.getChannelData(0),i=t.inputBuffer.getChannelData(1);this._leftBuffers.push(new Float32Array(e)),this._rightBuffers.push(new Float32Array(i)),this.recordedSamples+=this.bufferSize}},t.SoundRecorder.prototype._getBuffer=function(){var t=[];return t.push(this._mergeBuffers(this._leftBuffers)),t.push(this._mergeBuffers(this._rightBuffers)),t},t.SoundRecorder.prototype._mergeBuffers=function(t){for(var e=new Float32Array(this.recordedSamples),i=0,n=t.length,o=0;n>o;o++){var r=t[o];e.set(r,i),i+=r.length}return e},t.SoundRecorder.prototype.dispose=function(){this._clear();var t=e.soundArray.indexOf(this);e.soundArray.splice(t,1),this._callback=function(){},this.input&&this.input.disconnect(),this.input=null,this._jsNode=null},t.prototype.saveSound=function(e,n){const o=i(e.buffer);t.prototype.writeFile([o],n,"wav")}}(a,u);var at;at=function(){t.PeakDetect=function(t,e,i,n){this.framesPerPeak=n||20,this.framesSinceLastPeak=0,this.decayRate=.95,this.threshold=i||.35,this.cutoff=0,this.cutoffMult=1.5,this.energy=0,this.penergy=0,this.currentValue=0,this.isDetected=!1,this.f1=t||40,this.f2=e||2e4,this._onPeak=function(){}},t.PeakDetect.prototype.update=function(t){var e=this.energy=t.getEnergy(this.f1,this.f2)/255;e>this.cutoff&&e>this.threshold&&e-this.penergy>0?(this._onPeak(),this.isDetected=!0,this.cutoff=e*this.cutoffMult,this.framesSinceLastPeak=0):(this.isDetected=!1,this.framesSinceLastPeak<=this.framesPerPeak?this.framesSinceLastPeak++:(this.cutoff*=this.decayRate,this.cutoff=Math.max(this.cutoff,this.threshold))),this.currentValue=e,this.penergy=e},t.PeakDetect.prototype.onPeak=function(t,e){var i=this;i._onPeak=function(){t(i.energy,e)}}}();var ut;ut=function(){var e=a;t.Gain=function(){this.ac=e.audiocontext,this.input=this.ac.createGain(),this.output=this.ac.createGain(),this.input.gain.value=.5,this.input.connect(this.output),e.soundArray.push(this)},t.Gain.prototype.setInput=function(t){t.connect(this.input)},t.Gain.prototype.connect=function(e){var i=e||t.soundOut.input;this.output.connect(i.input?i.input:i)},t.Gain.prototype.disconnect=function(){this.output&&this.output.disconnect()},t.Gain.prototype.amp=function(t,i,n){var i=i||0,n=n||0,o=e.audiocontext.currentTime,r=this.output.gain.value;this.output.gain.cancelScheduledValues(o),this.output.gain.linearRampToValueAtTime(r,o+n),this.output.gain.linearRampToValueAtTime(t,o+n+i)},t.Gain.prototype.dispose=function(){var t=e.soundArray.indexOf(this);e.soundArray.splice(t,1),this.output&&(this.output.disconnect(),delete this.output),this.input&&(this.input.disconnect(),delete this.input)}}(a);var ct;ct=function(){var e=a;return t.AudioVoice=function(){this.ac=e.audiocontext,this.output=this.ac.createGain(),this.connect(),e.soundArray.push(this)},t.AudioVoice.prototype.play=function(t,e,i,n){},t.AudioVoice.prototype.triggerAttack=function(t,e,i){},t.AudioVoice.prototype.triggerRelease=function(t){},t.AudioVoice.prototype.amp=function(t,e){},t.AudioVoice.prototype.connect=function(t){var i=t||e.input;this.output.connect(i.input?i.input:i)},t.AudioVoice.prototype.disconnect=function(){this.output.disconnect()},t.AudioVoice.prototype.dispose=function(){this.output&&(this.output.disconnect(),delete this.output)},t.AudioVoice}(a);var pt;pt=function(){var e=a,i=ct,n=u.noteToFreq,o=.15;t.MonoSynth=function(){i.call(this),this.oscillator=new t.Oscillator,this.env=new t.Envelope,this.env.setRange(1,0),this.env.setExp(!0),this.setADSR(.02,.25,.05,.35),this.oscillator.disconnect(),this.oscillator.connect(this.output),this.env.disconnect(),this.env.setInput(this.output.gain),this.oscillator.output.gain.value=1,this.oscillator.start(),this.connect(),e.soundArray.push(this)},t.MonoSynth.prototype=Object.create(t.AudioVoice.prototype),t.MonoSynth.prototype.play=function(t,e,i,n){this.triggerAttack(t,e,~~i),this.triggerRelease(~~i+(n||o))},t.MonoSynth.prototype.triggerAttack=function(t,e,i){var i=~~i,o=n(t),r=e||.1;this.oscillator.freq(o,0,i),this.env.ramp(this.output.gain,i,r)},t.MonoSynth.prototype.triggerRelease=function(t){var t=t||0;this.env.ramp(this.output.gain,t,0)},t.MonoSynth.prototype.setADSR=function(t,e,i,n){this.env.setADSR(t,e,i,n)},Object.defineProperties(t.MonoSynth.prototype,{attack:{get:function(){return this.env.aTime},set:function(t){this.env.setADSR(t,this.env.dTime,this.env.sPercent,this.env.rTime)}},decay:{get:function(){return this.env.dTime},set:function(t){this.env.setADSR(this.env.aTime,t,this.env.sPercent,this.env.rTime)}},sustain:{get:function(){return this.env.sPercent},set:function(t){this.env.setADSR(this.env.aTime,this.env.dTime,t,this.env.rTime)}},release:{get:function(){return this.env.rTime},set:function(t){this.env.setADSR(this.env.aTime,this.env.dTime,this.env.sPercent,t)}}}),t.MonoSynth.prototype.amp=function(t,e){var i=e||0;return"undefined"!=typeof t&&this.oscillator.amp(t,i),this.oscillator.amp().value},t.MonoSynth.prototype.connect=function(t){var i=t||e.input;this.output.connect(i.input?i.input:i)},t.MonoSynth.prototype.disconnect=function(){this.output&&this.output.disconnect()},t.MonoSynth.prototype.dispose=function(){i.prototype.dispose.apply(this),this.env&&this.env.dispose(),this.oscillator&&this.oscillator.dispose()}}(a,ct,u);var ht;ht=function(){var e=a,i=q,n=u.noteToFreq;t.PolySynth=function(n,o){this.audiovoices=[],this.notes={},this._newest=0,this._oldest=0,this.maxVoices=o||8,this.AudioVoice=void 0===n?t.MonoSynth:n,this._voicesInUse=new i(0),this.output=e.audiocontext.createGain(),this.connect(),this._allocateVoices(),e.soundArray.push(this)},t.PolySynth.prototype._allocateVoices=function(){for(var t=0;tf?f:p}this.audiovoices[a].triggerAttack(c,p,s)},t.PolySynth.prototype._updateAfter=function(t,e){if(null!==this._voicesInUse._searchAfter(t)){this._voicesInUse._searchAfter(t).value+=e;var i=this._voicesInUse._searchAfter(t).time;this._updateAfter(i,e)}},t.PolySynth.prototype.noteRelease=function(t,i){var o=e.audiocontext.currentTime,r=i||0,s=o+r;if(t){var a=n(t);if(this.notes[a]&&null!==this.notes[a].getValueAtTime(s)){var u=Math.max(~~this._voicesInUse.getValueAtTime(s).value,1);this._voicesInUse.setValueAtTime(u-1,s),u>0&&this._updateAfter(s,-1),this.audiovoices[this.notes[a].getValueAtTime(s)].triggerRelease(r),this.notes[a].dispose(),delete this.notes[a],this._newest=0===this._newest?0:(this._newest-1)%(this.maxVoices-1)}else console.warn("Cannot release a note that is not already playing")}else{this.audiovoices.forEach(function(t){t.triggerRelease(r)}),this._voicesInUse.setValueAtTime(0,s);for(var c in this.notes)this.notes[c].dispose(),delete this.notes[c]}},t.PolySynth.prototype.connect=function(t){var i=t||e.input;this.output.connect(i.input?i.input:i)},t.PolySynth.prototype.disconnect=function(){this.output&&this.output.disconnect()},t.PolySynth.prototype.dispose=function(){this.audiovoices.forEach(function(t){t.dispose()}),this.output&&(this.output.disconnect(),delete this.output)}}(a,q,u);var lt;lt=function(){function e(t){for(var e,i="number"==typeof t?t:50,n=44100,o=new Float32Array(n),r=Math.PI/180,s=0;n>s;++s)e=2*s/n-1,o[s]=(3+i)*e*20*r/(Math.PI+i*Math.abs(e));return o}var i=Y;t.Distortion=function(n,o){if(i.call(this),"undefined"==typeof n&&(n=.25),"number"!=typeof n)throw new Error("amount must be a number");if("undefined"==typeof o&&(o="2x"),"string"!=typeof o)throw new Error("oversample must be a String");var r=t.prototype.map(n,0,1,0,2e3);this.waveShaperNode=this.ac.createWaveShaper(),this.amount=r,this.waveShaperNode.curve=e(r),this.waveShaperNode.oversample=o,this.input.connect(this.waveShaperNode),this.waveShaperNode.connect(this.wet)},t.Distortion.prototype=Object.create(i.prototype),t.Distortion.prototype.process=function(t,e,i){t.connect(this.input),this.set(e,i)},t.Distortion.prototype.set=function(i,n){if(i){var o=t.prototype.map(i,0,1,0,2e3);this.amount=o,this.waveShaperNode.curve=e(o)}n&&(this.waveShaperNode.oversample=n)},t.Distortion.prototype.getAmount=function(){return this.amount},t.Distortion.prototype.getOversample=function(){return this.waveShaperNode.oversample},t.Distortion.prototype.dispose=function(){i.prototype.dispose.apply(this),this.waveShaperNode&&(this.waveShaperNode.disconnect(),this.waveShaperNode=null)}}(Y);var ft;ft=function(){var t=a;return t}(e,s,a,u,c,p,h,l,f,k,O,M,E,V,R,z,Q,H,$,J,K,it,nt,ot,rt,st,at,ut,pt,ht,lt,ct,pt,ht)}); \ No newline at end of file diff --git a/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/rockets.png b/CM2030 Graphics Programming/Week 13/13.3.1 Pixels/rockets.png new file mode 100644 index 0000000000000000000000000000000000000000..ebe44986024f0bca051f14358a5b95a9bb1a088a GIT binary patch literal 72360 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

T~9D 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