audio-feeder
Version:
Abstraction for streaming raw PCM audio in browser via Web Audio API.
1 lines • 2.14 kB
JavaScript
var demo=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=function(){n(1);var e=document.getElementById("start"),t=document.getElementById("stop"),r=0,o=new AudioFeeder,u=!1;function i(e){for(var t=Math.round(48e3*e),n=261*Math.ceil(t/261),u=new Float32Array(n),i=[u],a=0;a<n;a++)u[a]=Math.sin(r/48e3*261*2*Math.PI)*Math.sin(r/48e3*.5*2*Math.PI),r++;o.bufferData(i)}e.addEventListener("click",(function(){e.disabled=!0,t.disabled=!1;var n=function(){o.tempo=document.querySelector("#tempo").value/100,i(1),o.start()};u?n():(o.init(1,48e3),o.waitUntilReady(n),u=!0)})),t.addEventListener("click",(function(){t.disabled=!0,e.disabled=!1,o.stop()})),o.onbufferlow=function(){for(console.log("buffer low");o.durationBuffered*o.tempo<2*o.bufferThreshold;)i(1)},o.onstarved=function(){console.log("starving"),i()},document.querySelector("input[name=muted]").addEventListener("click",(function(){o.muted=this.checked}));for(var a=document.querySelectorAll("input[name=volume]"),l=0;l<a.length;l++)a[l].addEventListener("click",(function(){o.volume=parseInt(this.value)/100}));document.querySelector("#tempo").addEventListener("change",(function(){o.tempo=this.value/100})),e.disabled=!1}},function(e,t,n){"use strict";n.r(t),t.default=n.p+"demo.html"}]);