-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathwaapisim.min.js
81 lines (81 loc) · 40.2 KB
/
waapisim.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
(function(n,r){n.AudioContext=n.AudioContext||n.webkitAudioContext||n.mozAudioContext;if("undefined"===typeof x)var x=0;"undefined"===typeof Float32Array&&(Float32Array=function(a){if(a instanceof Array)return a;var e=Array(a);e.subarray=function(b,c){return this.slice(b,c)};e.set=function(b,c){for(var a=0;a<b.length;++a)e[c+a]=b[a]};return e});"undefined"===typeof Uint8Array&&(Uint8Array=function(a){if(a instanceof Array)return a;var e=Array(a);e.subarray=function(b,c){return this.slice(b,c)};e.set=
function(b,c){for(var a=0;a<b.length;++a)e[c+a]=b[a]};return e});waapisimDebug="undefined"!==typeof x&&x?function(a){console.log(a)}:function(){};"undefined"!==typeof n.AudioContext&&"undefined"===typeof n.AudioContext.prototype.createGain&&(n.AudioContext.prototype.createScriptProcessor=n.AudioContext.prototype.createJavaScriptNode,n.AudioContext.prototype.createGain=function(){var a=n.AudioContext.prototype.createGainNode.call(this);a._gain=a.gain;a.gain=a._gain;a.gain.setTargetAtTime=a._gain.setTargetValueAtTime;
return a},n.AudioContext.prototype.createDelay=function(){var a=n.AudioContext.prototype.createDelayNode.call(this);a._delayTime=a.delayTime;a.delayTime=a._delayTime;a.delayTime.setTargetAtTime=a._delayTime.setTargetValueAtTime;return a},n.AudioContext.prototype._createOscillator=n.AudioContext.prototype.createOscillator,n.AudioContext.prototype.createOscillator=function(){var a=n.AudioContext.prototype._createOscillator.call(this);a._frequency=a.frequency;a.frequency=a._frequency;a.frequency.setTargetAtTime=
a._frequency.setTargetValueAtTime;a._detune=a.detune;a.detune=a._detune;a.detune.setTargetAtTime=a._detune.setTargetValueAtTime;a.start=a.noteOn;a.stop=a.noteOff;return a},n.AudioContext.prototype._createBufferSource=n.AudioContext.prototype.createBufferSource,n.AudioContext.prototype.createBufferSource=function(){var a=n.AudioContext.prototype._createBufferSource.call(this);a._playbackRate=a.playbackRate;a.playbackRate=a._playbackRate;a.playbackRate.setTargetAtTime=a._playbackRate.setTargetValueAtTime;
a.start=function(e,b,c){void 0===b?a.noteOn(e):a.noteGrainOn(e,b,c)};a.stop=a.noteOff;return a},n.AudioContext.prototype._createBiquadFilter=n.AudioContext.prototype.createBiquadFilter,n.AudioContext.prototype.createBiquadFilter=function(){var a=n.AudioContext.prototype._createBiquadFilter.call(this);a._frequency=a.frequency;a.frequency=a._frequency;a.frequency.setTargetAtTime=a._frequency.setTargetValueAtTime;a._Q=a.Q;a.Q=a._Q;a.Q.setTargetAtTime=a._Q.setTargetValueAtTime;a._gain=a.gain;a.gain=a._gain;
a.gain.setTargetAtTime=a._gain.setTargetValueAtTime;return a},n.AudioContext.prototype._createDynamicsCompressor=n.AudioContext.prototype.createDynamicsCompressor,n.AudioContext.prototype.createDynamicsCompressor=function(){var a=n.AudioContext.prototype._createDynamicsCompressor.call(this);a._threshold=a.threshold;a.threshold=a._threshold;a.threshold.setTargetAtTime=a._threshold.setTargetValueAtTime;a._knee=a.knee;a.knee=a._knee;a.knee.setTargetAtTime=a._knee.setTargetValueAtTime;a._ratio=a.ratio;
a.ratio=a._ratio;a.ratio.setTargetAtTime=a._ratio.setTargetValueAtTime;a._attack=a.attack;a.attack=a._attack;a.attack.setTargetAtTime=a._attack.setTargetValueAtTime;return a});if("undefined"!==typeof waapisimForceSim&&waapisimForceSim||"undefined"!==typeof n.AudioContext&&"undefined"===typeof n.AudioContext.prototype.createOscillator&&("undefined"===typeof waapisimForceSimWhenLackOsc||"undefined"!==typeof waapisimForceSimWhenLackOsc&&waapisimForceSimWhenLackOsc)||"undefined"===typeof n.AudioContext){waapisimSampleRate=
44100;waapisimAudioIf=0;waapisimBufSize=1024;waapisimFlashBufSize=3072;"undefined"!==typeof Audio&&(waapisimAudio=new Audio,"undefined"!==typeof waapisimAudio.mozSetup&&(waapisimAudioIf=1));0===waapisimAudioIf?(waapisimOutBufSize=waapisimFlashBufSize,waapisimOutBuf=Array(2*waapisimOutBufSize)):(waapisimOutBufSize=waapisimBufSize,waapisimOutBuf=new Float32Array(2*waapisimOutBufSize),waapisimAudio.mozSetup(2,waapisimSampleRate));for(var x=waapisimOutBuf.length,p=0;p<x;++p)waapisimOutBuf[p]=0;waapisimNodeId=
waapisimWrittenpos=0;waapisimContexts=[];waapisimAudioBuffer=function(a,e,b){var c;if("number"==typeof a)for(e|=0,this.sampleRate=b,this.length=e,this.duration=e/this.sampleRate,this.numberOfChannels=a,this.buf=[],b=0;2>b;++b)for(this.buf[b]=new Float32Array(e),c=0;c<e;++c)this.buf[b][c]=0;else if(this.sampleRate=44100,this.buf=[],this.buf[0]=new Float32Array(0),this.buf[1]=new Float32Array(0),this.Get4BStr=function(c,b){return String.fromCharCode(c[b],c[b+1],c[b+2],c[b+3])},this.GetDw=function(c,
b){return c[b]+(c[b+1]<<8)+(c[b+2]<<16)+(c[b+3]<<24)},this.GetWd=function(c,b){return c[b]+(c[b+1]<<8)},a=new Uint8Array(a),b=this.Get4BStr(a,0),this.length=0,"RIFF"==b){var f=this.GetDw(a,4)+8,d=1,g=16;if("WAVE"==this.Get4BStr(a,8))for(var m=12;m<f;){b=this.Get4BStr(a,m);var l=this.GetDw(a,m+4);"fmt "==b&&(this.GetWd(a,m+8),d=this.GetWd(a,m+10),this.sampleRate=this.GetDw(a,m+12),g=this.GetWd(a,m+22));if("data"==b){this.length=l/d/(g/8)|0;this.buf[0]=new Float32Array(this.length);this.buf[1]=new Float32Array(this.length);
this.numberOfChannels=d;this.duration=this.length/this.sampleRate;var h,k;for(c=b=0;b<this.length;++b)24==g?2==d?(h=a[m+c+9]+(a[m+c+10]<<8),k=a[m+c+12]+(a[m+c+13]<<8),32768<=h&&(h-=65536),32768<=k&&(k-=65536),!0===e&&(h=k=.5*(h+k)),this.buf[0][b]=h/32768,this.buf[1][b]=k/32768,c+=6):(v=a[m+c+9]+(a[m+c+10]<<8),32768<=v&&(v-=65536),this.buf[0][b]=this.buf[1][b]=v/32768,c+=3):16==g?2==d?(h=a[m+c+8]+(a[m+c+9]<<8),k=a[m+c+10]+(a[m+c+11]<<8),32768<=h&&(h-=65536),32768<=k&&(k-=65536),!0===e&&(h=k=.5*(h+
k)),this.buf[0][b]=h/32768,this.buf[1][b]=k/32768,c+=4):(v=a[m+c+8]+(a[m+c+9]<<8),32768<=v&&(v-=65536),this.buf[0][b]=this.buf[1][b]=v/32768,c+=2):2==d?(h=a[m+c+8]/128-1,k=a[m+c+9]/128-1,!0===e&&(h=k=.5*(h+k)),this.buf[0][b]=h,this.buf[1][b]=k,c+=2):(this.buf[0][b]=this.buf[1][b]=a[m+c+8]/128-1,c++)}m+=l+8}}this.getChannelData=function(c){return this.buf[c]}};waapisimDummybuf=new waapisimAudioBuffer(2,waapisimBufSize,waapisimSampleRate);waapisimSetupOutBuf=function(a){var e=waapisimContexts.length,
b,c,f,d;b=2*(a+waapisimBufSize);for(c=2*a;c<b;c+=2)waapisimOutBuf[c]=waapisimOutBuf[c+1]=0;for(f=0;f<e;++f){for(var g=waapisimContexts[f];;){b=g._Nodes.length;for(c=0;c<b;++c)if(d=g._Nodes[c],3==d.playbackState){d.disconnect();g._UnregisterNode(d);break}if(c==b)break}b=g._Nodes.length;for(c=0;c<b;++c)g._Nodes[c]._Process();d=g.destination;if(0<d._nodein[0].from.length)for(b=d._nodein[0].inbuf.buf,c=0;c<waapisimBufSize;++c)waapisimOutBuf[2*(c+a)]+=b[0][c],waapisimOutBuf[2*(c+a)+1]+=b[1][c];d._nodein[0].NodeClear()}};
waapisimUpdateCurrentTime=function(a){for(var e=waapisimContexts.length;e--;)waapisimContexts[e].currentTime=a};waapisimInterval=function(){var a=waapisimAudio.mozCurrentSampleOffset(),e=waapisimWrittenpos-a;waapisimUpdateCurrentTime(a/(2*waapisimSampleRate));16384>e&&(waapisimSetupOutBuf(0),waapisimWrittenpos+=waapisimAudio.mozWriteAudio(waapisimOutBuf))};waapisimGetSwfPath=function(){var a=r.getElementsByTagName("SCRIPT");if(a&&0<a.length)for(var e in a)if(a[e].src){var b=a[e].src;if(b.match(/waapisim\.js$/))return b.substring(0,
b.length-2)+"swf";if(b.match(/waapisim\.min\.js$/))return b.substring(0,b.length-6)+"swf"}return""};waapisimAddFlashObj=function(){var a=r.createElement("div"),e={movie:waapisimSwfPath,allowScriptAccess:"always",quality:"high",bgcolor:"#ffffff"};a.id="WAAPISIMFLASHOBJ";a.style.position="fixed";a.style.right=0;a.style.bottom=0;a.style.background="#ffffff";r.body.appendChild(a);if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){var b=r.createElement("object");b.id="waapisim_swf";
b.width=150;b.height=20;b.setAttribute("data",waapisimSwfPath);b.setAttribute("type","application/x-shockwave-flash");for(var c in e){var f=r.createElement("param");f.setAttribute("name",c);f.setAttribute("value",e[c]);b.appendChild(f)}a.appendChild(b)}else{a.innerHTML='<object id="waapisim_swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="150" height="20">';for(c in e)a.innerHTML+='<param name="'+c+'" value="'+e[c]+" />";a.innerHTML+="</object>"}"undefined"===typeof r.getElementById("waapisim_swf").SetReturnValue&&
(r.getElementById("waapisim_swf").SetReturnValue=function(c){r.getElementById("waapisim_swf").impl.SetReturnValue(c)})};waapisimFlashOffset=function(a){waapisimUpdateCurrentTime(a/1E3)};waapisimFlashGetData=function(){var a="",e;e=waapisimOutBufSize/waapisimBufSize;for(p=0;p<e;++p)waapisimSetupOutBuf(waapisimBufSize*p);waapisimWrittenpos+=2*waapisimOutBufSize;e=2*waapisimOutBufSize;for(p=0;p<e;++p){var b=16384*waapisimOutBuf[p]+32768|0;isNaN(b)&&(b=32768);b=Math.min(49152,Math.max(16384,b));a+=String.fromCharCode(b)}return a};
switch(waapisimAudioIf){case 0:waapisimSwfPath=waapisimGetSwfPath();n.addEventListener("load",waapisimAddFlashObj,!1);break;case 1:setInterval(waapisimInterval,10)}n.AudioContext=function(){waapisimContexts.push(this);this._Nodes=[];this.destination=new waapisimAudioDestinationNode(this);this.sampleRate=44100;this.activeSourceCount=this.currentTime=0;this.listener=new waapisimAudioListener;this.createBuffer=function(a,e,b){return new waapisimAudioBuffer(a,e,b)};this.createBufferSource=function(){return new waapisimAudioBufferSource(this)};
this.createScriptProcessor=this.createJavaScriptNode=function(a,e,b){return new waapisimScriptProcessor(this,a,e,b)};this.createBiquadFilter=function(){return new waapisimBiquadFilter(this)};this.createGain=this.createGainNode=function(){return new waapisimGain(this)};this.createDelay=this.createDelayNode=function(){return new waapisimDelay(this)};this.createOscillator=function(){return new waapisimOscillator(this)};this.createAnalyser=function(){return new waapisimAnalyser(this)};this.createConvolver=
function(){return new waapisimConvolver(this)};this.createDynamicsCompressor=function(){return new waapisimDynamicsCompressor(this)};this.createPanner=function(){return new waapisimPanner(this)};this.createChannelSplitter=function(a){return new waapisimChannelSplitter(this,a)};this.createChannelMerger=function(a){return new waapisimChannelMerger(this,a)};this.createWaveShaper=function(){return new waapisimWaveShaper(this)};this.decodeAudioData=function(a,e,b){a=new waapisimAudioBuffer(a,!1);0<a.length&&
"function"===typeof e?e(a):"function"===typeof b&&b()};this.createPeriodicWave=this.createWaveTable=function(a,e){return new waapisimPeriodicWave(a,e)};this._SortNode=function(){var a,e,b,c;for(a=0;a<this._Nodes.length;++a)if(c=this._Nodes[a],0<c._order)for(e=0;e<c._nodein.length;++e)for(b=0;b<c._nodein[e].from.length;++b){var f=c._nodein[e].from[b].node._order;c._order<f+1&&(c._order=f+1)}this._Nodes.sort(function(c,b){return b._order-c._order})};this._RegisterNode=function(a){for(var e=this._Nodes.length;e--;)if(this._Nodes[e]===
a)return!1;this._Nodes.push(a);this._SortNode();return!0};this._UnregisterNode=function(a){for(var e=this._Nodes.length;e--;)this._Nodes[e]==a&&this._Nodes.splice(e,1)}};waapisimAudioListener=function(){this.oy=this.ox=this.pz=this.py=this.px=0;this.oz=-1;this.ux=0;this.uy=1;this.uz=0;this.dopplerFactor=1;this.speedOfSound=343.3;this.setPosition=function(a,e,b){this.px=a;this.py=e;this.pz=b};this.setOrientation=function(a,e,b,c,f,d){this.ox=a;this.oy=e;this.oz=b;this.ux=c;this.uy=f;this.uz=d};this.setVelocity=
function(a,e,b){}};waapisimPeriodicWave=function(a,e){var b=Array(4096),c=Array(4096);this.buf=new Float32Array(4096);var f,d,g,m,l,h,k,z,n;for(g=0;4096>g;++g)b[g]=c[g]=0;g=m=0;do for(b[g]=a[m],c[g]=-e[m],l=2048;l>(g^=l);l>>=1);while(++m<a.length);var q=2*Math.PI;for(d=1;4096>=(f=d<<1);d=f)for(q*=.5,g=0;g<d;g++)for(h=Math.cos(q*g),k=Math.sin(q*g),m=g;4096>m;m+=f)l=m+d,z=h*b[l]-k*c[l],n=h*c[l]+k*b[l],b[l]=b[m]-z,c[l]=c[m]-n,b[m]+=z,c[m]+=n;for(g=c=0;4096>g;++g)f=Math.abs(b[g]),f>c&&(c=f);if(0==c)for(g=
0;4096>g;++g)this.buf[g]=0;else for(g=0;4096>g;++g)this.buf[g]=b[g]/c};waapisimAudioNode=function(a,e,b){this.numberOfInputs=e;this.numberOfOutputs=b;this._nodeId=waapisimNodeId;this._order=1;++waapisimNodeId;this._targettype=1;this.context=null;this._nodein=[];this._nodeout=[];var c;for(c=0;c<e;++c)this._nodein[c]=new waapisimAudioNodeIn(this,a);for(c=0;c<b;++c)this._nodeout[c]=new waapisimAudioNodeOut(this,a);this.connect=function(c,b,a){"undefined"===typeof b&&(b=0);"undefined"===typeof a&&(a=
0);this._nodeout[b]&&(0!==c._targettype?this._nodeout[b].connect(c._nodein[a]):this._nodeout[b].connect(c))};this.disconnect=function(c){"undefined"===typeof this._nodeout[c]&&(c=0);this._nodeout[c].disconnect()}};waapisimAudioNodeIn=function(a,e){this.node=a;this.from=[];this.inbuf=new waapisimAudioBuffer(2,e,waapisimSampleRate);this.NodeClear=function(){for(var b=0;b<waapisimBufSize;++b)this.inbuf.buf[0][b]=this.inbuf.buf[1][b]=0}};waapisimAudioNodeOut=function(a,e){this.node=a;this.to=[];this.connect=
function(b){waapisimDebug("connect "+this.node._nodetype+this.node._nodeId+"=>"+b.node._nodetype+b.node._nodeId);if(void 0!==b&&-1==b.from.indexOf(this)&&(b.from.push(this),-1==this.to.indexOf(b)&&this.to.push(b),0!==b.node._targettype&&this.node.context._RegisterNode(b.node)))for(var c=0;c<b.node._nodeout.length;++c)for(var a=0;a<b.node._nodeout[c].to.length;++a)b.node._nodeout[c].connect(b.node._nodeout[c].to[a])};this.disconnectTemp=function(){var b,c,a,e,g;waapisimDebug("disconnect "+this.node._nodetype+
this.node._nodeId);var m=this.node.context._Nodes;a=m.length;for(b=0;b<a;++b)for(g=m[b]._nodein.length,e=0;e<g;++e)c=m[b]._nodein[e].from.indexOf(this),0<=c&&(waapisimDebug(" :"+this.node._nodeId+"=>"+m[b]._nodeId),m[b]._nodein[e].from.splice(c,1));for(b=0;b<m.length;++b)if(a=m[b],1==a._targettype){for(e=c=0;e<a._nodein.length;++e)c+=a._nodein[e].from.length;if(0===c){this.node.context._UnregisterNode(a);for(e=0;e<a._nodeout.length;++e)a._nodeout[e].disconnectTemp();break}}};this.disconnect=function(){this.disconnectTemp();
this.to.length=0};this.NodeEmit=function(b,c,a){for(var e=this.to.length,g=0;g<e;++g){var m=this.to[g].inbuf.buf;m[0][b]+=c;m[1][b]+=a}};this.NodeEmitBuf=function(){for(var b=this.to.length,c=0;c<b;++c)for(var a=this.to[c].inbuf.buf[0],e=this.to[c].inbuf.buf[1],g=0;g<waapisimBufSize;++g)a[g]+=this.outbuf.buf[0][g],e[g]+=this.outbuf.buf[1][g]};this.outbuf=new waapisimAudioBuffer(2,e,waapisimSampleRate)};waapisimAudioProcessingEvent=function(){};waapisimAudioDestinationNode=function(a){waapisimAudioNode.call(this,
waapisimBufSize,1,0);this._nodetype="Destination";waapisimDebug("create "+this._nodetype+this._nodeId);this._targettype=2;this.context=a;this.playbackState=0;this.numberOfChannels=this.maxNumberOfChannels=2;this._Process=function(){};a._Nodes.push(this)};waapisimAudioBufferSource=AudioBufferSourceNode=function(a){waapisimAudioNode.call(this,waapisimBufSize,0,1);this._nodetype="BufSrc";waapisimDebug("create "+this._nodetype+this._nodeId);this._targettype=3;this._order=0;this.context=a;this.playbackState=
0;this.buffer=null;this.playbackRate=new waapisimAudioParam(a,this,0,10,1);this.gain=new waapisimAudioParam(a,this,0,1,1);this.loop=!1;this._whenstart=this._bufferindex=this.loopEnd=this.loopStart=0;this._whenstop=Number.MAX_VALUE;this._actualLoopEnd=this._actualLoopStart=this._endindex=0;this.start=this.noteOn=this.noteGrainOn=function(a,b,c){null!==this.buffer&&(this.playbackState=1,this._whenstart=a,0<b&&(this._bufferindex=b*waapisimSampleRate),this._endindex=this.buffer.length,0<c&&(this._endindex=
Math.min(this.buffer.length,(c+b)*waapisimSampleRate)),this.loop&&((this.loopStart||this.loopEnd)&&0<=this.loopStart&&0<this.loopEnd&&this.loopStart<this.loopEnd?(this._actualLoopStart=this.loopStart,this._actualLoopEnd=Math.min(this.loopEnd,this.buffer.length)):(this._actualLoopStart=0,this._actualLoopEnd=this.buffer.length)),this.context._RegisterNode(this))};this.stop=this.noteOff=function(a){this._whenstop=a};this._Process=function(){this.playbackRate._Process();null!==this.buffer&&this._bufferindex>=
this._endindex&&(2==this.playbackState&&--this.context.activeSourceCount,this.playbackState=3);1==this.playbackState&&this.context.currentTime>=this._whenstart&&(this.playbackState=2,++this.context.activeSourceCount);2==this.playbackState&&this.context.currentTime>=this._whenstop&&(this.playbackState=3,--this.context.activeSourceCount);if(2==this.playbackState){var a=this.buffer.getChannelData(0),b=this.buffer.getChannelData(1),c=this.buffer.sampleRate/44100;if(0<this._nodeout[0].to.length){for(var f=
0;f<waapisimBufSize;++f){if(this._bufferindex<this._endindex){var d=this.gain.Get(f),g=this._bufferindex|0;this._nodeout[0].outbuf.buf[0][f]=a[g]*d;this._nodeout[0].outbuf.buf[1][f]=b[g]*d}this._bufferindex+=c*this.playbackRate.Get(f);this.loop&&this._bufferindex>=this._actualLoopEnd&&(this._bufferindex=this._actualLoopStart)}this._nodeout[0].NodeEmitBuf();this.playbackRate.Clear(!0)}}}};waapisimAudioBufferSource.UNSCHEDULED_STATE=waapisimAudioBufferSource.prototype.UNSCHEDULED_STATE=0;waapisimAudioBufferSource.SCHEDULED_STATE=
waapisimAudioBufferSource.prototype.SCHEDULED_STATE=1;waapisimAudioBufferSource.PLAYING_STATE=waapisimAudioBufferSource.prototype.PLAYING_STATE=2;waapisimAudioBufferSource.FINISHED_STATE=waapisimAudioBufferSource.prototype.FINISHED_STATE=3;waapisimScriptProcessor=function(a,e,b,c){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="ScrProc";waapisimDebug("create "+this._nodetype+this._nodeId);this._targettype=2;this.context=a;this.playbackState=0;if("number"!==typeof e)throw new TypeError("ScriptProcessor:bufferSize");
"undefined"===typeof b&&(b=2);"undefined"===typeof c&&(c=2);this.bufferSize=e;this._scrinbuf=new waapisimAudioBuffer(b,e,waapisimSampleRate);this._scroutbuf=new waapisimAudioBuffer(c,e,waapisimSampleRate);this._index=e;this.onaudioprocess=null;this._Process=function(){var c=this._nodein[0].inbuf;null===c&&(c=waapisimDummybuf);for(var b=0;b<waapisimBufSize;++b){if(this._index>=this.bufferSize){if(this.onaudioprocess){var a=new waapisimAudioProcessingEvent;a.node=this;a.inputBuffer=this._scrinbuf;a.outputBuffer=
this._scroutbuf;this.onaudioprocess(a)}this._index=0}this._scrinbuf.buf[0][this._index]=c.buf[0][b];2<=this._scrinbuf.numberOfChannels&&(this._scrinbuf.buf[1][this._index]=c.buf[1][b]);2<=this._scroutbuf.numberOfChannels?this._nodeout[0].NodeEmit(b,this._scroutbuf.buf[0][this._index],this._scroutbuf.buf[1][this._index]):this._nodeout[0].NodeEmit(b,this._scroutbuf.buf[0][this._index],this._scroutbuf.buf[0][this._index]);this._index++}this._nodein[0].NodeClear()};a._RegisterNode(this)};waapisimBiquadFilter=
BiquadFilterNode=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Filter";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.type=this.playbackState=0;this.frequency=new waapisimAudioParam(a,this,10,24E3,350,.5);this.detune=new waapisimAudioParam(a,this,-4800,4800,0,.5);this.Q=new waapisimAudioParam(a,this,1E-4,1E3,1,.5);this.gain=new waapisimAudioParam(a,this,-40,40,0,.5);this._y1l=this._y1r=this._y2l=this._y2r=this._x1l=this._x1r=this._x2l=this._x2r=
this._b0=this._b1=this._b2=this._a1=this._a2=0;this._nodein[0].NodeClear();this._Setup=function(a){var b=a.frequency.Get(0)*Math.pow(2,a.detune.Get(0)/1200),c=Math.max(.001,a.Q.Get(0)),f,d;f=2*Math.PI*b/a.context.sampleRate;b=Math.cos(f);switch(a.type){case "lowpass":case 0:c=Math.pow(10,c/20);c=Math.sin(f)/(2*c);f=1/(1+c);a._a1=-2*b*f;a._a2=(1-c)*f;a._b0=a._b2=(1-b)/2*f;a._b1=(1-b)*f;break;case "highpass":case 1:c=Math.pow(10,c/20);c=Math.sin(f)/(2*c);f=1/(1+c);a._a1=-2*b*f;a._a2=(1-c)*f;a._b0=a._b2=
(1+b)/2*f;a._b1=-(1+b)*f;break;case "bandpass":case 2:c=Math.sin(f)/(2*c);f=1/(1+c);a._a1=-2*b*f;a._a2=(1-c)*f;a._b0=c;a._b1=0;a._b2=-c;break;case "lowshelf":case 3:c=Math.sin(f)/2*Math.sqrt(2);d=Math.pow(10,a.gain.Get(0)/40);f=1/(d+1+(d-1)*b+2*Math.sqrt(d)*c);a._a1=-2*(d-1+(d+1)*b)*f;a._a2=(d+1+(d-1)*b-2*Math.sqrt(d)*c)*f;a._b0=d*(d+1-(d-1)*b+2*Math.sqrt(d)*c)*f;a._b1=2*d*(d-1-(d+1)*b)*f;a._b2=d*(d+1-(d-1)*b-2*Math.sqrt(d)*c)*f;break;case "highshelf":case 4:c=Math.sin(f)/2*Math.sqrt(2);d=Math.pow(10,
a.gain.Get(0)/40);f=1/(d+1-(d-1)*b+2*Math.sqrt(d)*c);a._a1=2*(d-1-(d+1)*b)*f;a._a2=(d+1-(d-1)*b-2*Math.sqrt(d)*c)*f;a._b0=d*(d+1+(d-1)*b+2*Math.sqrt(d)*c)*f;a._b1=-2*d*(d-1+(d+1)*b)*f;a._b2=d*(d+1+(d-1)*b-2*Math.sqrt(d)*c)*f;break;case "peaking":case 5:c=Math.sin(f)/(2*c);d=Math.pow(10,a.gain.Get(0)/40);f=1/(1+c/d);a._a1=-2*b*f;a._a2=(1-c/d)*f;a._b0=(1+c*d)*f;a._b1=-2*b*f;a._b2=(1-c*d)*f;break;case "notch":case 6:c=Math.sin(f)/(2*c);f=1/(1+c);a._a1=-2*b*f;a._a2=(1-c)*f;a._b0=a._b2=f;a._b1=-2*b*f;
break;case "allpass":case 7:c=Math.sin(f)/(2*c),f=1/(1+c),a._a1=-2*b*f,a._a2=(1-c)*f,a._b0=(1-c)*f,a._b1=-2*b*f,a._b2=(1+c)*f}};this._Process=function(){var a,b,c,f;this.frequency._Process();this.detune._Process();this.Q._Process();this.gain._Process();this._Setup(this);for(var d=this._nodein[0].inbuf.buf,g=this._nodeout[0].outbuf.buf,m=0;m<waapisimBufSize;++m)a=d[0][m],b=d[1][m],c=this._b0*a+this._b1*this._x1l+this._b2*this._x2l-this._a1*this._y1l-this._a2*this._y2l,f=this._b0*b+this._b1*this._x1r+
this._b2*this._x2r-this._a1*this._y1r-this._a2*this._y2r,this._x2l=this._x1l,this._x2r=this._x1r,this._x1l=a,this._x1r=b,this._y2l=this._y1l,this._y2r=this._y1r,this._y1l=c,this._y1r=f,g[0][m]=c,g[1][m]=f;this._nodeout[0].NodeEmitBuf();this._nodein[0].NodeClear();this.frequency.Clear(!1);this.detune.Clear(!1);this.Q.Clear(!1);this.gain.Clear(!1)};this.getFrequencyResponse=function(a,b,c){for(var f=a.length,d=0;d<f;++d){var g=2*Math.PI*a[d]/this.context.sampleRate,m=Math.cos(g),l=Math.cos(2*g),h=Math.sin(g),
k=Math.sin(2*g),g=1+this._a1*m+this._a2*l,n=this._a1*h+this._a2*k,m=this._b0+this._b1*m+this._b2*l,h=this._b1*h+this._b2*k;b[d]=Math.sqrt((m*m+h*h)/(g*g+n*n));c[d]=Math.atan2(n,g)-Math.atan2(h,m)}}};waapisimBiquadFilter.LOWPASS=waapisimBiquadFilter.prototype.LOWPASS=0;waapisimBiquadFilter.HIGHPASS=waapisimBiquadFilter.prototype.HIGHPASS=1;waapisimBiquadFilter.BANDPASS=waapisimBiquadFilter.prototype.BANDPASS=2;waapisimBiquadFilter.LOWSHELF=waapisimBiquadFilter.prototype.LOWSHELF=3;waapisimBiquadFilter.HIGHSHELF=
waapisimBiquadFilter.prototype.HIGHSHELF=4;waapisimBiquadFilter.PEAKING=waapisimBiquadFilter.prototype.PEAKING=5;waapisimBiquadFilter.NOTCH=waapisimBiquadFilter.prototype.NOTCH=6;waapisimBiquadFilter.ALLPASS=waapisimBiquadFilter.prototype.ALLPASS=7;waapisimGain=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Gain";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.gain=new waapisimAudioParam(a,this,0,1,1);this._nodein[0].NodeClear();
this._curgain=1;this._Process=function(){var a;this.gain._Process();var b=this._nodein[0].inbuf.buf;switch(this._nodeout[0].to.length){case 0:this._curgain=this.gain.Get(0);break;case 1:var c=this._nodeout[0].to[0].inbuf.buf;for(a=0;a<waapisimBufSize;++a){var f=this.gain.Get(a);this._curgain+=.01*(f-this._curgain);c[0][a]+=b[0][a]*this._curgain;c[1][a]+=b[1][a]*this._curgain}break;default:for(a=0;a<waapisimBufSize;++a)f=this.gain.Get(a),this._curgain+=.01*(f-this._curgain),this._nodeout[0].NodeEmit(a,
b[0][a]*this._curgain,b[1][a]*this._curgain)}this._nodein[0].NodeClear();this.gain.Clear(!0)}};waapisimDelay=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Delay";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.delayTime=new waapisimAudioParam(a,this,0,1,0);this._bufl=new Float32Array(waapisimSampleRate);this._bufr=new Float32Array(waapisimSampleRate);for(a=0;a<waapisimSampleRate;++a)this._bufl[a]=this._bufr[a]=0;this._offscur=
this._index=0;this._Process=function(){this.delayTime._Process();var a=this._nodein[0].inbuf.buf,b=this._nodeout[0].outbuf.buf,c=Math.floor(this.delayTime.Get(0)*this.context.sampleRate);0>c&&(c=0);c>=this.context.sampleRate&&(c=this.context.sampleRate-1);for(var c=(c-this._offscur)/waapisimBufSize,f=0;f<waapisimBufSize;++f){var d=this._index-(this._offscur|0);0>d&&(d+=waapisimSampleRate);this._bufl[this._index]=a[0][f];this._bufr[this._index]=a[1][f];b[0][f]=this._bufl[d];b[1][f]=this._bufr[d];++this._index>=
waapisimSampleRate&&(this._index=0);this._offscur+=c}this._nodeout[0].NodeEmitBuf();this._nodein[0].NodeClear();this.delayTime.Clear(!1)}};waapisimOscillator=OscillatorNode=function(a){waapisimAudioNode.call(this,waapisimBufSize,0,1);this._nodetype="Osc";waapisimDebug("create "+this._nodetype+this._nodeId);this._targettype=3;this._order=0;this.context=a;this.type=0;this._wavtable=null;this.frequency=new waapisimAudioParam(a,this,1,2E4,440,.9995);this.detune=new waapisimAudioParam(a,this,-4800,4800,
0,.9995);this.playbackState=0;this._phase=.5;this._whenstart=0;this._whenstop=Number.MAX_VALUE;this._init=0;this.start=this.noteOn=function(a){this._whenstart=a;this.playbackState=1;this.context._RegisterNode(this)};this.stop=this.noteOff=function(a){this._whenstop=a};this.setPeriodicWave=this.setWaveTable=function(a){this.type=4;this._wavtable=a};this._Process=function(){var a;0==this._init&&(this.frequency.Init(),this.detune.Init(),this._init=1);this.frequency._Process();this.detune._Process();
1==this.playbackState&&this.context.currentTime>=this._whenstart&&(this.playbackState=2);2==this.playbackState&&this.context.currentTime>=this._whenstop&&(this.playbackState=3);if(2!=this.playbackState)for(a=0;a<waapisimBufSize;++a)this._nodeout[0].outbuf.buf[0][a]=this._nodeout[0].outbuf.buf[1][a]=0;else{var b,c,f,d,g,m=this._nodeout[0].outbuf.buf,l=this._phase,h=1/this.context.sampleRate,k=this.frequency,n=this.detune;switch(this.type){case "sine":case 0:c=.5;f=1.5;d=2*Math.PI;g=1/6.78;break;case "square":case 1:c=
.5;f=1.5;d=1E5;g=0;break;case "sawtooth":case 2:c=0;d=f=2;g=0;break;case "triangle":case 3:c=.5;f=1.5;d=4;g=0;break;case "custom":case 4:for(a=0;a<waapisimBufSize;++a)b=k.Get(a)*Math.pow(2,n.Get(a)/1200),l+=b*h,l-=Math.floor(l),b=0,this._wavtable&&(b=this._wavtable.buf[4096*l|0]),m[0][a]=m[1][a]=b;this._phase=l;this._nodeout[0].NodeEmitBuf();this.frequency.Clear(!0);this.detune.Clear(!0);return}for(a=0;a<waapisimBufSize;++a)b=k.Get(a)*Math.pow(2,n.Get(a)/1200),l+=b*h,l-=Math.floor(l),b=(Math.min(Math.max(l,
c-l),f-l)-.5)*d,b-=b*b*b*g,1<b&&(b=1),-1>b&&(b=-1),m[0][a]=m[1][a]=b;this._phase=l;this._nodeout[0].NodeEmitBuf();this.frequency.Clear(!0);this.detune.Clear(!0)}}};waapisimOscillator.SINE=waapisimOscillator.prototype.SINE=0;waapisimOscillator.SQUARE=waapisimOscillator.prototype.SQUARE=1;waapisimOscillator.SAWTOOTH=waapisimOscillator.prototype.SAWTOOTH=2;waapisimOscillator.TRIANGLE=waapisimOscillator.prototype.TRIANGLE=3;waapisimOscillator.CUSTOM=waapisimOscillator.prototype.CUSTOM=4;waapisimOscillator.UNSCHEDULED_STATE=
waapisimOscillator.prototype.UNSCHEDULED_STATE=0;waapisimOscillator.SCHEDULED_STATE=waapisimOscillator.prototype.SCHEDULED_STATE=1;waapisimOscillator.PLAYING_STATE=waapisimOscillator.prototype.PLAYING_STATE=2;waapisimOscillator.FINISHED_STATE=waapisimOscillator.prototype.FINISHED_STATE=3;waapisimAnalyser=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Analyser";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.fftSize=2048;this.frequencyBinCount=
1024;this.minDecibels=-100;this.maxDecibels=-30;this.smoothingTimeConstant=0;this._fftInData=Array(2048);this._fftOutData=Array(2048);this._timeData=Array(2048);this._fftCurrentSize=this._fftIndex=0;this._fftrev=Array(256);this._fft=function(a,b,c){var f=a>>1,d=-2*Math.PI,g,m,l,h,k,n,t,q,y,w,p;for(m=1;(g=m<<1)<=a;m=g){l=m>>1;d*=.5;for(n=0;n<a;n+=g)q=n+m,w=b[q],b[q]=b[n]-w,b[n]+=w;for(h=1;h<l;++h){var u=Math.cos(d*h),r=Math.sin(d*h);for(k=0;k<a;k+=g)n=k+h,t=k+m-h,q=k+m+h,y=k+g-h,w=u*b[q]+r*b[y],p=
u*b[y]-r*b[q],b[q]=-b[t]+p,b[y]=b[t]+p,b[t]=b[n]-w,b[n]+=w}}b[0]=Math.min(1E-100,Math.abs(b[0]/a));d=Math.min(1,Math.max(0,this.smoothingTimeConstant));c[0]=c[0]*d+(1-d)*b[0];for(h=0;h<f;++h)g=Math.sqrt(b[h]*b[h]+b[a-h]*b[a-h])/a,1E-100>g&&(g=1E-100),c[h]=c[h]*d+(1-d)*g};this.getByteFrequencyData=function(a){for(var b=this.maxDecibels-this.minDecibels,c=Math.min(a.length,this.frequencyBinCount),f=0;f<c;++f)a[f]=255*(Math.min(this.maxDecibels,Math.max(this.minDecibels,20*Math.LOG10E*Math.log(this._fftOutData[f])))-
this.minDecibels)/b|0};this.getFloatFrequencyData=function(a){for(var b=Math.min(a.length,this.frequencyBinCount),c=0;c<b;++c)a[c]=20*Math.LOG10E*Math.log(this._fftOutData[c])};this.getByteTimeDomainData=function(a){for(var b=Math.min(this.frequencyBinCount,a.length),c=0;c<b;++c)a[c]=127*Math.min(1,Math.max(-1,this._timeData[c]))+128};this._Process=function(){var a,b,c,f=this._nodein[0].inbuf.buf;if(this.fftSize!=this._fftCurrentSize){var d=this.fftSize;for(a=0;a<d;++a)this._fftInData[a]=this._fftOutData[a]=
0;this._fftCurrentSize=d;this.frequencyBinCount=.5*d;this._fftIndex=0;this._fftrev[0]=0;this._fftrev[d-1]=d-1;a=0;for(b=1;b<d-1;++b){for(c=d>>1;c>(a^=c);c>>=1);this._fftrev[b]=a}}for(a=0;a<waapisimBufSize;++a)b=f[0][a],c=f[1][a],this._nodeout[0].NodeEmit(a,b,c),b=this._timeData[this._fftIndex]=.5*(b+c),this._fftInData[this._fftrev[this._fftIndex]]=b*(.5-.5*Math.cos(2*Math.PI*this._fftIndex/this._fftCurrentSize)),++this._fftIndex>=this._fftCurrentSize&&(this._fftIndex=0,this._fft(this._fftCurrentSize,
this._fftInData,this._fftOutData));this._nodein[0].NodeClear()}};waapisimConvolver=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Convolver";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.buffer=null;this.normalize=!0;this._scale=1;this._analyzed=null;this._dlybufsize=5*waapisimSampleRate;this._dlybuf=new waapisimAudioBuffer(2,this._dlybufsize,44100);this._dlyidx=0;this._tapsize=20;this._tap=[];this._kernel=null;this._sum=
[];this._sum[0]=[];this._sum[1]=[];this._bitrev=[];this._bitrev[0]=0;this._bitrev[waapisimBufSize-1]=waapisimBufSize-1;var e,b;a=0;for(e=1;e<waapisimBufSize-1;++e){for(b=waapisimBufSize>>1;b>(a^=b);b>>=1);this._bitrev[e]=a}for(a=0;2>a;++a)for(e=0;2>e;++e)this._sum[a][e]=new Float32Array(waapisimSampleRate);this._Normalize=function(a){for(var b=a.length,d=0,g=0;2>g;++g){for(var e=0,l=0,h=b;h--;)var k=a.buf[g][e++],l=l+k*k;d+=l}d=Math.sqrt(d/(2*b));if(!1===isFinite(d)||isNaN(d)||1.25E-4>d)d=1.25E-4;
return 1/d*.00125};this._Fft=function(a,b){var d,g,e,l,h,k,n,t,q,p,w,r,u,x;l=0;for(h=1;h<a-1;h++){for(d=a>>1;d>(l^=d);d>>=1);h<l&&(u=b[h],b[h]=b[l],b[l]=u)}p=-2*Math.PI;for(g=1;(d=g<<1)<=a;g=d){e=g>>1;p*=.5;for(k=0;k<a;k+=d)t=k+g,u=b[t],b[t]=b[k]-u,b[k]+=u;for(l=1;l<e;l++)for(w=Math.cos(p*l),r=Math.sin(p*l),h=0;h<a;h+=d)k=h+l,n=h+g-l,t=h+g+l,q=h+d-l,u=w*b[t]+r*b[q],x=w*b[q]-r*b[t],b[t]=-b[n]+x,b[q]=b[n]+x,b[n]=b[k]-u,b[k]+=u}};this._Fft2=function(a,b,d){var g,e,l,h,k,n,t,q,p,r=2*Math.PI;l=0;for(h=
1;h<a-1;h++){for(k=a>>1;k>(l^=k);k>>=1);h<l&&(q=b[h],p=d[h],b[h]=b[l],d[h]=d[l],b[l]=q,d[l]=p)}for(e=1;(g=e<<1)<=a;e=g)for(r*=.5,l=0;l<e;l++)for(n=Math.cos(r*l),t=Math.sin(r*l),h=l;h<a;h+=g)k=h+e,q=n*b[k]-t*d[k],p=n*d[k]+t*b[k],b[k]=b[h]-q,d[k]=d[h]-p,b[h]+=q,d[h]+=p;for(l=0;l<a;++l)b[l]/=a};this._Process=function(){var a=this._nodein[0].inbuf.buf,b=.5*waapisimBufSize|0,d,g,e,l,h,k;if(null!==this.buffer){if(this.buffer!=this._analyzed){var n=[];for(d=0;4>d;++d)n[d]=new waapisimAudioBuffer(2,waapisimBufSize,
44100);this._scale=1;this.normalize&&(this._scale=this._Normalize(this.buffer));l=this.buffer.length;for(d=l-1;!(!d||.001<Math.abs(this.buffer.buf[0][d])||.001<Math.abs(this.buffer.buf[1][d]));--d);l=d+1;for(g=d=0;d<this._tapsize;++d){e=d*l/this._tapsize|0;var p=e-g;k=h=0;if(0<p){for(;g<e;)h+=this.buffer.buf[0][g]*this.buffer.buf[0][g],k+=this.buffer.buf[1][g]*this.buffer.buf[1][g],++g;h=Math.sqrt(h)*this._scale*.5;k=Math.sqrt(k)*this._scale*.5}this._tap[d]=[e,h,k]}this._kernel=new waapisimAudioBuffer(2,
waapisimBufSize,44100);var q=p=0;l=Math.min(this.buffer.length,4*waapisimBufSize);for(e=g=d=0;d<l;++d)h=this.buffer.buf[0][d],k=this.buffer.buf[1][d],n[e].buf[0][g]=h,n[e].buf[1][g]=k,p+=h*h+k*k,++g>=waapisimBufSize&&(p>q&&(this._kernel=n[e],q=p),p=g=0,++e);if(p>q||null===this._kernel)this._kernel=n[e];this._Fft(waapisimBufSize,this._kernel.buf[0]);this._Fft(waapisimBufSize,this._kernel.buf[1]);this._analyzed=this.buffer}this._Fft(waapisimBufSize,a[0]);this._Fft(waapisimBufSize,a[1]);this._sum[0][0][0]=
this._sum[1][0][0]=this._sum[0][1][0]=this._sum[1][1][0]=0;d=1;for(g=waapisimBufSize-1;d<b;++d,--g)h=a[0][d]*this._kernel.buf[0][d]-a[0][g]*this._kernel.buf[0][g],k=a[0][d]*this._kernel.buf[0][g]+a[0][g]*this._kernel.buf[0][d],this._sum[0][0][d]=h,this._sum[0][0][g]=h,this._sum[0][1][d]=-k,this._sum[0][1][g]=k,h=a[1][d]*this._kernel.buf[1][d]-a[1][g]*this._kernel.buf[1][g],k=a[1][d]*this._kernel.buf[1][g]+a[1][g]*this._kernel.buf[1][d],this._sum[1][0][d]=h,this._sum[1][0][g]=h,this._sum[1][1][d]=
-k,this._sum[1][1][g]=k;this._Fft2(waapisimBufSize,this._sum[0][0],this._sum[0][1]);this._Fft2(waapisimBufSize,this._sum[1][0],this._sum[1][1]);for(d=0;d<waapisimBufSize;++d){a=(b-Math.abs(d-b))/b;this._dlybuf.buf[0][this._dlyidx]=this._sum[0][0][d]*a;this._dlybuf.buf[1][this._dlyidx]=this._sum[1][0][d]*a;k=h=0;l=this._tap.length;for(g=0;g<l;++g){for(a=this._dlyidx-this._tap[g][0];0>a;)a+=this._dlybufsize;h+=this._dlybuf.buf[0][a]*this._tap[g][1];k+=this._dlybuf.buf[1][a]*this._tap[g][2]}this._nodeout[0].NodeEmit(d,
h,k);++this._dlyidx>=this._dlybufsize&&(this._dlyidx=0)}}this._nodein[0].NodeClear()}};waapisimDynamicsCompressor=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="DynComp";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.threshold=new waapisimAudioParam(a,this,-100,0,-24);this.knee=new waapisimAudioParam(a,this,0,40,30);this.ratio=new waapisimAudioParam(a,this,1,20,12);this.reduction=new waapisimAudioParam(a,this,-20,0,0);this.attack=
new waapisimAudioParam(a,this,0,1,.003);this.release=new waapisimAudioParam(a,this,0,1,.25);this._maxr=this._maxl=0;this._gain=1;this._Process=function(){this.threshold._Process();this.knee._Process();this.ratio._Process();this.attack._Process();this.release._Process();var a=this._nodein[0].inbuf.buf,b=this.release.Get(0)*waapisimSampleRate,b=Math.pow(1/3.16,1/b),c=this.attack.Get(0)*waapisimSampleRate,c=Math.pow(1/3.16,1/c),f=this.reduction.value,d=Math.pow(10,this.threshold.Get(0)/20),g=Math.pow(10,
this.knee.Get(0)/20*.5),m=1/Math.sqrt(d)/Math.pow(10,this.knee.Get(0)/80),l=this.ratio.Get(0);1>=l&&(l=1);for(var h=0;h<waapisimBufSize;++h){this._maxl=.99105*this._maxl+(1-.99105)*a[0][h]*a[0][h];this._maxr=.99105*this._maxr+(1-.99105)*a[1][h]*a[1][h];var k=1.414*Math.sqrt(Math.max(this._maxl,this._maxr));k>d?(k=Math.pow(d*Math.min(g,k/d)/k,1-1/l),this._gain=k+(this._gain-k)*c):this._gain=1+(this._gain-1)*b;k=this._gain*m;this._nodeout[0].NodeEmit(h,a[0][h]*k,a[1][h]*k)}this.reduction.value=this.reduction.computedValue=
f;this._nodein[0].NodeClear();this.threshold.Clear(!1);this.knee.Clear(!1);this.ratio.Clear(!1);this.reduction.Clear(!1);this.attack.Clear(!1);this.release.Clear(!1)}};waapisimPanner=AudioPannerNode=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype="Panner";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.panningModel=this.playbackState=0;this.refDistance=this.distanceModel=1;this.maxDistance=1E4;this.rolloffFactor=1;this.coneOuterAngle=this.coneInnerAngle=
360;this.pz=this.py=this.px=this.coneOuterGain=0;this.setPosition=function(a,b,c){this.px=a;this.py=b;this.pz=c};this.setOrientation=function(a,b,c){};this.setVelocity=function(a,b,c){};this._Process=function(){var a=this._nodein[0].inbuf.buf,b=this.context.listener,c=this.px-b.px,f=this.py-b.py,b=this.pz-b.pz,f=Math.max(1,Math.sqrt(c*c+f*f+b*b)),d;switch(this.distanceModel){case "linear":case 0:d=1-this.rolloffFactor*(f-this.refDistance)/(this.maxDistance-this.refDistance);break;case "inverse":case 1:d=
this.refDistance/(this.refDistance+this.rolloffFactor*(f-this.refDistance));break;case "exponential":case 2:d=Math.pow(f/this.refDistance,-this.rolloffFactor)}if(.001>Math.abs(b))b=c=1;else if(f=Math.atan(c/b),0>=b)c=-f+.5*Math.PI,b=f+.5*Math.PI;else switch(this.panningModel){case 0:case "equalpower":c=f+.5*Math.PI;b=-f+.5*Math.PI;break;default:0<=c?(c=f+.5*Math.PI,b=-(-f+.5*Math.PI)):(c=-(f+.5*Math.PI),b=-f+.5*Math.PI)}f=Math.sqrt(c*c+b*b);c/=f;b/=f;f=Math.sqrt(c*c+b*b);c=c/f*2*d;b=b/f*2*d;for(d=
0;d<waapisimBufSize;++d)this._nodeout[0].NodeEmit(d,a[0][d]*b,a[1][d]*c);this._nodein[0].NodeClear()}};waapisimPanner.EQUALPOWER=waapisimPanner.prototype.EQUALPOWER=0;waapisimPanner.HRTF=waapisimPanner.prototype.HRTF=1;waapisimPanner.SOUNDFIELD=waapisimPanner.prototype.SOUNDFIELD=2;waapisimPanner.LINEAR_DISTANCE=waapisimPanner.prototype.LINEAR_DISTANCE=0;waapisimPanner.INVERSE_DISTANCE=waapisimPanner.prototype.INVERSE_DISTANCE=1;waapisimPanner.EXPONENTIAL_DISTANCE=waapisimPanner.prototype.EXPONENTIAL_DISTANCE=
2;waapisimChannelSplitter=function(a,e){this._nodetype="ChSplit";waapisimDebug("create "+this._nodetype+this._nodeId);"undefined"===typeof e&&(e=6);waapisimAudioNode.call(this,waapisimBufSize,1,e);this.context=a;this.playbackState=0;this._Process=function(){for(var a=this._nodein[0].inbuf.buf,c=0;c<waapisimBufSize;++c)this._nodeout[0].NodeEmit(c,a[0][c],a[0][c]),this._nodeout[1].NodeEmit(c,a[1][c],a[1][c]);this._nodein[0].NodeClear()}};waapisimChannelMerger=function(a,e){this._nodetype="ChMerge";
waapisimDebug("create "+this._nodetype+this._nodeId);"undefined"===typeof e&&(e=6);waapisimAudioNode.call(this,waapisimBufSize,e,1);this.context=a;this.playbackState=0;this._Process=function(){for(var a=this._nodein[0].inbuf.buf,c=this._nodein[1].inbuf.buf,e=0;e<waapisimBufSize;++e)this._nodeout[0].NodeEmit(e,.5*(a[0][e]+a[1][e]),.5*(c[0][e]+c[1][e]));this._nodein[0].NodeClear();this._nodein[1].NodeClear()}};waapisimWaveShaper=function(a){waapisimAudioNode.call(this,waapisimBufSize,1,1);this._nodetype=
"Shaper";waapisimDebug("create "+this._nodetype+this._nodeId);this.context=a;this.playbackState=0;this.curve=null;var e;this._Process=function(){var a=this._nodein[0].inbuf.buf,c=this.curve;if(null!==c){var f=c.length-1;if(0<=f){for(e=0;e<waapisimBufSize;++e){var d=Math.max(-1,Math.min(1,a[0][e])),g=Math.max(-1,Math.min(1,a[1][e])),d=c[.5*(d+1)*f+.5|0],g=c[.5*(g+1)*f+.5|0];this._nodeout[0].NodeEmit(e,d,g)}this._nodein[0].NodeClear();return}}for(e=0;e<waapisimBufSize;++e)this._nodeout[0].NodeEmit(e,
a[0][e],a[1][e]);this._nodein[0].NodeClear()}};waapisimAudioParam=function(a,e,b,c,f,d){this.context=a;this._targettype=0;this.node=e;this.computedValue=this.value=f;this.minValue=b;this.maxValue=c;this.defaultValue=f;this.timeconst="undefined"===typeof d?0:d;this.from=[];this.inbuf={};this.inbuf.buf=[];this.inbuf.buf[0]=new Float32Array(waapisimBufSize);this.inbuf.buf[1]=new Float32Array(waapisimBufSize);this.automation=[];this.deltaAdd=0;this.deltaMul=1;this.deltaTarget=0;this.currentEvent=null;
for(a=0;a<waapisimBufSize;++a)this.inbuf.buf[0][a]=this.inbuf.buf[1][a]=0;this.AddEvent=function(a){for(var b=a[0],c=this.automation.length,d=0;d<c&&!(this.automation[d][0]>b);++d);this.automation.splice(d,0,a)};this.setValueAtTime=function(a,b){this.AddEvent([b,0,a])};this.linearRampToValueAtTime=function(a,b){this.AddEvent([b,1,a])};this.exponentialRampToValueAtTime=function(a,b){this.AddEvent([b,2,a])};this.setTargetAtTime=this.setTargetValueAtTime=function(a,b,c){this.AddEvent([b,3,a,c])};this.setValueCurveAtTime=
function(a,b,c){this.AddEvent([b,4,a,c])};this.cancelScheduledValues=function(a){for(var b=this.automation.length,c=0;c<b;++c)if(this.automation[c][0]>=a){this.automation.length=c;break}};this._Process=function(){this.value+=this.deltaAdd;this.value=(this.value-this.deltaTarget)*this.deltaMul+this.deltaTarget;null!==this.currentEvent&&4==this.currentEvent[1]&&(this.value=this.currentEvent[2][Math.min(this.currentEvent[2].length-1,(this.currentEvent[2].length-1)*(this.context.currentTime-this.currentEvent[0])/
this.currentEvent[3])|0]);if(0<this.automation.length&&this.context.currentTime>=this.automation[0][0]){this.deltaAdd=0;this.deltaMul=1;this.deltaTarget=0;this.currentEvent=this.automation.shift();switch(this.currentEvent[1]){case 0:case 1:case 2:this.value=this.currentEvent[2];break;case 3:this.deltaMul=Math.pow(.367879,1/(waapisimSampleRate/waapisimBufSize*this.currentEvent[3])),this.deltaTarget=this.currentEvent[2]}if(0<this.automation.length){var a=waapisimSampleRate/waapisimBufSize*(this.automation[0][0]-
this.context.currentTime);switch(this.automation[0][1]){case 1:this.deltaAdd=(this.automation[0][2]-this.value)/a;break;case 2:this.deltaMul=Math.pow(this.automation[0][2]/this.value,1/a)}}}};this.Init=function(){this.computedValue=parseFloat(this.value)};this.Get=function(a){return this.computedValue=0<this.from.length?parseFloat(this.value)+.5*(this.inbuf.buf[0][a]+this.inbuf.buf[1][a]):this.computedValue*this.timeconst+(1-this.timeconst)*parseFloat(this.value)};this.Clear=function(a){if(a)for(a=
0;a<waapisimBufSize;++a)this.inbuf.buf[0][a]=this.inbuf.buf[1][a]=0;else this.inbuf.buf[0][0]=this.inbuf.buf[1][0]=0}}}})(this,this.document);