From 7f5337f57dae81c75e5e3601611eadcef867e632 Mon Sep 17 00:00:00 2001 From: Lev Date: Sat, 26 Jun 2021 19:08:12 -0500 Subject: [PATCH] Add Initial commit --- .../assets/Calistoga-Regular.ttf | Bin 0 -> 123388 bytes .../Topic 6/6.1.5 Random Font/index.html | 15 +++++++++ .../6.1.5 Random Font/libraries/p5.min.js | 3 ++ .../libraries/p5.sound.min.js | 28 ++++++++++++++++ .../Topic 6/6.1.5 Random Font/sketch.js | 30 ++++++++++++++++++ 5 files changed, 76 insertions(+) create mode 100644 CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/assets/Calistoga-Regular.ttf create mode 100644 CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/index.html create mode 100644 CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.min.js create mode 100644 CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.sound.min.js create mode 100644 CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/sketch.js diff --git a/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/assets/Calistoga-Regular.ttf b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/assets/Calistoga-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..819e783760aff3af3f2c53672d97cb0505093df9 GIT binary patch literal 123388 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 literal 0 HcmV?d00001 diff --git a/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/index.html b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/index.html new file mode 100644 index 0000000..d6d2561 --- /dev/null +++ b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/index.html @@ -0,0 +1,15 @@ + + + + + graphicsProgramming - Coursera + + + + + + + + + + diff --git a/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.min.js b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.min.js new file mode 100644 index 0000000..4eaaad2 --- /dev/null +++ b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.min.js @@ -0,0 +1,3 @@ +/*! p5.js v0.10.2 October 14, 2019 */ + +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).p5=e()}}(function(){return function n(o,s,l){function u(t,e){if(!s[t]){if(!o[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(h)return h(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var a=s[t]={exports:{}};o[t][0].call(a.exports,function(e){return u(o[t][1][e]||e)},a,a.exports,n,o,s,l)}return s[t].exports}for(var h="function"==typeof require&&require,e=0;e>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/Topic 6/6.1.5 Random Font/libraries/p5.sound.min.js b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/libraries/p5.sound.min.js new file mode 100644 index 0000000..899f447 --- /dev/null +++ b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/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/Topic 6/6.1.5 Random Font/sketch.js b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/sketch.js new file mode 100644 index 0000000..6fea13d --- /dev/null +++ b/CM2030 Graphics Programming/Topic 6/6.1.5 Random Font/sketch.js @@ -0,0 +1,30 @@ +var font; +function preload() { + font = loadFont('assets/Calistoga-Regular.ttf'); +} + +var points; + +function setup() { + createCanvas(900, 400); + fill(255, 104, 204, 150); + noStroke(); + + points = font.textToPoints('c o d e', 50, 300, 300, { + sampleFactor: .3, + simplifyThreshold: 0 + }); + +} + +function draw() { + background(0); + + // *** your code here **** + + noLoop(); +} + +function mouseMoved(){ + loop(); +}