@plotdb/sfx 0.0.0-stage → 0.0.2

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/index.min.js ADDED
@@ -0,0 +1 @@
1
+ !function(){var K,b,i,h,f,c,M,g,s,a,o,k,n,C,N,R,I,Q,d,Y,Z,x,p,A,nn,T,q,F,D,G,e,t,tn,E,m,r,V,B,v,l,u,O,U,S,w,y,z,j,_,L;if("undefined"==typeof window||!window.sfx){for(L in i=null,b={buffers:{},urls:{},items:[],voices:[],errors:[],external:!(K=48e3),playing:!1,rate:1,ctx:function(){var n,t,r,a,e;if(!i)for(n=window.AudioContext||window.webkitAudioContext,i=new n,b.master=i.createGain(),b.master.connect(i.destination),b.buses={},t=0,a=(r=["music","sfx","voice"]).length;t<a;++t)b.buses[e=r[t]]=i.createGain(),b.buses[e].connect(b.master);return i}},h=function(n){return b.ctx(),b.buses[n]||b.buses.sfx},b.resume=function(){var n=b.ctx();return"suspended"===n.state?n.resume():Promise.resolve()},b.volume=function(n,t,r){var a;if(null==r&&(r=.2),b.ctx(),n="master"===n?b.master:b.buses[n])return a=i.currentTime,n.gain.cancelScheduledValues(a),n.gain.setValueAtTime(n.gain.value,a),n.gain.linearRampToValueAtTime(t,a+Math.max(.01,r))},f=function(n){return!(!n||"object"!=typeof n||"function"!=typeof n.getChannelData||!n.sampleRate)},b.pending=0,b.load=function(a){return null==a&&(a={}),b.pending+=Object.keys(a).length,Promise.all(Object.keys(a).map(function(t){var r=a[t],n=f(r)?Promise.resolve(r):r&&r.then?r:fetch(r).then(function(n){if(n.ok)return n.arrayBuffer();throw new Error(r+": HTTP "+n.status)}).then(function(r){return new Promise(function(n,t){return b.ctx().decodeAudioData(r,n,t)})});return"string"==typeof r&&(b.urls[t]=r),n.then(function(n){return b.buffers[t]=n}).catch(function(n){return b.errors.push("load "+t+": "+(n.message||n))}).finally(function(){return b.pending--})})).then(function(){return b.buffers})},c=new WeakMap,b.peak=function(n){var t,r,a,e,o,u,i,l,h,f,s;if(!c.has(n)){for(t=n.getChannelData(0),r=Math.max(1,Math.round(.003*n.sampleRate)),o=e=0,u=(a=new Float32Array(Math.ceil(t.length/r))).length;o<u;++o){for(l=0,h=(i=o)*r,f=Math.min(t.length,(i+1)*r);h<f;++h)l+=t[s=h]*t[s];a[i]=Math.sqrt(l/r),a[i]>e&&(e=a[i])}for(i=0;i<a.length-1&&a[i]<.8*e;)i++;for(;i<a.length-1&&a[i+1]>a[i];)i++;c.set(n,i*r/n.sampleRate)}return c.get(n)},M=function(n,t){var r,a,e,o,u,i,l;return null==t&&(t={}),(a=f(n)?n:b.buffers[n])?((r=(e=b.ctx()).createBufferSource()).buffer=a,r.loop=!!t.loop,r.playbackRate.value=t.rate||1,a=e.createGain(),r.connect(a),a.connect(h(t.bus||"sfx")),e=t.when||e.currentTime,o=null!=t.gain?t.gain:1,t.fadeIn?(a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(o,e+t.fadeIn)):a.gain.setValueAtTime(o,e),u=t.offset||0,null!=t.duration?(i=e+t.duration,t.fadeOut&&(a.gain.setValueAtTime(o,Math.max(e,i-t.fadeOut)),a.gain.linearRampToValueAtTime(0,i)),r.start(e,u,r.loop?void 0:t.duration*(t.rate||1)),r.loop&&r.stop(i)):r.start(e,u),l={name:n,src:r,gain:a,level:o,ended:!1},r.onended=function(){return l.ended=!0,b.voices=b.voices.filter(function(n){return n!==l})},b.voices.push(l),l):(b.errors.push("unknown sound: "+n),null)},g=function(n,t){var r,a,e,o,u,i,l;return null==t&&(t={}),r=b.ctx(),(a=new Audio).crossOrigin="anonymous",a.preload="auto",a.preservesPitch=!0,a.loop=!!t.loop,a.src=b.urls[n],a.playbackRate=t.rate||1,e=r.createGain(),r.createMediaElementSource(a).connect(e),e.connect(h(t.bus||"music")),o=t.when||r.currentTime,u=null!=t.gain?t.gain:1,t.fadeIn?(e.gain.setValueAtTime(0,o),e.gain.linearRampToValueAtTime(u,o+t.fadeIn)):e.gain.setValueAtTime(u,o),null!=t.duration&&t.fadeOut&&(l=o+t.duration,e.gain.setValueAtTime(u,Math.max(o,l-t.fadeOut)),e.gain.linearRampToValueAtTime(0,l)),i={name:n,media:a,gain:e,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})},n=Math.max(0,o-r.currentTime),i.timers.push(setTimeout(l,1e3*n)),null!=t.duration&&i.timers.push(setTimeout(function(){return s(i,.02)},1e3*(n+t.duration))),a.onended=function(){return i.ended=!0,b.voices=b.voices.filter(function(n){return n!==i})},b.voices.push(i),i},s=function(t,n){var r,a,e,o,u;if(null==n&&(n=.05),t&&!t.ended)if(r=i.currentTime,t.gain.gain.cancelScheduledValues(r),t.gain.gain.setValueAtTime(t.gain.gain.value,r),t.gain.gain.linearRampToValueAtTime(0,r+n),t.media){for(a=0,o=(e=t.timers).length;a<o;++a)u=e[a],clearTimeout(u);t.ended=!0,setTimeout(function(){return t.media.pause(),t.media.removeAttribute("src"),t.media.load()},1e3*(n+.02)),b.voices=b.voices.filter(function(n){return n!==t})}else try{return t.src.stop(r+n+.01)}catch(n){return n}},b.play=function(n,t){var a;return null==t&&(t={}),b.resume(),(a=M(n,t))?(a.manual=!0,{stop:function(n){return s(a,n)},fade:function(n,t){var r;return null==t&&(t=.5),r=i.currentTime,a.gain.gain.cancelScheduledValues(r),a.gain.gain.setValueAtTime(a.gain.gain.value,r),a.gain.gain.linearRampToValueAtTime(n,r+t)},voice:a}):null},b.stop=function(n,t){var r,a,e,o,u=[];for(null==t&&(t={}),r=0,e=(a=b.voices).length;r<e;++r)!(o=a[r]).manual||n&&o.name!==n||u.push(s(o,t.fade||.05));return u},a=null,b.music=function(n,t){var r=null!=(t=null==t?{}:t).fade?t.fade:1;return a&&a.stop(r),a=null,n?a=b.play(n,P({loop:!0,bus:"music",fadeIn:r},t)):null},b.timeline=function(n){return b.items=(n=null==n?[]:n).map(function(n){return P({},n)}),b.playing&&b.transport({playing:!0,t:b.t||0,force:!0}),b},b.cues=function(n,t){return null==t&&(t={}),b.timeline((n=null==n?[]:n).map(function(n){return P({t:n.t,sound:n.sfx||n.sound,gain:n.gain},t)}))},o=function(){for(var n,t,r=[],a=0,e=(n=b.voices).length;a<e;++a)(t=n[a]).manual||r.push(s(t,.03));return r},k=function(n){for(var t,r,a,e,o,u,i,l,h=[],f=b.ctx().currentTime+.02,s=b.rate||1,c=0,p=(t=b.items).length;c<p;++c)r=t[c],(a=b.buffers[r.sound])&&(e=r.bus||"sfx",i="peak"===(r.align||("sfx"===e?"peak":"start"))?b.peak(a):0,(i=r.t-i)+(o=r.loop?(null!=r.until?r.until:1e9)-i:r.duration||a.duration/(r.rate||1))<=n||(u=Math.max(0,n-i),(l=P({},r)).bus=e,l.when=f+Math.max(0,i-n)/s,l.duration=(o-u)/s,l.rate=(r.rate||1)*s,(i=l).offset=(r.offset||0)+(r.loop?u%a.duration:u*(r.rate||1)),0<u&&r.fadeIn&&(i.fadeIn=0),1===s||"voice"!==e&&"music"!==e||!b.urls[r.sound]?h.push(M(a,i)):h.push(g(r.sound,i))));return h},b.transport=function(n){var n=null!=n?n:{},t=n.playing,r=null!=(r=n.t)?r:0,a=n.force,e=n.from,n=n.rate;return e&&"player"!==e&&(b.external=!0),null!=n&&0<+n&&+n!==b.rate&&(b.rate=+n,a=!0),e=b.playing,b.playing=!!t,b.t=r,b.tAt=i&&i.currentTime||0,t?(b.resume(),!e||a?(o(),k(r)):void 0):o()},n=function(n){var t,r,a;if(n&&n.player&&!n.player.__sound)return t=n.player.prototype,r=t.play,a=t.seek,t.play=function(n){return null==n&&(n=!0),n=r.apply(this,arguments),b.external||b.transport({playing:this.playing,t:this.t}),n},t.seek=function(n){var t=this.t,r=a.apply(this,arguments);return!b.external&&this.started&&(this.playing&&(this.t<t-.01||.3<this.t-t)&&b.transport({playing:!0,t:this.t,force:!0}),!this.playing)&&b.playing&&b.transport({playing:!1,t:this.t}),r},n.player.__sound=!0},window.lotion?n(window.lotion):document.addEventListener("DOMContentLoaded",function(){return n(window.lotion)}),b.render=function(n,t){for(var r,a,e,o,u,i,l,h,t=(t=null==t?{}:t).sampleRate||K,f=new OfflineAudioContext(2,Math.ceil(n*t),t),s=0,c=(r=b.items).length;s<c;++s)a=r[s],(h=b.buffers[a.sound])&&(e="peak"===(a.align||("sfx"===(a.bus||"sfx")?"peak":"start"))?b.peak(h):0,e=a.t-e,(o=f.createBufferSource()).buffer=h,o.loop=!!a.loop,o.playbackRate.value=a.rate||1,u=f.createGain(),i=null!=a.gain?a.gain:1,u.gain.value=i,o.connect(u),u.connect(f.destination),l=Math.max(0,e),a.fadeIn&&(u.gain.setValueAtTime(0,l),u.gain.linearRampToValueAtTime(i,l+a.fadeIn)),h=a.loop?(null!=a.until?a.until:n)-e:a.duration||h.duration/(a.rate||1),a.fadeOut&&(u.gain.setValueAtTime(i,Math.max(l,e+h-a.fadeOut)),u.gain.linearRampToValueAtTime(0,e+h)),o.start(l,(a.offset||0)+Math.max(0,-e)),o.stop(e+h));return f.startRendering()},b.wav=function(n){var t,r,a,e,o,u,i,l,h=n.numberOfChannels,f=n.length,s=new DataView(new ArrayBuffer(44+f*h*2)),c=function(n,t){for(var r,a=[],e=0,o=t.length;e<o;++e)r=e,a.push(s.setUint8(n+r,t.charCodeAt(r)));return a};for(c(0,"RIFF"),s.setUint32(4,36+f*h*2,!0),c(8,"WAVE"),c(12,"fmt "),s.setUint32(16,16,!0),s.setUint16(20,1,!0),s.setUint16(22,h,!0),s.setUint32(24,n.sampleRate,!0),s.setUint32(28,n.sampleRate*h*2,!0),s.setUint16(32,2*h,!0),s.setUint16(34,16,!0),c(36,"data"),s.setUint32(40,f*h*2,!0),r=[],a=0;a<h;++a)e=a,r.push(n.getChannelData(e));for(t=r,o=44,a=0;a<f;++a)for(u=a,i=0;i<h;++i)e=i,l=Math.max(-1,Math.min(1,t[e][u])),s.setInt16(o,l<0?32768*l:32767*l,!0),o+=2;return new Blob([s],{type:"audio/wav"})},b.report=function(){return{loaded:Object.keys(b.buffers).map(function(n){return{name:n,duration:+b.buffers[n].duration.toFixed(2),peak:+b.peak(b.buffers[n]).toFixed(3)}}),timeline:b.items.length,playing:b.playing,context:i?i.state:null,errors:b.errors.slice(-10)}},C={C:-9,D:-7,E:-5,F:-4,G:-2,A:0,B:2},b.freq=function(n){return"number"==typeof n?n:(n=/^([A-G])(#|b)?(-?\d)$/.exec(n))?(n=C[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}},R=function(n,t,r){var a,e,o,u,i,l,h;for(null==r&&(r={}),a=Math.max(1,Math.round(n*K)),t(e=new Float32Array(a),o=new Float32Array(a),a),i=u=0;i<a;++i)l=i,u=Math.max(u,Math.abs(e[l]),Math.abs(o[l]));for(h=0<u?(r.peak||.9)/u:1,n=new AudioBuffer({length:a,sampleRate:K,numberOfChannels:2}),i=0;i<a;++i)e[l=i]*=h,o[l]*=h;return n.copyToChannel(e,0),n.copyToChannel(o,1),n},I=function(n,t,r){var t=2*Math.PI*Math.min(t,23520)/K,a=Math.cos(t),e=Math.sin(t)/(2*r);switch(n){case"lp":return[(1-a)/2,1-a,(1-a)/2,1+e,-2*a,1-e];case"hp":return[(1+a)/2,-(1+a),(1+a)/2,1+e,-2*a,1-e];default:return[e,0,-e,1+e,-2*a,1-e]}},Q=function(n,t,r,a){for(var e,o,u,i,l,h,f,s=(t=I(t,r,a=null==a?.707:a))[0],c=t[1],p=t[2],M=t[3],d=t[4],m=t[5],v=e=o=u=i=0,g=n.length;v<g;++v)f=(s*(h=n[l=v])+c*e+p*o-d*u-m*i)/M,o=e,e=h,i=u,n[l]=u=f;return n},d=function(n,t,r,a){var e,o,u,i,l,h,f,s,c,p,M,d,m,v,g,w,y,A,x;for(null==a&&(a=.707),e=n.length,h=o=u=i=l=0;h<e;h+=32)for(c=(s=I(t,r((f=h)/e),a))[0],p=s[1],M=s[2],d=s[3],m=s[4],v=s[5],g=f,w=Math.min(e,f+32);g<w;++g)x=(c*(A=n[y=g])+p*o+M*u-m*i-v*l)/d,u=o,o=A,l=i,n[y]=i=x;return n},Y=function(n,t){for(var r=new Float32Array(n),a=0;a<n;++a)r[a]=2*t()-1;return r},Z=function(n,t,r){return n<t?n/t:Math.exp(-(n-t)/r)},x=function(n,t,r,a,e){var o,u,i,l,h,f=[];for(null==a&&(a=0),null==e&&(e=1),o=Math.cos((a+1)*Math.PI/4)*e,u=Math.sin((a+1)*Math.PI/4)*e,i=0,l=r.length;i<l;++i)n[h=i]+=r[h]*o,f.push(t[h]+=r[h]*u);return f},p=b.synth={click:function(l){return null==l&&(l={}),R(.05,function(n,t,r){for(var a,e=N(l.seed||7),o=Q(Y(r,e),"hp",2500),u=new Float32Array(r),i=0;i<r;++i)u[a=i]=o[a]*Z(a=a/K,5e-4,.004)+.5*Math.sin(2*Math.PI*(l.freq||2e3)*a)*Z(a,5e-4,.012);x(n,t,u,l.pan)})},tick:function(i){return null==i&&(i={}),R(.06,function(n,t,r){for(var a,e=b.freq(i.note||i.freq||1800),o=new Float32Array(r),u=0;u<r;++u)a=u/K,o[u]=Math.sin(2*Math.PI*e*a)*Z(a,.001,.018);x(n,t,o,i.pan)})},pop:function(s){return null==s&&(s={}),R(.15,function(n,t,r){for(var a,e,o,u=s.from||380,i=s.to||900,l=new Float32Array(r),h=0,f=0;f<r;++f)e=(a=f)/K,o=u+(i-u)*Math.min(1,e/.03),h+=2*Math.PI*o/K,l[a]=Math.sin(h)*Z(e,.002,.04);x(n,t,l,s.pan)})},toggle:function(u){return null==u&&(u={}),R(.12,function(n,t,r){for(var a,e=new Float32Array(r),o=0;o<r;++o)a=o/K,e[o]=Math.sin(2*Math.PI*1500*a)*Z(a,.001,.012)+(.05<a?Math.sin(2*Math.PI*2200*(a-.05))*Z(a-.05,.001,.015):0);x(n,t,e,u.pan)})},chime:function(u){var i,l;return null==u&&(u={}),i=b.freq(u.note||"E6"),l=u.dur||1.4,R(l,function(n,t,r){for(var a,e=new Float32Array(r),o=0;o<r;++o)a=o/K,e[o]=(Math.sin(2*Math.PI*i*a)+.5*Math.sin(2*Math.PI*i*2.01*a)*Math.exp(2*-a)+.25*Math.sin(2*Math.PI*i*3.02*a)*Math.exp(4*-a))*Z(a,.003,l/4);x(n,t,e,u.pan)})},success:function(c){return null==c&&(c={}),R(.9,function(n,t,r){for(var a,e,o,u,i,l,h=new Float32Array(r),f=0,s=(a=[[0,"C6"],[.09,"E6"],[.18,"G6"]]).length;f<s;++f)for(o=(e=a[f])[0],u=b.freq(e[1]),i=Math.round(o*K);i<r;++i)l=i/K-o,h[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,h,c.pan)})},notify:function(c){return null==c&&(c={}),R(.7,function(n,t,r){for(var a,e,o,u,i,l,h=new Float32Array(r),f=0,s=(a=[[0,"A5"],[.12,"E6"]]).length;f<s;++f)for(o=(e=a[f])[0],u=b.freq(e[1]),i=Math.round(o*K);i<r;++i)l=i/K-o,h[i]+=Math.sin(2*Math.PI*u*l)*Z(l,.004,.18);x(n,t,h,c.pan)})},whoosh:function(h){var n=(h=null==h?{}:h).dur||.7,f=h.from||400,s=h.peak||2600,c=h.to||600,p=h.at||.45,M=h.q||1.2;return R(n,function(n,t,r){for(var a,e,o=[],u=N(h.seed||3),i=d(Y(r,u),"bp",function(n){return n<p?f+n/p*(s-f):s+(n-p)/(1-p)*(c-s)},M),l=0;l<r;++l)i[a=l]*=(e=a/r)<p?Math.sin(Math.PI/2*e/p):Math.cos(Math.PI/2*(e-p)/(1-p));for(l=0;l<r;++l)n[a=l]=i[a]*(1-a/r*.6),o.push(t[a]=i[a]*(.4+a/r*.6))})},type:function(n){return p.click({freq:1200+600*N((n=null==n?{}:n).seed||11)(),seed:n.seed})},thump:function(f){return null==f&&(f={}),R(.35,function(n,t,r){for(var a,e,o=N(f.seed||5),u=Q(Y(r,o),"bp",1800,.8),i=new Float32Array(r),l=0,h=0;h<r;++h)e=(a=h)/K,l+=2*Math.PI*(70+60*Math.exp(-e/.04))/K,i[a]=Math.sin(l)*Z(e,.002,.09)+.35*u[a]*Z(e,.001,.03);x(n,t,i,f.pan)})},pluck:function(g){var w,n,y,A;return null==g&&(g={}),w=b.freq(g.note||"A3"),n=g.dur||2.5,y=null!=g.bright?g.bright:.6,A=null!=g.slide?g.slide:.6,R(n,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c=N(g.seed||13),p=K/w,M=Math.ceil(2*p)+4,d=Y(M,c),m=0,v=Math.round(4*(1-y));m<v;++m)for(a=m,e=1;e<M;++e)d[o=e]=(d[o]+d[o-1])/2;for(u=new Float32Array(r),i=new Float32Array(r+M),m=0;m<M;++m)i[o=m]=d[o];for(l=Math.pow(.996,220/w),v=r+(m=M);m<v;++m)h=(a=m)-p*Math.pow(2,A*Math.exp(-(a-M)/K/.09)/12),f=i[s=Math.floor(h)]*(1-(h=h-s))+i[s+1]*h,s=i[s-1]*(1-h)+i[s]*h,i[a]=l*(f+s)/2,u[a-M]=i[a];for(m=0;m<r;++m)u[o=m]*=Math.min(1,(r-o)/(.3*K));x(n,t,u,g.pan)})},drone:function(n){var M=((n=null==n?{}:n).notes||["A1","E2","A2"]).map(b.freq),d=n.dur||8,m=n.attack||1.5,v=n.release||2;return R(d,function(n,t,r){for(var a,e,o,u,i,l,h,f,s=[],c=0,p=(a=M).length;c<p;++c){for(o=a[e=c],u=new Float32Array(r),i=0;i<r;++i)h=(l=i)/K,f=Math.min(1,h/m,(d-h)/v),u[l]=(Math.sin(2*Math.PI*o*h)+.3*Math.sin(2*Math.PI*o*1.003*2*h))*f;s.push(x(n,t,u,.4*(e-(M.length-1)/2),1/M.length))}})},wind:function(h){var f=(h=null==h?{}:h).dur||6;return R(f,function(n,t,r){for(var a,e,o=[],u=N(h.seed||17),i=Q(Q(Y(r,u),"hp",150),"lp",h.cutoff||900),l=0;l<r;++l)e=(a=l)/K,e=(.6+.4*Math.sin(2*Math.PI*.13*e)*Math.sin(2*Math.PI*.071*e+1))*Math.min(1,e,f-e),n[a]=i[a]*e,o.push(t[a]=i[(a+2400)%r]*e)})},rain:function(f){var n=(f=null==f?{}:f).dur||6,s=f.density||.02;return R(n,function(n,t,r){for(var a,e,o=[],u=N(f.seed||19),i=Q(Y(r,u),"bp",4e3,.5),l=new Float32Array(r),h=0;h<r;++h)a=h,u()<.05*s&&(l[a]=2*u()-1);for(l=Q(Q(l,"hp",2500),"lp",9e3),h=0;h<r;++h)a=h,e=Math.min(1,a/K,(r-a)/K),n[a]=(.15*i[a]+3*l[a])*e,o.push(t[a]=(.15*i[(a+1200)%r]+3*l[(a+777)%r])*e)})},buzz:function(f){var s=(f=null==f?{}:f).dur||1.5,c=b.freq(f.freq||220);return R(s,function(n,t,r){for(var a,e,o,u,i=new Float32Array(r),l=0,h=0;h<r;++h)e=(a=h)/K,u=2*((l+=(o=c*(1+.03*Math.sin(2*Math.PI*5.3*e)+.015*Math.sin(2*Math.PI*1.7*e)))/K)-Math.floor(l+.5)),i[a]=u*(.75+.25*Math.sin(2*Math.PI*o*.5*e))*Math.min(1,e/.08,(s-e)/.15);Q(i,"lp",2200),Q(i,"bp",3*c,.6),x(n,t,i,f.pan)})},swell:function(l){var n=(l=null==l?{}:l).dur||2;return R(n,function(n,t,r){for(var a,e=[],o=N(l.seed||23),u=d(Y(r,o),"bp",function(n){return 300+3e3*n*n},.9),i=0;i<r;++i)a=i,e.push(n[a]=t[a]=u[a]*(a=a/r)*a)})},melody:function(a){var f,n=(a=null==a?{}:a).notes||[],t=a.dur||Math.max.apply(Math,n.map(function(n){return n[0]+(n[2]||1.5)}))+1,e=a.instrument||"pluck";return p[e]||(e="pluck"),f=n.map(function(n,t){var r="pluck"===e?{bright:a.bright,slide:a.slide}:{};return[n,p[e](P({note:n[1],dur:(n[2]||1.5)+.8,seed:31+t},r))]}),R(t,function(n,t,r){for(var a,e,o,u,i=[],l=0,h=(a=f).length;l<h;++l)u=(o=(e=a[l])[0])[0],i.push(A(n,t,e[1],u,o[3]||.8))})}},A=function(n,t,r,a,e){var o,u,i,l,h,f,s=[];for(null==e&&(e=1),o=r.getChannelData(0),u=r.getChannelData(1),i=Math.round(a*K),l=Math.max(0,-i),h=Math.min(o.length,n.length-i);l<h;++l)n[i+(f=l)]+=o[f]*e,s.push(t[i+f]+=u[f]*e);return s},nn=function(n,t,r,a,e,o){var u,i,l,h,f,s,c,p;if(null==o&&(o=.001),!(21600<=r))for(u=Math.round(t*K),i=2*Math.PI*r/K,l=Math.max(0,u),h=n.length;l<h&&(p=a*Z(c=(s=(f=l)-u)/K,o,e),!(o<c&&p<1e-5));++l)n[f]+=p*Math.sin(i*s);return n},T=function(n,t){var r,a,e;for(null==t&&(t=.02),r=Math.min(n.length,Math.round(t*K)),a=0;a<r;++a)e=a,n[n.length-1-e]*=e/r;return n},q=function(n,t,r){for(var a,e,o,u,i=Math.max(1,Math.round(t*K)),l=[],h=0,f=Math.ceil(n/i)+1;h<=f;++h)e=h,l.push(r());for(a=l,o=new Float32Array(n),h=0;h<n;++h)u=h,e=Math.floor(u/i),o[u]=a[e]*(1-(u=u%i/i))+a[e+1]*u;return o},F=function(n,t,r,a){var e,o,u,i,l,h,f,s;for(null==a&&(a=[1]),e=new Float32Array(n),u=o=0;u<n;++u)for(i=u,o+=2*Math.PI*t*Math.pow(r/t,i/n)/K,l=0,h=a.length;l<h;++l)s=a[f=l],e[i]+=s*Math.sin(o*(f+1));return e},D=[1116,1188,1277,1356,1422,1491,1557,1617],G=[556,441,341,225],e=function(n,T,q){var C,E,V;return null==T&&(T=.3),null==q&&(q=.5),C=K/44100,E=[n.getChannelData(0),n.getChannelData(1)],V=n.length,R(n.duration+.4+3*q,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d,m,v,g,w,y,A,x,b=[],I=.7+.27*q,F=new Float32Array(r),P=0,k=V;P<k;++P)F[a=P]=.015*(E[0][a]+E[1][a]);for(P=0,o=(e=[n,t]).length;P<o;++P){for(i=e[u=P],l=[],h=new Float32Array(r),f=0,c=(s=D).length;f<c;++f)for(p=s[f],M=Math.round((p+23*u)*C),d=new Float32Array(M),g=v=m=0;g<r;++g)a=g,w=d[m],d[m]=F[a]+(v=.7*w+.3*v)*I,m=(m+1)%M,h[a]+=w;for(f=0,c=(s=G).length;f<c;++f)for(p=s[f],M=Math.round((p+23*u)*C),d=new Float32Array(M),g=m=0;g<r;++g)a=g,y=d[m],A=h[a],d[m]=A+.5*y,h[a]=y-A,m=(m+1)%M;for(x=E[u],f=0;f<r;++f)a=f,l.push(i[a]=(a<V?x[a]*(1-.5*T):0)+h[a]*T*3);b.push(l)}})},b.reverb=function(n,t){return e(n,null!=(t=null==t?{}:t).mix?t.mix:.3,null!=t.room?t.room:.5)},p.slide=function(h){var n=(h=null==h?{}:h).dur||.3,f=h.from||900,s=h.to||2600,c=h.q||.9,p=null!=h.dir?h.dir:1;return R(n,function(n,t,r){for(var a,e,o,u=[],i=d(Y(r,N(h.seed||37)),"bp",function(n){return f*Math.pow(s/f,n)},c),l=0;l<r;++l)e=(o=(a=l)/r)<.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[a]=i[a]*e*Math.cos((1+o)*Math.PI/4),u.push(t[a]=i[a]*e*Math.sin((1+o)*Math.PI/4))})},t=function(u,n,t){var i=u.dur||.6,l=b.freq(u.from||n),h=b.freq(u.to||t);return R(i,function(n,t,r){for(var a,e=F(r,l,h,[1,.25,.08]),o=0;o<r;++o)a=o/K,e[o]*=Math.min(1,a/.02)*Math.min(1,(i-a)/(.35*i));x(n,t,e,u.pan)})},p.rise=function(n){return t(n=null==n?{}:n,300,900)},p.fall=function(n){return t(n=null==n?{}:n,900,250)},p.count=function(h){var f,s,c,p,M;return null==h&&(h={}),f=Math.max(2,h.n||12),s=h.dur||1.2,c=b.freq(h.note||"C6"),p=null!=h.climb?h.climb:7,M=(()=>{switch(h.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)}}})(),R(s+.2,function(n,t,r){for(var a,e,o,u=new Float32Array(r),i=0,l=f;i<l;++i)a=i/(f-1),e=i===f-1,o=c*Math.pow(2,p*a/12),nn(u,s*M(a),o,e?1:.6,e?.09:.02),e&&nn(u,s,2*o,.3,.06);x(n,t,u,h.pan)})},p.snap=function(i){return null==i&&(i={}),R(.1,function(n,t,r){for(var a,e=Q(Y(r,N(i.seed||41)),"lp",6e3),o=new Float32Array(r),u=0;u<r;++u)o[a=u]=.8*e[a]*Z(a=a/K,3e-4,.002)+.6*Math.sin(2*Math.PI*1400*a)*Z(a,5e-4,.01)+Math.sin(2*Math.PI*160*a)*Z(a,.001,.025);x(n,t,o,i.pan)})},p.draw=function(s){var c=(s=null==s?{}:s).dur||1,p=null!=s.rough?s.rough:.5;return R(c,function(n,t,r){for(var a,e,o,u=N(s.seed||43),i=Q(Q(Y(r,u),"bp",s.pitch||2500,.8),"hp",600),l=q(r,.06,u),h=q(r,.004,u),f=0;f<r;++f)e=(a=f)/K,o=h[a]*h[a],i[a]*=(.3+.7*l[a])*(1-p+p*o*2)*Math.min(1,e/.03,(c-e)/.05);x(n,t,i,s.pan)})},p.glitch=function(g){var n=(g=null==g?{}:g).dur||.5;return R(n,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d=[],m=N(g.seed||47),v=0;v<r;){for(a=Math.round((.015+.05*m())*K),e=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),h=Math.sin((1+i)*Math.PI/4),f=0,s=v,c=Math.min(r,v+a);s<c;++s)p=s,M=e<.4?0<Math.sin(2*Math.PI*o*((p-v)/K))?.6:-.6:e<.8?(p-v)%u==0?f=2*m()-1:f:0,n[p]=M*l,t[p]=M*h;d.push(v+=a)}})},p.reveal=function(s){var c=((s=null==s?{}:s).notes||["C6","E6","G6","C7","E7"]).map(b.freq),p=null!=s.gap?s.gap:.06;return R(1.6,function(n,t,r){for(var a,e,o,u,i,l=new Float32Array(r),h=0,f=(a=c).length;h<f;++h)o=a[e=h],nn(l,e*p,o,1,.5),nn(l,e*p,2.76*o,.25,.15);for(u=Q(Y(r,N(s.seed||53)),"hp",6e3),h=0;h<r;++h)l[i=h]+=.12*u[i]*Z(i/K,.25,.3);x(n,t,l,s.pan)})},p.reveal.reverb=.35,p.error=function(f){var s;return null==f&&(f={}),s=[b.freq(f.from||"B3"),b.freq(f.to||"F3")],R(.5,function(n,t,r){for(var a,e,o,u,i=new Float32Array(r),l=0,h=(a=s).length;l<h;++l)for(o=a[e=l],u=1;u<=7;u+=2)nn(i,.16*e,o*u,1/u,.12,.005);T(Q(i,"lp",2e3)),x(n,t,i,f.pan)})},p.tension=function(n){var m=(n=null==n?{}:n).dur||6,v=b.freq(n.note||"A2");return R(m,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p=[],M=0,d=(a=[1,Math.pow(2,1/12),Math.pow(2,.5),2]).length;M<d;++M){for(o=a[e=M],u=new Float32Array(r),h=l=i=0;h<r;++h)c=(s=(f=h)/K)/m,l+=2*Math.PI*(3+5*c)/K,i+=2*Math.PI*v*o/K,u[f]=(Math.sin(i)+.3*Math.sin(2*i)+.15*Math.sin(3*i))*(1-.35*(.5+.5*Math.sin(l+e)))*Math.pow(c,1.5)*Math.min(1,(m-s)/.3);p.push(x(n,t,u,.4*(e-1.5),.5))}})},p.heartbeat=function(g){var w=(g=null==g?{}:g).dur||4,y=60/(g.bpm||70);return R(w,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d,m=new Float32Array(r),v=.05;v<w-.2;){for(o=(e=[[a=0,75,45,1],[Math.min(.3,.35*y),85,55,.7]]).length;a<o;++a)for(u=(f=e[a])[0],i=f[1],l=f[2],h=f[3],f=Math.round(12e3),s=Math.round((v+u)*K),c=F(f,i,l),p=0,M=Math.min(f,r-s);p<M;++p)m[s+(d=p)]+=c[d]*h*Z(d/K,.008,.06);v+=y}x(n,t,Q(m,"lp",300),g.pan)})},p.clock=function(c){var p=(c=null==c?{}:c).dur||4,M=60/(c.bpm||60);return R(p,function(n,t,r){for(var a,e,o,u,i,l=new Float32Array(r),h=Q(Y(r,N(c.seed||59)),"hp",2e3),f=0,s=.02;s<p-.05;){for(nn(l,s,a=f%2?2400:3200,.6,.012),nn(l,s,1.5*a,.3,.006),e=Math.round(s*K),o=0,u=Math.min(Math.round(96),r-e);o<u;++o)l[e+(i=o)]+=.8*h[e+i];s+=M,f++}x(n,t,l,c.pan)})},tn=function(n,t,r,a,e,o,u,i,l){var h,f,s,c,p,M,d,m,v,g=[];for(null==l&&(l=0),h=Math.max(4,Math.round(e*K)),f=Y(h,r),Q(f,"bp",o,u),s=Math.round(a*K),c=Math.cos((l+1)*Math.PI/4)*i,p=Math.sin((l+1)*Math.PI/4)*i,M=0,d=Math.min(h,n.length-s);M<d;++M)m=M,v=Math.exp(-4*m/h)*Math.min(1,m/8),n[s+m]+=f[m]*v*c,g.push(t[s+m]+=f[m]*v*p);return g},E=function(n,t){for(var r,a=0;a<50;++a)if(r=n(),n()<t(r))return r;return n()},p.paper=function(x){var b=(x=null==x?{}:x).dur||1.2,I=null!=x.crisp?x.crisp:1,F=null!=x.flutter?x.flutter:.6,P=.2*b,k=.8*b;return R(b,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M=[],d=N(x.seed||61),m=function(n){return n<.5*P||.02+k<n?0:Math.pow(Math.min(1,(n-.5*P)/(k-.5*P)),.7)},v=q(r,.035,d),g=q(r,.09,d),w=0,y=(a=[n,t]).length;w<y;++w)for(e=a[w],o=V(r,d),u=Q(Y(r,d),"bp",4e3,.7),i=0;i<r;++i)f=1-F+F*(.7*v[l=i]+.6*g[l]),f=m(h=l/K)*f,s=h<P?.25*Math.sin(Math.PI/2*h/P):h<k?.25*Math.max(0,1-(h-P)/P):0,c=k<=h?1.1*Z(h-k,.006,.07)+.25*Math.max(0,1-(h-k)/(b-k)):0,e[l]=o[l]*(.8*f+c)+u[l]*s;for(w=0,p=Math.round(50*b*I);w<p;++w)h=.5*P+(k-.5*P)*E(d,A),tn(n,t,d,h,2e-4+8e-4*d(),1500*Math.pow(5,d()),.5,8*(.1+d()*d()),.6*d()-.3);for(w=0,y=(a=[n,t]).length;w<y;++w)e=a[w],Q(e,"hp",150),Q(e,"lp",7500,.6),M.push(T(e,.05));function A(n){return.3+.7*n}})},m=function(n,t,r,a,e,o,u,i){var l,h,f,s,c,p,M,d,m,v,g=[];for(null==i&&(i=1),h=(.043*(l=3e3/a)+.0014*Math.pow(l,1.5))*i,f=Math.min(Math.round(6/h*K),n.length-Math.round(r*K)),s=Math.round(r*K),c=Math.cos((u+1)*Math.PI/4)*e,p=Math.sin((u+1)*Math.PI/4)*e,d=M=0;d<f;++d)v=(m=d)/K,M+=2*Math.PI*l*(1+o*h*v)/K,v=Math.sin(M)*Math.exp(-h*v)*Math.min(1,m/24),n[s+m]+=v*c,g.push(t[s+m]+=v*p);return g},p.water=function(h){var f=(h=null==h?{}:h).n||1,s=null!=h.rise?h.rise:1===f?.05:.1,c=h.size||(h.freq?3e3/b.freq(h.freq):1===f?3:2.5),p=h.dur||(1===f?.4:Math.max(1,.04*f));return R(p,function(n,t,r){var a,e,o,u,i=[],l=N(h.seed||67);if(1===f)tn(n,t,l,.005,.001,3e3,.8,.25),m(n,t,.007,c,1,s,0,.4),m(n,t,.012,.4*c,.12,s,.1);else for(a=0,e=f;a<e;++a)o=c*(.25+1.75*Math.pow(l(),2.5)),u=l()*(p-.1),i.push(m(n,t,u,o,Math.pow(o/c,.7)*(.3+.7*l()),s*(.5+l()),1.4*l()-.7))})},p.fire=function(A){var x=(A=null==A?{}:A).dur||6,b=null!=A.density?A.density:1;return R(x,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d=[],m=N(A.seed||71),v=Q(Y(r,m),"lp",300),g=Q(Y(r,m),"hp",3e3),w=q(r,.25,m),y=0;y<r;++y)e=(.4+.6*w[a=y])*Math.min(1,a/K/.3,(r-a)/K/.3),n[a]=t[a]=(.5*v[a]+.04*g[a])*e;for(o=Math.round(10*x*b),y=0;y<o;++y){for(u=[],i=Math.round(m()*(r-480)),l=m()*m()*1.5,h=Math.round((5e-4+.003*m())*K),f=1.6*m()-.8,s=Math.cos((1+f)*Math.PI/4),c=Math.sin((1+f)*Math.PI/4),p=0;p<h;++p)a=p,M=(2*m()-1)*l*(1-a/h),n[i+a]+=M*s,u.push(t[i+a]+=M*c);d.push(u)}})},r={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}},p.steps=function(W){var H="run"===(W=null==W?{}:W).gait,X=W.n||4,$=W.pace||(H?.3:.5),J=r[W.surface]||r.wood;return R(X*$+.35,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d,m,v,g,w,y,A,x,b,I,F,P,k,B,O,U,T,S,q,C,E,V,z,R,j=[],D=N(W.seed||73),_=Q(Y(r,D),"lp",260),G=0,L=X;G<L;++G){for(e=[],o=.02+(a=G)*$+(D()-.5)*(H?.01:.02),u=(H?1.15:.85)+.3*D(),i=a%2?.12:-.12,l=Math.cos((1+i)*Math.PI/4),h=Math.sin((1+i)*Math.PI/4),f=H?.025+.015*D():.09+.04*D(),s=0,p=(c=H?[[0,.8*u],[f,u]]:[[0,u],[f,.55*u]]).length;s<p;++s){for(d=(M=c[s])[0],m=M[1],v=Math.round((o+d)*K),g=Math.min(Math.round(7200),r-v),w=new Float32Array(g),y=0;y<g;++y)w[A=y]=2.5*_[v+A]*J.thud*Z(x=A/K,.003,.025)+.5*J.thud*Math.sin(2*Math.PI*(75+20*m)*x)*Z(x,.002,.03);for(y=0,b=(M=J.tones||[]).length;y<b;++y)I=M[y],nn(w,0,I*(.95+.1*D()),.12,.035);for(y=0,b=(M=J.click||[]).length;y<b;++y)for(P=(F=M[y])[0],k=F[1],B=F[2],O=F[3],U=Q(Y(g,D),"bp",P*(.85+.3*D()),k),T=0;T<g;++T)w[A=T]+=U[A]*O*Z(A/K,4e-4,B);for(y=0;y<g;++y)n[v+(A=y)]+=w[A]*m*l,t[v+A]+=w[A]*m*h}if(S=(J.scuff||.1)*(H?2.5:1),J.scuff||H)for(v=Math.round((o+(H?.03+f:.02))*K),q=Q(Y(Math.round((H?.07:.12)*K),D),"bp",2800,.8),s=0,C=Math.min(q.length,r-v);s<C;++s)A=s,E=Math.sin(Math.PI*A/q.length)*S*u*.3,n[v+A]+=q[A]*E*l,t[v+A]+=q[A]*E*h;if(J.grains)for(s=0,C=Math.round(J.grains*u);s<C;++s)d=D()<.6?.07*Math.pow(D(),1.5):f+.09*Math.pow(D(),1.5),V=(c=J.band)[0],z=c[1],R=(c=J.len)[0],e.push(tn(n,t,D,o+d,R+(c[1]-R)*D(),V*Math.pow(z/V,D()),J.q,.8*(.15+D()*D())*u,i+.3*D()-.15));j.push(e)}})},p.bell=function(f){var s,c;return null==f&&(f={}),s=b.freq(f.note||"C5"),c=f.dur||5,R(c,function(n,t,r){for(var a,e,o,u,i=new Float32Array(r),l=0,h=(a=[[.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<h;++l)e=(u=a[l])[0],nn(i,0,s*e,o=u[1],(u=u[2])*c*.45,.002),nn(i,0,s*e*1.0015,.5*o,u*c*.45,.002);x(n,t,T(i,.1),f.pan)})},p.bell.reverb=.2,V=function(n,t){for(var r,a,e,o,u,i,l,h,f=new Float32Array(n),s=r=a=e=o=u=i=0,c=0;c<n;++c)l=c,h=2*t()-1,f[l]=.11*((s=.99886*s+.0555179*h)+(r=.99332*r+.0750759*h)+(a=.969*a+.153852*h)+(e=.8665*e+.3104856*h)+(o=.55*o+.5329522*h)+(u=-.7616*u-.016898*h)+i+.5362*h),i=.115926*h;return f},p.thunder=function(F){var P=(F=null==F?{}:F).dur||6,k=null!=F.dist?F.dist:.5,T=1-k;return R(P,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d,m,v,g,w=[],y=N(F.seed||79),A=.02+.4*k,x=[[A,1]].concat((()=>{for(var n=[],t=0,r=Math.round(2+5*T);t<r;++t)n.push([A+.7*Math.pow(y(),1.5),.4+.6*y()]);return n})()),b=[],I=0;I<5;++I)b.push([A+.3+y()*P*.5,.3+.7*y()]);for(a=b,e=new Float32Array(r),o=new Float32Array(r),I=0;I<r;++I){for(i=(u=I)/K,l=0,h=x.length;l<h;++l)s=(f=x[l])[0],c=f[1],s<i&&(e[u]+=c*Z(i-s,.004,.1+.25*k));for(l=0,h=a.length;l<h;++l)s=(f=a[l])[0],c=f[1],s<i&&(o[u]+=c*Z(i-s,.15+.4*k,.7+k));p=Math.min(1,(P-i)/.6),e[u]*=p,o[u]*=p}for(M=400+11e3*T*T,I=0,h=(f=[n,t]).length;I<h;++I)for(d=f[I],m=Q(Q(V(r,y),"lp",M),"hp",30),v=Q(Q(Y(r,y),"lp",140),"lp",140),l=0;l<r;++l)d[u=l]=m[u]*(e[u]*(.4+.6*T)+.8*o[u]*T)+v[u]*o[u]*(.6+.4*k)*3+v[u]*e[u]*2;for(I=0,g=Math.round(300*T*T);I<g;++I)s=A+1.2*Math.pow(y(),2),w.push(tn(n,t,y,s,3e-4+.002*y(),800+5e3*y(),1,(.1+y()*y())*T*.8,1.4*y()-.7))})},p.fingersnap=function(c){return null==c&&(c={}),R(.12,function(n,t,r){for(var a,e,o=N(c.seed||137),u=c.tone||3200,i=new Float32Array(r),l=Y(r,o),h=Q(Float32Array.from(l),"hp",5e3),f=Q(Float32Array.from(l),"bp",u,5),s=0;s<r;++s)i[a=s]=2.5*h[a]*Z(e=a/K,1e-4,.0015)+2.2*f[a]*Z(e,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)})},B=function(n,t,r,a){for(var e,o,u,i,l,h,f,s,c,p,M,d,m,v,g,w,y,A,x,b=new Float32Array(n),I=0,F=0,P=[],k=0;k<n;k+=32)e=k,P.push(a(e/n));for(k=0;k<n;++k){if(u=P[(o=k)>>5],F=.999*F+.002*(t()-.5),I=(I+=(i=u.f0*(1+.006*Math.sin(2*Math.PI*5.2*o/K)+F))/K)-Math.floor(I),(l=0)<u.voice)for(h=Math.min(40,Math.floor(5e3/i)),f=1;f<=h;++f)s=f,l+=Math.sin(2*Math.PI*s*I)/s;c=(2*t()-1)*u.asp*(0<u.voice?.6+.4*Math.sin(2*Math.PI*I):1),b[o]=(l*u.voice*.35+c)*u.amp}for(k=0;k<4;++k)for(p=k,f=M=d=0;f<n;f+=32)for(m=P[(e=f)>>5].F[p]*r,g=-(v=Math.exp(-Math.PI*(60+.06*m)/K))*v,c=1-(w=2*v*Math.cos(2*Math.PI*m/K))-g,y=e,A=Math.min(n,e+32);y<A;++y)x=c*b[o=y]+w*M+g*d,d=M,b[o]=M=x;return b},v=function(n,t,r){return n+(t-n)*r},l=function(n){return n*n*(3-2*n)},p.huh=function(e){var n=(e=null==e?{}:e).dur||.45,o=e.pitch||200,u=e.rise||1.9,i=e.size||1,l=.08/n;return R(n,function(n,t,r){var a=N(e.seed||151),r=B(r,a,i,function(n){var t=Math.max(0,Math.min(1,(n-l)/.08)),r=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*v(1,u,Math.pow(r,1.6)),voice:t,asp:.35*(1-t)+.06,amp:n,F:[v(700,850,t),1250,2700,3600]}});T(r,.03),x(n,t,r,e.pan)})},p.yay=function(e){var n=(e=null==e?{}:e).dur||.5,o=e.pitch||300,u=e.size||1;return R(n,function(n,t,r){var a=N(e.seed||157),r=B(r,a,u,function(n){var t=l(Math.min(1,n/.25)),r=Math.min(1,n/.04)*(.7<n?Math.max(0,1-(n-.7)/.3):1),n=n<.35?v(.88,1.12,l(n/.35)):v(1.12,.85,l((n-.35)/.65));return{f0:o*n,voice:1,asp:.05,amp:r,F:[v(320,660,t),v(2600,1850,t),v(3200,2650,t),3800]}});T(r,.03),x(n,t,r,e.pan)})},p.correct=function(c){var p="arp"===(c=null==c?{}:c).style,M=(c.notes||(p?["C6","E6","G6","C7"]:["B5","G5"])).map(b.freq),d=c.gap||(p?.07:.2);return R(M.length*d+1.1,function(n,t,r){for(var a,e,o,u,i,l,h=new Float32Array(r),f=0,s=(a=M).length;f<s;++f)o=a[e=f],u=e===M.length-1,nn(h,e*d,o,1,u=u?.45:p?.15:.25,.002),nn(h,e*d,2*o,.25,.4*u,.002),nn(h,e*d,3.01*o,.08,.25*u,.002);if(p)for(i=Q(Y(r,N(c.seed||163)),"hp",7e3),f=0;f<r;++f)h[l=f]+=.08*i[l]*Z(l/K-M.length*d*.6,.1,.25)*(l/K>M.length*d*.6-.1?1:0);x(n,t,T(h,.05),c.pan)})},p.correct.reverb=.15,p.wrong=function(s){var c,h;return"trombone"===(s=null==s?{}:s).style?(c=["D4","C#4","C4","B3"].map(b.freq),R(2.2,function(n,t,r){for(var a,e,o,u,i,l=new Float32Array(r),h=0,f=0;f<r;++f)e=(u=(a=f)/K)-.42*(u=Math.min(3,Math.floor(u/.42))),o=(h+=c[u]*(3===u?1+.025*Math.sin(2*Math.PI*5.5*Math.max(0,e-.15)):1)*(1-.03*Math.min(1,e/.3))/K)%1,u=u<3?Math.min(1,e/.04)*Math.max(0,1-Math.max(0,e-.3)/.08):Math.min(1,e/.04)*Math.max(0,1-e/.95),l[a]=(2*o-1)*u;for(Q(l,"lp",1400,.9),i=Q(Float32Array.from(l),"bp",1200,2),f=0;f<r;++f)l[a=f]+=.5*i[a];x(n,t,T(l,.05),s.pan)})):(h=s.pitch||140,R(.75,function(n,t,r){for(var a,e,o=new Float32Array(r),u=0,i=0,l=0;l<r;++l)e=(e=(a=l)/K)<.13?Math.min(1,e/.005)*Math.min(1,(.13-e)/.01):.19<e?Math.min(1,(e-.19)/.005)*Math.min(1,(.72-e)/.03):0,o[a]=.5*(((u+=h/K)%1<.5?1:-1)+((i+=1.012*h/K)%1<.5?1:-1))*Math.max(0,e);Q(o,"lp",2500),x(n,t,o,s.pan)}))},u=function(p,M){var d=b.freq(p.note||M.note),n=p.dur||M.dur,m=null!=p.hard?p.hard:.5,v=M.decay*Math.pow(b.freq(M.note)/d,.4);return R(n,function(n,t,r){for(var a,e,o,u,i,l,h,f=new Float32Array(r),s=0,c=(a=M.ratios).length;s<c;++s)o=a[e=s],nn(f,0,d*o,M.amps[e]*(e?.3+1.4*m:1),v/(1+e*M.damp),.0015);if(M.trem)for(u=null!=p.trem?p.trem:.35,s=0;s<r;++s)f[i=s]*=1-u*(.5+.5*Math.sin(2*Math.PI*5.5*i/K));for(s=0,h=(l=Q(Y(Math.round(384),N(p.seed||83)),"lp",2e3+6e3*m)).length;s<h;++s)f[i=s]+=.4*l[i]*m*(1-i/l.length);x(n,t,T(f),p.pan)})},p.marimba=function(n){return u(n=null==n?{}:n,{note:"C4",dur:1.5,ratios:[1,3.93,9.24],amps:[1,.3,.1],decay:.45,damp:2.5})},p.xylophone=function(n){return u(n=null==n?{}:n,{note:"C5",dur:.8,ratios:[1,3,6.1],amps:[1,.5,.2],decay:.2,damp:1.5})},p.vibraphone=function(n){return u(n=null==n?{}:n,{note:"F4",dur:3,ratios:[1,4,10],amps:[1,.25,.08],decay:1.4,damp:3,trem:!0})},p.glockenspiel=function(n){return u(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})},O={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"]},U=function(n,t,r,a){for(var e,o,u,i,l,h,f,s,c,p,M,d=null!=r.bright?r.bright:.5,m=r.mute||0,v=.5+.45*d*(1-m),g=K/n-(1-v),w=Math.ceil(g)+3,y=Y(w,a),A=Math.max(1,Math.round(g*(r.pos||.2))),x=w-1;A<=x;--x)y[e=x]-=y[e-A];for(o=.15+.8*d*(1-.7*m),x=u=0;x<w;++x)u=o*y[e=x]+(1-o)*u,y[e]=u;for(a=(r.sustain||4)*(1-.92*m),i=Math.pow(.001,1/(n*a)),l=new Float32Array(t+w),x=0;x<w;++x)l[e=x]=y[e];for(h=new Float32Array(t),f=t+(x=w);x<f;++x)c=(s=x)-g,p=l[M=Math.floor(c)]*(1-(c=c-M))+l[M+1]*c,M=l[M-1]*(1-c)+l[M]*c,l[s]=i*(v*p+(1-v)*M),h[s-w]=l[s];return h},p.guitar=function(y){var n,A,x=(y=null==y?{}:y).notes||O[y.chord]||[y.note||"E3"];return"up"===y.dir&&(x=x.slice().reverse()),n=y.dur||3,A=null!=y.strum?y.strum:.03,R(n,function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p,M,d,m=[],v=N(y.seed||89),g=0,w=(a=x).length;g<w;++g){for(p=a[e=g],o=[],u=Math.round(e*A*K),i=U(b.freq(p),r-u,y,v),l=Q(Float32Array.from(i),"bp",105,1.5),h=Q(Float32Array.from(i),"bp",220,2),f=0,s=i.length;f<s;++f)i[c=f]=i[c]+.6*l[c]+.3*h[c];for(T(i,.05),p=(y.pan||0)+.3*(e/Math.max(1,x.length-1)-.5),M=Math.cos((p+1)*Math.PI/4),d=Math.sin((p+1)*Math.PI/4),f=0,s=i.length;f<s;++f)n[u+(c=f)]+=i[c]*M,o.push(t[u+c]+=i[c]*d);m.push(o)}})},p.kick=function(h){var f=(h=null==h?{}:h).tune||50,s=h.decay||.3,c=null!=h.punch?h.punch:.5;return R(2*s+.05,function(n,t,r){for(var a,e,o=new Float32Array(r),u=0,i=Q(Y(r,N(h.seed||97)),"lp",4e3),l=0;l<r;++l)e=(a=l)/K,u+=2*Math.PI*(f+2*f*Math.exp(-e/.03))/K,o[a]=Math.tanh((Math.sin(u)*Z(e,.001,s)+i[a]*c*.6*Z(e,2e-4,.003))*(1+2*c));x(n,t,T(o),h.pan)})},p.snare=function(i){var l=(i=null==i?{}:i).tune||180,h=i.decay||.15,f=null!=i.snappy?i.snappy:.6;return R(2*h+.05,function(n,t,r){var a,e,o,u=new Float32Array(r);for(nn(u,0,l,.8,.05),nn(u,0,1.83*l,.4,.035),a=Q(Q(Y(r,N(i.seed||101)),"hp",1200),"lp",9e3),e=0;e<r;++e)u[o=e]+=a[o]*f*1.2*Z(o/K,.001,.8*h);x(n,t,T(u),i.pan)})},S=function(n,t){var r,a,e,o,u,i,l;for(null==t&&(t=1),r=new Float32Array(n),a=0,o=(e=[205.3,304.4,369.6,522.7,540,800]).length;a<o;++a)for(u=e[a]*t/K,l=i=0;l<n;++l)r[l]+=(i+=u)%1<.5?1:-1;return r},p.hihat=function(l){var h,n=(l=null==l?{}:l).open||0;return R(2.5*(h=.04+.5*n)+.02,function(n,t,r){for(var a,e=S(r,l.tune||1),o=Y(r,N(l.seed||103)),u=new Float32Array(r),i=0;i<r;++i)u[a=i]=.15*e[a]+.5*o[a];for(Q(Q(u,"hp",7e3),"bp",1e4,.8),i=0;i<r;++i)u[a=i]*=Z(a/K,8e-4,h);x(n,t,T(u),l.pan)})},p.tom=function(h){var f,s;return null==h&&(h={}),f=b.freq(h.note||"A2"),s=h.decay||.35,R(2*s+.05,function(n,t,r){for(var a,e,o=new Float32Array(r),u=0,i=Q(Y(r,N(h.seed||107)),"bp",4*f,1),l=0;l<r;++l)e=(a=l)/K,u+=2*Math.PI*f*(1+.5*Math.exp(-e/.04))/K,o[a]=Math.sin(u)*Z(e,.002,s)+.3*i[a]*Z(e,.001,.02);x(n,t,T(o),h.pan)})},p.clap=function(p){var M=(p=null==p?{}:p).decay||.12;return R(2.5*M+.06,function(n,t,r){for(var a,e,o,u,i,l,h,f=Q(Y(r,N(p.seed||109)),"bp",1100,1.2),s=new Float32Array(r),c=0;c<r;++c){for(e=(a=c)/K,l=(i=[u=o=0,.011,.022]).length;u<l;++u)(h=i[u])<=e&&(o+=Z(e-h,5e-4,.006));.031<=e&&(o+=Z(e-.031,.001,M)),s[a]=f[a]*o}n.set(s),t.set(Q(Float32Array.from(s),"bp",1300,1.5))})},w=function(n,t,r,a,e,o){var u,i,l,h,f,s,c,p,M,d,m;if(null==o&&(o=5e-4),!(21600<=r)){for(u=Math.round(t*K),i=Math.exp(-1/(e*K)),t=2*Math.PI*r/K,l=Math.cos(t),h=Math.sin(t),f=1,s=0,c=a,p=Math.max(1,Math.round(o*K)),M=u,d=n.length;M<d&&(n[m=M]+=s*c*((m=m-u)<p?m/p:1),m=f*l-s*h,s=f*h+s*l,f=m,!((c*=i)<1e-5));++M);return[]}},y=function(n){return Math.sqrt(-2*Math.log(n()+1e-12))*Math.cos(2*Math.PI*n())},p.crash=function(d){var m=(d=null==d?{}:d).decay||1,v=d.tune||1;return R(2.4*m+.1,function(n,t,r){for(var a,e,o,u,i,l,h,f,s=[],c=N(d.seed||113),p=0,M=(a=[n,t]).length;p<M;++p){for(e=a[p],o=0;o<260;++o)u=Math.max(1200,Math.min(14e3,4200*Math.pow(2,.55*y(c))))*v,w(e,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)w(e,0,350*v*Math.pow(3,c()),(.3+c())/14,.5*m*(.6+.8*c()),.003);for(i=Q(Y(r,c),"lp",9e3),l=Q(Y(r,c),"bp",4200*v,.8),o=0;o<r;++o)e[h=o]+=.4*i[h]*Z(f=h/K,5e-4,.008)+.1*l[h]*Z(f,.03,.3*m);Q(e,"hp",250),s.push(T(e,.1))}})},p.ride=function(d){var m=(d=null==d?{}:d).decay||1,v=d.tune||1,g=d.bell||0;return R(4*m+.1,function(n,t,r){for(var a,e,o,u,i,l,h,f=[],s=N(d.seed||127),c=Q(Y(r,s),"bp",4800*v,.7),p=0,M=(a=[n,t]).length;p<M;++p){for(e=a[p],o=0,u=Math.round(2400);o<u;++o)e[i=o]+=.9*c[i]*Z(i/K,3e-4,.006);for(o=0;o<40;++o)w(e,0,(5e3+4e3*s())*v,.04,.015+.03*s());for(o=0;o<180;++o)l=Math.max(700,Math.min(1e4,2600*Math.pow(2,.55*y(s))))*v,w(e,0,l,(.4+s())/80,.9*m*Math.pow(l/2600/v,-.3)*(.6+.8*s()),.001);for(h=Q(Y(r,s),"bp",3e3*v,.7),o=0;o<r;++o)e[i=o]+=.05*h[i]*Z(i/K,.002,.35*m);if(g)for(o=0;o<14;++o)l=2800*v*Math.pow(2,.4*y(s)),w(e,0,l,g*(.5+s())/6,.5*m*(.6+.8*s()),.001);Q(e,"hp",400),f.push(T(e,.1))}})},z={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]},j={X:1,x:.75,o:.4},p.beat=function(n){var m,t,r,a,e,o,u,v,g=60/((n=null==n?{}:n).bpm||100)/4,i=n.bars||1,w=n.swing||0,l=n.pattern||{kick:"x...x...x...x...",snare:"....x.......x...",hihat:"x.x.x.x.x.x.x.x."},y=[],h=m=0;for(t in l)u=l[t],r=(u=Array.isArray(u)?u:[u])[0],a=u[1]||{},o=(u=z[t]||[t,{},.8])[0],e=u[2],p[o]&&(o=p[o](P(P({},u[1]),a)),h=Math.max(h,o.duration),u=(r||"").replace(/[\s|]/g,""),m=Math.max(m,u.length),y.push({b:o,s:u,g:null!=a.gain?a.gain:e}));return v=m*i,R(Math.max(.1,v*g+h),function(n,t,r){for(var a,e,o,u,i,l,h,f,s,c,p=[],M=0,d=(a=y).length;M<d;++M){for(o=(e=a[M]).b,u=e.s,i=e.g,l=[],h=0,f=v;h<f;++h)(c=j[u[(s=h)%m]])&&l.push(A(n,t,o,s*g+(s%2?w*g*.5:0),c*i));p.push(l)}})},p.sweep=function(f){var s=(f=null==f?{}:f).dur||1,t=b.freq(f.from||200),r=b.freq(f.to||2e3),c=null!=f.attack?f.attack:.01,p=null!=f.release?f.release:.1,M="lin"===f.curve?function(n){return t+(r-t)*n}:function(n){return t*Math.pow(r/t,n)};return R(s,function(n,t,a){for(var e,o,u,i,r,l="noise"===f.wave?d(Y(a,N(f.seed||131)),"bp",M,f.q||2):(e=new Float32Array(a),o=0,(()=>{for(var n=[],t=0,r=a;t<r;++t)o+=M((u=t)/a)/K,i=o%1,n.push(e[u]=(()=>{switch(f.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)}})())})(),e),h=0;h<a;++h)r=(u=h)/K,l[u]*=Math.min(1,r/Math.max(.001,c),(s-r)/Math.max(.001,p));x(n,t,l,f.pan)})},_=function(a){return function(n){var t,r=a(n=null==n?{}:n);return 0<(t=null!=n.reverb?n.reverb:a.reverb||0)?e(r,t,null!=n.room?n.room:.5):r}},p)p[L]=_(p[L]);"undefined"!=typeof module&&module.exports&&(module.exports=b),void 0!==window&&(window.sfx=b)}function P(n,t){var r,a={}.hasOwnProperty;for(r in t)a.call(t,r)&&(n[r]=t[r]);return n}}.call(this);
package/package.json CHANGED
@@ -1,6 +1 @@
1
- {
2
- "name": "@plotdb/sfx",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
1
+ {"author":"zbryikt","name":"@plotdb/sfx","version":"0.0.2","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"},"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/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"]}}