recorder.js 1.37 KB
!function(t){var e="js/recorderjs/recorderWorker.js",o=function(t,o){var n=o||{},a=n.bufferLen||4096;this.context=t.context,this.context.createScriptProcessor?this.node=this.context.createScriptProcessor(a,2,2):this.node=this.context.createJavaScriptNode(a,2,2);var r=new Worker(n.workerPath||e);r.postMessage({command:"init",config:{sampleRate:this.context.sampleRate}});var c,s=!1;this.node.onaudioprocess=function(t){s&&r.postMessage({command:"record",buffer:[t.inputBuffer.getChannelData(0),t.inputBuffer.getChannelData(1)]})},this.configure=function(t){for(var e in t)t.hasOwnProperty(e)&&(n[e]=t[e])},this.record=function(){s=!0},this.stop=function(){s=!1},this.clear=function(){r.postMessage({command:"clear"})},this.getBuffers=function(t){c=t||n.callback,r.postMessage({command:"getBuffers"})},this.exportWAV=function(t,e){if(c=t||n.callback,e=e||n.type||"audio/wav",!c)throw new Error("Callback not set");r.postMessage({command:"exportWAV",type:e})},this.exportMonoWAV=function(t,e){if(c=t||n.callback,e=e||n.type||"audio/wav",!c)throw new Error("Callback not set");r.postMessage({command:"exportMonoWAV",type:e})},r.onmessage=function(t){var e=t.data;c(e)},t.connect(this.node),this.node.connect(this.context.destination)};o.setupDownload=function(e,o){var n=(t.URL||t.webkitURL).createObjectURL(e),a=document.getElementById("save");a.href=n,a.download=o||"output.wav"},t.Recorder=o}(window);