@plotdb/sfx 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Change Logs
2
2
 
3
+ ## v0.0.4
4
+
5
+ - fix: 倍速時 ( `<audio>` 保持音高的路徑 ) 旁白 / 配樂結尾被切掉: 停止與淡出原本從排程時間起算, 沒算到載入、跳轉、play 的延遲;
6
+ 改為從實際發聲 ( `playing` ) 起算, 播到檔案結尾的交給 `onended`, 只有循環或刻意截短的才排停止
7
+
3
8
  ## v0.0.3
4
9
 
5
10
  - feature: 變化機制 ( 預設不變 )
package/index.js CHANGED
@@ -190,7 +190,7 @@
190
190
  return v;
191
191
  };
192
192
  mediaVoice = function(name, opt){
193
- var c, a, g, when_, level, end, v, go, delay;
193
+ var c, a, g, when_, level, v, go, delay, buf, offset, toEnd;
194
194
  opt == null && (opt = {});
195
195
  c = S.ctx();
196
196
  a = new Audio();
@@ -211,11 +211,6 @@
211
211
  } else {
212
212
  g.gain.setValueAtTime(level, when_);
213
213
  }
214
- if (opt.duration != null && opt.fadeOut) {
215
- end = when_ + opt.duration;
216
- g.gain.setValueAtTime(level, Math.max(when_, end - opt.fadeOut));
217
- g.gain.linearRampToValueAtTime(0, end);
218
- }
219
214
  v = {
220
215
  name: name,
221
216
  media: a,
@@ -244,9 +239,28 @@
244
239
  delay = Math.max(0, when_ - c.currentTime);
245
240
  v.timers.push(setTimeout(go, delay * 1000));
246
241
  if (opt.duration != null) {
247
- v.timers.push(setTimeout(function(){
248
- return stopVoice(v, 0.02);
249
- }, (delay + opt.duration) * 1000));
242
+ buf = S.buffers[name];
243
+ offset = opt.offset || 0;
244
+ toEnd = !a.loop && buf && offset + opt.duration * a.playbackRate >= buf.duration - 0.02;
245
+ a.addEventListener('playing', function(){
246
+ var left, now;
247
+ if (v.ended) {
248
+ return;
249
+ }
250
+ left = Math.max(0, opt.duration - (a.currentTime - offset) / a.playbackRate);
251
+ now = c.currentTime;
252
+ if (opt.fadeOut) {
253
+ g.gain.setValueAtTime(level, Math.max(now, now + left - opt.fadeOut));
254
+ g.gain.linearRampToValueAtTime(0, now + left);
255
+ }
256
+ if (!toEnd) {
257
+ return v.timers.push(setTimeout(function(){
258
+ return stopVoice(v, 0.02);
259
+ }, left * 1000));
260
+ }
261
+ }, {
262
+ once: true
263
+ });
250
264
  }
251
265
  a.onended = function(){
252
266
  v.ended = true;
package/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(){var K,A,i,s,d,c,m,g,h,o,r,u,P,n,T,N,G,k,Q,M,Y,Z,x,b,F,nn,C,q,E,V,R,D,z,tn,B,v,O,j,U,f,l,t,H,S,$,y,w,_,L,p,W,X,e,J,en,rn,a,an,on,un;if("undefined"==typeof window||!window.sfx){for(e in i=null,A={buffers:{},urls:{},items:[],voices:[],errors:[],external:!(K=48e3),playing:!1,rate:1,ctx:function(){var n,t,e,r,a;if(!i)for(n=window.AudioContext||window.webkitAudioContext,i=new n,A.master=i.createGain(),A.master.connect(i.destination),A.buses={},t=0,r=(e=["music","sfx","voice"]).length;t<r;++t)A.buses[a=e[t]]=i.createGain(),A.buses[a].connect(A.master);return i}},s=function(n){return A.ctx(),A.buses[n]||A.buses.sfx},A.resume=function(){var n=A.ctx();return"suspended"===n.state?n.resume():Promise.resolve()},A.volume=function(n,t,e){var r;if(null==e&&(e=.2),A.ctx(),n="master"===n?A.master:A.buses[n])return r=i.currentTime,n.gain.cancelScheduledValues(r),n.gain.setValueAtTime(n.gain.value,r),n.gain.linearRampToValueAtTime(t,r+Math.max(.01,e))},d=function(n){return!(!n||"object"!=typeof n||"function"!=typeof n.getChannelData||!n.sampleRate)},A.pending=0,A.load=function(r){return null==r&&(r={}),A.pending+=Object.keys(r).length,Promise.all(Object.keys(r).map(function(t){var e=r[t],n=d(e)?Promise.resolve(e):e&&e.then?e:fetch(e).then(function(n){if(n.ok)return n.arrayBuffer();throw new Error(e+": HTTP "+n.status)}).then(function(e){return new Promise(function(n,t){return A.ctx().decodeAudioData(e,n,t)})});return"string"==typeof e&&(A.urls[t]=e),n.then(function(n){return A.buffers[t]=n}).catch(function(n){return A.errors.push("load "+t+": "+(n.message||n))}).finally(function(){return A.pending--})})).then(function(){return A.buffers})},c=new WeakMap,A.peak=function(n){var t,e,r,a,o,u,i,l,s,h,f;if(!c.has(n)){for(t=n.getChannelData(0),e=Math.max(1,Math.round(.003*n.sampleRate)),o=a=0,u=(r=new Float32Array(Math.ceil(t.length/e))).length;o<u;++o){for(l=0,s=(i=o)*e,h=Math.min(t.length,(i+1)*e);s<h;++s)l+=t[f=s]*t[f];r[i]=Math.sqrt(l/e),r[i]>a&&(a=r[i])}for(i=0;i<r.length-1&&r[i]<.8*a;)i++;for(;i<r.length-1&&r[i+1]>r[i];)i++;c.set(n,i*e/n.sampleRate)}return c.get(n)},m=function(n,t){var e,r,a,o,u,i,l;return null==t&&(t={}),(r=d(n)?n:A.buffers[n])?((e=(a=A.ctx()).createBufferSource()).buffer=r,e.loop=!!t.loop,e.playbackRate.value=t.rate||1,r=a.createGain(),e.connect(r),r.connect(s(t.bus||"sfx")),a=t.when||a.currentTime,o=null!=t.gain?t.gain:1,t.fadeIn?(r.gain.setValueAtTime(0,a),r.gain.linearRampToValueAtTime(o,a+t.fadeIn)):r.gain.setValueAtTime(o,a),u=t.offset||0,null!=t.duration?(i=a+t.duration,t.fadeOut&&(r.gain.setValueAtTime(o,Math.max(a,i-t.fadeOut)),r.gain.linearRampToValueAtTime(0,i)),e.start(a,u,e.loop?void 0:t.duration*(t.rate||1)),e.loop&&e.stop(i)):e.start(a,u),l={name:n,src:e,gain:r,level:o,ended:!1},e.onended=function(){return l.ended=!0,A.voices=A.voices.filter(function(n){return n!==l})},A.voices.push(l),l):(A.errors.push("unknown sound: "+n),null)},g=function(n,t){var e,r,a,o,u,i,l;return null==t&&(t={}),e=A.ctx(),(r=new Audio).crossOrigin="anonymous",r.preload="auto",r.preservesPitch=!0,r.loop=!!t.loop,r.src=A.urls[n],r.playbackRate=t.rate||1,a=e.createGain(),e.createMediaElementSource(r).connect(a),a.connect(s(t.bus||"music")),o=t.when||e.currentTime,u=null!=t.gain?t.gain:1,t.fadeIn?(a.gain.setValueAtTime(0,o),a.gain.linearRampToValueAtTime(u,o+t.fadeIn)):a.gain.setValueAtTime(u,o),null!=t.duration&&t.fadeOut&&(l=o+t.duration,a.gain.setValueAtTime(u,Math.max(o,l-t.fadeOut)),a.gain.linearRampToValueAtTime(0,l)),i={name:n,media:r,gain:a,level:u,ended:!1,timers:[]},l=function(){var n;if(!i.ended)return n=function(){return r.currentTime=t.offset||0,r.play().catch(function(){})},1<=r.readyState?n():r.addEventListener("loadedmetadata",n,{once:!0})},n=Math.max(0,o-e.currentTime),i.timers.push(setTimeout(l,1e3*n)),null!=t.duration&&i.timers.push(setTimeout(function(){return h(i,.02)},1e3*(n+t.duration))),r.onended=function(){return i.ended=!0,A.voices=A.voices.filter(function(n){return n!==i})},A.voices.push(i),i},h=function(t,n){var e,r,a,o,u;if(null==n&&(n=.05),t&&!t.ended)if(e=i.currentTime,t.gain.gain.cancelScheduledValues(e),t.gain.gain.setValueAtTime(t.gain.gain.value,e),t.gain.gain.linearRampToValueAtTime(0,e+n),t.media){for(r=0,o=(a=t.timers).length;r<o;++r)u=a[r],clearTimeout(u);t.ended=!0,setTimeout(function(){return t.media.pause(),t.media.removeAttribute("src"),t.media.load()},1e3*(n+.02)),A.voices=A.voices.filter(function(n){return n!==t})}else try{return t.src.stop(e+n+.01)}catch(n){return n}},o=function(n,t,e){return{rate:Math.pow(2,(2*t-1)*n/12),gain:1-.3*n*e}},A.play=function(n,t){var e,r,a;return null==t&&(t={}),A.resume(),Array.isArray(n)&&(n=n[Math.floor(Math.random()*n.length)]),t.vary&&(e=o(t.vary,Math.random(),Math.random()),(r=I({},t)).rate=(t.rate||1)*e.rate,r.gain=(null!=t.gain?t.gain:1)*e.gain,t=r),(a=m(n,t))?(a.manual=!0,{stop:function(n){return h(a,n)},fade:function(n,t){var e;return null==t&&(t=.5),e=i.currentTime,a.gain.gain.cancelScheduledValues(e),a.gain.gain.setValueAtTime(a.gain.gain.value,e),a.gain.gain.linearRampToValueAtTime(n,e+t)},voice:a}):null},A.stop=function(n,t){var e,r,a,o,u=[];for(null==t&&(t={}),e=0,a=(r=A.voices).length;e<a;++e)!(o=r[e]).manual||n&&o.name!==n||u.push(h(o,t.fade||.05));return u},r=null,A.music=function(n,t){var e=null!=(t=null==t?{}:t).fade?t.fade:1;return r&&r.stop(e),r=null,n?r=A.play(n,I({loop:!0,bus:"music",fadeIn:e},t)):null},A.timeline=function(n){return A.items=(n=null==n?[]:n).map(function(n,t){return n=I({},n),(Array.isArray(n.sound)||n.vary)&&((t=N((2654435761*(t+1)^40503*Math.round(1e3*(n.t||0)))>>>0))(),Array.isArray(n.sound)&&(n.sound=n.sound[Math.floor(t()*n.sound.length)]),n.vary)&&(t=o(n.vary,t(),t()),n.rate=(n.rate||1)*t.rate,n.gain=(null!=n.gain?n.gain:1)*t.gain),n}),A.playing&&A.transport({playing:!0,t:A.t||0,force:!0}),A},A.cues=function(n,t){return null==t&&(t={}),A.timeline((n=null==n?[]:n).map(function(n){return I({t:n.t,sound:n.sfx||n.sound,gain:n.gain},t)}))},u=function(){for(var n,t,e=[],r=0,a=(n=A.voices).length;r<a;++r)(t=n[r]).manual||e.push(h(t,.03));return e},P=function(n){for(var t,e,r,a,o,u,i,l,s=[],h=A.ctx().currentTime+.02,f=A.rate||1,c=0,p=(t=A.items).length;c<p;++c)e=t[c],(r=A.buffers[e.sound])&&(a=e.bus||"sfx",i="peak"===(e.align||("sfx"===a?"peak":"start"))?A.peak(r):0,(i=e.t-i)+(o=e.loop?(null!=e.until?e.until:1e9)-i:e.duration||r.duration/(e.rate||1))<=n||(u=Math.max(0,n-i),(l=I({},e)).bus=a,l.when=h+Math.max(0,i-n)/f,l.duration=(o-u)/f,l.rate=(e.rate||1)*f,(i=l).offset=(e.offset||0)+(e.loop?u%r.duration:u*(e.rate||1)),0<u&&e.fadeIn&&(i.fadeIn=0),1===f||"voice"!==a&&"music"!==a||!A.urls[e.sound]?s.push(m(r,i)):s.push(g(e.sound,i))));return s},A.transport=function(n){var n=null!=n?n:{},t=n.playing,e=null!=(e=n.t)?e:0,r=n.force,a=n.from,n=n.rate;return a&&"player"!==a&&(A.external=!0),null!=n&&0<+n&&+n!==A.rate&&(A.rate=+n,r=!0),a=A.playing,A.playing=!!t,A.t=e,A.tAt=i&&i.currentTime||0,t?(A.resume(),!a||r?(u(),P(e)):void 0):u()},n=function(n){var t,e,r;if(n&&n.player&&!n.player.__sound)return t=n.player.prototype,e=t.play,r=t.seek,t.play=function(n){return null==n&&(n=!0),n=e.apply(this,arguments),A.external||A.transport({playing:this.playing,t:this.t}),n},t.seek=function(n){var t=this.t,e=r.apply(this,arguments);return!A.external&&this.started&&(this.playing&&(this.t<t-.01||.3<this.t-t)&&A.transport({playing:!0,t:this.t,force:!0}),!this.playing)&&A.playing&&A.transport({playing:!1,t:this.t}),e},n.player.__sound=!0},window.lotion?n(window.lotion):document.addEventListener("DOMContentLoaded",function(){return n(window.lotion)}),A.render=function(n,t){for(var e,r,a,o,u,i,l,s,t=(t=null==t?{}:t).sampleRate||K,h=new OfflineAudioContext(2,Math.ceil(n*t),t),f=0,c=(e=A.items).length;f<c;++f)r=e[f],(s=A.buffers[r.sound])&&(a="peak"===(r.align||("sfx"===(r.bus||"sfx")?"peak":"start"))?A.peak(s):0,a=r.t-a,(o=h.createBufferSource()).buffer=s,o.loop=!!r.loop,o.playbackRate.value=r.rate||1,u=h.createGain(),i=null!=r.gain?r.gain:1,u.gain.value=i,o.connect(u),u.connect(h.destination),l=Math.max(0,a),r.fadeIn&&(u.gain.setValueAtTime(0,l),u.gain.linearRampToValueAtTime(i,l+r.fadeIn)),s=r.loop?(null!=r.until?r.until:n)-a:r.duration||s.duration/(r.rate||1),r.fadeOut&&(u.gain.setValueAtTime(i,Math.max(l,a+s-r.fadeOut)),u.gain.linearRampToValueAtTime(0,a+s)),o.start(l,(r.offset||0)+Math.max(0,-a)),o.stop(a+s));return h.startRendering()},A.wav=function(n){var t,e,r,a,o,u,i,l,s=n.numberOfChannels,h=n.length,f=new DataView(new ArrayBuffer(44+h*s*2)),c=function(n,t){for(var e,r=[],a=0,o=t.length;a<o;++a)e=a,r.push(f.setUint8(n+e,t.charCodeAt(e)));return r};for(c(0,"RIFF"),f.setUint32(4,36+h*s*2,!0),c(8,"WAVE"),c(12,"fmt "),f.setUint32(16,16,!0),f.setUint16(20,1,!0),f.setUint16(22,s,!0),f.setUint32(24,n.sampleRate,!0),f.setUint32(28,n.sampleRate*s*2,!0),f.setUint16(32,2*s,!0),f.setUint16(34,16,!0),c(36,"data"),f.setUint32(40,h*s*2,!0),e=[],r=0;r<s;++r)a=r,e.push(n.getChannelData(a));for(t=e,o=44,r=0;r<h;++r)for(u=r,i=0;i<s;++i)a=i,l=Math.max(-1,Math.min(1,t[a][u])),f.setInt16(o,l<0?32768*l:32767*l,!0),o+=2;return new Blob([f],{type:"audio/wav"})},A.report=function(){return{loaded:Object.keys(A.buffers).map(function(n){return{name:n,duration:+A.buffers[n].duration.toFixed(2),peak:+A.peak(A.buffers[n]).toFixed(3)}}),timeline:A.items.length,playing:A.playing,context:i?i.state:null,errors:A.errors.slice(-10)}},T={C:-9,D:-7,E:-5,F:-4,G:-2,A:0,B:2},A.freq=function(n){return"number"==typeof n?n:(n=/^([A-G])(#|b)?(-?\d)$/.exec(n))?(n=T[n[1]]+("#"===n[2]?1:"b"===n[2]?-1:0)+12*(+n[3]-4),440*Math.pow(2,n/12)):440},N=function(n){var t=(n=null==n?1:n)>>>0||1;return function(){return(t=1664525*t+1013904223>>>0)/4294967296}},G=function(n,t,e){var r,a,o,u,i,l,s;for(null==e&&(e={}),r=Math.max(1,Math.round(n*K)),t(a=new Float32Array(r),o=new Float32Array(r),r),i=u=0;i<r;++i)l=i,u=Math.max(u,Math.abs(a[l]),Math.abs(o[l]));for(s=0<u?(e.peak||.9)/u:1,n=new AudioBuffer({length:r,sampleRate:K,numberOfChannels:2}),i=0;i<r;++i)a[l=i]*=s,o[l]*=s;return n.copyToChannel(a,0),n.copyToChannel(o,1),n},k=function(n,t,e){var t=2*Math.PI*Math.min(t,23520)/K,r=Math.cos(t),a=Math.sin(t)/(2*e);switch(n){case"lp":return[(1-r)/2,1-r,(1-r)/2,1+a,-2*r,1-a];case"hp":return[(1+r)/2,-(1+r),(1+r)/2,1+a,-2*r,1-a];default:return[a,0,-a,1+a,-2*r,1-a]}},Q=function(n,t,e,r){for(var a,o,u,i,l,s,h,f=(t=k(t,e,r=null==r?.707:r))[0],c=t[1],p=t[2],d=t[3],m=t[4],M=t[5],v=a=o=u=i=0,g=n.length;v<g;++v)h=(f*(s=n[l=v])+c*a+p*o-m*u-M*i)/d,o=a,a=s,i=u,n[l]=u=h;return n},M=function(n,t,e,r){var a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x;for(null==r&&(r=.707),a=n.length,s=o=u=i=l=0;s<a;s+=32)for(c=(f=k(t,e((h=s)/a),r))[0],p=f[1],d=f[2],m=f[3],M=f[4],v=f[5],g=h,y=Math.min(a,h+32);g<y;++g)x=(c*(b=n[w=g])+p*o+d*u-M*i-v*l)/m,u=o,o=b,l=i,n[w]=i=x;return n},Y=function(n,t){for(var e=new Float32Array(n),r=0;r<n;++r)e[r]=2*t()-1;return e},Z=function(n,t,e){return n<t?n/t:Math.exp(-(n-t)/e)},x=function(n,t,e,r,a){var o,u,i,l,s,h=[];for(null==r&&(r=0),null==a&&(a=1),o=Math.cos((r+1)*Math.PI/4)*a,u=Math.sin((r+1)*Math.PI/4)*a,i=0,l=e.length;i<l;++i)n[s=i]+=e[s]*o,h.push(t[s]+=e[s]*u);return h},b=A.synth={click:function(l){return null==l&&(l={}),G(.05,function(n,t,e){for(var r,a=N(l.seed||7),o=Q(Y(e,a),"hp",2500),u=new Float32Array(e),i=0;i<e;++i)u[r=i]=o[r]*Z(r=r/K,5e-4,.004)+.5*Math.sin(2*Math.PI*(l.freq||2e3)*r)*Z(r,5e-4,.012);x(n,t,u,l.pan)})},tick:function(i){return null==i&&(i={}),G(.06,function(n,t,e){for(var r,a=A.freq(i.note||i.freq||1800),o=new Float32Array(e),u=0;u<e;++u)r=u/K,o[u]=Math.sin(2*Math.PI*a*r)*Z(r,.001,.018);x(n,t,o,i.pan)})},pop:function(f){return null==f&&(f={}),G(.15,function(n,t,e){for(var r,a,o,u=f.from||380,i=f.to||900,l=new Float32Array(e),s=0,h=0;h<e;++h)a=(r=h)/K,o=u+(i-u)*Math.min(1,a/.03),s+=2*Math.PI*o/K,l[r]=Math.sin(s)*Z(a,.002,.04);x(n,t,l,f.pan)})},toggle:function(u){return null==u&&(u={}),G(.12,function(n,t,e){for(var r,a=new Float32Array(e),o=0;o<e;++o)r=o/K,a[o]=Math.sin(2*Math.PI*1500*r)*Z(r,.001,.012)+(.05<r?Math.sin(2*Math.PI*2200*(r-.05))*Z(r-.05,.001,.015):0);x(n,t,a,u.pan)})},chime:function(u){var i,l;return null==u&&(u={}),i=A.freq(u.note||"E6"),l=u.dur||1.4,G(l,function(n,t,e){for(var r,a=new Float32Array(e),o=0;o<e;++o)r=o/K,a[o]=(Math.sin(2*Math.PI*i*r)+.5*Math.sin(2*Math.PI*i*2.01*r)*Math.exp(2*-r)+.25*Math.sin(2*Math.PI*i*3.02*r)*Math.exp(4*-r))*Z(r,.003,l/4);x(n,t,a,u.pan)})},success:function(c){return null==c&&(c={}),G(.9,function(n,t,e){for(var r,a,o,u,i,l,s=new Float32Array(e),h=0,f=(r=[[0,"C6"],[.09,"E6"],[.18,"G6"]]).length;h<f;++h)for(o=(a=r[h])[0],u=A.freq(a[1]),i=Math.round(o*K);i<e;++i)l=i/K-o,s[i]+=(Math.sin(2*Math.PI*u*l)+.4*Math.sin(2*Math.PI*u*2.01*l))*Z(l,.003,.25);x(n,t,s,c.pan)})},notify:function(c){return null==c&&(c={}),G(.7,function(n,t,e){for(var r,a,o,u,i,l,s=new Float32Array(e),h=0,f=(r=[[0,"A5"],[.12,"E6"]]).length;h<f;++h)for(o=(a=r[h])[0],u=A.freq(a[1]),i=Math.round(o*K);i<e;++i)l=i/K-o,s[i]+=Math.sin(2*Math.PI*u*l)*Z(l,.004,.18);x(n,t,s,c.pan)})},whoosh:function(s){var n=(s=null==s?{}:s).dur||.7,h=s.from||400,f=s.peak||2600,c=s.to||600,p=s.at||.45,d=s.q||1.2;return G(n,function(n,t,e){for(var r,a,o=[],u=N(s.seed||3),i=M(Y(e,u),"bp",function(n){return n<p?h+n/p*(f-h):f+(n-p)/(1-p)*(c-f)},d),l=0;l<e;++l)i[r=l]*=(a=r/e)<p?Math.sin(Math.PI/2*a/p):Math.cos(Math.PI/2*(a-p)/(1-p));for(l=0;l<e;++l)n[r=l]=i[r]*(1-r/e*.6),o.push(t[r]=i[r]*(.4+r/e*.6))})},type:function(n){return b.click({freq:1200+600*N((n=null==n?{}:n).seed||11)(),seed:n.seed})},thump:function(h){return null==h&&(h={}),G(.35,function(n,t,e){for(var r,a,o=N(h.seed||5),u=Q(Y(e,o),"bp",1800,.8),i=new Float32Array(e),l=0,s=0;s<e;++s)a=(r=s)/K,l+=2*Math.PI*(70+60*Math.exp(-a/.04))/K,i[r]=Math.sin(l)*Z(a,.002,.09)+.35*u[r]*Z(a,.001,.03);x(n,t,i,h.pan)})},pluck:function(g){var y,n,w,b;return null==g&&(g={}),y=A.freq(g.note||"A3"),n=g.dur||2.5,w=null!=g.bright?g.bright:.6,b=null!=g.slide?g.slide:.6,G(n,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c=N(g.seed||13),p=K/y,d=Math.ceil(2*p)+4,m=Y(d,c),M=0,v=Math.round(4*(1-w));M<v;++M)for(r=M,a=1;a<d;++a)m[o=a]=(m[o]+m[o-1])/2;for(u=new Float32Array(e),i=new Float32Array(e+d),M=0;M<d;++M)i[o=M]=m[o];for(l=Math.pow(.996,220/y),v=e+(M=d);M<v;++M)s=(r=M)-p*Math.pow(2,b*Math.exp(-(r-d)/K/.09)/12),h=i[f=Math.floor(s)]*(1-(s=s-f))+i[f+1]*s,f=i[f-1]*(1-s)+i[f]*s,i[r]=l*(h+f)/2,u[r-d]=i[r];for(M=0;M<e;++M)u[o=M]*=Math.min(1,(e-o)/(.3*K));x(n,t,u,g.pan)})},drone:function(n){var d=((n=null==n?{}:n).notes||["A1","E2","A2"]).map(A.freq),m=n.dur||8,M=n.attack||1.5,v=n.release||2;return G(m,function(n,t,e){for(var r,a,o,u,i,l,s,h,f=[],c=0,p=(r=d).length;c<p;++c){for(o=r[a=c],u=new Float32Array(e),i=0;i<e;++i)s=(l=i)/K,h=Math.min(1,s/M,(m-s)/v),u[l]=(Math.sin(2*Math.PI*o*s)+.3*Math.sin(2*Math.PI*o*1.003*2*s))*h;f.push(x(n,t,u,.4*(a-(d.length-1)/2),1/d.length))}})},wind:function(s){var h=(s=null==s?{}:s).dur||6;return G(h,function(n,t,e){for(var r,a,o=[],u=N(s.seed||17),i=Q(Q(Y(e,u),"hp",150),"lp",s.cutoff||900),l=0;l<e;++l)a=(r=l)/K,a=(.6+.4*Math.sin(2*Math.PI*.13*a)*Math.sin(2*Math.PI*.071*a+1))*Math.min(1,a,h-a),n[r]=i[r]*a,o.push(t[r]=i[(r+2400)%e]*a)})},rain:function(h){var n=(h=null==h?{}:h).dur||6,f=h.density||.02;return G(n,function(n,t,e){for(var r,a,o=[],u=N(h.seed||19),i=Q(Y(e,u),"bp",4e3,.5),l=new Float32Array(e),s=0;s<e;++s)r=s,u()<.05*f&&(l[r]=2*u()-1);for(l=Q(Q(l,"hp",2500),"lp",9e3),s=0;s<e;++s)r=s,a=Math.min(1,r/K,(e-r)/K),n[r]=(.15*i[r]+3*l[r])*a,o.push(t[r]=(.15*i[(r+1200)%e]+3*l[(r+777)%e])*a)})},buzz:function(h){var f=(h=null==h?{}:h).dur||1.5,c=A.freq(h.freq||220);return G(f,function(n,t,e){for(var r,a,o,u,i=new Float32Array(e),l=0,s=0;s<e;++s)a=(r=s)/K,u=2*((l+=(o=c*(1+.03*Math.sin(2*Math.PI*5.3*a)+.015*Math.sin(2*Math.PI*1.7*a)))/K)-Math.floor(l+.5)),i[r]=u*(.75+.25*Math.sin(2*Math.PI*o*.5*a))*Math.min(1,a/.08,(f-a)/.15);Q(i,"lp",2200),Q(i,"bp",3*c,.6),x(n,t,i,h.pan)})},swell:function(l){var n=(l=null==l?{}:l).dur||2;return G(n,function(n,t,e){for(var r,a=[],o=N(l.seed||23),u=M(Y(e,o),"bp",function(n){return 300+3e3*n*n},.9),i=0;i<e;++i)r=i,a.push(n[r]=t[r]=u[r]*(r=r/e)*r)})},melody:function(r){var h,n=(r=null==r?{}:r).notes||[],a=null!=r.release?r.release:.8,t=r.dur||Math.max.apply(Math,n.map(function(n){return n[0]+(n[2]||1.5)}))+1,o=r.instrument||"pluck";return b[o]||(o="pluck"),h=n.map(function(n,t){var e="pluck"===o?{bright:r.bright,slide:r.slide}:{};return[n,b[o](I({note:n[1],dur:(n[2]||1.5)+a,seed:31+t},e))]}),G(t,function(n,t,e){for(var r,a,o,u,i=[],l=0,s=(r=h).length;l<s;++l)u=(o=(a=r[l])[0])[0],i.push(F(n,t,a[1],u,o[3]||.8))})}},F=function(n,t,e,r,a){var o,u,i,l,s,h,f=[];for(null==a&&(a=1),o=e.getChannelData(0),u=e.getChannelData(1),i=Math.round(r*K),l=Math.max(0,-i),s=Math.min(o.length,n.length-i);l<s;++l)n[i+(h=l)]+=o[h]*a,f.push(t[i+h]+=u[h]*a);return f},nn=function(n,t,e,r,a,o){var u,i,l,s,h,f,c,p;if(null==o&&(o=.001),!(21600<=e))for(u=Math.round(t*K),i=2*Math.PI*e/K,l=Math.max(0,u),s=n.length;l<s&&(p=r*Z(c=(f=(h=l)-u)/K,o,a),!(o<c&&p<1e-5));++l)n[h]+=p*Math.sin(i*f);return n},C=function(n,t){var e,r,a;for(null==t&&(t=.02),e=Math.min(n.length,Math.round(t*K)),r=0;r<e;++r)a=r,n[n.length-1-a]*=a/e;return n},q=function(n,t,e){for(var r,a,o,u,i=Math.max(1,Math.round(t*K)),l=[],s=0,h=Math.ceil(n/i)+1;s<=h;++s)a=s,l.push(e());for(r=l,o=new Float32Array(n),s=0;s<n;++s)u=s,a=Math.floor(u/i),o[u]=r[a]*(1-(u=u%i/i))+r[a+1]*u;return o},E=function(n,t,e,r){var a,o,u,i,l,s,h,f;for(null==r&&(r=[1]),a=new Float32Array(n),u=o=0;u<n;++u)for(i=u,o+=2*Math.PI*t*Math.pow(e/t,i/n)/K,l=0,s=r.length;l<s;++l)f=r[h=l],a[i]+=f*Math.sin(o*(h+1));return a},V=[1116,1188,1277,1356,1422,1491,1557,1617],R=[556,441,341,225],D=function(n,C,q){var T,E,D;return null==C&&(C=.3),null==q&&(q=.5),T=K/44100,E=[n.getChannelData(0),n.getChannelData(1)],D=n.length,G(n.duration+.4+3*q,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A=[],k=.7+.27*q,F=new Float32Array(e),I=0,P=D;I<P;++I)F[r=I]=.015*(E[0][r]+E[1][r]);for(I=0,o=(a=[n,t]).length;I<o;++I){for(i=a[u=I],l=[],s=new Float32Array(e),h=0,c=(f=V).length;h<c;++h)for(p=f[h],d=Math.round((p+23*u)*T),m=new Float32Array(d),g=v=M=0;g<e;++g)r=g,y=m[M],m[M]=F[r]+(v=.7*y+.3*v)*k,M=(M+1)%d,s[r]+=y;for(h=0,c=(f=R).length;h<c;++h)for(p=f[h],d=Math.round((p+23*u)*T),m=new Float32Array(d),g=M=0;g<e;++g)r=g,w=m[M],b=s[r],m[M]=b+.5*w,s[r]=w-b,M=(M+1)%d;for(x=E[u],h=0;h<e;++h)r=h,l.push(i[r]=(r<D?x[r]*(1-.5*C):0)+s[r]*C*3);A.push(l)}})},A.reverb=function(n,t){return D(n,null!=(t=null==t?{}:t).mix?t.mix:.3,null!=t.room?t.room:.5)},b.slide=function(s){var n=(s=null==s?{}:s).dur||.3,h=s.from||900,f=s.to||2600,c=s.q||.9,p=null!=s.dir?s.dir:1;return G(n,function(n,t,e){for(var r,a,o,u=[],i=M(Y(e,N(s.seed||37)),"bp",function(n){return h*Math.pow(f/h,n)},c),l=0;l<e;++l)a=(o=(r=l)/e)<.25?Math.sin(Math.PI/2*o/.25):Math.pow(Math.cos(Math.PI/2*(o-.25)/.75),2),o=.6*(2*o-1)*p,n[r]=i[r]*a*Math.cos((1+o)*Math.PI/4),u.push(t[r]=i[r]*a*Math.sin((1+o)*Math.PI/4))})},z=function(u,n,t){var i=u.dur||.6,l=A.freq(u.from||n),s=A.freq(u.to||t);return G(i,function(n,t,e){for(var r,a=E(e,l,s,[1,.25,.08]),o=0;o<e;++o)r=o/K,a[o]*=Math.min(1,r/.02)*Math.min(1,(i-r)/(.35*i));x(n,t,a,u.pan)})},b.rise=function(n){return z(n=null==n?{}:n,300,900)},b.fall=function(n){return z(n=null==n?{}:n,900,250)},b.count=function(s){var h,f,c,p,d;return null==s&&(s={}),h=Math.max(2,s.n||12),f=s.dur||1.2,c=A.freq(s.note||"C6"),p=null!=s.climb?s.climb:7,d=(()=>{switch(s.ease){case"in":return function(n){return n*n};case"linear":return function(n){return n};default:return function(n){return 1-(1-n)*(1-n)}}})(),G(f+.2,function(n,t,e){for(var r,a,o,u=new Float32Array(e),i=0,l=h;i<l;++i)r=i/(h-1),a=i===h-1,o=c*Math.pow(2,p*r/12),nn(u,f*d(r),o,a?1:.6,a?.09:.02),a&&nn(u,f,2*o,.3,.06);x(n,t,u,s.pan)})},b.snap=function(i){return null==i&&(i={}),G(.1,function(n,t,e){for(var r,a=Q(Y(e,N(i.seed||41)),"lp",6e3),o=new Float32Array(e),u=0;u<e;++u)o[r=u]=.8*a[r]*Z(r=r/K,3e-4,.002)+.6*Math.sin(2*Math.PI*1400*r)*Z(r,5e-4,.01)+Math.sin(2*Math.PI*160*r)*Z(r,.001,.025);x(n,t,o,i.pan)})},b.draw=function(f){var c=(f=null==f?{}:f).dur||1,p=null!=f.rough?f.rough:.5;return G(c,function(n,t,e){for(var r,a,o,u=N(f.seed||43),i=Q(Q(Y(e,u),"bp",f.pitch||2500,.8),"hp",600),l=q(e,.06,u),s=q(e,.004,u),h=0;h<e;++h)a=(r=h)/K,o=s[r]*s[r],i[r]*=(.3+.7*l[r])*(1-p+p*o*2)*Math.min(1,a/.03,(c-a)/.05);x(n,t,i,f.pan)})},b.glitch=function(g){var n=(g=null==g?{}:g).dur||.5;return G(n,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m=[],M=N(g.seed||47),v=0;v<e;){for(r=Math.round((.015+.05*M())*K),a=M(),o=100+1900*M()*M(),u=1+Math.floor(40*M()),i=1.6*M()-.8,l=Math.cos((1+i)*Math.PI/4),s=Math.sin((1+i)*Math.PI/4),h=0,f=v,c=Math.min(e,v+r);f<c;++f)p=f,d=a<.4?0<Math.sin(2*Math.PI*o*((p-v)/K))?.6:-.6:a<.8?(p-v)%u==0?h=2*M()-1:h:0,n[p]=d*l,t[p]=d*s;m.push(v+=r)}})},b.reveal=function(f){var c=((f=null==f?{}:f).notes||["C6","E6","G6","C7","E7"]).map(A.freq),p=null!=f.gap?f.gap:.06;return G(1.6,function(n,t,e){for(var r,a,o,u,i,l=new Float32Array(e),s=0,h=(r=c).length;s<h;++s)o=r[a=s],nn(l,a*p,o,1,.5),nn(l,a*p,2.76*o,.25,.15);for(u=Q(Y(e,N(f.seed||53)),"hp",6e3),s=0;s<e;++s)l[i=s]+=.12*u[i]*Z(i/K,.25,.3);x(n,t,l,f.pan)})},b.reveal.reverb=.35,b.error=function(h){var f;return null==h&&(h={}),f=[A.freq(h.from||"B3"),A.freq(h.to||"F3")],G(.5,function(n,t,e){for(var r,a,o,u,i=new Float32Array(e),l=0,s=(r=f).length;l<s;++l)for(o=r[a=l],u=1;u<=7;u+=2)nn(i,.16*a,o*u,1/u,.12,.005);C(Q(i,"lp",2e3)),x(n,t,i,h.pan)})},b.tension=function(n){var M=(n=null==n?{}:n).dur||6,v=A.freq(n.note||"A2");return G(M,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p=[],d=0,m=(r=[1,Math.pow(2,1/12),Math.pow(2,.5),2]).length;d<m;++d){for(o=r[a=d],u=new Float32Array(e),s=l=i=0;s<e;++s)c=(f=(h=s)/K)/M,l+=2*Math.PI*(3+5*c)/K,i+=2*Math.PI*v*o/K,u[h]=(Math.sin(i)+.3*Math.sin(2*i)+.15*Math.sin(3*i))*(1-.35*(.5+.5*Math.sin(l+a)))*Math.pow(c,1.5)*Math.min(1,(M-f)/.3);p.push(x(n,t,u,.4*(a-1.5),.5))}})},b.heartbeat=function(g){var y=(g=null==g?{}:g).dur||4,w=60/(g.bpm||70);return G(y,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M=new Float32Array(e),v=.05;v<y-.2;){for(o=(a=[[r=0,75,45,1],[Math.min(.3,.35*w),85,55,.7]]).length;r<o;++r)for(u=(h=a[r])[0],i=h[1],l=h[2],s=h[3],h=Math.round(12e3),f=Math.round((v+u)*K),c=E(h,i,l),p=0,d=Math.min(h,e-f);p<d;++p)M[f+(m=p)]+=c[m]*s*Z(m/K,.008,.06);v+=w}x(n,t,Q(M,"lp",300),g.pan)})},b.clock=function(c){var p=(c=null==c?{}:c).dur||4,d=60/(c.bpm||60);return G(p,function(n,t,e){for(var r,a,o,u,i,l=new Float32Array(e),s=Q(Y(e,N(c.seed||59)),"hp",2e3),h=0,f=.02;f<p-.05;){for(nn(l,f,r=h%2?2400:3200,.6,.012),nn(l,f,1.5*r,.3,.006),a=Math.round(f*K),o=0,u=Math.min(Math.round(96),e-a);o<u;++o)l[a+(i=o)]+=.8*s[a+i];f+=d,h++}x(n,t,l,c.pan)})},tn=function(n,t,e,r,a,o,u,i,l){var s,h,f,c,p,d,m,M,v,g=[];for(null==l&&(l=0),s=Math.max(4,Math.round(a*K)),h=Y(s,e),Q(h,"bp",o,u),f=Math.round(r*K),c=Math.cos((l+1)*Math.PI/4)*i,p=Math.sin((l+1)*Math.PI/4)*i,d=0,m=Math.min(s,n.length-f);d<m;++d)M=d,v=Math.exp(-4*M/s)*Math.min(1,M/8),n[f+M]+=h[M]*v*c,g.push(t[f+M]+=h[M]*v*p);return g},B=function(n,t){for(var e,r=0;r<50;++r)if(e=n(),n()<t(e))return e;return n()},b.paper=function(x){var A=(x=null==x?{}:x).dur||1.2,k=null!=x.crisp?x.crisp:1,F=null!=x.flutter?x.flutter:.6,I=.2*A,P=.8*A;return G(A,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d=[],m=N(x.seed||61),M=function(n){return n<.5*I||.02+P<n?0:Math.pow(Math.min(1,(n-.5*I)/(P-.5*I)),.7)},v=q(e,.035,m),g=q(e,.09,m),y=0,w=(r=[n,t]).length;y<w;++y)for(a=r[y],o=j(e,m),u=Q(Y(e,m),"bp",4e3,.7),i=0;i<e;++i)h=1-F+F*(.7*v[l=i]+.6*g[l]),h=M(s=l/K)*h,f=s<I?.25*Math.sin(Math.PI/2*s/I):s<P?.25*Math.max(0,1-(s-I)/I):0,c=P<=s?1.1*Z(s-P,.006,.07)+.25*Math.max(0,1-(s-P)/(A-P)):0,a[l]=o[l]*(.8*h+c)+u[l]*f;for(y=0,p=Math.round(50*A*k);y<p;++y)s=.5*I+(P-.5*I)*B(m,b),tn(n,t,m,s,2e-4+8e-4*m(),1500*Math.pow(5,m()),.5,8*(.1+m()*m()),.6*m()-.3);for(y=0,w=(r=[n,t]).length;y<w;++y)a=r[y],Q(a,"hp",150),Q(a,"lp",7500,.6),d.push(C(a,.05));function b(n){return.3+.7*n}})},v=function(n,t,e,r,a,o,u,i){var l,s,h,f,c,p,d,m,M,v,g=[];for(null==i&&(i=1),s=(.043*(l=3e3/r)+.0014*Math.pow(l,1.5))*i,h=Math.min(Math.round(6/s*K),n.length-Math.round(e*K)),f=Math.round(e*K),c=Math.cos((u+1)*Math.PI/4)*a,p=Math.sin((u+1)*Math.PI/4)*a,m=d=0;m<h;++m)v=(M=m)/K,d+=2*Math.PI*l*(1+o*s*v)/K,v=Math.sin(d)*Math.exp(-s*v)*Math.min(1,M/24),n[f+M]+=v*c,g.push(t[f+M]+=v*p);return g},b.water=function(s){var h=(s=null==s?{}:s).n||1,f=null!=s.rise?s.rise:1===h?.05:.1,c=s.size||(s.freq?3e3/A.freq(s.freq):1===h?3:2.5),p=s.dur||(1===h?.4:Math.max(1,.04*h));return G(p,function(n,t,e){var r,a,o,u,i=[],l=N(s.seed||67);if(1===h)tn(n,t,l,.005,.001,3e3,.8,.25),v(n,t,.007,c,1,f,0,.4),v(n,t,.012,.4*c,.12,f,.1);else for(r=0,a=h;r<a;++r)o=c*(.25+1.75*Math.pow(l(),2.5)),u=l()*(p-.1),i.push(v(n,t,u,o,Math.pow(o/c,.7)*(.3+.7*l()),f*(.5+l()),1.4*l()-.7))})},b.fire=function(b){var x=(b=null==b?{}:b).dur||6,A=null!=b.density?b.density:1;return G(x,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m=[],M=N(b.seed||71),v=Q(Y(e,M),"lp",300),g=Q(Y(e,M),"hp",3e3),y=q(e,.25,M),w=0;w<e;++w)a=(.4+.6*y[r=w])*Math.min(1,r/K/.3,(e-r)/K/.3),n[r]=t[r]=(.5*v[r]+.04*g[r])*a;for(o=Math.round(10*x*A),w=0;w<o;++w){for(u=[],i=Math.round(M()*(e-480)),l=M()*M()*1.5,s=Math.round((5e-4+.003*M())*K),h=1.6*M()-.8,f=Math.cos((1+h)*Math.PI/4),c=Math.sin((1+h)*Math.PI/4),p=0;p<s;++p)r=p,d=(2*M()-1)*l*(1-r/s),n[i+r]+=d*f,u.push(t[i+r]+=d*c);m.push(u)}})},O={wood:{thud:1,tones:[140,380,620],click:[[2200,1.2,.012,.5]]},concrete:{thud:.04,tones:[],click:[[700,.8,.003,1.6],[2600,1.2,.002,.15]],scuff:.06},gravel:{thud:.45,grains:90,band:[1200,6e3],len:[4e-4,.002],q:1.5},snow:{thud:.35,grains:70,band:[500,2200],len:[.002,.007],q:.8},grass:{thud:.25,grains:90,band:[2500,8e3],len:[5e-4,.003],q:1.2}},b.steps=function(_){var L="run"===(_=null==_?{}:_).gait,W=_.n||4,X=_.pace||(L?.3:.5),J=O[_.surface]||O.wood;return G(W*X+.35,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A,k,F,I,P,z,B,O,C,j,q,T,E,D,U,G,H=[],V=N(_.seed||73),S=Q(Y(e,V),"lp",260),R=0,$=W;R<$;++R){for(a=[],o=.02+(r=R)*X+(V()-.5)*(L?.01:.02),u=(L?1.15:.85)+.3*V(),i=r%2?.12:-.12,l=Math.cos((1+i)*Math.PI/4),s=Math.sin((1+i)*Math.PI/4),h=L?.025+.015*V():.09+.04*V(),f=0,p=(c=L?[[0,.8*u],[h,u]]:[[0,u],[h,.55*u]]).length;f<p;++f){for(m=(d=c[f])[0],M=d[1],v=Math.round((o+m)*K),g=Math.min(Math.round(7200),e-v),y=new Float32Array(g),w=0;w<g;++w)y[b=w]=2.5*S[v+b]*J.thud*Z(x=b/K,.003,.025)+.5*J.thud*Math.sin(2*Math.PI*(75+20*M)*x)*Z(x,.002,.03);for(w=0,A=(d=J.tones||[]).length;w<A;++w)k=d[w],nn(y,0,k*(.95+.1*V()),.12,.035);for(w=0,A=(d=J.click||[]).length;w<A;++w)for(I=(F=d[w])[0],P=F[1],z=F[2],B=F[3],O=Q(Y(g,V),"bp",I*(.85+.3*V()),P),C=0;C<g;++C)y[b=C]+=O[b]*B*Z(b/K,4e-4,z);for(w=0;w<g;++w)n[v+(b=w)]+=y[b]*M*l,t[v+b]+=y[b]*M*s}if(j=(J.scuff||.1)*(L?2.5:1),J.scuff||L)for(v=Math.round((o+(L?.03+h:.02))*K),q=Q(Y(Math.round((L?.07:.12)*K),V),"bp",2800,.8),f=0,T=Math.min(q.length,e-v);f<T;++f)b=f,E=Math.sin(Math.PI*b/q.length)*j*u*.3,n[v+b]+=q[b]*E*l,t[v+b]+=q[b]*E*s;if(J.grains)for(f=0,T=Math.round(J.grains*u);f<T;++f)m=V()<.6?.07*Math.pow(V(),1.5):h+.09*Math.pow(V(),1.5),D=(c=J.band)[0],U=c[1],G=(c=J.len)[0],a.push(tn(n,t,V,o+m,G+(c[1]-G)*V(),D*Math.pow(U/D,V()),J.q,.8*(.15+V()*V())*u,i+.3*V()-.15));H.push(a)}})},b.bell=function(h){var f,c;return null==h&&(h={}),f=A.freq(h.note||"C5"),c=h.dur||5,G(c,function(n,t,e){for(var r,a,o,u,i=new Float32Array(e),l=0,s=(r=[[.5,.5,1],[1,1,.7],[1.2,.55,.5],[1.5,.35,.4],[2,.6,.35],[2.51,.25,.25],[2.66,.2,.22],[3.01,.18,.18],[4.17,.1,.12],[5.43,.06,.08]]).length;l<s;++l)a=(u=r[l])[0],nn(i,0,f*a,o=u[1],(u=u[2])*c*.45,.002),nn(i,0,f*a*1.0015,.5*o,u*c*.45,.002);x(n,t,C(i,.1),h.pan)})},b.bell.reverb=.2,j=function(n,t){for(var e,r,a,o,u,i,l,s,h=new Float32Array(n),f=e=r=a=o=u=i=0,c=0;c<n;++c)l=c,s=2*t()-1,h[l]=.11*((f=.99886*f+.0555179*s)+(e=.99332*e+.0750759*s)+(r=.969*r+.153852*s)+(a=.8665*a+.3104856*s)+(o=.55*o+.5329522*s)+(u=-.7616*u-.016898*s)+i+.5362*s),i=.115926*s;return h},b.thunder=function(F){var I=(F=null==F?{}:F).dur||6,P=null!=F.dist?F.dist:.5,C=1-P;return G(I,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y=[],w=N(F.seed||79),b=.02+.4*P,x=[[b,1]].concat((()=>{for(var n=[],t=0,e=Math.round(2+5*C);t<e;++t)n.push([b+.7*Math.pow(w(),1.5),.4+.6*w()]);return n})()),A=[],k=0;k<5;++k)A.push([b+.3+w()*I*.5,.3+.7*w()]);for(r=A,a=new Float32Array(e),o=new Float32Array(e),k=0;k<e;++k){for(i=(u=k)/K,l=0,s=x.length;l<s;++l)f=(h=x[l])[0],c=h[1],f<i&&(a[u]+=c*Z(i-f,.004,.1+.25*P));for(l=0,s=r.length;l<s;++l)f=(h=r[l])[0],c=h[1],f<i&&(o[u]+=c*Z(i-f,.15+.4*P,.7+P));p=Math.min(1,(I-i)/.6),a[u]*=p,o[u]*=p}for(d=400+11e3*C*C,k=0,s=(h=[n,t]).length;k<s;++k)for(m=h[k],M=Q(Q(j(e,w),"lp",d),"hp",30),v=Q(Q(Y(e,w),"lp",140),"lp",140),l=0;l<e;++l)m[u=l]=M[u]*(a[u]*(.4+.6*C)+.8*o[u]*C)+v[u]*o[u]*(.6+.4*P)*3+v[u]*a[u]*2;for(k=0,g=Math.round(300*C*C);k<g;++k)f=b+1.2*Math.pow(w(),2),y.push(tn(n,t,w,f,3e-4+.002*w(),800+5e3*w(),1,(.1+w()*w())*C*.8,1.4*w()-.7))})},b.fingersnap=function(c){return null==c&&(c={}),G(.12,function(n,t,e){for(var r,a,o=N(c.seed||137),u=c.tone||3200,i=new Float32Array(e),l=Y(e,o),s=Q(Float32Array.from(l),"hp",5e3),h=Q(Float32Array.from(l),"bp",u,5),f=0;f<e;++f)i[r=f]=2.5*s[r]*Z(a=r/K,1e-4,.0015)+2.2*h[r]*Z(a,2e-4,.0025);nn(i,0,1.1*u,.12,.004),nn(i,5e-4,200+30*o(),.02,.008,.001),x(n,t,i,c.pan)})},U=function(n,t,e,r){for(var a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A=new Float32Array(n),k=0,F=0,I=[],P=0;P<n;P+=32)a=P,I.push(r(a/n));for(P=0;P<n;++P){if(u=I[(o=P)>>5],F=.999*F+.002*(t()-.5),k=(k+=(i=u.f0*(1+.006*Math.sin(2*Math.PI*5.2*o/K)+F))/K)-Math.floor(k),(l=0)<u.voice)for(s=Math.min(40,Math.floor(5e3/i)),h=1;h<=s;++h)f=h,l+=Math.sin(2*Math.PI*f*k)/f;c=(2*t()-1)*u.asp*(0<u.voice?.6+.4*Math.sin(2*Math.PI*k):1),A[o]=(l*u.voice*.35+c)*u.amp}for(P=0;P<4;++P)for(p=P,h=d=m=0;h<n;h+=32)for(M=I[(a=h)>>5].F[p]*e,g=-(v=Math.exp(-Math.PI*(60+.06*M)/K))*v,c=1-(y=2*v*Math.cos(2*Math.PI*M/K))-g,w=a,b=Math.min(n,a+32);w<b;++w)x=c*A[o=w]+y*d+g*m,m=d,A[o]=d=x;return A},f=function(n,t,e){return n+(t-n)*e},l=function(n){return n*n*(3-2*n)},b.huh=function(a){var n=(a=null==a?{}:a).dur||.45,o=a.pitch||200,u=a.rise||1.9,i=a.size||1,l=.08/n;return G(n,function(n,t,e){var r=N(a.seed||151),e=U(e,r,i,function(n){var t=Math.max(0,Math.min(1,(n-l)/.08)),e=Math.max(0,(n-l)/(1-l)),n=Math.min(1,n/.06)*(.75<n?Math.max(0,1-(n-.75)/.25):1);return{f0:o*f(1,u,Math.pow(e,1.6)),voice:t,asp:.35*(1-t)+.06,amp:n,F:[f(700,850,t),1250,2700,3600]}});C(e,.03),x(n,t,e,a.pan)})},b.yay=function(a){var n=(a=null==a?{}:a).dur||.5,o=a.pitch||300,u=a.size||1;return G(n,function(n,t,e){var r=N(a.seed||157),e=U(e,r,u,function(n){var t=l(Math.min(1,n/.25)),e=Math.min(1,n/.04)*(.7<n?Math.max(0,1-(n-.7)/.3):1),n=n<.35?f(.88,1.12,l(n/.35)):f(1.12,.85,l((n-.35)/.65));return{f0:o*n,voice:1,asp:.05,amp:e,F:[f(320,660,t),f(2600,1850,t),f(3200,2650,t),3800]}});C(e,.03),x(n,t,e,a.pan)})},b.correct=function(c){var p="arp"===(c=null==c?{}:c).style,d=(c.notes||(p?["C6","E6","G6","C7"]:["B5","G5"])).map(A.freq),m=c.gap||(p?.07:.2);return G(d.length*m+1.1,function(n,t,e){for(var r,a,o,u,i,l,s=new Float32Array(e),h=0,f=(r=d).length;h<f;++h)o=r[a=h],u=a===d.length-1,nn(s,a*m,o,1,u=u?.45:p?.15:.25,.002),nn(s,a*m,2*o,.25,.4*u,.002),nn(s,a*m,3.01*o,.08,.25*u,.002);if(p)for(i=Q(Y(e,N(c.seed||163)),"hp",7e3),h=0;h<e;++h)s[l=h]+=.08*i[l]*Z(l/K-d.length*m*.6,.1,.25)*(l/K>d.length*m*.6-.1?1:0);x(n,t,C(s,.05),c.pan)})},b.correct.reverb=.15,b.wrong=function(f){var c,s;return"trombone"===(f=null==f?{}:f).style?(c=["D4","C#4","C4","B3"].map(A.freq),G(2.2,function(n,t,e){for(var r,a,o,u,i,l=new Float32Array(e),s=0,h=0;h<e;++h)a=(u=(r=h)/K)-.42*(u=Math.min(3,Math.floor(u/.42))),o=(s+=c[u]*(3===u?1+.025*Math.sin(2*Math.PI*5.5*Math.max(0,a-.15)):1)*(1-.03*Math.min(1,a/.3))/K)%1,u=u<3?Math.min(1,a/.04)*Math.max(0,1-Math.max(0,a-.3)/.08):Math.min(1,a/.04)*Math.max(0,1-a/.95),l[r]=(2*o-1)*u;for(Q(l,"lp",1400,.9),i=Q(Float32Array.from(l),"bp",1200,2),h=0;h<e;++h)l[r=h]+=.5*i[r];x(n,t,C(l,.05),f.pan)})):(s=f.pitch||140,G(.75,function(n,t,e){for(var r,a,o=new Float32Array(e),u=0,i=0,l=0;l<e;++l)a=(a=(r=l)/K)<.13?Math.min(1,a/.005)*Math.min(1,(.13-a)/.01):.19<a?Math.min(1,(a-.19)/.005)*Math.min(1,(.72-a)/.03):0,o[r]=.5*(((u+=s/K)%1<.5?1:-1)+((i+=1.012*s/K)%1<.5?1:-1))*Math.max(0,a);Q(o,"lp",2500),x(n,t,o,f.pan)}))},t=function(p,d){var m=A.freq(p.note||d.note),n=p.dur||d.dur,M=null!=p.hard?p.hard:.5,v=d.decay*Math.pow(A.freq(d.note)/m,.4);return G(n,function(n,t,e){for(var r,a,o,u,i,l,s,h=new Float32Array(e),f=0,c=(r=d.ratios).length;f<c;++f)o=r[a=f],nn(h,0,m*o,d.amps[a]*(a?.3+1.4*M:1),v/(1+a*d.damp),.0015);if(d.trem)for(u=null!=p.trem?p.trem:.35,f=0;f<e;++f)h[i=f]*=1-u*(.5+.5*Math.sin(2*Math.PI*5.5*i/K));for(f=0,s=(l=Q(Y(Math.round(384),N(p.seed||83)),"lp",2e3+6e3*M)).length;f<s;++f)h[i=f]+=.4*l[i]*M*(1-i/l.length);x(n,t,C(h),p.pan)})},b.marimba=function(n){return t(n=null==n?{}:n,{note:"C4",dur:1.5,ratios:[1,3.93,9.24],amps:[1,.3,.1],decay:.45,damp:2.5})},b.xylophone=function(n){return t(n=null==n?{}:n,{note:"C5",dur:.8,ratios:[1,3,6.1],amps:[1,.5,.2],decay:.2,damp:1.5})},b.vibraphone=function(n){return t(n=null==n?{}:n,{note:"F4",dur:3,ratios:[1,4,10],amps:[1,.25,.08],decay:1.4,damp:3,trem:!0})},b.glockenspiel=function(n){return t(n=null==n?{}:n,{note:"C6",dur:2,ratios:[1,2.76,5.4,8.93],amps:[1,.4,.2,.08],decay:.9,damp:1.2})},H={C:["C3","E3","G3","C4","E4"],D:["D3","A3","D4","F#4"],Dm:["D3","A3","D4","F4"],E:["E2","B2","E3","G#3","B3","E4"],Em:["E2","B2","E3","G3","B3","E4"],F:["F2","C3","F3","A3","C4","F4"],G:["G2","B2","D3","G3","B3","G4"],A:["A2","E3","A3","C#4","E4"],Am:["A2","E3","A3","C4","E4"]},S=function(n,t,e,r){for(var a,o,u,i,l,s,h,f,c,p,d,m=null!=e.bright?e.bright:.5,M=e.mute||0,v=.5+.45*m*(1-M),g=K/n-(1-v),y=Math.ceil(g)+3,w=Y(y,r),b=Math.max(1,Math.round(g*(e.pos||.2))),x=y-1;b<=x;--x)w[a=x]-=w[a-b];for(o=.15+.8*m*(1-.7*M),x=u=0;x<y;++x)u=o*w[a=x]+(1-o)*u,w[a]=u;for(r=(e.sustain||4)*(1-.92*M),i=Math.pow(.001,1/(n*r)),l=new Float32Array(t+y),x=0;x<y;++x)l[a=x]=w[a];for(s=new Float32Array(t),h=t+(x=y);x<h;++x)c=(f=x)-g,p=l[d=Math.floor(c)]*(1-(c=c-d))+l[d+1]*c,d=l[d-1]*(1-c)+l[d]*c,l[f]=i*(v*p+(1-v)*d),s[f-y]=l[f];return s},b.guitar=function(w){var n,b,x=(w=null==w?{}:w).notes||H[w.chord]||[w.note||"E3"];return"up"===w.dir&&(x=x.slice().reverse()),n=w.dur||3,b=null!=w.strum?w.strum:.03,G(n,function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M=[],v=N(w.seed||89),g=0,y=(r=x).length;g<y;++g){for(p=r[a=g],o=[],u=Math.round(a*b*K),i=S(A.freq(p),e-u,w,v),l=Q(Float32Array.from(i),"bp",105,1.5),s=Q(Float32Array.from(i),"bp",220,2),h=0,f=i.length;h<f;++h)i[c=h]=i[c]+.6*l[c]+.3*s[c];for(C(i,.05),p=(w.pan||0)+.3*(a/Math.max(1,x.length-1)-.5),d=Math.cos((p+1)*Math.PI/4),m=Math.sin((p+1)*Math.PI/4),h=0,f=i.length;h<f;++h)n[u+(c=h)]+=i[c]*d,o.push(t[u+c]+=i[c]*m);M.push(o)}})},b.kick=function(s){var h=(s=null==s?{}:s).tune||50,f=s.decay||.3,c=null!=s.punch?s.punch:.5;return G(2*f+.05,function(n,t,e){for(var r,a,o=new Float32Array(e),u=0,i=Q(Y(e,N(s.seed||97)),"lp",4e3),l=0;l<e;++l)a=(r=l)/K,u+=2*Math.PI*(h+2*h*Math.exp(-a/.03))/K,o[r]=Math.tanh((Math.sin(u)*Z(a,.001,f)+i[r]*c*.6*Z(a,2e-4,.003))*(1+2*c));x(n,t,C(o),s.pan)})},b.snare=function(i){var l=(i=null==i?{}:i).tune||180,s=i.decay||.15,h=null!=i.snappy?i.snappy:.6;return G(2*s+.05,function(n,t,e){var r,a,o,u=new Float32Array(e);for(nn(u,0,l,.8,.05),nn(u,0,1.83*l,.4,.035),r=Q(Q(Y(e,N(i.seed||101)),"hp",1200),"lp",9e3),a=0;a<e;++a)u[o=a]+=r[o]*h*1.2*Z(o/K,.001,.8*s);x(n,t,C(u),i.pan)})},$=function(n,t){var e,r,a,o,u,i,l;for(null==t&&(t=1),e=new Float32Array(n),r=0,o=(a=[205.3,304.4,369.6,522.7,540,800]).length;r<o;++r)for(u=a[r]*t/K,l=i=0;l<n;++l)e[l]+=(i+=u)%1<.5?1:-1;return e},b.hihat=function(l){var s,n=(l=null==l?{}:l).open||0;return G(2.5*(s=.04+.5*n)+.02,function(n,t,e){for(var r,a=$(e,l.tune||1),o=Y(e,N(l.seed||103)),u=new Float32Array(e),i=0;i<e;++i)u[r=i]=.15*a[r]+.5*o[r];for(Q(Q(u,"hp",7e3),"bp",1e4,.8),i=0;i<e;++i)u[r=i]*=Z(r/K,8e-4,s);x(n,t,C(u),l.pan)})},b.tom=function(s){var h,f;return null==s&&(s={}),h=A.freq(s.note||"A2"),f=s.decay||.35,G(2*f+.05,function(n,t,e){for(var r,a,o=new Float32Array(e),u=0,i=Q(Y(e,N(s.seed||107)),"bp",4*h,1),l=0;l<e;++l)a=(r=l)/K,u+=2*Math.PI*h*(1+.5*Math.exp(-a/.04))/K,o[r]=Math.sin(u)*Z(a,.002,f)+.3*i[r]*Z(a,.001,.02);x(n,t,C(o),s.pan)})},b.clap=function(p){var d=(p=null==p?{}:p).decay||.12;return G(2.5*d+.06,function(n,t,e){for(var r,a,o,u,i,l,s,h=Q(Y(e,N(p.seed||109)),"bp",1100,1.2),f=new Float32Array(e),c=0;c<e;++c){for(a=(r=c)/K,l=(i=[u=o=0,.011,.022]).length;u<l;++u)(s=i[u])<=a&&(o+=Z(a-s,5e-4,.006));.031<=a&&(o+=Z(a-.031,.001,d)),f[r]=h[r]*o}n.set(f),t.set(Q(Float32Array.from(f),"bp",1300,1.5))})},y=function(n,t,e,r,a,o){var u,i,l,s,h,f,c,p,d,m,M;if(null==o&&(o=5e-4),!(21600<=e)){for(u=Math.round(t*K),i=Math.exp(-1/(a*K)),t=2*Math.PI*e/K,l=Math.cos(t),s=Math.sin(t),h=1,f=0,c=r,p=Math.max(1,Math.round(o*K)),d=u,m=n.length;d<m&&(n[M=d]+=f*c*((M=M-u)<p?M/p:1),M=h*l-f*s,f=h*s+f*l,h=M,!((c*=i)<1e-5));++d);return[]}},w=function(n){return Math.sqrt(-2*Math.log(n()+1e-12))*Math.cos(2*Math.PI*n())},b.crash=function(m){var M=(m=null==m?{}:m).decay||1,v=m.tune||1;return G(2.4*M+.1,function(n,t,e){for(var r,a,o,u,i,l,s,h,f=[],c=N(m.seed||113),p=0,d=(r=[n,t]).length;p<d;++p){for(a=r[p],o=0;o<260;++o)u=Math.max(1200,Math.min(14e3,4200*Math.pow(2,.55*w(c))))*v,y(a,0,u,(.4+c())/16,.3*M*Math.pow(u/4200/v,-.8)*(.6+.8*c()),.002+.07*c()*Math.min(1,u/4200/v));for(o=0;o<30;++o)y(a,0,350*v*Math.pow(3,c()),(.3+c())/14,.5*M*(.6+.8*c()),.003);for(i=Q(Y(e,c),"lp",9e3),l=Q(Y(e,c),"bp",4200*v,.8),o=0;o<e;++o)a[s=o]+=.4*i[s]*Z(h=s/K,5e-4,.008)+.1*l[s]*Z(h,.03,.3*M);Q(a,"hp",250),f.push(C(a,.1))}})},b.ride=function(m){var M=(m=null==m?{}:m).decay||1,v=m.tune||1,g=m.bell||0;return G(4*M+.1,function(n,t,e){for(var r,a,o,u,i,l,s,h=[],f=N(m.seed||127),c=Q(Y(e,f),"bp",4800*v,.7),p=0,d=(r=[n,t]).length;p<d;++p){for(a=r[p],o=0,u=Math.round(2400);o<u;++o)a[i=o]+=.9*c[i]*Z(i/K,3e-4,.006);for(o=0;o<40;++o)y(a,0,(5e3+4e3*f())*v,.04,.015+.03*f());for(o=0;o<180;++o)l=Math.max(700,Math.min(1e4,2600*Math.pow(2,.55*w(f))))*v,y(a,0,l,(.4+f())/80,.9*M*Math.pow(l/2600/v,-.3)*(.6+.8*f()),.001);for(s=Q(Y(e,f),"bp",3e3*v,.7),o=0;o<e;++o)a[i=o]+=.05*s[i]*Z(i/K,.002,.35*M);if(g)for(o=0;o<14;++o)l=2800*v*Math.pow(2,.4*w(f)),y(a,0,l,g*(.5+f())/6,.5*M*(.6+.8*f()),.001);Q(a,"hp",400),h.push(C(a,.1))}})},_={kick:["kick",{},1],snare:["snare",{},.9],hihat:["hihat",{},.45],ohat:["hihat",{open:.6},.45],tom:["tom",{},.8],ltom:["tom",{note:"E2"},.8],htom:["tom",{note:"D3"},.8],clap:["clap",{},.8],crash:["crash",{},.55],ride:["ride",{},.4]},L={X:1,x:.75,o:.4},b.beat=function(n){var M,t,e,r,a,o,u,v,g=60/((n=null==n?{}:n).bpm||100)/4,i=n.bars||1,y=n.swing||0,l=n.pattern||{kick:"x...x...x...x...",snare:"....x.......x...",hihat:"x.x.x.x.x.x.x.x."},w=[],s=M=0;for(t in l)u=l[t],e=(u=Array.isArray(u)?u:[u])[0],r=u[1]||{},o=(u=_[t]||[t,{},.8])[0],a=u[2],b[o]&&(o=b[o](I(I({},u[1]),r)),s=Math.max(s,o.duration),u=(e||"").replace(/[\s|]/g,""),M=Math.max(M,u.length),w.push({b:o,s:u,g:null!=r.gain?r.gain:a}));return v=M*i,G(Math.max(.1,v*g+s),function(n,t,e){for(var r,a,o,u,i,l,s,h,f,c,p=[],d=0,m=(r=w).length;d<m;++d){for(o=(a=r[d]).b,u=a.s,i=a.g,l=[],s=0,h=v;s<h;++s)(c=L[u[(f=s)%M]])&&l.push(F(n,t,o,f*g+(f%2?y*g*.5:0),c*i));p.push(l)}})},b.sweep=function(h){var f=(h=null==h?{}:h).dur||1,t=A.freq(h.from||200),e=A.freq(h.to||2e3),c=null!=h.attack?h.attack:.01,p=null!=h.release?h.release:.1,d="lin"===h.curve?function(n){return t+(e-t)*n}:function(n){return t*Math.pow(e/t,n)};return G(f,function(n,t,r){for(var a,o,u,i,e,l="noise"===h.wave?M(Y(r,N(h.seed||131)),"bp",d,h.q||2):(a=new Float32Array(r),o=0,(()=>{for(var n=[],t=0,e=r;t<e;++t)o+=d((u=t)/r)/K,i=o%1,n.push(a[u]=(()=>{switch(h.wave){case"square":return i<.5?.6:-.6;case"saw":return.6*(2*i-1);case"triangle":return 1-4*Math.abs(i-.5);default:return Math.sin(2*Math.PI*i)}})())})(),a),s=0;s<r;++s)e=(u=s)/K,l[u]*=Math.min(1,e/Math.max(.001,c),(f-e)/Math.max(.001,p));x(n,t,l,h.pan)})},p=function(n){for(var t,e,r,a,o,u,i,l,s=1,h=[],f=0,c=(t=(n=null==n?"":n).split(/\s+/)).length;f<c;++f)if((r=t[f])&&"|"!==r){if(!(e=/^([^\/]+?)(?:\/(\d+))?(\.*)$/.exec(r)))throw new Error("看不懂的樂譜: "+r);for(r=(s=e[2]?4/+e[2]:s)*(1===e[3].length?1.5:2<=e[3].length?1.75:1),u=0,i=(a="-"===(o=e[1])||"r"===o||"R"===o?[]:e[1].split("+")).length;u<i;++u)if(l=a[u],!/^[A-G](#|b)?-?\d$/.test(l))throw new Error("看不懂的音名: "+l);h.push({notes:a,beats:r})}return h},A.score=function(n,t){for(var e,r,a,o,u,i,l,s=60/((t=null==t?{}:t).bpm||100),h=[],f=e=0,c=(r=p(n)).length;f<c;++f){for(o=0,i=(u=(a=r[f]).notes).length;o<i;++o)l=u[o],h.push([+(e*s).toFixed(4),l,+(a.beats*s*.92).toFixed(4)]);e+=a.beats}return h},A.score.parse=p,A.score.duration=function(n,t){return null==t&&(t={}),60*p(n).reduce(function(n,t){return n+t.beats},0)/(t.bpm||100)},b.score=function(n){var h,t,e,r,f,c,p;return t=(n=null==n?{}:n).score||"C4/4 C4 G4 G4 | A4 A4 G4/2 | F4/4 F4 E4 E4 | D4 D4 C4/2",h=A.score(t,{bpm:n.bpm}),t=A.score.duration(t,{bpm:n.bpm}),e=n.instrument||"pluck",r=null!=n.release?n.release:.1,"string"==typeof e&&A.params[e]&&A.params[e].some(function(n){return"note"===n.k})?b.melody({notes:h,instrument:e,release:r,dur:t+r+1}):(f=d(e)?e:b[e]?b[e]({}):b.pluck({}),c=A.freq(n.base||"C4"),p={},G(t+2*f.duration+.1,function(n,t,e){for(var r,a,o,u,i=[],l=0,s=(r=h).length;l<s;++l)a=(o=r[l])[0],u=A.freq(o=o[1])/c,null==p[o]&&(p[o]=W(f,u,1)),i.push(F(n,t,p[o],a,.8))}))},W=function(n,t,e){for(var r,a,o,u,i,l,s,h=[n.getChannelData(0),n.getChannelData(1)],n=n.length,f=Math.max(1,Math.round(n/t)),c=new AudioBuffer({length:f,sampleRate:K,numberOfChannels:2}),p=0;p<2;++p){for(r=p,a=new Float32Array(f),o=h[r],u=0;u<f;++u)i=(s=u)*t,l=Math.floor(i),a[s]=((o[l]||0)*(1-(s=i-l))+(o[l+1]||0)*s)*e;c.copyToChannel(a,r)}return c},X=function(a){return function(n){var t,e,r=(n=null==n?{}:n).vary?(r=N(7919*(n.seed||1)+13),t=o(n.vary,r(),r()),r=a(((e=I({},n)).seed=1009*(n.seed||1)+1+Math.floor(1e5*r()),e)),W(r,t.rate,t.gain)):a(n);return 0<(e=null!=n.reverb?n.reverb:a.reverb||0)?D(r,e,null!=n.room?n.room:.5):r}},b)b[e]=X(b[e]);for(en in A.variants=function(n,t,e){var r,a,o,u=[];for(null==t&&(t={}),null==e&&(e=4),r=0;r<e;++r)a=r,u.push(b[n](((o=I({vary:.5},t)).seed=(t.seed||0)+a+1,o)));return u},J={click:{freq:[500,5e3,10,2e3],seed:[1,99,1,7],pan:[-1,1,.05,0]},tick:{note:{note:null,hint:"1800 Hz"},pan:[-1,1,.05,0]},pop:{from:[100,2e3,10,380],to:[100,3e3,10,900],pan:[-1,1,.05,0]},toggle:{pan:[-1,1,.05,0]},type:{seed:[1,99,1,11]},thump:{seed:[1,99,1,5],pan:[-1,1,.05,0]},snap:{seed:[1,99,1,41],pan:[-1,1,.05,0]},chime:{note:{note:"E6"},dur:[.3,4,.1,1.4],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},success:{pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},notify:{pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},error:{from:{note:"B3"},to:{note:"F3"},pan:[-1,1,.05,0]},correct:{style:{options:["pingpong","arp"],def:"pingpong"},notes:{json:null},gap:[.03,.4,.01,.2],pan:[-1,1,.05,0],reverb:[0,1,.05,.15],room:[0,1,.05,.5]},wrong:{style:{options:["buzzer","trombone"],def:"buzzer"},pitch:[60,400,1,140],pan:[-1,1,.05,0]},reveal:{notes:{json:["C6","E6","G6","C7","E7"]},gap:[.02,.2,.01,.06],seed:[1,99,1,53],pan:[-1,1,.05,0],reverb:[0,1,.05,.35],room:[0,1,.05,.5]},whoosh:{dur:[.1,2,.05,.7],from:[50,5e3,10,400],peak:[50,6e3,10,2600],to:[50,5e3,10,600],at:[.05,.95,.01,.45],q:[.3,6,.1,1.2],seed:[1,99,1,3]},swell:{dur:[.5,6,.1,2],seed:[1,99,1,23]},slide:{dur:[.1,1,.05,.3],from:[100,6e3,10,900],to:[100,6e3,10,2600],q:[.3,4,.1,.9],dir:[-1,1,.1,1],seed:[1,99,1,37]},rise:{from:{note:null,hint:"300 Hz"},to:{note:null,hint:"900 Hz"},dur:[.1,3,.05,.6],pan:[-1,1,.05,0]},fall:{from:{note:null,hint:"900 Hz"},to:{note:null,hint:"250 Hz"},dur:[.1,3,.05,.6],pan:[-1,1,.05,0]},count:{n:[2,40,1,12],dur:[.2,4,.1,1.2],ease:{options:["out","in","linear"],def:"out"},climb:[0,24,1,7],note:{note:"C6"},pan:[-1,1,.05,0]},draw:{dur:[.2,4,.1,1],rough:[0,1,.05,.5],pitch:[500,8e3,50,2500],seed:[1,99,1,43],pan:[-1,1,.05,0]},glitch:{dur:[.1,2,.05,.5],seed:[1,99,1,47]},sweep:{wave:{options:["sine","triangle","square","saw","noise"],def:"sine"},curve:{options:["exp","lin"],def:"exp"},from:{note:null,hint:"200 Hz"},to:{note:null,hint:"2000 Hz"},dur:[.1,4,.05,1],q:[.3,10,.1,2],attack:[0,1,.01,.01],release:[0,2,.01,.1],pan:[-1,1,.05,0]},tension:{note:{note:"A2"},dur:[1,12,.5,6]},heartbeat:{bpm:[40,180,1,70],dur:[1,10,.5,4],pan:[-1,1,.05,0]},clock:{bpm:[30,240,1,60],dur:[1,10,.5,4],seed:[1,99,1,59],pan:[-1,1,.05,0]},fingersnap:{tone:[2e3,5e3,10,3200],seed:[1,99,1,137],pan:[-1,1,.05,0]},huh:{pitch:[80,400,1,200],rise:[1,3,.05,1.9],dur:[.2,1,.01,.45],size:[.8,1.3,.01,1],seed:[1,99,1,151]},yay:{pitch:[100,500,1,300],dur:[.2,1.2,.01,.5],size:[.8,1.3,.01,1],seed:[1,99,1,157]},paper:{dur:[.4,2.5,.05,1.2],crisp:[0,3,.1,1],flutter:[0,1,.05,.6],seed:[1,99,1,61]},water:{n:[1,300,1,1],size:[.5,10,.1,3],rise:[0,1,.05,.05],dur:[.2,10,.1,.4],seed:[1,99,1,67]},fire:{dur:[1,10,.5,6],density:[0,4,.1,1],seed:[1,99,1,71]},steps:{surface:{options:["wood","concrete","gravel","snow","grass"],def:"wood"},gait:{options:["walk","run"],def:"walk"},n:[1,12,1,4],pace:[.2,1.2,.05,.5],seed:[1,99,1,73]},bell:{note:{note:"C5"},dur:[1,10,.5,5],pan:[-1,1,.05,0],reverb:[0,1,.05,.2],room:[0,1,.05,.5]},thunder:{dur:[2,12,.5,6],dist:[0,1,.05,.5],seed:[1,99,1,79]},wind:{dur:[1,10,.5,6],cutoff:[200,3e3,10,900],seed:[1,99,1,17]},rain:{dur:[1,10,.5,6],density:[.002,.2,.002,.02],seed:[1,99,1,19]},buzz:{dur:[.2,4,.1,1.5],freq:[80,600,1,220],pan:[-1,1,.05,0]},pluck:{note:{note:"A3"},dur:[.3,5,.1,2.5],bright:[0,1,.05,.6],slide:[0,3,.1,.6],seed:[1,99,1,13],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},guitar:{note:{note:"E3"},chord:{options:["","C","D","Dm","E","Em","F","G","A","Am"],def:""},notes:{json:null},dir:{options:["down","up"],def:"down"},strum:[0,.1,.005,.03],dur:[.5,6,.1,3],bright:[0,1,.05,.5],pos:[.05,.5,.01,.2],mute:[0,1,.05,0],seed:[1,99,1,89],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},marimba:{note:{note:"C4"},dur:[.3,4,.1,1.5],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},xylophone:{note:{note:"C5"},dur:[.2,3,.1,.8],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},vibraphone:{note:{note:"F4"},dur:[.5,6,.1,3],trem:[0,1,.05,.35],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},glockenspiel:{note:{note:"C6"},dur:[.3,4,.1,2],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},score:{score:{text:"C4/4 C4 G4 G4 | A4 A4 G4/2 | F4/4 F4 E4 E4 | D4 D4 C4/2"},instrument:{options:["pluck","marimba","xylophone","vibraphone","glockenspiel","guitar","chime","bell","pop","tick","kick","tom","water"],def:"pluck"},bpm:[40,240,1,100],base:{note:"C4"},release:[.02,2,.01,.1]},melody:{notes:{json:[[0,"A3"],[.4,"C4"],[.8,"E4"],[1.2,"A4",2]]},instrument:{options:["pluck","marimba","xylophone","vibraphone","glockenspiel","guitar","chime","bell"],def:"pluck"},release:[.02,2,.01,.8],bright:[0,1,.05,.6],slide:[0,3,.1,.6],reverb:[0,1,.05,0],room:[0,1,.05,.5]},drone:{notes:{json:["A1","E2","A2"]},dur:[1,12,.5,8],attack:[.1,4,.1,1.5],release:[.1,4,.1,2]},kick:{tune:[30,120,1,50],decay:[.05,1,.01,.3],punch:[0,1,.05,.5],pan:[-1,1,.05,0]},snare:{tune:[100,400,1,180],decay:[.05,.5,.01,.15],snappy:[0,1,.05,.6],seed:[1,99,1,101],pan:[-1,1,.05,0]},hihat:{open:[0,1,.05,0],tune:[.5,2,.05,1],seed:[1,99,1,103],pan:[-1,1,.05,0]},tom:{note:{note:"A2"},decay:[.1,1,.01,.35],seed:[1,99,1,107],pan:[-1,1,.05,0]},clap:{decay:[.03,.5,.01,.12],seed:[1,99,1,109]},crash:{decay:[.3,3,.05,1],tune:[.5,2,.05,1],seed:[1,99,1,113]},ride:{decay:[.3,3,.05,1],bell:[0,1,.05,0],tune:[.5,2,.05,1],seed:[1,99,1,127]},beat:{pattern:{json:{kick:"x.......x.x.....",snare:"....x.......x...",hihat:"x.x.x.x.x.x.x.x."}},bpm:[50,200,1,100],bars:[1,8,1,1],swing:[0,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]}},A.params={},J)rn=J[en],A.params[en]=(()=>{var n,t=[];for(e in n=rn)a=n[e],Array.isArray(a)?t.push({k:e,type:"range",min:a[0],max:a[1],step:a[2],def:a[3]}):a.options?t.push({k:e,type:"select",options:a.options,def:a.def}):"note"in a?t.push({k:e,type:"note",def:a.note,hint:a.hint}):"text"in a?t.push({k:e,type:"text",def:a.text}):t.push({k:e,type:"json",def:a.json});return t})();an={C:0,D:2,E:4,F:5,G:7,A:9,B:11},on=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=function(n,t){var e;return"number"==typeof n?Math.round(n*Math.pow(2,t/12)):(e=/^([A-G])(#|b)?(-?\d)$/.exec(n))?(e=12*(+e[3]+1)+an[e[1]]+("#"===e[2]?1:"b"===e[2]?-1:0)+t,on[(e%12+12)%12]+(Math.floor(e/12)-1)):n},A.mutate=function(n,t,e){var r,a,o,u,i,l,s,h,f,c;for(null==t&&(t={}),r=null!=(e=null==e?{}:e).amount?e.amount:.5,a=null!=e.seed?N(e.seed):Math.random,o=I({},t),u=0,l=(i=A.params[n]||[]).length;u<l;++u)if("seed"!==(h=(s=i[u]).k)&&"pan"!==h&&"reverb"!==h&&"room"!==h&&"vary"!==h)switch(f=null!=t[s.k]?t[s.k]:s.def,s.type){case"range":c=f+w(a)*r*(s.max-s.min)*.15,(c=+(Math.round(Math.max(s.min,Math.min(s.max,c))/s.step)*s.step).toFixed(4))===s.def?delete o[s.k]:o[s.k]=c;break;case"select":a()<2*r&&(o[s.k]=s.options[Math.floor(a()*s.options.length)]),o[s.k]===s.def&&delete o[s.k];break;case"note":c=Math.round(w(a)*r*2),null!=f&&c&&(o[s.k]=un(f,c))}return o.seed=1+Math.floor(99*a()),0<r&&(o.vary=+(.5*r).toFixed(2)),o},"undefined"!=typeof module&&module.exports&&(module.exports=A),void 0!==window&&(window.sfx=A)}function I(n,t){var e,r={}.hasOwnProperty;for(e in t)r.call(t,e)&&(n[e]=t[e]);return n}}.call(this);
1
+ !function(){var K,A,i,f,s,c,d,g,p,o,r,u,P,n,T,N,G,k,Q,m,Y,Z,x,b,F,nn,C,q,E,R,V,D,z,en,B,M,O,j,U,h,l,e,H,S,L,y,w,$,_,v,W,X,t,J,tn,rn,a,an,on,un;if("undefined"==typeof window||!window.sfx){for(t in i=null,A={buffers:{},urls:{},items:[],voices:[],errors:[],external:!(K=48e3),playing:!1,rate:1,ctx:function(){var n,e,t,r,a;if(!i)for(n=window.AudioContext||window.webkitAudioContext,i=new n,A.master=i.createGain(),A.master.connect(i.destination),A.buses={},e=0,r=(t=["music","sfx","voice"]).length;e<r;++e)A.buses[a=t[e]]=i.createGain(),A.buses[a].connect(A.master);return i}},f=function(n){return A.ctx(),A.buses[n]||A.buses.sfx},A.resume=function(){var n=A.ctx();return"suspended"===n.state?n.resume():Promise.resolve()},A.volume=function(n,e,t){var r;if(null==t&&(t=.2),A.ctx(),n="master"===n?A.master:A.buses[n])return r=i.currentTime,n.gain.cancelScheduledValues(r),n.gain.setValueAtTime(n.gain.value,r),n.gain.linearRampToValueAtTime(e,r+Math.max(.01,t))},s=function(n){return!(!n||"object"!=typeof n||"function"!=typeof n.getChannelData||!n.sampleRate)},A.pending=0,A.load=function(r){return null==r&&(r={}),A.pending+=Object.keys(r).length,Promise.all(Object.keys(r).map(function(e){var t=r[e],n=s(t)?Promise.resolve(t):t&&t.then?t:fetch(t).then(function(n){if(n.ok)return n.arrayBuffer();throw new Error(t+": HTTP "+n.status)}).then(function(t){return new Promise(function(n,e){return A.ctx().decodeAudioData(t,n,e)})});return"string"==typeof t&&(A.urls[e]=t),n.then(function(n){return A.buffers[e]=n}).catch(function(n){return A.errors.push("load "+e+": "+(n.message||n))}).finally(function(){return A.pending--})})).then(function(){return A.buffers})},c=new WeakMap,A.peak=function(n){var e,t,r,a,o,u,i,l,s,h,f;if(!c.has(n)){for(e=n.getChannelData(0),t=Math.max(1,Math.round(.003*n.sampleRate)),o=a=0,u=(r=new Float32Array(Math.ceil(e.length/t))).length;o<u;++o){for(l=0,s=(i=o)*t,h=Math.min(e.length,(i+1)*t);s<h;++s)l+=e[f=s]*e[f];r[i]=Math.sqrt(l/t),r[i]>a&&(a=r[i])}for(i=0;i<r.length-1&&r[i]<.8*a;)i++;for(;i<r.length-1&&r[i+1]>r[i];)i++;c.set(n,i*t/n.sampleRate)}return c.get(n)},d=function(n,e){var t,r,a,o,u,i,l;return null==e&&(e={}),(r=s(n)?n:A.buffers[n])?((t=(a=A.ctx()).createBufferSource()).buffer=r,t.loop=!!e.loop,t.playbackRate.value=e.rate||1,r=a.createGain(),t.connect(r),r.connect(f(e.bus||"sfx")),a=e.when||a.currentTime,o=null!=e.gain?e.gain:1,e.fadeIn?(r.gain.setValueAtTime(0,a),r.gain.linearRampToValueAtTime(o,a+e.fadeIn)):r.gain.setValueAtTime(o,a),u=e.offset||0,null!=e.duration?(i=a+e.duration,e.fadeOut&&(r.gain.setValueAtTime(o,Math.max(a,i-e.fadeOut)),r.gain.linearRampToValueAtTime(0,i)),t.start(a,u,t.loop?void 0:e.duration*(e.rate||1)),t.loop&&t.stop(i)):t.start(a,u),l={name:n,src:t,gain:r,level:o,ended:!1},t.onended=function(){return l.ended=!0,A.voices=A.voices.filter(function(n){return n!==l})},A.voices.push(l),l):(A.errors.push("unknown sound: "+n),null)},g=function(n,t){var r,a,o,u,i,e,l,s,h;return null==t&&(t={}),r=A.ctx(),(a=new Audio).crossOrigin="anonymous",a.preload="auto",a.preservesPitch=!0,a.loop=!!t.loop,a.src=A.urls[n],a.playbackRate=t.rate||1,o=r.createGain(),r.createMediaElementSource(a).connect(o),o.connect(f(t.bus||"music")),e=t.when||r.currentTime,u=null!=t.gain?t.gain:1,t.fadeIn?(o.gain.setValueAtTime(0,e),o.gain.linearRampToValueAtTime(u,e+t.fadeIn)):o.gain.setValueAtTime(u,e),i={name:n,media:a,gain:o,level:u,ended:!1,timers:[]},l=function(){var n;if(!i.ended)return n=function(){return a.currentTime=t.offset||0,a.play().catch(function(){})},1<=a.readyState?n():a.addEventListener("loadedmetadata",n,{once:!0})},e=Math.max(0,e-r.currentTime),i.timers.push(setTimeout(l,1e3*e)),null!=t.duration&&(l=A.buffers[n],s=t.offset||0,h=!a.loop&&l&&s+t.duration*a.playbackRate>=l.duration-.02,a.addEventListener("playing",function(){var n,e;if(!i.ended)return n=Math.max(0,t.duration-(a.currentTime-s)/a.playbackRate),e=r.currentTime,t.fadeOut&&(o.gain.setValueAtTime(u,Math.max(e,e+n-t.fadeOut)),o.gain.linearRampToValueAtTime(0,e+n)),h?void 0:i.timers.push(setTimeout(function(){return p(i,.02)},1e3*n))},{once:!0})),a.onended=function(){return i.ended=!0,A.voices=A.voices.filter(function(n){return n!==i})},A.voices.push(i),i},p=function(e,n){var t,r,a,o,u;if(null==n&&(n=.05),e&&!e.ended)if(t=i.currentTime,e.gain.gain.cancelScheduledValues(t),e.gain.gain.setValueAtTime(e.gain.gain.value,t),e.gain.gain.linearRampToValueAtTime(0,t+n),e.media){for(r=0,o=(a=e.timers).length;r<o;++r)u=a[r],clearTimeout(u);e.ended=!0,setTimeout(function(){return e.media.pause(),e.media.removeAttribute("src"),e.media.load()},1e3*(n+.02)),A.voices=A.voices.filter(function(n){return n!==e})}else try{return e.src.stop(t+n+.01)}catch(n){return n}},o=function(n,e,t){return{rate:Math.pow(2,(2*e-1)*n/12),gain:1-.3*n*t}},A.play=function(n,e){var t,r,a;return null==e&&(e={}),A.resume(),Array.isArray(n)&&(n=n[Math.floor(Math.random()*n.length)]),e.vary&&(t=o(e.vary,Math.random(),Math.random()),(r=I({},e)).rate=(e.rate||1)*t.rate,r.gain=(null!=e.gain?e.gain:1)*t.gain,e=r),(a=d(n,e))?(a.manual=!0,{stop:function(n){return p(a,n)},fade:function(n,e){var t;return null==e&&(e=.5),t=i.currentTime,a.gain.gain.cancelScheduledValues(t),a.gain.gain.setValueAtTime(a.gain.gain.value,t),a.gain.gain.linearRampToValueAtTime(n,t+e)},voice:a}):null},A.stop=function(n,e){var t,r,a,o,u=[];for(null==e&&(e={}),t=0,a=(r=A.voices).length;t<a;++t)!(o=r[t]).manual||n&&o.name!==n||u.push(p(o,e.fade||.05));return u},r=null,A.music=function(n,e){var t=null!=(e=null==e?{}:e).fade?e.fade:1;return r&&r.stop(t),r=null,n?r=A.play(n,I({loop:!0,bus:"music",fadeIn:t},e)):null},A.timeline=function(n){return A.items=(n=null==n?[]:n).map(function(n,e){return n=I({},n),(Array.isArray(n.sound)||n.vary)&&((e=N((2654435761*(e+1)^40503*Math.round(1e3*(n.t||0)))>>>0))(),Array.isArray(n.sound)&&(n.sound=n.sound[Math.floor(e()*n.sound.length)]),n.vary)&&(e=o(n.vary,e(),e()),n.rate=(n.rate||1)*e.rate,n.gain=(null!=n.gain?n.gain:1)*e.gain),n}),A.playing&&A.transport({playing:!0,t:A.t||0,force:!0}),A},A.cues=function(n,e){return null==e&&(e={}),A.timeline((n=null==n?[]:n).map(function(n){return I({t:n.t,sound:n.sfx||n.sound,gain:n.gain},e)}))},u=function(){for(var n,e,t=[],r=0,a=(n=A.voices).length;r<a;++r)(e=n[r]).manual||t.push(p(e,.03));return t},P=function(n){for(var e,t,r,a,o,u,i,l,s=[],h=A.ctx().currentTime+.02,f=A.rate||1,c=0,p=(e=A.items).length;c<p;++c)t=e[c],(r=A.buffers[t.sound])&&(a=t.bus||"sfx",i="peak"===(t.align||("sfx"===a?"peak":"start"))?A.peak(r):0,(i=t.t-i)+(o=t.loop?(null!=t.until?t.until:1e9)-i:t.duration||r.duration/(t.rate||1))<=n||(u=Math.max(0,n-i),(l=I({},t)).bus=a,l.when=h+Math.max(0,i-n)/f,l.duration=(o-u)/f,l.rate=(t.rate||1)*f,(i=l).offset=(t.offset||0)+(t.loop?u%r.duration:u*(t.rate||1)),0<u&&t.fadeIn&&(i.fadeIn=0),1===f||"voice"!==a&&"music"!==a||!A.urls[t.sound]?s.push(d(r,i)):s.push(g(t.sound,i))));return s},A.transport=function(n){var n=null!=n?n:{},e=n.playing,t=null!=(t=n.t)?t:0,r=n.force,a=n.from,n=n.rate;return a&&"player"!==a&&(A.external=!0),null!=n&&0<+n&&+n!==A.rate&&(A.rate=+n,r=!0),a=A.playing,A.playing=!!e,A.t=t,A.tAt=i&&i.currentTime||0,e?(A.resume(),!a||r?(u(),P(t)):void 0):u()},n=function(n){var e,t,r;if(n&&n.player&&!n.player.__sound)return e=n.player.prototype,t=e.play,r=e.seek,e.play=function(n){return null==n&&(n=!0),n=t.apply(this,arguments),A.external||A.transport({playing:this.playing,t:this.t}),n},e.seek=function(n){var e=this.t,t=r.apply(this,arguments);return!A.external&&this.started&&(this.playing&&(this.t<e-.01||.3<this.t-e)&&A.transport({playing:!0,t:this.t,force:!0}),!this.playing)&&A.playing&&A.transport({playing:!1,t:this.t}),t},n.player.__sound=!0},window.lotion?n(window.lotion):document.addEventListener("DOMContentLoaded",function(){return n(window.lotion)}),A.render=function(n,e){for(var t,r,a,o,u,i,l,s,e=(e=null==e?{}:e).sampleRate||K,h=new OfflineAudioContext(2,Math.ceil(n*e),e),f=0,c=(t=A.items).length;f<c;++f)r=t[f],(s=A.buffers[r.sound])&&(a="peak"===(r.align||("sfx"===(r.bus||"sfx")?"peak":"start"))?A.peak(s):0,a=r.t-a,(o=h.createBufferSource()).buffer=s,o.loop=!!r.loop,o.playbackRate.value=r.rate||1,u=h.createGain(),i=null!=r.gain?r.gain:1,u.gain.value=i,o.connect(u),u.connect(h.destination),l=Math.max(0,a),r.fadeIn&&(u.gain.setValueAtTime(0,l),u.gain.linearRampToValueAtTime(i,l+r.fadeIn)),s=r.loop?(null!=r.until?r.until:n)-a:r.duration||s.duration/(r.rate||1),r.fadeOut&&(u.gain.setValueAtTime(i,Math.max(l,a+s-r.fadeOut)),u.gain.linearRampToValueAtTime(0,a+s)),o.start(l,(r.offset||0)+Math.max(0,-a)),o.stop(a+s));return h.startRendering()},A.wav=function(n){var e,t,r,a,o,u,i,l,s=n.numberOfChannels,h=n.length,f=new DataView(new ArrayBuffer(44+h*s*2)),c=function(n,e){for(var t,r=[],a=0,o=e.length;a<o;++a)t=a,r.push(f.setUint8(n+t,e.charCodeAt(t)));return r};for(c(0,"RIFF"),f.setUint32(4,36+h*s*2,!0),c(8,"WAVE"),c(12,"fmt "),f.setUint32(16,16,!0),f.setUint16(20,1,!0),f.setUint16(22,s,!0),f.setUint32(24,n.sampleRate,!0),f.setUint32(28,n.sampleRate*s*2,!0),f.setUint16(32,2*s,!0),f.setUint16(34,16,!0),c(36,"data"),f.setUint32(40,h*s*2,!0),t=[],r=0;r<s;++r)a=r,t.push(n.getChannelData(a));for(e=t,o=44,r=0;r<h;++r)for(u=r,i=0;i<s;++i)a=i,l=Math.max(-1,Math.min(1,e[a][u])),f.setInt16(o,l<0?32768*l:32767*l,!0),o+=2;return new Blob([f],{type:"audio/wav"})},A.report=function(){return{loaded:Object.keys(A.buffers).map(function(n){return{name:n,duration:+A.buffers[n].duration.toFixed(2),peak:+A.peak(A.buffers[n]).toFixed(3)}}),timeline:A.items.length,playing:A.playing,context:i?i.state:null,errors:A.errors.slice(-10)}},T={C:-9,D:-7,E:-5,F:-4,G:-2,A:0,B:2},A.freq=function(n){return"number"==typeof n?n:(n=/^([A-G])(#|b)?(-?\d)$/.exec(n))?(n=T[n[1]]+("#"===n[2]?1:"b"===n[2]?-1:0)+12*(+n[3]-4),440*Math.pow(2,n/12)):440},N=function(n){var e=(n=null==n?1:n)>>>0||1;return function(){return(e=1664525*e+1013904223>>>0)/4294967296}},G=function(n,e,t){var r,a,o,u,i,l,s;for(null==t&&(t={}),r=Math.max(1,Math.round(n*K)),e(a=new Float32Array(r),o=new Float32Array(r),r),i=u=0;i<r;++i)l=i,u=Math.max(u,Math.abs(a[l]),Math.abs(o[l]));for(s=0<u?(t.peak||.9)/u:1,n=new AudioBuffer({length:r,sampleRate:K,numberOfChannels:2}),i=0;i<r;++i)a[l=i]*=s,o[l]*=s;return n.copyToChannel(a,0),n.copyToChannel(o,1),n},k=function(n,e,t){var e=2*Math.PI*Math.min(e,23520)/K,r=Math.cos(e),a=Math.sin(e)/(2*t);switch(n){case"lp":return[(1-r)/2,1-r,(1-r)/2,1+a,-2*r,1-a];case"hp":return[(1+r)/2,-(1+r),(1+r)/2,1+a,-2*r,1-a];default:return[a,0,-a,1+a,-2*r,1-a]}},Q=function(n,e,t,r){for(var a,o,u,i,l,s,h,f=(e=k(e,t,r=null==r?.707:r))[0],c=e[1],p=e[2],d=e[3],m=e[4],M=e[5],v=a=o=u=i=0,g=n.length;v<g;++v)h=(f*(s=n[l=v])+c*a+p*o-m*u-M*i)/d,o=a,a=s,i=u,n[l]=u=h;return n},m=function(n,e,t,r){var a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x;for(null==r&&(r=.707),a=n.length,s=o=u=i=l=0;s<a;s+=32)for(c=(f=k(e,t((h=s)/a),r))[0],p=f[1],d=f[2],m=f[3],M=f[4],v=f[5],g=h,y=Math.min(a,h+32);g<y;++g)x=(c*(b=n[w=g])+p*o+d*u-M*i-v*l)/m,u=o,o=b,l=i,n[w]=i=x;return n},Y=function(n,e){for(var t=new Float32Array(n),r=0;r<n;++r)t[r]=2*e()-1;return t},Z=function(n,e,t){return n<e?n/e:Math.exp(-(n-e)/t)},x=function(n,e,t,r,a){var o,u,i,l,s,h=[];for(null==r&&(r=0),null==a&&(a=1),o=Math.cos((r+1)*Math.PI/4)*a,u=Math.sin((r+1)*Math.PI/4)*a,i=0,l=t.length;i<l;++i)n[s=i]+=t[s]*o,h.push(e[s]+=t[s]*u);return h},b=A.synth={click:function(l){return null==l&&(l={}),G(.05,function(n,e,t){for(var r,a=N(l.seed||7),o=Q(Y(t,a),"hp",2500),u=new Float32Array(t),i=0;i<t;++i)u[r=i]=o[r]*Z(r=r/K,5e-4,.004)+.5*Math.sin(2*Math.PI*(l.freq||2e3)*r)*Z(r,5e-4,.012);x(n,e,u,l.pan)})},tick:function(i){return null==i&&(i={}),G(.06,function(n,e,t){for(var r,a=A.freq(i.note||i.freq||1800),o=new Float32Array(t),u=0;u<t;++u)r=u/K,o[u]=Math.sin(2*Math.PI*a*r)*Z(r,.001,.018);x(n,e,o,i.pan)})},pop:function(f){return null==f&&(f={}),G(.15,function(n,e,t){for(var r,a,o,u=f.from||380,i=f.to||900,l=new Float32Array(t),s=0,h=0;h<t;++h)a=(r=h)/K,o=u+(i-u)*Math.min(1,a/.03),s+=2*Math.PI*o/K,l[r]=Math.sin(s)*Z(a,.002,.04);x(n,e,l,f.pan)})},toggle:function(u){return null==u&&(u={}),G(.12,function(n,e,t){for(var r,a=new Float32Array(t),o=0;o<t;++o)r=o/K,a[o]=Math.sin(2*Math.PI*1500*r)*Z(r,.001,.012)+(.05<r?Math.sin(2*Math.PI*2200*(r-.05))*Z(r-.05,.001,.015):0);x(n,e,a,u.pan)})},chime:function(u){var i,l;return null==u&&(u={}),i=A.freq(u.note||"E6"),l=u.dur||1.4,G(l,function(n,e,t){for(var r,a=new Float32Array(t),o=0;o<t;++o)r=o/K,a[o]=(Math.sin(2*Math.PI*i*r)+.5*Math.sin(2*Math.PI*i*2.01*r)*Math.exp(2*-r)+.25*Math.sin(2*Math.PI*i*3.02*r)*Math.exp(4*-r))*Z(r,.003,l/4);x(n,e,a,u.pan)})},success:function(c){return null==c&&(c={}),G(.9,function(n,e,t){for(var r,a,o,u,i,l,s=new Float32Array(t),h=0,f=(r=[[0,"C6"],[.09,"E6"],[.18,"G6"]]).length;h<f;++h)for(o=(a=r[h])[0],u=A.freq(a[1]),i=Math.round(o*K);i<t;++i)l=i/K-o,s[i]+=(Math.sin(2*Math.PI*u*l)+.4*Math.sin(2*Math.PI*u*2.01*l))*Z(l,.003,.25);x(n,e,s,c.pan)})},notify:function(c){return null==c&&(c={}),G(.7,function(n,e,t){for(var r,a,o,u,i,l,s=new Float32Array(t),h=0,f=(r=[[0,"A5"],[.12,"E6"]]).length;h<f;++h)for(o=(a=r[h])[0],u=A.freq(a[1]),i=Math.round(o*K);i<t;++i)l=i/K-o,s[i]+=Math.sin(2*Math.PI*u*l)*Z(l,.004,.18);x(n,e,s,c.pan)})},whoosh:function(s){var n=(s=null==s?{}:s).dur||.7,h=s.from||400,f=s.peak||2600,c=s.to||600,p=s.at||.45,d=s.q||1.2;return G(n,function(n,e,t){for(var r,a,o=[],u=N(s.seed||3),i=m(Y(t,u),"bp",function(n){return n<p?h+n/p*(f-h):f+(n-p)/(1-p)*(c-f)},d),l=0;l<t;++l)i[r=l]*=(a=r/t)<p?Math.sin(Math.PI/2*a/p):Math.cos(Math.PI/2*(a-p)/(1-p));for(l=0;l<t;++l)n[r=l]=i[r]*(1-r/t*.6),o.push(e[r]=i[r]*(.4+r/t*.6))})},type:function(n){return b.click({freq:1200+600*N((n=null==n?{}:n).seed||11)(),seed:n.seed})},thump:function(h){return null==h&&(h={}),G(.35,function(n,e,t){for(var r,a,o=N(h.seed||5),u=Q(Y(t,o),"bp",1800,.8),i=new Float32Array(t),l=0,s=0;s<t;++s)a=(r=s)/K,l+=2*Math.PI*(70+60*Math.exp(-a/.04))/K,i[r]=Math.sin(l)*Z(a,.002,.09)+.35*u[r]*Z(a,.001,.03);x(n,e,i,h.pan)})},pluck:function(g){var y,n,w,b;return null==g&&(g={}),y=A.freq(g.note||"A3"),n=g.dur||2.5,w=null!=g.bright?g.bright:.6,b=null!=g.slide?g.slide:.6,G(n,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c=N(g.seed||13),p=K/y,d=Math.ceil(2*p)+4,m=Y(d,c),M=0,v=Math.round(4*(1-w));M<v;++M)for(r=M,a=1;a<d;++a)m[o=a]=(m[o]+m[o-1])/2;for(u=new Float32Array(t),i=new Float32Array(t+d),M=0;M<d;++M)i[o=M]=m[o];for(l=Math.pow(.996,220/y),v=t+(M=d);M<v;++M)s=(r=M)-p*Math.pow(2,b*Math.exp(-(r-d)/K/.09)/12),h=i[f=Math.floor(s)]*(1-(s=s-f))+i[f+1]*s,f=i[f-1]*(1-s)+i[f]*s,i[r]=l*(h+f)/2,u[r-d]=i[r];for(M=0;M<t;++M)u[o=M]*=Math.min(1,(t-o)/(.3*K));x(n,e,u,g.pan)})},drone:function(n){var d=((n=null==n?{}:n).notes||["A1","E2","A2"]).map(A.freq),m=n.dur||8,M=n.attack||1.5,v=n.release||2;return G(m,function(n,e,t){for(var r,a,o,u,i,l,s,h,f=[],c=0,p=(r=d).length;c<p;++c){for(o=r[a=c],u=new Float32Array(t),i=0;i<t;++i)s=(l=i)/K,h=Math.min(1,s/M,(m-s)/v),u[l]=(Math.sin(2*Math.PI*o*s)+.3*Math.sin(2*Math.PI*o*1.003*2*s))*h;f.push(x(n,e,u,.4*(a-(d.length-1)/2),1/d.length))}})},wind:function(s){var h=(s=null==s?{}:s).dur||6;return G(h,function(n,e,t){for(var r,a,o=[],u=N(s.seed||17),i=Q(Q(Y(t,u),"hp",150),"lp",s.cutoff||900),l=0;l<t;++l)a=(r=l)/K,a=(.6+.4*Math.sin(2*Math.PI*.13*a)*Math.sin(2*Math.PI*.071*a+1))*Math.min(1,a,h-a),n[r]=i[r]*a,o.push(e[r]=i[(r+2400)%t]*a)})},rain:function(h){var n=(h=null==h?{}:h).dur||6,f=h.density||.02;return G(n,function(n,e,t){for(var r,a,o=[],u=N(h.seed||19),i=Q(Y(t,u),"bp",4e3,.5),l=new Float32Array(t),s=0;s<t;++s)r=s,u()<.05*f&&(l[r]=2*u()-1);for(l=Q(Q(l,"hp",2500),"lp",9e3),s=0;s<t;++s)r=s,a=Math.min(1,r/K,(t-r)/K),n[r]=(.15*i[r]+3*l[r])*a,o.push(e[r]=(.15*i[(r+1200)%t]+3*l[(r+777)%t])*a)})},buzz:function(h){var f=(h=null==h?{}:h).dur||1.5,c=A.freq(h.freq||220);return G(f,function(n,e,t){for(var r,a,o,u,i=new Float32Array(t),l=0,s=0;s<t;++s)a=(r=s)/K,u=2*((l+=(o=c*(1+.03*Math.sin(2*Math.PI*5.3*a)+.015*Math.sin(2*Math.PI*1.7*a)))/K)-Math.floor(l+.5)),i[r]=u*(.75+.25*Math.sin(2*Math.PI*o*.5*a))*Math.min(1,a/.08,(f-a)/.15);Q(i,"lp",2200),Q(i,"bp",3*c,.6),x(n,e,i,h.pan)})},swell:function(l){var n=(l=null==l?{}:l).dur||2;return G(n,function(n,e,t){for(var r,a=[],o=N(l.seed||23),u=m(Y(t,o),"bp",function(n){return 300+3e3*n*n},.9),i=0;i<t;++i)r=i,a.push(n[r]=e[r]=u[r]*(r=r/t)*r)})},melody:function(r){var h,n=(r=null==r?{}:r).notes||[],a=null!=r.release?r.release:.8,e=r.dur||Math.max.apply(Math,n.map(function(n){return n[0]+(n[2]||1.5)}))+1,o=r.instrument||"pluck";return b[o]||(o="pluck"),h=n.map(function(n,e){var t="pluck"===o?{bright:r.bright,slide:r.slide}:{};return[n,b[o](I({note:n[1],dur:(n[2]||1.5)+a,seed:31+e},t))]}),G(e,function(n,e,t){for(var r,a,o,u,i=[],l=0,s=(r=h).length;l<s;++l)u=(o=(a=r[l])[0])[0],i.push(F(n,e,a[1],u,o[3]||.8))})}},F=function(n,e,t,r,a){var o,u,i,l,s,h,f=[];for(null==a&&(a=1),o=t.getChannelData(0),u=t.getChannelData(1),i=Math.round(r*K),l=Math.max(0,-i),s=Math.min(o.length,n.length-i);l<s;++l)n[i+(h=l)]+=o[h]*a,f.push(e[i+h]+=u[h]*a);return f},nn=function(n,e,t,r,a,o){var u,i,l,s,h,f,c,p;if(null==o&&(o=.001),!(21600<=t))for(u=Math.round(e*K),i=2*Math.PI*t/K,l=Math.max(0,u),s=n.length;l<s&&(p=r*Z(c=(f=(h=l)-u)/K,o,a),!(o<c&&p<1e-5));++l)n[h]+=p*Math.sin(i*f);return n},C=function(n,e){var t,r,a;for(null==e&&(e=.02),t=Math.min(n.length,Math.round(e*K)),r=0;r<t;++r)a=r,n[n.length-1-a]*=a/t;return n},q=function(n,e,t){for(var r,a,o,u,i=Math.max(1,Math.round(e*K)),l=[],s=0,h=Math.ceil(n/i)+1;s<=h;++s)a=s,l.push(t());for(r=l,o=new Float32Array(n),s=0;s<n;++s)u=s,a=Math.floor(u/i),o[u]=r[a]*(1-(u=u%i/i))+r[a+1]*u;return o},E=function(n,e,t,r){var a,o,u,i,l,s,h,f;for(null==r&&(r=[1]),a=new Float32Array(n),u=o=0;u<n;++u)for(i=u,o+=2*Math.PI*e*Math.pow(t/e,i/n)/K,l=0,s=r.length;l<s;++l)f=r[h=l],a[i]+=f*Math.sin(o*(h+1));return a},R=[1116,1188,1277,1356,1422,1491,1557,1617],V=[556,441,341,225],D=function(n,C,q){var T,E,D;return null==C&&(C=.3),null==q&&(q=.5),T=K/44100,E=[n.getChannelData(0),n.getChannelData(1)],D=n.length,G(n.duration+.4+3*q,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A=[],k=.7+.27*q,F=new Float32Array(t),I=0,P=D;I<P;++I)F[r=I]=.015*(E[0][r]+E[1][r]);for(I=0,o=(a=[n,e]).length;I<o;++I){for(i=a[u=I],l=[],s=new Float32Array(t),h=0,c=(f=R).length;h<c;++h)for(p=f[h],d=Math.round((p+23*u)*T),m=new Float32Array(d),g=v=M=0;g<t;++g)r=g,y=m[M],m[M]=F[r]+(v=.7*y+.3*v)*k,M=(M+1)%d,s[r]+=y;for(h=0,c=(f=V).length;h<c;++h)for(p=f[h],d=Math.round((p+23*u)*T),m=new Float32Array(d),g=M=0;g<t;++g)r=g,w=m[M],b=s[r],m[M]=b+.5*w,s[r]=w-b,M=(M+1)%d;for(x=E[u],h=0;h<t;++h)r=h,l.push(i[r]=(r<D?x[r]*(1-.5*C):0)+s[r]*C*3);A.push(l)}})},A.reverb=function(n,e){return D(n,null!=(e=null==e?{}:e).mix?e.mix:.3,null!=e.room?e.room:.5)},b.slide=function(s){var n=(s=null==s?{}:s).dur||.3,h=s.from||900,f=s.to||2600,c=s.q||.9,p=null!=s.dir?s.dir:1;return G(n,function(n,e,t){for(var r,a,o,u=[],i=m(Y(t,N(s.seed||37)),"bp",function(n){return h*Math.pow(f/h,n)},c),l=0;l<t;++l)a=(o=(r=l)/t)<.25?Math.sin(Math.PI/2*o/.25):Math.pow(Math.cos(Math.PI/2*(o-.25)/.75),2),o=.6*(2*o-1)*p,n[r]=i[r]*a*Math.cos((1+o)*Math.PI/4),u.push(e[r]=i[r]*a*Math.sin((1+o)*Math.PI/4))})},z=function(u,n,e){var i=u.dur||.6,l=A.freq(u.from||n),s=A.freq(u.to||e);return G(i,function(n,e,t){for(var r,a=E(t,l,s,[1,.25,.08]),o=0;o<t;++o)r=o/K,a[o]*=Math.min(1,r/.02)*Math.min(1,(i-r)/(.35*i));x(n,e,a,u.pan)})},b.rise=function(n){return z(n=null==n?{}:n,300,900)},b.fall=function(n){return z(n=null==n?{}:n,900,250)},b.count=function(s){var h,f,c,p,d;return null==s&&(s={}),h=Math.max(2,s.n||12),f=s.dur||1.2,c=A.freq(s.note||"C6"),p=null!=s.climb?s.climb:7,d=(()=>{switch(s.ease){case"in":return function(n){return n*n};case"linear":return function(n){return n};default:return function(n){return 1-(1-n)*(1-n)}}})(),G(f+.2,function(n,e,t){for(var r,a,o,u=new Float32Array(t),i=0,l=h;i<l;++i)r=i/(h-1),a=i===h-1,o=c*Math.pow(2,p*r/12),nn(u,f*d(r),o,a?1:.6,a?.09:.02),a&&nn(u,f,2*o,.3,.06);x(n,e,u,s.pan)})},b.snap=function(i){return null==i&&(i={}),G(.1,function(n,e,t){for(var r,a=Q(Y(t,N(i.seed||41)),"lp",6e3),o=new Float32Array(t),u=0;u<t;++u)o[r=u]=.8*a[r]*Z(r=r/K,3e-4,.002)+.6*Math.sin(2*Math.PI*1400*r)*Z(r,5e-4,.01)+Math.sin(2*Math.PI*160*r)*Z(r,.001,.025);x(n,e,o,i.pan)})},b.draw=function(f){var c=(f=null==f?{}:f).dur||1,p=null!=f.rough?f.rough:.5;return G(c,function(n,e,t){for(var r,a,o,u=N(f.seed||43),i=Q(Q(Y(t,u),"bp",f.pitch||2500,.8),"hp",600),l=q(t,.06,u),s=q(t,.004,u),h=0;h<t;++h)a=(r=h)/K,o=s[r]*s[r],i[r]*=(.3+.7*l[r])*(1-p+p*o*2)*Math.min(1,a/.03,(c-a)/.05);x(n,e,i,f.pan)})},b.glitch=function(g){var n=(g=null==g?{}:g).dur||.5;return G(n,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m=[],M=N(g.seed||47),v=0;v<t;){for(r=Math.round((.015+.05*M())*K),a=M(),o=100+1900*M()*M(),u=1+Math.floor(40*M()),i=1.6*M()-.8,l=Math.cos((1+i)*Math.PI/4),s=Math.sin((1+i)*Math.PI/4),h=0,f=v,c=Math.min(t,v+r);f<c;++f)p=f,d=a<.4?0<Math.sin(2*Math.PI*o*((p-v)/K))?.6:-.6:a<.8?(p-v)%u==0?h=2*M()-1:h:0,n[p]=d*l,e[p]=d*s;m.push(v+=r)}})},b.reveal=function(f){var c=((f=null==f?{}:f).notes||["C6","E6","G6","C7","E7"]).map(A.freq),p=null!=f.gap?f.gap:.06;return G(1.6,function(n,e,t){for(var r,a,o,u,i,l=new Float32Array(t),s=0,h=(r=c).length;s<h;++s)o=r[a=s],nn(l,a*p,o,1,.5),nn(l,a*p,2.76*o,.25,.15);for(u=Q(Y(t,N(f.seed||53)),"hp",6e3),s=0;s<t;++s)l[i=s]+=.12*u[i]*Z(i/K,.25,.3);x(n,e,l,f.pan)})},b.reveal.reverb=.35,b.error=function(h){var f;return null==h&&(h={}),f=[A.freq(h.from||"B3"),A.freq(h.to||"F3")],G(.5,function(n,e,t){for(var r,a,o,u,i=new Float32Array(t),l=0,s=(r=f).length;l<s;++l)for(o=r[a=l],u=1;u<=7;u+=2)nn(i,.16*a,o*u,1/u,.12,.005);C(Q(i,"lp",2e3)),x(n,e,i,h.pan)})},b.tension=function(n){var M=(n=null==n?{}:n).dur||6,v=A.freq(n.note||"A2");return G(M,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p=[],d=0,m=(r=[1,Math.pow(2,1/12),Math.pow(2,.5),2]).length;d<m;++d){for(o=r[a=d],u=new Float32Array(t),s=l=i=0;s<t;++s)c=(f=(h=s)/K)/M,l+=2*Math.PI*(3+5*c)/K,i+=2*Math.PI*v*o/K,u[h]=(Math.sin(i)+.3*Math.sin(2*i)+.15*Math.sin(3*i))*(1-.35*(.5+.5*Math.sin(l+a)))*Math.pow(c,1.5)*Math.min(1,(M-f)/.3);p.push(x(n,e,u,.4*(a-1.5),.5))}})},b.heartbeat=function(g){var y=(g=null==g?{}:g).dur||4,w=60/(g.bpm||70);return G(y,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M=new Float32Array(t),v=.05;v<y-.2;){for(o=(a=[[r=0,75,45,1],[Math.min(.3,.35*w),85,55,.7]]).length;r<o;++r)for(u=(h=a[r])[0],i=h[1],l=h[2],s=h[3],h=Math.round(12e3),f=Math.round((v+u)*K),c=E(h,i,l),p=0,d=Math.min(h,t-f);p<d;++p)M[f+(m=p)]+=c[m]*s*Z(m/K,.008,.06);v+=w}x(n,e,Q(M,"lp",300),g.pan)})},b.clock=function(c){var p=(c=null==c?{}:c).dur||4,d=60/(c.bpm||60);return G(p,function(n,e,t){for(var r,a,o,u,i,l=new Float32Array(t),s=Q(Y(t,N(c.seed||59)),"hp",2e3),h=0,f=.02;f<p-.05;){for(nn(l,f,r=h%2?2400:3200,.6,.012),nn(l,f,1.5*r,.3,.006),a=Math.round(f*K),o=0,u=Math.min(Math.round(96),t-a);o<u;++o)l[a+(i=o)]+=.8*s[a+i];f+=d,h++}x(n,e,l,c.pan)})},en=function(n,e,t,r,a,o,u,i,l){var s,h,f,c,p,d,m,M,v,g=[];for(null==l&&(l=0),s=Math.max(4,Math.round(a*K)),h=Y(s,t),Q(h,"bp",o,u),f=Math.round(r*K),c=Math.cos((l+1)*Math.PI/4)*i,p=Math.sin((l+1)*Math.PI/4)*i,d=0,m=Math.min(s,n.length-f);d<m;++d)M=d,v=Math.exp(-4*M/s)*Math.min(1,M/8),n[f+M]+=h[M]*v*c,g.push(e[f+M]+=h[M]*v*p);return g},B=function(n,e){for(var t,r=0;r<50;++r)if(t=n(),n()<e(t))return t;return n()},b.paper=function(x){var A=(x=null==x?{}:x).dur||1.2,k=null!=x.crisp?x.crisp:1,F=null!=x.flutter?x.flutter:.6,I=.2*A,P=.8*A;return G(A,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d=[],m=N(x.seed||61),M=function(n){return n<.5*I||.02+P<n?0:Math.pow(Math.min(1,(n-.5*I)/(P-.5*I)),.7)},v=q(t,.035,m),g=q(t,.09,m),y=0,w=(r=[n,e]).length;y<w;++y)for(a=r[y],o=j(t,m),u=Q(Y(t,m),"bp",4e3,.7),i=0;i<t;++i)h=1-F+F*(.7*v[l=i]+.6*g[l]),h=M(s=l/K)*h,f=s<I?.25*Math.sin(Math.PI/2*s/I):s<P?.25*Math.max(0,1-(s-I)/I):0,c=P<=s?1.1*Z(s-P,.006,.07)+.25*Math.max(0,1-(s-P)/(A-P)):0,a[l]=o[l]*(.8*h+c)+u[l]*f;for(y=0,p=Math.round(50*A*k);y<p;++y)s=.5*I+(P-.5*I)*B(m,b),en(n,e,m,s,2e-4+8e-4*m(),1500*Math.pow(5,m()),.5,8*(.1+m()*m()),.6*m()-.3);for(y=0,w=(r=[n,e]).length;y<w;++y)a=r[y],Q(a,"hp",150),Q(a,"lp",7500,.6),d.push(C(a,.05));function b(n){return.3+.7*n}})},M=function(n,e,t,r,a,o,u,i){var l,s,h,f,c,p,d,m,M,v,g=[];for(null==i&&(i=1),s=(.043*(l=3e3/r)+.0014*Math.pow(l,1.5))*i,h=Math.min(Math.round(6/s*K),n.length-Math.round(t*K)),f=Math.round(t*K),c=Math.cos((u+1)*Math.PI/4)*a,p=Math.sin((u+1)*Math.PI/4)*a,m=d=0;m<h;++m)v=(M=m)/K,d+=2*Math.PI*l*(1+o*s*v)/K,v=Math.sin(d)*Math.exp(-s*v)*Math.min(1,M/24),n[f+M]+=v*c,g.push(e[f+M]+=v*p);return g},b.water=function(s){var h=(s=null==s?{}:s).n||1,f=null!=s.rise?s.rise:1===h?.05:.1,c=s.size||(s.freq?3e3/A.freq(s.freq):1===h?3:2.5),p=s.dur||(1===h?.4:Math.max(1,.04*h));return G(p,function(n,e,t){var r,a,o,u,i=[],l=N(s.seed||67);if(1===h)en(n,e,l,.005,.001,3e3,.8,.25),M(n,e,.007,c,1,f,0,.4),M(n,e,.012,.4*c,.12,f,.1);else for(r=0,a=h;r<a;++r)o=c*(.25+1.75*Math.pow(l(),2.5)),u=l()*(p-.1),i.push(M(n,e,u,o,Math.pow(o/c,.7)*(.3+.7*l()),f*(.5+l()),1.4*l()-.7))})},b.fire=function(b){var x=(b=null==b?{}:b).dur||6,A=null!=b.density?b.density:1;return G(x,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m=[],M=N(b.seed||71),v=Q(Y(t,M),"lp",300),g=Q(Y(t,M),"hp",3e3),y=q(t,.25,M),w=0;w<t;++w)a=(.4+.6*y[r=w])*Math.min(1,r/K/.3,(t-r)/K/.3),n[r]=e[r]=(.5*v[r]+.04*g[r])*a;for(o=Math.round(10*x*A),w=0;w<o;++w){for(u=[],i=Math.round(M()*(t-480)),l=M()*M()*1.5,s=Math.round((5e-4+.003*M())*K),h=1.6*M()-.8,f=Math.cos((1+h)*Math.PI/4),c=Math.sin((1+h)*Math.PI/4),p=0;p<s;++p)r=p,d=(2*M()-1)*l*(1-r/s),n[i+r]+=d*f,u.push(e[i+r]+=d*c);m.push(u)}})},O={wood:{thud:1,tones:[140,380,620],click:[[2200,1.2,.012,.5]]},concrete:{thud:.04,tones:[],click:[[700,.8,.003,1.6],[2600,1.2,.002,.15]],scuff:.06},gravel:{thud:.45,grains:90,band:[1200,6e3],len:[4e-4,.002],q:1.5},snow:{thud:.35,grains:70,band:[500,2200],len:[.002,.007],q:.8},grass:{thud:.25,grains:90,band:[2500,8e3],len:[5e-4,.003],q:1.2}},b.steps=function($){var _="run"===($=null==$?{}:$).gait,W=$.n||4,X=$.pace||(_?.3:.5),J=O[$.surface]||O.wood;return G(W*X+.35,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A,k,F,I,P,z,B,O,C,j,q,T,E,D,U,G,H=[],R=N($.seed||73),S=Q(Y(t,R),"lp",260),V=0,L=W;V<L;++V){for(a=[],o=.02+(r=V)*X+(R()-.5)*(_?.01:.02),u=(_?1.15:.85)+.3*R(),i=r%2?.12:-.12,l=Math.cos((1+i)*Math.PI/4),s=Math.sin((1+i)*Math.PI/4),h=_?.025+.015*R():.09+.04*R(),f=0,p=(c=_?[[0,.8*u],[h,u]]:[[0,u],[h,.55*u]]).length;f<p;++f){for(m=(d=c[f])[0],M=d[1],v=Math.round((o+m)*K),g=Math.min(Math.round(7200),t-v),y=new Float32Array(g),w=0;w<g;++w)y[b=w]=2.5*S[v+b]*J.thud*Z(x=b/K,.003,.025)+.5*J.thud*Math.sin(2*Math.PI*(75+20*M)*x)*Z(x,.002,.03);for(w=0,A=(d=J.tones||[]).length;w<A;++w)k=d[w],nn(y,0,k*(.95+.1*R()),.12,.035);for(w=0,A=(d=J.click||[]).length;w<A;++w)for(I=(F=d[w])[0],P=F[1],z=F[2],B=F[3],O=Q(Y(g,R),"bp",I*(.85+.3*R()),P),C=0;C<g;++C)y[b=C]+=O[b]*B*Z(b/K,4e-4,z);for(w=0;w<g;++w)n[v+(b=w)]+=y[b]*M*l,e[v+b]+=y[b]*M*s}if(j=(J.scuff||.1)*(_?2.5:1),J.scuff||_)for(v=Math.round((o+(_?.03+h:.02))*K),q=Q(Y(Math.round((_?.07:.12)*K),R),"bp",2800,.8),f=0,T=Math.min(q.length,t-v);f<T;++f)b=f,E=Math.sin(Math.PI*b/q.length)*j*u*.3,n[v+b]+=q[b]*E*l,e[v+b]+=q[b]*E*s;if(J.grains)for(f=0,T=Math.round(J.grains*u);f<T;++f)m=R()<.6?.07*Math.pow(R(),1.5):h+.09*Math.pow(R(),1.5),D=(c=J.band)[0],U=c[1],G=(c=J.len)[0],a.push(en(n,e,R,o+m,G+(c[1]-G)*R(),D*Math.pow(U/D,R()),J.q,.8*(.15+R()*R())*u,i+.3*R()-.15));H.push(a)}})},b.bell=function(h){var f,c;return null==h&&(h={}),f=A.freq(h.note||"C5"),c=h.dur||5,G(c,function(n,e,t){for(var r,a,o,u,i=new Float32Array(t),l=0,s=(r=[[.5,.5,1],[1,1,.7],[1.2,.55,.5],[1.5,.35,.4],[2,.6,.35],[2.51,.25,.25],[2.66,.2,.22],[3.01,.18,.18],[4.17,.1,.12],[5.43,.06,.08]]).length;l<s;++l)a=(u=r[l])[0],nn(i,0,f*a,o=u[1],(u=u[2])*c*.45,.002),nn(i,0,f*a*1.0015,.5*o,u*c*.45,.002);x(n,e,C(i,.1),h.pan)})},b.bell.reverb=.2,j=function(n,e){for(var t,r,a,o,u,i,l,s,h=new Float32Array(n),f=t=r=a=o=u=i=0,c=0;c<n;++c)l=c,s=2*e()-1,h[l]=.11*((f=.99886*f+.0555179*s)+(t=.99332*t+.0750759*s)+(r=.969*r+.153852*s)+(a=.8665*a+.3104856*s)+(o=.55*o+.5329522*s)+(u=-.7616*u-.016898*s)+i+.5362*s),i=.115926*s;return h},b.thunder=function(F){var I=(F=null==F?{}:F).dur||6,P=null!=F.dist?F.dist:.5,C=1-P;return G(I,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y=[],w=N(F.seed||79),b=.02+.4*P,x=[[b,1]].concat((()=>{for(var n=[],e=0,t=Math.round(2+5*C);e<t;++e)n.push([b+.7*Math.pow(w(),1.5),.4+.6*w()]);return n})()),A=[],k=0;k<5;++k)A.push([b+.3+w()*I*.5,.3+.7*w()]);for(r=A,a=new Float32Array(t),o=new Float32Array(t),k=0;k<t;++k){for(i=(u=k)/K,l=0,s=x.length;l<s;++l)f=(h=x[l])[0],c=h[1],f<i&&(a[u]+=c*Z(i-f,.004,.1+.25*P));for(l=0,s=r.length;l<s;++l)f=(h=r[l])[0],c=h[1],f<i&&(o[u]+=c*Z(i-f,.15+.4*P,.7+P));p=Math.min(1,(I-i)/.6),a[u]*=p,o[u]*=p}for(d=400+11e3*C*C,k=0,s=(h=[n,e]).length;k<s;++k)for(m=h[k],M=Q(Q(j(t,w),"lp",d),"hp",30),v=Q(Q(Y(t,w),"lp",140),"lp",140),l=0;l<t;++l)m[u=l]=M[u]*(a[u]*(.4+.6*C)+.8*o[u]*C)+v[u]*o[u]*(.6+.4*P)*3+v[u]*a[u]*2;for(k=0,g=Math.round(300*C*C);k<g;++k)f=b+1.2*Math.pow(w(),2),y.push(en(n,e,w,f,3e-4+.002*w(),800+5e3*w(),1,(.1+w()*w())*C*.8,1.4*w()-.7))})},b.fingersnap=function(c){return null==c&&(c={}),G(.12,function(n,e,t){for(var r,a,o=N(c.seed||137),u=c.tone||3200,i=new Float32Array(t),l=Y(t,o),s=Q(Float32Array.from(l),"hp",5e3),h=Q(Float32Array.from(l),"bp",u,5),f=0;f<t;++f)i[r=f]=2.5*s[r]*Z(a=r/K,1e-4,.0015)+2.2*h[r]*Z(a,2e-4,.0025);nn(i,0,1.1*u,.12,.004),nn(i,5e-4,200+30*o(),.02,.008,.001),x(n,e,i,c.pan)})},U=function(n,e,t,r){for(var a,o,u,i,l,s,h,f,c,p,d,m,M,v,g,y,w,b,x,A=new Float32Array(n),k=0,F=0,I=[],P=0;P<n;P+=32)a=P,I.push(r(a/n));for(P=0;P<n;++P){if(u=I[(o=P)>>5],F=.999*F+.002*(e()-.5),k=(k+=(i=u.f0*(1+.006*Math.sin(2*Math.PI*5.2*o/K)+F))/K)-Math.floor(k),(l=0)<u.voice)for(s=Math.min(40,Math.floor(5e3/i)),h=1;h<=s;++h)f=h,l+=Math.sin(2*Math.PI*f*k)/f;c=(2*e()-1)*u.asp*(0<u.voice?.6+.4*Math.sin(2*Math.PI*k):1),A[o]=(l*u.voice*.35+c)*u.amp}for(P=0;P<4;++P)for(p=P,h=d=m=0;h<n;h+=32)for(M=I[(a=h)>>5].F[p]*t,g=-(v=Math.exp(-Math.PI*(60+.06*M)/K))*v,c=1-(y=2*v*Math.cos(2*Math.PI*M/K))-g,w=a,b=Math.min(n,a+32);w<b;++w)x=c*A[o=w]+y*d+g*m,m=d,A[o]=d=x;return A},h=function(n,e,t){return n+(e-n)*t},l=function(n){return n*n*(3-2*n)},b.huh=function(a){var n=(a=null==a?{}:a).dur||.45,o=a.pitch||200,u=a.rise||1.9,i=a.size||1,l=.08/n;return G(n,function(n,e,t){var r=N(a.seed||151),t=U(t,r,i,function(n){var e=Math.max(0,Math.min(1,(n-l)/.08)),t=Math.max(0,(n-l)/(1-l)),n=Math.min(1,n/.06)*(.75<n?Math.max(0,1-(n-.75)/.25):1);return{f0:o*h(1,u,Math.pow(t,1.6)),voice:e,asp:.35*(1-e)+.06,amp:n,F:[h(700,850,e),1250,2700,3600]}});C(t,.03),x(n,e,t,a.pan)})},b.yay=function(a){var n=(a=null==a?{}:a).dur||.5,o=a.pitch||300,u=a.size||1;return G(n,function(n,e,t){var r=N(a.seed||157),t=U(t,r,u,function(n){var e=l(Math.min(1,n/.25)),t=Math.min(1,n/.04)*(.7<n?Math.max(0,1-(n-.7)/.3):1),n=n<.35?h(.88,1.12,l(n/.35)):h(1.12,.85,l((n-.35)/.65));return{f0:o*n,voice:1,asp:.05,amp:t,F:[h(320,660,e),h(2600,1850,e),h(3200,2650,e),3800]}});C(t,.03),x(n,e,t,a.pan)})},b.correct=function(c){var p="arp"===(c=null==c?{}:c).style,d=(c.notes||(p?["C6","E6","G6","C7"]:["B5","G5"])).map(A.freq),m=c.gap||(p?.07:.2);return G(d.length*m+1.1,function(n,e,t){for(var r,a,o,u,i,l,s=new Float32Array(t),h=0,f=(r=d).length;h<f;++h)o=r[a=h],u=a===d.length-1,nn(s,a*m,o,1,u=u?.45:p?.15:.25,.002),nn(s,a*m,2*o,.25,.4*u,.002),nn(s,a*m,3.01*o,.08,.25*u,.002);if(p)for(i=Q(Y(t,N(c.seed||163)),"hp",7e3),h=0;h<t;++h)s[l=h]+=.08*i[l]*Z(l/K-d.length*m*.6,.1,.25)*(l/K>d.length*m*.6-.1?1:0);x(n,e,C(s,.05),c.pan)})},b.correct.reverb=.15,b.wrong=function(f){var c,s;return"trombone"===(f=null==f?{}:f).style?(c=["D4","C#4","C4","B3"].map(A.freq),G(2.2,function(n,e,t){for(var r,a,o,u,i,l=new Float32Array(t),s=0,h=0;h<t;++h)a=(u=(r=h)/K)-.42*(u=Math.min(3,Math.floor(u/.42))),o=(s+=c[u]*(3===u?1+.025*Math.sin(2*Math.PI*5.5*Math.max(0,a-.15)):1)*(1-.03*Math.min(1,a/.3))/K)%1,u=u<3?Math.min(1,a/.04)*Math.max(0,1-Math.max(0,a-.3)/.08):Math.min(1,a/.04)*Math.max(0,1-a/.95),l[r]=(2*o-1)*u;for(Q(l,"lp",1400,.9),i=Q(Float32Array.from(l),"bp",1200,2),h=0;h<t;++h)l[r=h]+=.5*i[r];x(n,e,C(l,.05),f.pan)})):(s=f.pitch||140,G(.75,function(n,e,t){for(var r,a,o=new Float32Array(t),u=0,i=0,l=0;l<t;++l)a=(a=(r=l)/K)<.13?Math.min(1,a/.005)*Math.min(1,(.13-a)/.01):.19<a?Math.min(1,(a-.19)/.005)*Math.min(1,(.72-a)/.03):0,o[r]=.5*(((u+=s/K)%1<.5?1:-1)+((i+=1.012*s/K)%1<.5?1:-1))*Math.max(0,a);Q(o,"lp",2500),x(n,e,o,f.pan)}))},e=function(p,d){var m=A.freq(p.note||d.note),n=p.dur||d.dur,M=null!=p.hard?p.hard:.5,v=d.decay*Math.pow(A.freq(d.note)/m,.4);return G(n,function(n,e,t){for(var r,a,o,u,i,l,s,h=new Float32Array(t),f=0,c=(r=d.ratios).length;f<c;++f)o=r[a=f],nn(h,0,m*o,d.amps[a]*(a?.3+1.4*M:1),v/(1+a*d.damp),.0015);if(d.trem)for(u=null!=p.trem?p.trem:.35,f=0;f<t;++f)h[i=f]*=1-u*(.5+.5*Math.sin(2*Math.PI*5.5*i/K));for(f=0,s=(l=Q(Y(Math.round(384),N(p.seed||83)),"lp",2e3+6e3*M)).length;f<s;++f)h[i=f]+=.4*l[i]*M*(1-i/l.length);x(n,e,C(h),p.pan)})},b.marimba=function(n){return e(n=null==n?{}:n,{note:"C4",dur:1.5,ratios:[1,3.93,9.24],amps:[1,.3,.1],decay:.45,damp:2.5})},b.xylophone=function(n){return e(n=null==n?{}:n,{note:"C5",dur:.8,ratios:[1,3,6.1],amps:[1,.5,.2],decay:.2,damp:1.5})},b.vibraphone=function(n){return e(n=null==n?{}:n,{note:"F4",dur:3,ratios:[1,4,10],amps:[1,.25,.08],decay:1.4,damp:3,trem:!0})},b.glockenspiel=function(n){return e(n=null==n?{}:n,{note:"C6",dur:2,ratios:[1,2.76,5.4,8.93],amps:[1,.4,.2,.08],decay:.9,damp:1.2})},H={C:["C3","E3","G3","C4","E4"],D:["D3","A3","D4","F#4"],Dm:["D3","A3","D4","F4"],E:["E2","B2","E3","G#3","B3","E4"],Em:["E2","B2","E3","G3","B3","E4"],F:["F2","C3","F3","A3","C4","F4"],G:["G2","B2","D3","G3","B3","G4"],A:["A2","E3","A3","C#4","E4"],Am:["A2","E3","A3","C4","E4"]},S=function(n,e,t,r){for(var a,o,u,i,l,s,h,f,c,p,d,m=null!=t.bright?t.bright:.5,M=t.mute||0,v=.5+.45*m*(1-M),g=K/n-(1-v),y=Math.ceil(g)+3,w=Y(y,r),b=Math.max(1,Math.round(g*(t.pos||.2))),x=y-1;b<=x;--x)w[a=x]-=w[a-b];for(o=.15+.8*m*(1-.7*M),x=u=0;x<y;++x)u=o*w[a=x]+(1-o)*u,w[a]=u;for(r=(t.sustain||4)*(1-.92*M),i=Math.pow(.001,1/(n*r)),l=new Float32Array(e+y),x=0;x<y;++x)l[a=x]=w[a];for(s=new Float32Array(e),h=e+(x=y);x<h;++x)c=(f=x)-g,p=l[d=Math.floor(c)]*(1-(c=c-d))+l[d+1]*c,d=l[d-1]*(1-c)+l[d]*c,l[f]=i*(v*p+(1-v)*d),s[f-y]=l[f];return s},b.guitar=function(w){var n,b,x=(w=null==w?{}:w).notes||H[w.chord]||[w.note||"E3"];return"up"===w.dir&&(x=x.slice().reverse()),n=w.dur||3,b=null!=w.strum?w.strum:.03,G(n,function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p,d,m,M=[],v=N(w.seed||89),g=0,y=(r=x).length;g<y;++g){for(p=r[a=g],o=[],u=Math.round(a*b*K),i=S(A.freq(p),t-u,w,v),l=Q(Float32Array.from(i),"bp",105,1.5),s=Q(Float32Array.from(i),"bp",220,2),h=0,f=i.length;h<f;++h)i[c=h]=i[c]+.6*l[c]+.3*s[c];for(C(i,.05),p=(w.pan||0)+.3*(a/Math.max(1,x.length-1)-.5),d=Math.cos((p+1)*Math.PI/4),m=Math.sin((p+1)*Math.PI/4),h=0,f=i.length;h<f;++h)n[u+(c=h)]+=i[c]*d,o.push(e[u+c]+=i[c]*m);M.push(o)}})},b.kick=function(s){var h=(s=null==s?{}:s).tune||50,f=s.decay||.3,c=null!=s.punch?s.punch:.5;return G(2*f+.05,function(n,e,t){for(var r,a,o=new Float32Array(t),u=0,i=Q(Y(t,N(s.seed||97)),"lp",4e3),l=0;l<t;++l)a=(r=l)/K,u+=2*Math.PI*(h+2*h*Math.exp(-a/.03))/K,o[r]=Math.tanh((Math.sin(u)*Z(a,.001,f)+i[r]*c*.6*Z(a,2e-4,.003))*(1+2*c));x(n,e,C(o),s.pan)})},b.snare=function(i){var l=(i=null==i?{}:i).tune||180,s=i.decay||.15,h=null!=i.snappy?i.snappy:.6;return G(2*s+.05,function(n,e,t){var r,a,o,u=new Float32Array(t);for(nn(u,0,l,.8,.05),nn(u,0,1.83*l,.4,.035),r=Q(Q(Y(t,N(i.seed||101)),"hp",1200),"lp",9e3),a=0;a<t;++a)u[o=a]+=r[o]*h*1.2*Z(o/K,.001,.8*s);x(n,e,C(u),i.pan)})},L=function(n,e){var t,r,a,o,u,i,l;for(null==e&&(e=1),t=new Float32Array(n),r=0,o=(a=[205.3,304.4,369.6,522.7,540,800]).length;r<o;++r)for(u=a[r]*e/K,l=i=0;l<n;++l)t[l]+=(i+=u)%1<.5?1:-1;return t},b.hihat=function(l){var s,n=(l=null==l?{}:l).open||0;return G(2.5*(s=.04+.5*n)+.02,function(n,e,t){for(var r,a=L(t,l.tune||1),o=Y(t,N(l.seed||103)),u=new Float32Array(t),i=0;i<t;++i)u[r=i]=.15*a[r]+.5*o[r];for(Q(Q(u,"hp",7e3),"bp",1e4,.8),i=0;i<t;++i)u[r=i]*=Z(r/K,8e-4,s);x(n,e,C(u),l.pan)})},b.tom=function(s){var h,f;return null==s&&(s={}),h=A.freq(s.note||"A2"),f=s.decay||.35,G(2*f+.05,function(n,e,t){for(var r,a,o=new Float32Array(t),u=0,i=Q(Y(t,N(s.seed||107)),"bp",4*h,1),l=0;l<t;++l)a=(r=l)/K,u+=2*Math.PI*h*(1+.5*Math.exp(-a/.04))/K,o[r]=Math.sin(u)*Z(a,.002,f)+.3*i[r]*Z(a,.001,.02);x(n,e,C(o),s.pan)})},b.clap=function(p){var d=(p=null==p?{}:p).decay||.12;return G(2.5*d+.06,function(n,e,t){for(var r,a,o,u,i,l,s,h=Q(Y(t,N(p.seed||109)),"bp",1100,1.2),f=new Float32Array(t),c=0;c<t;++c){for(a=(r=c)/K,l=(i=[u=o=0,.011,.022]).length;u<l;++u)(s=i[u])<=a&&(o+=Z(a-s,5e-4,.006));.031<=a&&(o+=Z(a-.031,.001,d)),f[r]=h[r]*o}n.set(f),e.set(Q(Float32Array.from(f),"bp",1300,1.5))})},y=function(n,e,t,r,a,o){var u,i,l,s,h,f,c,p,d,m,M;if(null==o&&(o=5e-4),!(21600<=t)){for(u=Math.round(e*K),i=Math.exp(-1/(a*K)),e=2*Math.PI*t/K,l=Math.cos(e),s=Math.sin(e),h=1,f=0,c=r,p=Math.max(1,Math.round(o*K)),d=u,m=n.length;d<m&&(n[M=d]+=f*c*((M=M-u)<p?M/p:1),M=h*l-f*s,f=h*s+f*l,h=M,!((c*=i)<1e-5));++d);return[]}},w=function(n){return Math.sqrt(-2*Math.log(n()+1e-12))*Math.cos(2*Math.PI*n())},b.crash=function(m){var M=(m=null==m?{}:m).decay||1,v=m.tune||1;return G(2.4*M+.1,function(n,e,t){for(var r,a,o,u,i,l,s,h,f=[],c=N(m.seed||113),p=0,d=(r=[n,e]).length;p<d;++p){for(a=r[p],o=0;o<260;++o)u=Math.max(1200,Math.min(14e3,4200*Math.pow(2,.55*w(c))))*v,y(a,0,u,(.4+c())/16,.3*M*Math.pow(u/4200/v,-.8)*(.6+.8*c()),.002+.07*c()*Math.min(1,u/4200/v));for(o=0;o<30;++o)y(a,0,350*v*Math.pow(3,c()),(.3+c())/14,.5*M*(.6+.8*c()),.003);for(i=Q(Y(t,c),"lp",9e3),l=Q(Y(t,c),"bp",4200*v,.8),o=0;o<t;++o)a[s=o]+=.4*i[s]*Z(h=s/K,5e-4,.008)+.1*l[s]*Z(h,.03,.3*M);Q(a,"hp",250),f.push(C(a,.1))}})},b.ride=function(m){var M=(m=null==m?{}:m).decay||1,v=m.tune||1,g=m.bell||0;return G(4*M+.1,function(n,e,t){for(var r,a,o,u,i,l,s,h=[],f=N(m.seed||127),c=Q(Y(t,f),"bp",4800*v,.7),p=0,d=(r=[n,e]).length;p<d;++p){for(a=r[p],o=0,u=Math.round(2400);o<u;++o)a[i=o]+=.9*c[i]*Z(i/K,3e-4,.006);for(o=0;o<40;++o)y(a,0,(5e3+4e3*f())*v,.04,.015+.03*f());for(o=0;o<180;++o)l=Math.max(700,Math.min(1e4,2600*Math.pow(2,.55*w(f))))*v,y(a,0,l,(.4+f())/80,.9*M*Math.pow(l/2600/v,-.3)*(.6+.8*f()),.001);for(s=Q(Y(t,f),"bp",3e3*v,.7),o=0;o<t;++o)a[i=o]+=.05*s[i]*Z(i/K,.002,.35*M);if(g)for(o=0;o<14;++o)l=2800*v*Math.pow(2,.4*w(f)),y(a,0,l,g*(.5+f())/6,.5*M*(.6+.8*f()),.001);Q(a,"hp",400),h.push(C(a,.1))}})},$={kick:["kick",{},1],snare:["snare",{},.9],hihat:["hihat",{},.45],ohat:["hihat",{open:.6},.45],tom:["tom",{},.8],ltom:["tom",{note:"E2"},.8],htom:["tom",{note:"D3"},.8],clap:["clap",{},.8],crash:["crash",{},.55],ride:["ride",{},.4]},_={X:1,x:.75,o:.4},b.beat=function(n){var M,e,t,r,a,o,u,v,g=60/((n=null==n?{}:n).bpm||100)/4,i=n.bars||1,y=n.swing||0,l=n.pattern||{kick:"x...x...x...x...",snare:"....x.......x...",hihat:"x.x.x.x.x.x.x.x."},w=[],s=M=0;for(e in l)u=l[e],t=(u=Array.isArray(u)?u:[u])[0],r=u[1]||{},o=(u=$[e]||[e,{},.8])[0],a=u[2],b[o]&&(o=b[o](I(I({},u[1]),r)),s=Math.max(s,o.duration),u=(t||"").replace(/[\s|]/g,""),M=Math.max(M,u.length),w.push({b:o,s:u,g:null!=r.gain?r.gain:a}));return v=M*i,G(Math.max(.1,v*g+s),function(n,e,t){for(var r,a,o,u,i,l,s,h,f,c,p=[],d=0,m=(r=w).length;d<m;++d){for(o=(a=r[d]).b,u=a.s,i=a.g,l=[],s=0,h=v;s<h;++s)(c=_[u[(f=s)%M]])&&l.push(F(n,e,o,f*g+(f%2?y*g*.5:0),c*i));p.push(l)}})},b.sweep=function(h){var f=(h=null==h?{}:h).dur||1,e=A.freq(h.from||200),t=A.freq(h.to||2e3),c=null!=h.attack?h.attack:.01,p=null!=h.release?h.release:.1,d="lin"===h.curve?function(n){return e+(t-e)*n}:function(n){return e*Math.pow(t/e,n)};return G(f,function(n,e,r){for(var a,o,u,i,t,l="noise"===h.wave?m(Y(r,N(h.seed||131)),"bp",d,h.q||2):(a=new Float32Array(r),o=0,(()=>{for(var n=[],e=0,t=r;e<t;++e)o+=d((u=e)/r)/K,i=o%1,n.push(a[u]=(()=>{switch(h.wave){case"square":return i<.5?.6:-.6;case"saw":return.6*(2*i-1);case"triangle":return 1-4*Math.abs(i-.5);default:return Math.sin(2*Math.PI*i)}})())})(),a),s=0;s<r;++s)t=(u=s)/K,l[u]*=Math.min(1,t/Math.max(.001,c),(f-t)/Math.max(.001,p));x(n,e,l,h.pan)})},v=function(n){for(var e,t,r,a,o,u,i,l,s=1,h=[],f=0,c=(e=(n=null==n?"":n).split(/\s+/)).length;f<c;++f)if((r=e[f])&&"|"!==r){if(!(t=/^([^\/]+?)(?:\/(\d+))?(\.*)$/.exec(r)))throw new Error("看不懂的樂譜: "+r);for(r=(s=t[2]?4/+t[2]:s)*(1===t[3].length?1.5:2<=t[3].length?1.75:1),u=0,i=(a="-"===(o=t[1])||"r"===o||"R"===o?[]:t[1].split("+")).length;u<i;++u)if(l=a[u],!/^[A-G](#|b)?-?\d$/.test(l))throw new Error("看不懂的音名: "+l);h.push({notes:a,beats:r})}return h},A.score=function(n,e){for(var t,r,a,o,u,i,l,s=60/((e=null==e?{}:e).bpm||100),h=[],f=t=0,c=(r=v(n)).length;f<c;++f){for(o=0,i=(u=(a=r[f]).notes).length;o<i;++o)l=u[o],h.push([+(t*s).toFixed(4),l,+(a.beats*s*.92).toFixed(4)]);t+=a.beats}return h},A.score.parse=v,A.score.duration=function(n,e){return null==e&&(e={}),60*v(n).reduce(function(n,e){return n+e.beats},0)/(e.bpm||100)},b.score=function(n){var h,e,t,r,f,c,p;return e=(n=null==n?{}:n).score||"C4/4 C4 G4 G4 | A4 A4 G4/2 | F4/4 F4 E4 E4 | D4 D4 C4/2",h=A.score(e,{bpm:n.bpm}),e=A.score.duration(e,{bpm:n.bpm}),t=n.instrument||"pluck",r=null!=n.release?n.release:.1,"string"==typeof t&&A.params[t]&&A.params[t].some(function(n){return"note"===n.k})?b.melody({notes:h,instrument:t,release:r,dur:e+r+1}):(f=s(t)?t:b[t]?b[t]({}):b.pluck({}),c=A.freq(n.base||"C4"),p={},G(e+2*f.duration+.1,function(n,e,t){for(var r,a,o,u,i=[],l=0,s=(r=h).length;l<s;++l)a=(o=r[l])[0],u=A.freq(o=o[1])/c,null==p[o]&&(p[o]=W(f,u,1)),i.push(F(n,e,p[o],a,.8))}))},W=function(n,e,t){for(var r,a,o,u,i,l,s,h=[n.getChannelData(0),n.getChannelData(1)],n=n.length,f=Math.max(1,Math.round(n/e)),c=new AudioBuffer({length:f,sampleRate:K,numberOfChannels:2}),p=0;p<2;++p){for(r=p,a=new Float32Array(f),o=h[r],u=0;u<f;++u)i=(s=u)*e,l=Math.floor(i),a[s]=((o[l]||0)*(1-(s=i-l))+(o[l+1]||0)*s)*t;c.copyToChannel(a,r)}return c},X=function(a){return function(n){var e,t,r=(n=null==n?{}:n).vary?(r=N(7919*(n.seed||1)+13),e=o(n.vary,r(),r()),r=a(((t=I({},n)).seed=1009*(n.seed||1)+1+Math.floor(1e5*r()),t)),W(r,e.rate,e.gain)):a(n);return 0<(t=null!=n.reverb?n.reverb:a.reverb||0)?D(r,t,null!=n.room?n.room:.5):r}},b)b[t]=X(b[t]);for(tn in A.variants=function(n,e,t){var r,a,o,u=[];for(null==e&&(e={}),null==t&&(t=4),r=0;r<t;++r)a=r,u.push(b[n](((o=I({vary:.5},e)).seed=(e.seed||0)+a+1,o)));return u},J={click:{freq:[500,5e3,10,2e3],seed:[1,99,1,7],pan:[-1,1,.05,0]},tick:{note:{note:null,hint:"1800 Hz"},pan:[-1,1,.05,0]},pop:{from:[100,2e3,10,380],to:[100,3e3,10,900],pan:[-1,1,.05,0]},toggle:{pan:[-1,1,.05,0]},type:{seed:[1,99,1,11]},thump:{seed:[1,99,1,5],pan:[-1,1,.05,0]},snap:{seed:[1,99,1,41],pan:[-1,1,.05,0]},chime:{note:{note:"E6"},dur:[.3,4,.1,1.4],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},success:{pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},notify:{pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},error:{from:{note:"B3"},to:{note:"F3"},pan:[-1,1,.05,0]},correct:{style:{options:["pingpong","arp"],def:"pingpong"},notes:{json:null},gap:[.03,.4,.01,.2],pan:[-1,1,.05,0],reverb:[0,1,.05,.15],room:[0,1,.05,.5]},wrong:{style:{options:["buzzer","trombone"],def:"buzzer"},pitch:[60,400,1,140],pan:[-1,1,.05,0]},reveal:{notes:{json:["C6","E6","G6","C7","E7"]},gap:[.02,.2,.01,.06],seed:[1,99,1,53],pan:[-1,1,.05,0],reverb:[0,1,.05,.35],room:[0,1,.05,.5]},whoosh:{dur:[.1,2,.05,.7],from:[50,5e3,10,400],peak:[50,6e3,10,2600],to:[50,5e3,10,600],at:[.05,.95,.01,.45],q:[.3,6,.1,1.2],seed:[1,99,1,3]},swell:{dur:[.5,6,.1,2],seed:[1,99,1,23]},slide:{dur:[.1,1,.05,.3],from:[100,6e3,10,900],to:[100,6e3,10,2600],q:[.3,4,.1,.9],dir:[-1,1,.1,1],seed:[1,99,1,37]},rise:{from:{note:null,hint:"300 Hz"},to:{note:null,hint:"900 Hz"},dur:[.1,3,.05,.6],pan:[-1,1,.05,0]},fall:{from:{note:null,hint:"900 Hz"},to:{note:null,hint:"250 Hz"},dur:[.1,3,.05,.6],pan:[-1,1,.05,0]},count:{n:[2,40,1,12],dur:[.2,4,.1,1.2],ease:{options:["out","in","linear"],def:"out"},climb:[0,24,1,7],note:{note:"C6"},pan:[-1,1,.05,0]},draw:{dur:[.2,4,.1,1],rough:[0,1,.05,.5],pitch:[500,8e3,50,2500],seed:[1,99,1,43],pan:[-1,1,.05,0]},glitch:{dur:[.1,2,.05,.5],seed:[1,99,1,47]},sweep:{wave:{options:["sine","triangle","square","saw","noise"],def:"sine"},curve:{options:["exp","lin"],def:"exp"},from:{note:null,hint:"200 Hz"},to:{note:null,hint:"2000 Hz"},dur:[.1,4,.05,1],q:[.3,10,.1,2],attack:[0,1,.01,.01],release:[0,2,.01,.1],pan:[-1,1,.05,0]},tension:{note:{note:"A2"},dur:[1,12,.5,6]},heartbeat:{bpm:[40,180,1,70],dur:[1,10,.5,4],pan:[-1,1,.05,0]},clock:{bpm:[30,240,1,60],dur:[1,10,.5,4],seed:[1,99,1,59],pan:[-1,1,.05,0]},fingersnap:{tone:[2e3,5e3,10,3200],seed:[1,99,1,137],pan:[-1,1,.05,0]},huh:{pitch:[80,400,1,200],rise:[1,3,.05,1.9],dur:[.2,1,.01,.45],size:[.8,1.3,.01,1],seed:[1,99,1,151]},yay:{pitch:[100,500,1,300],dur:[.2,1.2,.01,.5],size:[.8,1.3,.01,1],seed:[1,99,1,157]},paper:{dur:[.4,2.5,.05,1.2],crisp:[0,3,.1,1],flutter:[0,1,.05,.6],seed:[1,99,1,61]},water:{n:[1,300,1,1],size:[.5,10,.1,3],rise:[0,1,.05,.05],dur:[.2,10,.1,.4],seed:[1,99,1,67]},fire:{dur:[1,10,.5,6],density:[0,4,.1,1],seed:[1,99,1,71]},steps:{surface:{options:["wood","concrete","gravel","snow","grass"],def:"wood"},gait:{options:["walk","run"],def:"walk"},n:[1,12,1,4],pace:[.2,1.2,.05,.5],seed:[1,99,1,73]},bell:{note:{note:"C5"},dur:[1,10,.5,5],pan:[-1,1,.05,0],reverb:[0,1,.05,.2],room:[0,1,.05,.5]},thunder:{dur:[2,12,.5,6],dist:[0,1,.05,.5],seed:[1,99,1,79]},wind:{dur:[1,10,.5,6],cutoff:[200,3e3,10,900],seed:[1,99,1,17]},rain:{dur:[1,10,.5,6],density:[.002,.2,.002,.02],seed:[1,99,1,19]},buzz:{dur:[.2,4,.1,1.5],freq:[80,600,1,220],pan:[-1,1,.05,0]},pluck:{note:{note:"A3"},dur:[.3,5,.1,2.5],bright:[0,1,.05,.6],slide:[0,3,.1,.6],seed:[1,99,1,13],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},guitar:{note:{note:"E3"},chord:{options:["","C","D","Dm","E","Em","F","G","A","Am"],def:""},notes:{json:null},dir:{options:["down","up"],def:"down"},strum:[0,.1,.005,.03],dur:[.5,6,.1,3],bright:[0,1,.05,.5],pos:[.05,.5,.01,.2],mute:[0,1,.05,0],seed:[1,99,1,89],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},marimba:{note:{note:"C4"},dur:[.3,4,.1,1.5],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},xylophone:{note:{note:"C5"},dur:[.2,3,.1,.8],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},vibraphone:{note:{note:"F4"},dur:[.5,6,.1,3],trem:[0,1,.05,.35],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},glockenspiel:{note:{note:"C6"},dur:[.3,4,.1,2],hard:[0,1,.05,.5],pan:[-1,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]},score:{score:{text:"C4/4 C4 G4 G4 | A4 A4 G4/2 | F4/4 F4 E4 E4 | D4 D4 C4/2"},instrument:{options:["pluck","marimba","xylophone","vibraphone","glockenspiel","guitar","chime","bell","pop","tick","kick","tom","water"],def:"pluck"},bpm:[40,240,1,100],base:{note:"C4"},release:[.02,2,.01,.1]},melody:{notes:{json:[[0,"A3"],[.4,"C4"],[.8,"E4"],[1.2,"A4",2]]},instrument:{options:["pluck","marimba","xylophone","vibraphone","glockenspiel","guitar","chime","bell"],def:"pluck"},release:[.02,2,.01,.8],bright:[0,1,.05,.6],slide:[0,3,.1,.6],reverb:[0,1,.05,0],room:[0,1,.05,.5]},drone:{notes:{json:["A1","E2","A2"]},dur:[1,12,.5,8],attack:[.1,4,.1,1.5],release:[.1,4,.1,2]},kick:{tune:[30,120,1,50],decay:[.05,1,.01,.3],punch:[0,1,.05,.5],pan:[-1,1,.05,0]},snare:{tune:[100,400,1,180],decay:[.05,.5,.01,.15],snappy:[0,1,.05,.6],seed:[1,99,1,101],pan:[-1,1,.05,0]},hihat:{open:[0,1,.05,0],tune:[.5,2,.05,1],seed:[1,99,1,103],pan:[-1,1,.05,0]},tom:{note:{note:"A2"},decay:[.1,1,.01,.35],seed:[1,99,1,107],pan:[-1,1,.05,0]},clap:{decay:[.03,.5,.01,.12],seed:[1,99,1,109]},crash:{decay:[.3,3,.05,1],tune:[.5,2,.05,1],seed:[1,99,1,113]},ride:{decay:[.3,3,.05,1],bell:[0,1,.05,0],tune:[.5,2,.05,1],seed:[1,99,1,127]},beat:{pattern:{json:{kick:"x.......x.x.....",snare:"....x.......x...",hihat:"x.x.x.x.x.x.x.x."}},bpm:[50,200,1,100],bars:[1,8,1,1],swing:[0,1,.05,0],reverb:[0,1,.05,0],room:[0,1,.05,.5]}},A.params={},J)rn=J[tn],A.params[tn]=(()=>{var n,e=[];for(t in n=rn)a=n[t],Array.isArray(a)?e.push({k:t,type:"range",min:a[0],max:a[1],step:a[2],def:a[3]}):a.options?e.push({k:t,type:"select",options:a.options,def:a.def}):"note"in a?e.push({k:t,type:"note",def:a.note,hint:a.hint}):"text"in a?e.push({k:t,type:"text",def:a.text}):e.push({k:t,type:"json",def:a.json});return e})();an={C:0,D:2,E:4,F:5,G:7,A:9,B:11},on=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],un=function(n,e){var t;return"number"==typeof n?Math.round(n*Math.pow(2,e/12)):(t=/^([A-G])(#|b)?(-?\d)$/.exec(n))?(t=12*(+t[3]+1)+an[t[1]]+("#"===t[2]?1:"b"===t[2]?-1:0)+e,on[(t%12+12)%12]+(Math.floor(t/12)-1)):n},A.mutate=function(n,e,t){var r,a,o,u,i,l,s,h,f,c;for(null==e&&(e={}),r=null!=(t=null==t?{}:t).amount?t.amount:.5,a=null!=t.seed?N(t.seed):Math.random,o=I({},e),u=0,l=(i=A.params[n]||[]).length;u<l;++u)if("seed"!==(h=(s=i[u]).k)&&"pan"!==h&&"reverb"!==h&&"room"!==h&&"vary"!==h)switch(f=null!=e[s.k]?e[s.k]:s.def,s.type){case"range":c=f+w(a)*r*(s.max-s.min)*.15,(c=+(Math.round(Math.max(s.min,Math.min(s.max,c))/s.step)*s.step).toFixed(4))===s.def?delete o[s.k]:o[s.k]=c;break;case"select":a()<2*r&&(o[s.k]=s.options[Math.floor(a()*s.options.length)]),o[s.k]===s.def&&delete o[s.k];break;case"note":c=Math.round(w(a)*r*2),null!=f&&c&&(o[s.k]=un(f,c))}return o.seed=1+Math.floor(99*a()),0<r&&(o.vary=+(.5*r).toFixed(2)),o},"undefined"!=typeof module&&module.exports&&(module.exports=A),void 0!==window&&(window.sfx=A)}function I(n,e){var t,r={}.hasOwnProperty;for(t in e)r.call(e,t)&&(n[t]=e[t]);return n}}.call(this);
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"zbryikt","name":"@plotdb/sfx","version":"0.0.3","description":"audio runtime for deterministic animation: a timeline synced to animation time, imperative playback, and procedural synthesized sounds","license":"MIT","main":"index.min.js","browser":"index.min.js","homepage":"https://github.com/plotdb/sfx","repository":{"type":"git","url":"git+https://github.com/plotdb/sfx.git"},"scripts":{"build":"./build","start":"npx server -r web -o true","deploy":"./deploy-web"},"keywords":["audio","sound","sfx","webaudio","animation","lotion"],"devDependencies":{"@loadingio/bootstrap.ext":"^0.0.12","@loadingio/ldquery":"^3.0.7","@plotdb/guides":"github:plotdb/guides","@zbryikt/deploy":"^0.0.4","@zbryikt/template":"^2.5.0","bootstrap":"^4.6.1","fedep":"^1.9.0","ldview":"^1.7.2","livescript":"^1.6.0","uglify-js":"^3.19.3"},"frontendDependencies":{"root":"web/static/assets/lib","modules":["@loadingio/bootstrap.ext","@loadingio/ldquery",{"name":"bootstrap","dir":"dist"},"ldview"]}}
1
+ {"author":"zbryikt","name":"@plotdb/sfx","version":"0.0.4","description":"audio runtime for deterministic animation: a timeline synced to animation time, imperative playback, and procedural synthesized sounds","license":"MIT","main":"index.min.js","browser":"index.min.js","homepage":"https://github.com/plotdb/sfx","repository":{"type":"git","url":"git+https://github.com/plotdb/sfx.git"},"scripts":{"build":"./build","start":"npx server -r web -o true","deploy":"./deploy-web"},"keywords":["audio","sound","sfx","webaudio","animation","lotion"],"devDependencies":{"@loadingio/bootstrap.ext":"^0.0.12","@loadingio/ldquery":"^3.0.7","@plotdb/guides":"github:plotdb/guides","@zbryikt/deploy":"^0.0.4","@zbryikt/template":"^2.5.0","bootstrap":"^4.6.1","fedep":"^1.9.0","ldview":"^1.7.2","livescript":"^1.6.0","uglify-js":"^3.19.3"},"frontendDependencies":{"root":"web/static/assets/lib","modules":["@loadingio/bootstrap.ext","@loadingio/ldquery",{"name":"bootstrap","dir":"dist"},"ldview"]}}