diff --git a/js/HuesCore.js b/js/HuesCore.js index f153642..db22a3e 100644 --- a/js/HuesCore.js +++ b/js/HuesCore.js @@ -123,54 +123,58 @@ function HuesCore(defaults) { this.uiArray = []; this.lastSongArray = []; this.lastImageArray = []; + this.uiArray.push(new RetroUI(), new WeedUI(), new ModernUI(), new XmasUI(), new HalloweenUI()); + this.settings = new HuesSettings(defaults); - this.autoSong = localStorage["autoSong"]; this.resourceManager = new Resources(this); - this.soundManager = new SoundManager(this); - if(!this.soundManager.canUse) { - this.error(this.soundManager.errorMsg); - return; - } - setInterval(function() { - this.loopCheck(); - }.bind(this), 1000); - this.renderer = new HuesCanvas("waifu", this.soundManager.context, this); + + this.autoSong = localStorage["autoSong"]; this.visualiser = document.createElement("canvas"); this.visualiser.id = "visualiser"; this.visualiser.height = "64"; this.vCtx = this.visualiser.getContext("2d"); - - this.uiArray.push(new RetroUI(), new WeedUI(), new ModernUI(), new XmasUI(), new HalloweenUI()); - this.settings.connectCore(this); - // Update with merged - defaults = this.settings.defaults; - this.setColour(this.colourIndex); - - if(defaults.load) { - this.resourceManager.addAll(defaults.respacks, function() { - document.getElementById("preloadHelper").classList.add("loaded"); - if(defaults.firstImage) { - this.setImageByName(defaults.firstImage); + + this.soundManager = new SoundManager(this); + this.soundManager.init().then(function(response) { + setInterval(function() { + this.loopCheck(); + }.bind(this), 1000); + this.renderer = new HuesCanvas("waifu", this.soundManager.context, this); + this.settings.connectCore(this); + // Update with merged + defaults = this.settings.defaults; + this.setColour(this.colourIndex); + this.animationLoop(); + + if(defaults.load) { + return this.resourceManager.addAll(defaults.respacks, function(progress) { + var prog = document.getElementById("preMain"); + var scale = Math.floor(progress * defaults.preloadMax); + var padding = defaults.preloadMax.toString(defaults.preloadBase).length; + prog.textContent = defaults.preloadPrefix + (Array(padding).join("0")+scale.toString(defaults.preloadBase)).slice(-padding); + }); + } else { + document.getElementById("preloadHelper").style.display = "none"; + return; + } + }.bind(this)).then(function(response) { + document.getElementById("preloadHelper").classList.add("loaded"); + if(defaults.firstImage) { + this.setImageByName(defaults.firstImage); + } else { + this.setImage(0); + } + if(defaults.autoplay) { + if(defaults.firstSong) { + this.setSongByName(defaults.firstSong); } else { - this.setImage(0); - } - if(defaults.autoplay) { - if(defaults.firstSong) { - this.setSongByName(defaults.firstSong); - } else { - this.setSong(0); - } + this.setSong(0); } - }.bind(this), function(progress) { - var prog = document.getElementById("preMain"); - var scale = Math.floor(progress * defaults.preloadMax); - var padding = defaults.preloadMax.toString(defaults.preloadBase).length; - prog.textContent = defaults.preloadPrefix + (Array(padding).join("0")+scale.toString(defaults.preloadBase)).slice(-padding); - }); - } else { - document.getElementById("preloadHelper").style.display = "none"; - } + } + }.bind(this))["catch"](function(error) { + this.error(error); + }.bind(this)); document.onkeydown = function(e){ e = e || window.event; @@ -189,8 +193,6 @@ function HuesCore(defaults) { var key = e.keyCode || e.which; return this.keyHandler(key); }.bind(this); - - this.animationLoop(); } HuesCore.prototype.callEventListeners = function(ev) { @@ -695,7 +697,7 @@ HuesCore.prototype.changeUI = function(index) { this.callEventListeners("newsong", this.currentSong); this.callEventListeners("newimage", this.currentImage); this.callEventListeners("newcolour", this.colours[this.colourIndex], false); - this.callEventListeners("beat", this.getBeatString(), this.getSafeBeatIndex()); + this.callEventListeners("beat", this.getBeatString(), this.getBeatIndex()); } }; @@ -866,10 +868,23 @@ HuesCore.prototype.keyHandler = function(key) { }; HuesCore.prototype.error = function(message) { - document.getElementById("preSub").textContent = "Error: " + message; + console.log(message); + document.getElementById("preSub").textContent = message; document.getElementById("preMain").style.color = "#F00"; }; +HuesCore.prototype.warning = function(message) { + console.log(message); + document.getElementById("preSub").textContent = message; + document.getElementById("preMain").style.color = "#F93"; +}; + +HuesCore.prototype.clearMessage = function() { + console.log(message); + document.getElementById("preSub").textContent = ""; + document.getElementById("preMain").style.color = ""; +}; + HuesCore.prototype.oldColours = [{'c': 0x000000, 'n': 'black'}, {'c': 0x550000, 'n': 'brick'}, diff --git a/js/ResourceManager.js b/js/ResourceManager.js index f68bf09..8d21e69 100644 --- a/js/ResourceManager.js +++ b/js/ResourceManager.js @@ -39,7 +39,6 @@ function Resources(core) { this.toLoad = 0; this.progressState = []; this.rToLoad = []; - this.loadFinishCallback = null; this.progressCallback = null; this.root = null; @@ -82,37 +81,32 @@ function Resources(core) { // Array of URLs to load, and a callback for when we're done // Preserves order of URLs being loaded -Resources.prototype.addAll = function(urls, callback, progressCallback) { - this.toLoad += urls.length; - if(progressCallback) { - this.progressCallback = progressCallback; - this.progressState = Array.apply(null, Array(urls.length)).map(Number.prototype.valueOf,0); - } - if(callback) { - this.loadFinishCallback = callback; - } - for(var i = 0; i < urls.length; i++) { - var r = new Respack(); - this.rToLoad.push(r); - r.loadFromURL(urls[i], function() { - this.toLoad--; - if(this.toLoad <= 0) { - // could use a while() and shift(), but it'd be slower - for(var i = 0; i < this.rToLoad.length; i++) { - this.addPack(this.rToLoad[i]); - } - this.rToLoad = []; - if(this.loadFinishCallback) { - this.loadFinishCallback(); - this.loadFinishCallback = null; +Resources.prototype.addAll = function(urls, progressCallback) { + return new Promise(function(resolve, reject) { + this.toLoad += urls.length; + if(progressCallback) { + this.progressCallback = progressCallback; + this.progressState = Array.apply(null, Array(urls.length)).map(Number.prototype.valueOf,0); + } + for(var i = 0; i < urls.length; i++) { + var r = new Respack(); + this.rToLoad.push(r); + r.loadFromURL(urls[i], function() { + this.toLoad--; + if(this.toLoad <= 0) { + for(var i = 0; i < this.rToLoad.length; i++) { + this.addPack(this.rToLoad[i]); + } + this.rToLoad = []; + this.progressCallback = null; + resolve(); } - this.progressCallback = null; - } - }.bind(this), function(index, progress, pack) { - this.progressState[index] = progress; - this.updateProgress(pack); - }.bind(this, i)); - } + }.bind(this), function(index, progress, pack) { + this.progressState[index] = progress; + this.updateProgress(pack); + }.bind(this, i)); + } + }.bind(this)); }; Resources.prototype.updateProgress = function(pack) { diff --git a/js/SoundManager.js b/js/SoundManager.js index adb125c..353431c 100644 --- a/js/SoundManager.js +++ b/js/SoundManager.js @@ -30,6 +30,8 @@ function SoundManager(core) { this.core = core; this.playing = false; this.song = null; + + this.initPromise = null; /* Lower level audio and timing info */ this.bufSource = null; @@ -60,39 +62,73 @@ function SoundManager(core) { this.tmpBuffer = null; this.tmpBuild = null; this.onLoadCallback = null; +} - // In case of API non-support - this.canUse = true; - - // Check Web Audio API Support - try { - // More info at http://caniuse.com/#feat=audio-api - window.AudioContext = window.AudioContext || window.webkitAudioContext; - this.context = new window.AudioContext(); - this.gainNode = this.context.createGain(); - this.gainNode.connect(this.context.destination); - } catch(e) { - this.canUse = false; - this.errorMsg = "Web Audio API not supported in this browser."; - return; +SoundManager.prototype.init = function() { + if(!this.initPromise) { + this.initPromise = new Promise(function(resolve, reject) { + // Check Web Audio API Support + try { + // More info at http://caniuse.com/#feat=audio-api + window.AudioContext = window.AudioContext || window.webkitAudioContext; + this.context = new window.AudioContext(); + this.gainNode = this.context.createGain(); + this.gainNode.connect(this.context.destination); + } catch(e) { + reject(Error("Web Audio API not supported in this browser.")); + return; + } + resolve(); + }.bind(this)).then(function(response) { + return new Promise(function(resolve, reject) { + // Get our MP3 decoder started + try { + this.mp3Worker = new Worker(this.core.settings.defaults.mp3WorkerPath + 'mp3-worker.js'); + } catch(e) { + console.log(e); + reject(Error("MP3 Worker cannot be started - correct path set in defaults?")); + } + var pingListener = function(event) { + this.mp3Worker.removeEventListener('message', pingListener); + this.mp3Worker.addEventListener('message', this.workerFinished.bind(this), false); + resolve(); + }.bind(this) + this.mp3Worker.addEventListener('message', pingListener, false); + this.mp3Worker.addEventListener('error', function() { + reject(Error("MP3 Worker cannot be started - correct path set in defaults?")); + }.bind(this), false); + this.mp3Worker.postMessage({ping:true}); + }.bind(this)) + }.bind(this)).then(function(response) { + return new Promise(function(resolve, reject) { + // iOS and other some mobile browsers - unlock the context as + // it starts in a suspended state + if(this.context.state != "running") { + this.core.warning("We're about to load about 10MB of stuff. Tap to begin!"); + var unlocker = function() { + // create empty buffer + var buffer = this.context.createBuffer(1, 1, 22050); + var source = this.context.createBufferSource(); + source.buffer = buffer; + + // connect to output (your speakers) + source.connect( this.context.destination); + + // play the file + source.start(0); + + window.removeEventListener('touchend', unlocker); + this.core.clearMessage(); + resolve(); + }.bind(this); + window.addEventListener('touchend', unlocker, false); + } else { + resolve(); + } + }.bind(this)) + }.bind(this)); } - - this.mp3Worker = new Worker(core.settings.defaults.mp3WorkerPath + 'mp3-worker.js'); - this.mp3Worker.addEventListener('message', this.workerFinished.bind(this), false); - - window.addEventListener('touchend', function() { - // create empty buffer - var buffer = this.context.createBuffer(1, 1, 22050); - var source = this.context.createBufferSource(); - source.buffer = buffer; - - // connect to output (your speakers) - source.connect( this.context.destination); - - // play the file - source.start(0); - - }.bind(this), false); + return this.initPromise; } SoundManager.prototype.playSong = function(song, playBuild, callback) { diff --git a/js/mp3/mp3-min.js b/js/mp3/mp3-min.js index 91aab3e..0523cfe 100644 --- a/js/mp3/mp3-min.js +++ b/js/mp3/mp3-min.js @@ -108,7 +108,7 @@ l.prototype.bypassResampler=function(a){return this.noReturn?(this.outputBuffer= []}};m.exports=l},{}],24:[function(b,m,g){(function(l){var a,e,d,q=function(a,b){return function(){return a.apply(b,arguments)}},h={}.hasOwnProperty,c=function(a,b){function d(){this.constructor=a}for(var c in b)h.call(b,c)&&(a[c]=b[c]);d.prototype=b.prototype;a.prototype=new d;a.__super__=b.prototype;return a};e=b("../core/events");a=b("../device");d=b("./resampler");(function(b){function k(a,b){this.sampleRate=a;this.channels=b;this.refill=q(this.refill,this);this.context=null!=u?u:u=new h;this.deviceSampleRate= this.context.sampleRate;this.bufferSize=Math.ceil(4096/(this.deviceSampleRate/this.sampleRate)*this.channels);this.bufferSize+=this.bufferSize%this.channels;this.deviceSampleRate!==this.sampleRate&&(this.resampler=new d(this.sampleRate,this.deviceSampleRate,this.channels,4096*this.channels));this.node=this.context[e](4096,this.channels,this.channels);this.node.onaudioprocess=this.refill;this.node.connect(this.context.destination)}var h,e,u;c(k,b);a.register(k);h=l.AudioContext||l.webkitAudioContext; k.supported=h&&("function"===typeof h.prototype[e="createScriptProcessor"]||"function"===typeof h.prototype[e="createJavaScriptNode"]);u=null;k.prototype.refill=function(a){var b,k,d,c,h,e,t;c=a.outputBuffer;a=c.numberOfChannels;b=Array(a);for(d=k=0;kx||3===b.layer&&640=this.header.length)return null;var b=this.readHeader(),a=b.identifier;if(0===b.identifier.charCodeAt(0))return this.offset+=this.header.length+1,null;if(!this.frameTypes[a])for(var e in this.map)if(-1!==this.map[e].indexOf(a)){a= -e;break}this.frameTypes[a]?(a=this.decodeFrame(b,this.frameTypes[a]),e=Object.keys(a),1===e.length&&(a=a[e[0]]),a={value:a}):a={value:this.stream.readBuffer(Math.min(b.length,this.header.length-this.offset))};a.key=this.names[b.identifier]?this.names[b.identifier]:b.identifier;"coverArt"===a.key&&(a.value=a.value.data);this.offset+=10+b.length;return a},decodeFrame(b,a){var e=this.stream,d=e.offset,q=0,h={},c=Object.keys(a).length,x=0,k;for(k in a){var w=a[k],t=b.length-(e.offset-d);x++;switch(k){case "encoding":q= -e.readUInt8();continue;case "language":h.language=e.readString(3);continue}switch(w){case "latin1":h[k]=e.readString(x===c?t:null,"latin1");break;case "string":h[k]=e.readString(x===c?t:null,g[q]);break;case "binary":h[k]=e.readBuffer(t);break;case "int16":h[k]=e.readInt16();break;case "int8":h[k]=e.readInt8();break;case "int24":h[k]=e.readInt24();break;case "int32":h[k]=e.readInt32();break;case "int32+":h[k]=e.readInt32();if(4e;e++)a=(a<<7)+(this.stream.readUInt8()&127);else a=this.stream.readUInt32();return{identifier:b,length:a,flags:this.stream.readUInt16()}},map:{text:"TIT1 TIT2 TIT3 TALB TOAL TRCK TPOS TSST TSRC TPE1 TPE2 TPE3 TPE4 TOPE TEXT TOLY TCOM TMCL TIPL TENC TBPM TLEN TKEY TLAN TCON TFLT TMED TMOO TCOP TPRO TPUB TOWN TRSN TRSO TOFN TDLY TDEN TDOR TDRC TDRL TDTG TSSE TSOA TSOP TSOT TDAT TIME TORY TRDA TSIZ TYER TCMP TSO2 TSOC".split(" "), -url:"WCOM WCOP WOAF WOAR WOAS WORS WPAY WPUB".split(" ")},frameTypes:{text:{encoding:1,value:"string"},url:{value:"latin1"},TXXX:{encoding:1,description:"string",value:"string"},WXXX:{encoding:1,description:"string",value:"latin1"},USLT:{encoding:1,language:1,description:"string",value:"string"},COMM:{encoding:1,language:1,description:"string",value:"string"},APIC:{encoding:1,mime:"latin1",type:"int8",description:"string",data:"binary"},UFID:{owner:"latin1",identifier:"binary"},MCDI:{value:"binary"}, -PRIV:{owner:"latin1",value:"binary"},GEOB:{encoding:1,mime:"latin1",filename:"string",description:"string",data:"binary"},PCNT:{value:"int32+"},POPM:{email:"latin1",rating:"int8",counter:"int32+"},AENC:{owner:"latin1",previewStart:"int16",previewLength:"int16",encryptionInfo:"binary"},ETCO:{format:"int8",data:"binary"},MLLT:{framesBetweenReference:"int16",bytesBetweenReference:"int24",millisecondsBetweenReference:"int24",bitsForBytesDeviation:"int8",bitsForMillisecondsDev:"int8",data:"binary"},SYTC:{format:"int8", -tempoData:"binary"},SYLT:{encoding:1,language:1,format:"int8",contentType:"int8",description:"string",data:"binary"},RVA2:{identification:"latin1",data:"binary"},EQU2:{interpolationMethod:"int8",identification:"latin1",data:"binary"},RVRB:{left:"int16",right:"int16",bouncesLeft:"int8",bouncesRight:"int8",feedbackLL:"int8",feedbackLR:"int8",feedbackRR:"int8",feedbackRL:"int8",premixLR:"int8",premixRL:"int8"},RBUF:{size:"int24",flag:"int8",offset:"int32"},LINK:{identifier:"frame_id",url:"latin1",data:"binary"}, -POSS:{format:"int8",position:"binary"},USER:{encoding:1,language:1,value:"string"},OWNE:{encoding:1,price:"latin1",purchaseDate:"date",seller:"string"},COMR:{encoding:1,price:"latin1",validUntil:"date",contactURL:"latin1",receivedAs:"int8",seller:"string",description:"string",logoMime:"latin1",logo:"binary"},ENCR:{owner:"latin1",methodSymbol:"int8",data:"binary"},GRID:{owner:"latin1",groupSymbol:"int8",data:"binary"},SIGN:{groupSymbol:"int8",signature:"binary"},SEEK:{value:"int32"},ASPI:{dataStart:"int32", -dataLength:"int32",numPoints:"int16",bitsPerPoint:"int8",data:"binary"},IPLS:{encoding:1,value:"string"},RVAD:{adjustment:"int8",bits:"int8",data:"binary"},EQUA:{adjustmentBits:"int8",data:"binary"}},names:{TIT1:"grouping",TIT2:"title",TIT3:"subtitle",TALB:"album",TOAL:"originalAlbumTitle",TRCK:"trackNumber",TPOS:"diskNumber",TSST:"setSubtitle",TSRC:"ISRC",TPE1:"artist",TPE2:"albumArtist",TPE3:"conductor",TPE4:"modifiedBy",TOPE:"originalArtist",TEXT:"lyricist",TOLY:"originalLyricist",TCOM:"composer", -TMCL:"musicianCreditsList",TIPL:"involvedPeopleList",TENC:"encodedBy",TBPM:"tempo",TLEN:"length",TKEY:"initialKey",TLAN:"language",TCON:"genre",TFLT:"fileType",TMED:"mediaType",TMOO:"mood",TCOP:"copyright",TPRO:"producedNotice",TPUB:"publisher",TOWN:"fileOwner",TRSN:"internetRadioStationName",TRSO:"internetRadioStationOwner",TOFN:"originalFilename",TDLY:"playlistDelay",TDEN:"encodingTime",TDOR:"originalReleaseTime",TDRC:"recordingTime",TDRL:"releaseTime",TDTG:"taggingTime",TSSE:"encodedWith",TSOA:"albumSortOrder", -TSOP:"performerSortOrder",TSOT:"titleSortOrder",TXXX:"userText",USLT:"lyrics",APIC:"coverArt",UFID:"uniqueIdentifier",MCDI:"CDIdentifier",COMM:"comments",WCOM:"commercialInformation",WCOP:"copyrightInformation",WOAF:"officialAudioFileWebpage",WOAR:"officialArtistWebpage",WOAS:"officialAudioSourceWebpage",WORS:"officialInternetRadioStationHomepage",WPAY:"payment",WPUB:"officialPublisherWebpage",WXXX:"url",PRIV:"private",GEOB:"generalEncapsulatedObject",PCNT:"playCount",POPM:"rating",AENC:"audioEncryption", -ETCO:"eventTimingCodes",MLLT:"MPEGLocationLookupTable",SYTC:"synchronisedTempoCodes",SYLT:"synchronisedLyrics",RVA2:"volumeAdjustment",EQU2:"equalization",RVRB:"reverb",RBUF:"recommendedBufferSize",LINK:"link",POSS:"positionSynchronisation",USER:"termsOfUse",OWNE:"ownership",COMR:"commercial",ENCR:"encryption",GRID:"groupIdentifier",SIGN:"signature",SEEK:"seek",ASPI:"audioSeekPointIndex",TDAT:"date",TIME:"time",TORY:"originalReleaseYear",TRDA:"recordingDates",TSIZ:"size",TYER:"year",IPLS:"involvedPeopleList", -RVAD:"volumeAdjustment",EQUA:"equalization",TCMP:"compilation",TSO2:"albumArtistSortOrder",TSOC:"composerSortOrder"}});m.ID3v22Stream=m.ID3v23Stream.extend({readHeader(){var b=this.stream.readString(3);this.frameReplacements[b]&&!this.frameTypes[b]&&(this.frameTypes[b]=this.frameReplacements[b]);return{identifier:this.replacements[b]||b,length:this.stream.readUInt24()}},replacements:{UFI:"UFID",TT1:"TIT1",TT2:"TIT2",TT3:"TIT3",TP1:"TPE1",TP2:"TPE2",TP3:"TPE3",TP4:"TPE4",TCM:"TCOM",TXT:"TEXT",TLA:"TLAN", -TCO:"TCON",TAL:"TALB",TPA:"TPOS",TRK:"TRCK",TRC:"TSRC",TYE:"TYER",TDA:"TDAT",TIM:"TIME",TRD:"TRDA",TMT:"TMED",TFT:"TFLT",TBP:"TBPM",TCR:"TCOP",TPB:"TPUB",TEN:"TENC",TSS:"TSSE",TOF:"TOFN",TLE:"TLEN",TSI:"TSIZ",TDY:"TDLY",TKE:"TKEY",TOT:"TOAL",TOA:"TOPE",TOL:"TOLY",TOR:"TORY",TXX:"TXXX",WAF:"WOAF",WAR:"WOAR",WAS:"WOAS",WCM:"WCOM",WCP:"WCOP",WPB:"WPUB",WXX:"WXXX",IPL:"IPLS",MCI:"MCDI",ETC:"ETCO",MLL:"MLLT",STC:"SYTC",ULT:"USLT",SLT:"SYLT",COM:"COMM",RVA:"RVAD",EQU:"EQUA",REV:"RVRB",GEO:"GEOB",CNT:"PCNT", -POP:"POPM",BUF:"RBUF",CRA:"AENC",LNK:"LINK",TST:"TSOT",TSP:"TSOP",TSA:"TSOA",TCP:"TCMP",TS2:"TSO2",TSC:"TSOC"},frameReplacements:{PIC:{encoding:1,format:"int24",type:"int8",description:"string",data:"binary"},CRM:{owner:"latin1",description:"latin1",data:"binary"}}})},{}],8:[function(r,b,m){function g(){this.tmp_imdct36=new Float64Array(18);this.tmp_dctIV=new Float64Array(18);this.tmp_sdctII=new Float64Array(9)}function l(a,b,e){var A,l,n,g,p,m,B,r,D,C,y,E;A=a[3]+a[5];l=a[3]-a[5];n=a[6]+a[2];g=a[6]- -a[2];p=a[1]+a[7];m=a[1]-a[7];B=a[8]+a[0];r=a[8]-a[0];D=A+n+B;C=(l+g)*-c;y=(l-r)*-d;E=(g+r)*-x;l=(l-g+r)*-q;m*=-q;g=(n-B)*-w;B=(A-B)*-k;n=(A-n)*-h;A=a[4]+p;a=2*a[4]-p;b[e+0]=A+D;b[e+2]=C-(m+y);b[e+4]=n-(a+g);b[e+6]=l;b[e+8]=a-g-B;b[e+10]=m-E-y;b[e+12]=D-2*A;b[e+14]=m+E+C;b[e+16]=a+B+n}g.prototype.imdct36=function(a,b){var k=this.tmp_imdct36;this.dctIV(a,k);for(var c=0;9>c;++c)b[c]=k[9+c];for(c=9;27>c;++c)b[c]=-k[36-(9+c)-1];for(c=27;36>c;++c)b[c]=-k[c-27]};var a=[];for(r=0;18>r;r++)a[r]=2*Math.cos(Math.PI* -(2*r+1)/72);g.prototype.dctIV=function(b,k){for(var c=this.tmp_dctIV,d=0;18>d;++d)c[d]=b[d]*a[d];this.sdctII(c,k);k[0]/=2;for(d=1;18>d;++d)k[d]=k[d]/2-k[d-1]};var e=[];for(r=0;9>r;++r)e[r]=2*Math.cos(Math.PI*(2*r+1)/36);g.prototype.sdctII=function(a,b){for(var k=this.tmp_sdctII,c=0;9>c;++c)k[c]=a[c]+a[18-c-1];l(k,b,0);for(c=0;9>c;++c)k[c]=(a[c]-a[18-c-1])*e[c];l(k,b,1);for(c=3;18>c;c+=2)b[c]-=b[c-2]};var d=2*Math.cos(1*Math.PI/18),q=2*Math.cos(3*Math.PI/18),h=2*Math.cos(4*Math.PI/18),c=2*Math.cos(5* -Math.PI/18),x=2*Math.cos(7*Math.PI/18),k=2*Math.cos(8*Math.PI/18),w=2*Math.cos(16*Math.PI/18);g.S=[[.608761429,-.923879533,-.130526192,.991444861,-.382683432,-.79335334],[-.79335334,.382683432,.991444861,.130526192,-.923879533,-.608761429],[.382683432,-.923879533,.923879533,-.382683432,-.382683432,.923879533],[-.923879533,-.382683432,.382683432,.923879533,.923879533,.382683432],[.130526192,-.382683432,.608761429,-.79335334,.923879533,-.991444861],[-.991444861,-.923879533,-.79335334,-.608761429,-.382683432, --.130526192]];b.exports=g},{}],9:[function(r,b,m){function g(){this.allocation=e.makeArray([2,32],Uint8Array);this.scalefactor=e.makeArray([2,32],Uint8Array)}var l=r("./tables"),a=r("./header");m=r("./frame");var e=r("./utils");m.layers[1]=g;var d=new Float32Array([1.33333333333333,1.14285714285714,1.06666666666667,1.03225806451613,1.01587301587302,1.00787401574803,1.00392156862745,1.00195694716243,1.00097751710655,1.00048851978505,1.0002442002442,1.00012208521548,1.00006103888177,1.00003051850948]); -g.prototype.decode=function(b,d){var c=d.header,e=c.nchannels(),k=32;c.mode===a.MODE.JOINT_STEREO&&(c.flags|=a.FLAGS.I_STEREO,k=4+4*c.mode_extension);for(var c=this.allocation,w=0;ww;w++){u=b.read(4);if(15===u)throw Error("forbidden bit allocation value");c[0][w]=c[1][w]=u?u+1:0}for(var g=this.scalefactor,w=0;32>w;w++)for(t=0;tA;A++){for(w=0;ww;w++)if(u=c[0][w])for(u=this.sample(b,u),t=0;t>b-1);return c*d[b-2]};b.exports=g},{"./frame":4,"./header":5,"./tables":14,"./utils":15}],10:[function(r,b,m){function g(){this.samples=new Float64Array(3); -this.allocation=e.makeArray([2,32],Uint8Array);this.scfsi=e.makeArray([2,32],Uint8Array);this.scalefactor=e.makeArray([2,32,3],Uint8Array)}var l=r("./tables"),a=r("./header");m=r("./frame");var e=r("./utils");m.layers[2]=g;var d=[{sblimit:27,offsets:[7,7,7,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0]},{sblimit:30,offsets:[7,7,7,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0]},{sblimit:8,offsets:[5,5,2,2,2,2,2,2]},{sblimit:12,offsets:[5,5,2,2,2,2,2,2,2,2,2,2]},{sblimit:30,offsets:[4,4,4, -4,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}],q=[{nbal:2,offset:0},{nbal:2,offset:3},{nbal:3,offset:3},{nbal:3,offset:1},{nbal:4,offset:2},{nbal:4,offset:3},{nbal:4,offset:4},{nbal:4,offset:5}],h=[[0,1,16],[0,1,2,3,4,5,16],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,16],[0,2,4,5,6,7,8,9,10,11,12,13,14,15,16]],c=[{nlevels:3,group:2,bits:5,C:1.33333333333,D:.5},{nlevels:5,group:3,bits:7,C:1.6,D:.5},{nlevels:7,group:0,bits:3, -C:1.14285714286,D:.25},{nlevels:9,group:4,bits:10,C:1.77777777777,D:.5},{nlevels:15,group:0,bits:4,C:1.06666666666,D:.125},{nlevels:31,group:0,bits:5,C:1.03225806452,D:.0625},{nlevels:63,group:0,bits:6,C:1.01587301587,D:.03125},{nlevels:127,group:0,bits:7,C:1.00787401575,D:.015625},{nlevels:255,group:0,bits:8,C:1.00392156863,D:.0078125},{nlevels:511,group:0,bits:9,C:1.00195694716,D:.00390625},{nlevels:1023,group:0,bits:10,C:1.00097751711,D:.001953125},{nlevels:2047,group:0,bits:11,C:1.00048851979, -D:9.765625E-4},{nlevels:4095,group:0,bits:12,C:1.00024420024,D:4.8828125E-4},{nlevels:8191,group:0,bits:13,C:1.00012208522,D:2.4414063E-4},{nlevels:16383,group:0,bits:14,C:1.00006103888,D:1.2207031E-4},{nlevels:32767,group:0,bits:15,C:1.00003051851,D:6.103516E-5},{nlevels:65535,group:0,bits:16,C:1.00001525902,D:3.051758E-5}];g.prototype.decode=function(b,k){var e=k.header,t=e.nchannels(),u;if(e.flags&a.FLAGS.LSF_EXT)u=4;else if(e.flags&a.FLAGS.FREEFORMAT)u=48E3===e.samplerate?0:1;else{var g=e.bitrate; -if(2===t)g/=2;else if(192E3=g?32E3===e.samplerate?3:2:8E4>=g?0:48E3===e.samplerate?0:1}var g=d[u].sblimit,A=d[u].offsets,m=32;e.mode===a.MODE.JOINT_STEREO&&(e.flags|=a.FLAGS.I_STEREO,m=4+4*e.mode_extension);m>g&&(m=g);for(var e=this.allocation,n=0;nr;r++){for(n=0;n>2]];for(var B=0;3>B;B++)k.sbsample[p][3*r+B][n]=this.samples[B]*u}else for(B=0;3>B;B++)k.sbsample[p][3*r+B][n]=0;for(n=m;n>2]],B=0;3>B;B++)k.sbsample[p][3*r+B][n]=this.samples[B]*u;else for(p=0;pB;B++)k.sbsample[p][3*r+B][n]=0;for(p=0;pB;B++)for(n=g;32>n;n++)k.sbsample[p][3*r+B][n]=0}};g.prototype.decodeSamples=function(a,b){var c=this.samples,d=b.group;if(d)for(var e=a.read(b.bits),h=b.nlevels,g=0;3>g;g++)c[g]=e%h,e=e/h|0;else for(d=b.bits,g=0;3>g;g++)c[g]=a.read(d);for(g=0;3>g;g++)e= -c[g]^1<g.main_data_begin+n&&(d=0);var e=g.main_data_begin+n-d,l=0;if(0===g.main_data_begin)c=a.stream, -a.md_len=0,l=e;else{if(g.main_data_begin>a.md_len)throw Error("bad main_data_begin pointer");var p=a.md_len;if(e>g.main_data_begin){if(a.md_len+e-g.main_data_begin>q.BUFFER_MDLEN)throw Error("Assertion failed: (stream.md_len + md_len - si.main_data_begin <= MAD_MP3FrameHeader.BUFFER_MDLEN)");l=e-g.main_data_begin;this.memcpy(a.main_data,a.md_len,a.stream.stream,a.nextByte(),l);a.md_len+=l}c=new AV.Bitstream(AV.Stream.fromBuffer(new AV.Buffer(a.main_data)));c.advance(8*(p-g.main_data_begin))}n-=l; -this.decodeMainData(c,b,g,h);n>=d?(this.memcpy(a.main_data,0,a.stream.stream,a.next_frame-d,d),a.md_len=d):(ed&&(h=d-n),hm;m++)q.table_select[m]=a.read(5);for(m=0;3>m;m++)q.subblock_gain[m]=a.read(3)}else{for(m=q.block_type=0;3>m;m++)q.table_select[m]=a.read(5);q.region0_count=a.read(4);q.region1_count=a.read(3)}q.flags|=a.read(c?2:3)}return{si:e,data_bitlen:h,priv_bitlen:g}};e.prototype.decodeMainData=function(a, -b,c,e){var h=b.header,g=h.samplerate;h.flags&q.FLAGS.MPEG_2_5_EXT&&(g*=2);g=(g>>7&15)+(g>>15&1)-8;h.flags&q.FLAGS.MPEG_2_5_EXT&&(g+=3);for(var l=h.flags&q.FLAGS.LSF_EXT?1:2,n=this.xr,v=0;vy;++y,x+=18)this.imdct_l(n[r].subarray(x,x+18),I,E), -this.overlap(I,b.overlap[r][y],C,y);else for(y=0;2>y;++y,x+=18)this.imdct_s(n[r].subarray(x,x+18),I),this.overlap(I,b.overlap[r][y],C,y);this.freqinver(C,1);for(y=576;36 -y;++y)this.overlap_z(b.overlap[r][y],C,y),y&1&&this.freqinver(C,y)}}};e.prototype.scalefactors=function(a,b,c,e){var h=a.offset(),g=d.SFLEN_TABLE[b.scalefac_compress].slen1,l=d.SFLEN_TABLE[b.scalefac_compress].slen2,n;if(2===b.block_type){n=0;for(c=b.flags&d.MIXED_BLOCK_FLAG?17:18;c--;)b.scalefac[n++]=a.read(g);for(c=18;c--;)b.scalefac[n++]=a.read(l);for(c=3;c--;)b.scalefac[n++]=0}else{if(e&8)for(n=0;6>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=0;6>n;++n)b.scalefac[n]=a.read(g);if(e&4)for(n=6;11> -n;++n)b.scalefac[n]=c.scalefac[n];else for(n=6;11>n;++n)b.scalefac[n]=a.read(g);if(e&2)for(n=11;16>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=11;16>n;++n)b.scalefac[n]=a.read(l);if(e&1)for(n=16;21>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=16;21>n;++n)b.scalefac[n]=a.read(l);b.scalefac[21]=0}return a.offset()-h};e.prototype.scalefactors_lsf=function(a,b,c,e){var h=a.offset(),g=b.scalefac_compress,l=2===b.block_type?b.flags&d.MIXED_BLOCK_FLAG?2:1:0,n=new Int32Array(4);if(e&d.I_STEREO&&c){g>>>= -1;180>g?(n[0]=g/36,n[1]=g%36/6,n[2]=g%36%6,n[3]=0,e=d.NSFB_TABLE[3][l]):244>g?(g-=180,n[0]=g%64>>>4,n[1]=g%16>>>2,n[2]=g%4,n[3]=0,e=d.NSFB_TABLE[4][l]):(g-=244,n[0]=g/3,n[1]=g%3,n[2]=0,n[3]=0,e=d.NSFB_TABLE[5][l]);for(p=q=0;4>p;++p)for(g=(1<q;)b.scalefac[q]=0,c.scalefac[q++]=0}else{400>g?(n[0]=(g>>>4)/5,n[1]=(g>>>4)%5,n[2]=g%16>>>2,n[3]=g%4,e=d.NSFB_TABLE[0][l]):500>g?(g-=400,n[0]=(g>>>2)/5,n[1]=(g>>>2)%5,n[2]= -g%4,n[3]=0,e=d.NSFB_TABLE[1][l]):(g-=500,n[0]=g/3,n[1]=g%3,n[2]=0,n[3]=0,b.flags|=d.PREFLAG,e=d.NSFB_TABLE[2][l]);for(var q=0,p=0;4>p;p++)for(var m=0;mq;)b.scalefac[q++]=0}return a.offset()-h};e.prototype.huffmanDecode=function(a,b,c,e,g){var l=this._exponents,m=0;g=c.part2_3_length-g;if(0>g)throw Error("bad audio data length");this.exponents(c,e,l);var n=a.copy();a.advance(g);a=8-n.bitPosition;a+=7+(24-a)&-8;var v=n.read(a);g-=a;var p=0,x=0,r=this.reqcache, -G=p+e[m++],D=c.region0_count+1,C=h.huff_pair_table[c.table_select[x]],y=C.table,E=C.linbits,C=C.startbits;if("undefined"===typeof y)throw Error("bad Huffman table select");for(var I=0,K=l[I++],L=0,P=c.big_values;P--&&0a){var J=10+(21-a)&-8,v=v<>a-z&(1<>a-z&(1<>a-E&(1<>a-E&(1<a+g)throw Error("Huffman data overrun");for(var y=h.huff_quad_table[c.flags&d.COUNT1TABLE_SELECT],F=this.requantize(1,K);0=p;)10>a&&(v=v<<16|n.read(16),a+=16,g-=16), -c=y[v>>a-4&15],c.final||(a-=4,c=y[c.ptr.offset+(v>>a-c.ptr.bits&(1<a+g&&(p-=4);if(-g>8*q.BUFFER_GUARD)throw Error("assertion failed: (-bits_left <= MP3FrameHeader.BUFFER_GUARD * CHAR_BIT)"); -for(;576>p;)b[p]=0,b[p+1]=0,p+=2};e.prototype.requantize=function(a,b){var c=b%4>>0;b=b/4>>0;var d=Math.pow(a,4/3),d=d*Math.pow(2,b/4);c&&(d*=Math.pow(2,c/4));0>b&&(d/=Math.pow(2,.75*-b));return d};e.prototype.exponents=function(a,b,c){var e=a.global_gain-210,h=a.flags&d.SCALEFAC_SCALE?2:1;if(2===a.block_type){var g=0,l=0;if(a.flags&d.MIXED_BLOCK_FLAG)for(var n=a.flags&d.PREFLAG?-1:0;36>l;)c[g]=e-(a.scalefac[g]+(d.PRETAB[g]&n)<l;)c[g+0]=n-(a.scalefac[g+0]<g;g++)c[g]=e-(a.scalefac[g]+d.PRETAB[g]<g;g++)c[g]=e-(a.scalefac[g]<p;p++)l[p]=e.mode_extension;if(e.mode_extension&d.I_STEREO){var x=g.ch[1],r=a[1];e.flags|=q.FLAGS.tables.I_STEREO;if(2===x.block_type){var G,D,C,y=new Uint32Array(3),E,g=n=G=D=C=y[0]=y[1]=y[2]=0;if(x.flags&d.MIXED_BLOCK_FLAG){for(;36>n;){m=h[g++];for(p=0;pn;){m=h[g++];for(p=0;pn;n+=m){m=h[g++];for(p=0;pn;++g,n+=m){if(m=h[g],l[g]&d.I_STEREO)if(b[g])l[g]&=~d.I_STEREO;else for(is_pos=x.scalefac[g],p=0;pn;++g,n+=m)if(m=h[g],l[g]& -d.I_STEREO)if(is_pos=x.scalefac[g],7<=is_pos)l[g]&=~d.I_STEREO;else for(p=0;pn;++g,n+=m)if(m=h[g],l[g]===d.MS_STEREO)for(p=0;pe;++e){var g=a[c-e-1],h=a[c+e];a[c-e-1]=g*d.CS[e]-h*d.CA[e];a[c+ -e]=h*d.CS[e]+g*d.CA[e]}};e.prototype.imdct_l=function(a,b,c){this.imdct.imdct36(a,b);switch(c){case 0:for(a=0;36>a;++a)b[a]*=d.WINDOW_L[a];break;case 1:for(a=0;18>a;++a)b[a]*=d.WINDOW_L[a];for(a=24;30>a;++a)b[a]*=d.WINDOW_S[a-18];for(a=30;36>a;++a)b[a]=0;break;case 3:for(a=0;6>a;++a)b[a]=0;for(a=6;12>a;++a)b[a]*=d.WINDOW_S[a-6];for(a=18;36>a;++a)b[a]*=d.WINDOW_L[a]}};e.prototype.imdct_s=function(a,b){var e=0,g;g=0;for(var h=new Float64Array(36),l,q=0;3>q;++q){for(var n=0,m=0;3>m;++m)l=a[g+0]*c.S[n][0]+ -a[g+1]*c.S[n][1]+a[g+2]*c.S[n][2]+a[g+3]*c.S[n][3]+a[g+4]*c.S[n][4]+a[g+5]*c.S[n][5],h[e+m+0]=l,h[e+5-m]=-h[e+m+0],++n,l=a[g+0]*c.S[n][0]+a[g+1]*c.S[n][1]+a[g+2]*c.S[n][2]+a[g+3]*c.S[n][3]+a[g+4]*c.S[n][4]+a[g+5]*c.S[n][5],h[e+m+6]=l,h[e+11-m]=h[e+m+6],++n;e+=12;g+=6}for(m=g=e=0;6>m;++m)b[m+0]=0,b[m+6]=h[e+0+0]*d.WINDOW_S[g+0],l=h[e+0+6]*d.WINDOW_S[g+6]+h[e+12+0]*d.WINDOW_S[g+0],b[m+12]=l,l=h[e+12+6]*d.WINDOW_S[g+6]+h[e+24+0]*d.WINDOW_S[g+0],b[m+18]=l,b[m+24]=h[e+24+6]*d.WINDOW_S[g+6],b[m+30]=0,++e, -++g};e.prototype.overlap=function(a,b,c,d){for(var e=0;18>e;++e)c[e][d]=a[e]+b[e],b[e]=a[e+18]};e.prototype.freqinver=function(a,b){for(var c=1;18>c;c+=2)a[c][b]=-a[c][b]};e.prototype.overlap_z=function(a,b,c){for(var d=0;18>d;++d)b[d][c]=a[d],a[d]=0};e.prototype.reorder=function(a,b,c){var e=0,g=this.tmp,h=new Uint32Array(3),l=new Uint32Array(3),n=0;if(b.flags&d.MIXED_BLOCK_FLAG)for(n=2,b=0;36>b;)b+=c[e++];for(var m=0;3>m;++m)h[m]=n,l[m]=0;f=c[e++];m=0;for(b=18*n;576>b;++b)0===f--&&(f=c[e++]-1,m= -(m+1)%3),g[h[m]][m][l[m]++]=a[b],6===l[m]&&(l[m]=0,++h[m]);c=this.tmp2;for(e=h=0;32>e;e++)for(l=0;3>l;l++)for(b=0;6>b;b++)c[h++]=g[e][l][b];g=576-18*n;for(e=0;e>1,t[0][u&1],t[1][u&1]);var v=u&-2,p=u-1&15|1,O=t[0][u&1];c=t[0][~u&1];var B=t[1][~u&1],G=0,D=0;h=0;m=a[h];_fx=c[0];_fe=O[G];c=_fx[0]*m[p+0];c+=_fx[1]*m[p+14];c+=_fx[2]*m[p+12];c+=_fx[3]*m[p+10];c+=_fx[4]*m[p+8];c+=_fx[5]*m[p+6];c+=_fx[6]*m[p+4];c+=_fx[7]*m[p+2]; -c=-c;c+=_fe[0]*m[v+0];c+=_fe[1]*m[v+14];c+=_fe[2]*m[v+12];c+=_fe[3]*m[v+10];c+=_fe[4]*m[v+8];c+=_fe[5]*m[v+6];c+=_fe[6]*m[v+4];c+=_fe[7]*m[v+2];H[A++]=c;for(var M=A+30,C=1;16>C;++C)++G,++h,m=a[h],_fo=B[D],_fe=O[G],c=_fo[0]*m[p+0],c+=_fo[1]*m[p+14],c+=_fo[2]*m[p+12],c+=_fo[3]*m[p+10],c+=_fo[4]*m[p+8],c+=_fo[5]*m[p+6],c+=_fo[6]*m[p+4],c+=_fo[7]*m[p+2],c=-c,c+=_fe[7]*m[v+2],c+=_fe[6]*m[v+4],c+=_fe[5]*m[v+6],c+=_fe[4]*m[v+8],c+=_fe[3]*m[v+10],c+=_fe[2]*m[v+12],c+=_fe[1]*m[v+14],c+=_fe[0]*m[v+0],H[A++]= -c,c=_fe[0]*m[-v+31-16],c+=_fe[1]*m[-v+31-14],c+=_fe[2]*m[-v+31-12],c+=_fe[3]*m[-v+31-10],c+=_fe[4]*m[-v+31-8],c+=_fe[5]*m[-v+31-6],c+=_fe[6]*m[-v+31-4],c+=_fe[7]*m[-v+31-2],c+=_fo[7]*m[-p+31-2],c+=_fo[6]*m[-p+31-4],c+=_fo[5]*m[-p+31-6],c+=_fo[4]*m[-p+31-8],c+=_fo[3]*m[-p+31-10],c+=_fo[2]*m[-p+31-12],c+=_fo[1]*m[-p+31-14],c+=_fo[0]*m[-p+31-16],H[M--]=c,++D;++h;m=a[h];_fo=B[D];c=_fo[0]*m[p+0];c+=_fo[1]*m[p+14];c+=_fo[2]*m[p+12];c+=_fo[3]*m[p+10];c+=_fo[4]*m[p+8];c+=_fo[5]*m[p+6];c+=_fo[6]*m[p+4];c+= -_fo[7]*m[p+2];H[A]=-c;A+=16;u=(u+1)%16}};g.prototype.frame=function(a){var b=a.header.nchannels(),g=a.header.nbsamples();this.pcm.samplerate=a.header.samplerate;this.pcm.channels=b;this.pcm.length=32*g;this.full(a,b,g);this.phase=(this.phase+g)%16};b.exports=g},{"./utils":15}],14:[function(r,b,m){m.SF_TABLE=new Float32Array([2,1.587401051968,1.259921049895,1,.793700525984,.629960524947,.5,.396850262992,.314980262474,.25,.198425131496,.157490131237,.125,.099212565748,.078745065618,.0625,.049606282874, -.039372532809,.03125,.024803141437,.019686266405,.015625,.012401570719,.009843133202,.0078125,.006200785359,.004921566601,.00390625,.00310039268,.002460783301,.001953125,.00155019634,.00123039165,9.765625E-4,7.7509817E-4,6.15195825E-4,4.8828125E-4,3.87549085E-4,3.07597913E-4,2.44140625E-4,1.93774542E-4,1.53798956E-4,1.22070313E-4,9.6887271E-5,7.6899478E-5,6.1035156E-5,4.8443636E-5,3.8449739E-5,3.0517578E-5,2.4221818E-5,1.922487E-5,1.5258789E-5,1.2110909E-5,9.612435E-6,7.629395E-6,6.055454E-6,4.806217E-6, -3.814697E-6,3.027727E-6,2.403109E-6,1.907349E-6,1.513864E-6,1.201554E-6,0]);r=new Uint8Array([4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192]);b=new Uint8Array([4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158]);var g=new Uint8Array([4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26]),l=new Uint8Array([4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66]),a=new Uint8Array([4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12, -14,14,14,18,18,18,22,22,22,30,30,30,56,56,56]),e=new Uint8Array([4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12]),d=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66]),q=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56]),h=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42, -42,12,12,12]),c=new Uint8Array([6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36]),x=new Uint8Array([6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54]),k=new Uint8Array([4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12]),w=new Uint8Array([4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18]),t=new Uint8Array([4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24, -24,30,30,30,40,40,40,18,18,18]),u=new Uint8Array([6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12]),H=new Uint8Array([6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18]),A=new Uint8Array([6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18]),M=new Uint8Array([12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2]),n=new Uint8Array([8,8,8,8,8,8,8,8,8,12,12,12, -16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26]),v=new Uint8Array([12,12,12,4,4,4,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26]);m.SFBWIDTH_TABLE=[{l:r,s:l,m:d},{l:b,s:a,m:q},{l:g,s:e,m:h},{l:c,s:k,m:u},{l:x,s:w,m:H},{l:x,s:t,m:A},{l:x,s:t,m:A},{l:x,s:t,m:A},{l:M,s:n,m:v}];m.PRETAB=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0]);m.ROOT_TABLE=new Float32Array([.59460355750136,.70710678118655,.84089641525371,1,1.18920711500272, -1.4142135623731,1.68179283050743]);m.CS=new Float32Array([.857492926,.881741997,.949628649,.983314592,.995517816,.999160558,.999899195,.999993155]);m.CA=new Float32Array([-.514495755,-.471731969,-.313377454,-.1819132,-.094574193,-.040965583,-.014198569,-.003699975]);m.COUNT1TABLE_SELECT=1;m.SCALEFAC_SCALE=2;m.PREFLAG=4;m.MIXED_BLOCK_FLAG=8;m.I_STEREO=1;m.MS_STEREO=2;m.WINDOW_L=new Float32Array([.043619387,.130526192,.216439614,.3007058,.382683432,.461748613,.537299608,.608761429,.675590208,.737277337, -.79335334,.843391446,.887010833,.923879533,.953716951,.976296007,.991444861,.999048222,.999048222,.991444861,.976296007,.953716951,.923879533,.887010833,.843391446,.79335334,.737277337,.675590208,.608761429,.537299608,.461748613,.382683432,.3007058,.216439614,.130526192,.043619387]);m.WINDOW_S=new Float32Array([.130526192,.382683432,.608761429,.79335334,.923879533,.991444861,.991444861,.923879533,.79335334,.608761429,.382683432,.130526192]);m.IS_TABLE=new Float32Array([0,.211324865,.366025404,.5, -.633974596,.788675135,1]);m.IS_LSF_TABLE=[new Float32Array([.840896415,.707106781,.594603558,.5,.420448208,.353553391,.297301779,.25,.210224104,.176776695,.148650889,.125,.105112052,.088388348,.074325445]),new Float32Array([.707106781,.5,.353553391,.25,.176776695,.125,.088388348,.0625,.044194174,.03125,.022097087,.015625,.011048543,.0078125,.005524272])];m.SFLEN_TABLE=[{slen1:0,slen2:0},{slen1:0,slen2:1},{slen1:0,slen2:2},{slen1:0,slen2:3},{slen1:3,slen2:0},{slen1:1,slen2:1},{slen1:1,slen2:2},{slen1:1, -slen2:3},{slen1:2,slen2:1},{slen1:2,slen2:2},{slen1:2,slen2:3},{slen1:3,slen2:1},{slen1:3,slen2:2},{slen1:3,slen2:3},{slen1:4,slen2:2},{slen1:4,slen2:3}];m.NSFB_TABLE=[[[6,5,5,5],[9,9,9,9],[6,9,9,9]],[[6,5,7,3],[9,9,12,6],[6,9,12,6]],[[11,10,0,0],[18,18,0,0],[15,18,0,0]],[[7,7,7,0],[12,12,12,0],[6,15,12,0]],[[6,6,6,3],[12,9,9,6],[6,12,9,6]],[[8,8,5,0],[15,12,9,0],[6,18,9,0]]]},{}],15:[function(r,b,m){m.makeArray=function(b,l){l||(l=Float64Array);if(1===b.length)return new l(b[0]);for(var a=[],e=b[0], -d=0;d=this.header.length)return null;var b=this.readHeader(),a=b.identifier;if(0===b.identifier.charCodeAt(0))return this.offset+=this.header.length+1,null;if(!this.frameTypes[a])for(var e in this.map)if(-1!== +this.map[e].indexOf(a)){a=e;break}this.frameTypes[a]?(a=this.decodeFrame(b,this.frameTypes[a]),e=Object.keys(a),1===e.length&&(a=a[e[0]]),a={value:a}):a={value:this.stream.readBuffer(Math.min(b.length,this.header.length-this.offset))};a.key=this.names[b.identifier]?this.names[b.identifier]:b.identifier;"coverArt"===a.key&&(a.value=a.value.data);this.offset+=10+b.length;return a},decodeFrame:function(b,a){var e=this.stream,d=e.offset,q=0,h={},c=Object.keys(a).length,x=0,k;for(k in a){var w=a[k],t= +b.length-(e.offset-d);x++;switch(k){case "encoding":q=e.readUInt8();continue;case "language":h.language=e.readString(3);continue}switch(w){case "latin1":h[k]=e.readString(x===c?t:null,"latin1");break;case "string":h[k]=e.readString(x===c?t:null,g[q]);break;case "binary":h[k]=e.readBuffer(t);break;case "int16":h[k]=e.readInt16();break;case "int8":h[k]=e.readInt8();break;case "int24":h[k]=e.readInt24();break;case "int32":h[k]=e.readInt32();break;case "int32+":h[k]=e.readInt32();if(4e;e++)a=(a<<7)+(this.stream.readUInt8()&127);else a=this.stream.readUInt32();return{identifier:b,length:a,flags:this.stream.readUInt16()}}, +map:{text:"TIT1 TIT2 TIT3 TALB TOAL TRCK TPOS TSST TSRC TPE1 TPE2 TPE3 TPE4 TOPE TEXT TOLY TCOM TMCL TIPL TENC TBPM TLEN TKEY TLAN TCON TFLT TMED TMOO TCOP TPRO TPUB TOWN TRSN TRSO TOFN TDLY TDEN TDOR TDRC TDRL TDTG TSSE TSOA TSOP TSOT TDAT TIME TORY TRDA TSIZ TYER TCMP TSO2 TSOC".split(" "),url:"WCOM WCOP WOAF WOAR WOAS WORS WPAY WPUB".split(" ")},frameTypes:{text:{encoding:1,value:"string"},url:{value:"latin1"},TXXX:{encoding:1,description:"string",value:"string"},WXXX:{encoding:1,description:"string", +value:"latin1"},USLT:{encoding:1,language:1,description:"string",value:"string"},COMM:{encoding:1,language:1,description:"string",value:"string"},APIC:{encoding:1,mime:"latin1",type:"int8",description:"string",data:"binary"},UFID:{owner:"latin1",identifier:"binary"},MCDI:{value:"binary"},PRIV:{owner:"latin1",value:"binary"},GEOB:{encoding:1,mime:"latin1",filename:"string",description:"string",data:"binary"},PCNT:{value:"int32+"},POPM:{email:"latin1",rating:"int8",counter:"int32+"},AENC:{owner:"latin1", +previewStart:"int16",previewLength:"int16",encryptionInfo:"binary"},ETCO:{format:"int8",data:"binary"},MLLT:{framesBetweenReference:"int16",bytesBetweenReference:"int24",millisecondsBetweenReference:"int24",bitsForBytesDeviation:"int8",bitsForMillisecondsDev:"int8",data:"binary"},SYTC:{format:"int8",tempoData:"binary"},SYLT:{encoding:1,language:1,format:"int8",contentType:"int8",description:"string",data:"binary"},RVA2:{identification:"latin1",data:"binary"},EQU2:{interpolationMethod:"int8",identification:"latin1", +data:"binary"},RVRB:{left:"int16",right:"int16",bouncesLeft:"int8",bouncesRight:"int8",feedbackLL:"int8",feedbackLR:"int8",feedbackRR:"int8",feedbackRL:"int8",premixLR:"int8",premixRL:"int8"},RBUF:{size:"int24",flag:"int8",offset:"int32"},LINK:{identifier:"frame_id",url:"latin1",data:"binary"},POSS:{format:"int8",position:"binary"},USER:{encoding:1,language:1,value:"string"},OWNE:{encoding:1,price:"latin1",purchaseDate:"date",seller:"string"},COMR:{encoding:1,price:"latin1",validUntil:"date",contactURL:"latin1", +receivedAs:"int8",seller:"string",description:"string",logoMime:"latin1",logo:"binary"},ENCR:{owner:"latin1",methodSymbol:"int8",data:"binary"},GRID:{owner:"latin1",groupSymbol:"int8",data:"binary"},SIGN:{groupSymbol:"int8",signature:"binary"},SEEK:{value:"int32"},ASPI:{dataStart:"int32",dataLength:"int32",numPoints:"int16",bitsPerPoint:"int8",data:"binary"},IPLS:{encoding:1,value:"string"},RVAD:{adjustment:"int8",bits:"int8",data:"binary"},EQUA:{adjustmentBits:"int8",data:"binary"}},names:{TIT1:"grouping", +TIT2:"title",TIT3:"subtitle",TALB:"album",TOAL:"originalAlbumTitle",TRCK:"trackNumber",TPOS:"diskNumber",TSST:"setSubtitle",TSRC:"ISRC",TPE1:"artist",TPE2:"albumArtist",TPE3:"conductor",TPE4:"modifiedBy",TOPE:"originalArtist",TEXT:"lyricist",TOLY:"originalLyricist",TCOM:"composer",TMCL:"musicianCreditsList",TIPL:"involvedPeopleList",TENC:"encodedBy",TBPM:"tempo",TLEN:"length",TKEY:"initialKey",TLAN:"language",TCON:"genre",TFLT:"fileType",TMED:"mediaType",TMOO:"mood",TCOP:"copyright",TPRO:"producedNotice", +TPUB:"publisher",TOWN:"fileOwner",TRSN:"internetRadioStationName",TRSO:"internetRadioStationOwner",TOFN:"originalFilename",TDLY:"playlistDelay",TDEN:"encodingTime",TDOR:"originalReleaseTime",TDRC:"recordingTime",TDRL:"releaseTime",TDTG:"taggingTime",TSSE:"encodedWith",TSOA:"albumSortOrder",TSOP:"performerSortOrder",TSOT:"titleSortOrder",TXXX:"userText",USLT:"lyrics",APIC:"coverArt",UFID:"uniqueIdentifier",MCDI:"CDIdentifier",COMM:"comments",WCOM:"commercialInformation",WCOP:"copyrightInformation", +WOAF:"officialAudioFileWebpage",WOAR:"officialArtistWebpage",WOAS:"officialAudioSourceWebpage",WORS:"officialInternetRadioStationHomepage",WPAY:"payment",WPUB:"officialPublisherWebpage",WXXX:"url",PRIV:"private",GEOB:"generalEncapsulatedObject",PCNT:"playCount",POPM:"rating",AENC:"audioEncryption",ETCO:"eventTimingCodes",MLLT:"MPEGLocationLookupTable",SYTC:"synchronisedTempoCodes",SYLT:"synchronisedLyrics",RVA2:"volumeAdjustment",EQU2:"equalization",RVRB:"reverb",RBUF:"recommendedBufferSize",LINK:"link", +POSS:"positionSynchronisation",USER:"termsOfUse",OWNE:"ownership",COMR:"commercial",ENCR:"encryption",GRID:"groupIdentifier",SIGN:"signature",SEEK:"seek",ASPI:"audioSeekPointIndex",TDAT:"date",TIME:"time",TORY:"originalReleaseYear",TRDA:"recordingDates",TSIZ:"size",TYER:"year",IPLS:"involvedPeopleList",RVAD:"volumeAdjustment",EQUA:"equalization",TCMP:"compilation",TSO2:"albumArtistSortOrder",TSOC:"composerSortOrder"}});m.ID3v22Stream=m.ID3v23Stream.extend({readHeader:function(){var b=this.stream.readString(3); +this.frameReplacements[b]&&!this.frameTypes[b]&&(this.frameTypes[b]=this.frameReplacements[b]);return{identifier:this.replacements[b]||b,length:this.stream.readUInt24()}},replacements:{UFI:"UFID",TT1:"TIT1",TT2:"TIT2",TT3:"TIT3",TP1:"TPE1",TP2:"TPE2",TP3:"TPE3",TP4:"TPE4",TCM:"TCOM",TXT:"TEXT",TLA:"TLAN",TCO:"TCON",TAL:"TALB",TPA:"TPOS",TRK:"TRCK",TRC:"TSRC",TYE:"TYER",TDA:"TDAT",TIM:"TIME",TRD:"TRDA",TMT:"TMED",TFT:"TFLT",TBP:"TBPM",TCR:"TCOP",TPB:"TPUB",TEN:"TENC",TSS:"TSSE",TOF:"TOFN",TLE:"TLEN", +TSI:"TSIZ",TDY:"TDLY",TKE:"TKEY",TOT:"TOAL",TOA:"TOPE",TOL:"TOLY",TOR:"TORY",TXX:"TXXX",WAF:"WOAF",WAR:"WOAR",WAS:"WOAS",WCM:"WCOM",WCP:"WCOP",WPB:"WPUB",WXX:"WXXX",IPL:"IPLS",MCI:"MCDI",ETC:"ETCO",MLL:"MLLT",STC:"SYTC",ULT:"USLT",SLT:"SYLT",COM:"COMM",RVA:"RVAD",EQU:"EQUA",REV:"RVRB",GEO:"GEOB",CNT:"PCNT",POP:"POPM",BUF:"RBUF",CRA:"AENC",LNK:"LINK",TST:"TSOT",TSP:"TSOP",TSA:"TSOA",TCP:"TCMP",TS2:"TSO2",TSC:"TSOC"},frameReplacements:{PIC:{encoding:1,format:"int24",type:"int8",description:"string", +data:"binary"},CRM:{owner:"latin1",description:"latin1",data:"binary"}}})},{}],8:[function(r,b,m){function g(){this.tmp_imdct36=new Float64Array(18);this.tmp_dctIV=new Float64Array(18);this.tmp_sdctII=new Float64Array(9)}function l(a,b,e){var A,l,n,g,p,m,B,r,D,C,y,E;A=a[3]+a[5];l=a[3]-a[5];n=a[6]+a[2];g=a[6]-a[2];p=a[1]+a[7];m=a[1]-a[7];B=a[8]+a[0];r=a[8]-a[0];D=A+n+B;C=(l+g)*-c;y=(l-r)*-d;E=(g+r)*-x;l=(l-g+r)*-q;m*=-q;g=(n-B)*-w;B=(A-B)*-k;n=(A-n)*-h;A=a[4]+p;a=2*a[4]-p;b[e+0]=A+D;b[e+2]=C-(m+y); +b[e+4]=n-(a+g);b[e+6]=l;b[e+8]=a-g-B;b[e+10]=m-E-y;b[e+12]=D-2*A;b[e+14]=m+E+C;b[e+16]=a+B+n}g.prototype.imdct36=function(a,b){var k=this.tmp_imdct36;this.dctIV(a,k);for(var c=0;9>c;++c)b[c]=k[9+c];for(c=9;27>c;++c)b[c]=-k[36-(9+c)-1];for(c=27;36>c;++c)b[c]=-k[c-27]};var a=[];for(r=0;18>r;r++)a[r]=2*Math.cos(Math.PI*(2*r+1)/72);g.prototype.dctIV=function(b,k){for(var c=this.tmp_dctIV,d=0;18>d;++d)c[d]=b[d]*a[d];this.sdctII(c,k);k[0]/=2;for(d=1;18>d;++d)k[d]=k[d]/2-k[d-1]};var e=[];for(r=0;9>r;++r)e[r]= +2*Math.cos(Math.PI*(2*r+1)/36);g.prototype.sdctII=function(a,b){for(var k=this.tmp_sdctII,c=0;9>c;++c)k[c]=a[c]+a[18-c-1];l(k,b,0);for(c=0;9>c;++c)k[c]=(a[c]-a[18-c-1])*e[c];l(k,b,1);for(c=3;18>c;c+=2)b[c]-=b[c-2]};var d=2*Math.cos(1*Math.PI/18),q=2*Math.cos(3*Math.PI/18),h=2*Math.cos(4*Math.PI/18),c=2*Math.cos(5*Math.PI/18),x=2*Math.cos(7*Math.PI/18),k=2*Math.cos(8*Math.PI/18),w=2*Math.cos(16*Math.PI/18);g.S=[[.608761429,-.923879533,-.130526192,.991444861,-.382683432,-.79335334],[-.79335334,.382683432, +.991444861,.130526192,-.923879533,-.608761429],[.382683432,-.923879533,.923879533,-.382683432,-.382683432,.923879533],[-.923879533,-.382683432,.382683432,.923879533,.923879533,.382683432],[.130526192,-.382683432,.608761429,-.79335334,.923879533,-.991444861],[-.991444861,-.923879533,-.79335334,-.608761429,-.382683432,-.130526192]];b.exports=g},{}],9:[function(r,b,m){function g(){this.allocation=e.makeArray([2,32],Uint8Array);this.scalefactor=e.makeArray([2,32],Uint8Array)}var l=r("./tables"),a=r("./header"); +m=r("./frame");var e=r("./utils");m.layers[1]=g;var d=new Float32Array([1.33333333333333,1.14285714285714,1.06666666666667,1.03225806451613,1.01587301587302,1.00787401574803,1.00392156862745,1.00195694716243,1.00097751710655,1.00048851978505,1.0002442002442,1.00012208521548,1.00006103888177,1.00003051850948]);g.prototype.decode=function(b,d){var c=d.header,e=c.nchannels(),k=32;c.mode===a.MODE.JOINT_STEREO&&(c.flags|=a.FLAGS.I_STEREO,k=4+4*c.mode_extension);for(var c=this.allocation,w=0;ww;w++){u=b.read(4);if(15===u)throw Error("forbidden bit allocation value");c[0][w]=c[1][w]=u?u+1:0}for(var g=this.scalefactor,w=0;32>w;w++)for(t=0;tA;A++){for(w=0;ww;w++)if(u=c[0][w])for(u=this.sample(b,u),t=0;t>b-1);return c*d[b-2]};b.exports=g},{"./frame":4,"./header":5,"./tables":14,"./utils":15}],10:[function(r,b,m){function g(){this.samples=new Float64Array(3);this.allocation=e.makeArray([2,32],Uint8Array);this.scfsi=e.makeArray([2,32],Uint8Array);this.scalefactor=e.makeArray([2,32,3],Uint8Array)}var l=r("./tables"),a=r("./header");m=r("./frame"); +var e=r("./utils");m.layers[2]=g;var d=[{sblimit:27,offsets:[7,7,7,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0]},{sblimit:30,offsets:[7,7,7,6,6,6,6,6,6,6,6,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0]},{sblimit:8,offsets:[5,5,2,2,2,2,2,2]},{sblimit:12,offsets:[5,5,2,2,2,2,2,2,2,2,2,2]},{sblimit:30,offsets:[4,4,4,4,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}],q=[{nbal:2,offset:0},{nbal:2,offset:3},{nbal:3,offset:3},{nbal:3,offset:1},{nbal:4,offset:2},{nbal:4,offset:3},{nbal:4,offset:4},{nbal:4, +offset:5}],h=[[0,1,16],[0,1,2,3,4,5,16],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,16],[0,2,4,5,6,7,8,9,10,11,12,13,14,15,16]],c=[{nlevels:3,group:2,bits:5,C:1.33333333333,D:.5},{nlevels:5,group:3,bits:7,C:1.6,D:.5},{nlevels:7,group:0,bits:3,C:1.14285714286,D:.25},{nlevels:9,group:4,bits:10,C:1.77777777777,D:.5},{nlevels:15,group:0,bits:4,C:1.06666666666,D:.125},{nlevels:31,group:0,bits:5,C:1.03225806452,D:.0625},{nlevels:63,group:0, +bits:6,C:1.01587301587,D:.03125},{nlevels:127,group:0,bits:7,C:1.00787401575,D:.015625},{nlevels:255,group:0,bits:8,C:1.00392156863,D:.0078125},{nlevels:511,group:0,bits:9,C:1.00195694716,D:.00390625},{nlevels:1023,group:0,bits:10,C:1.00097751711,D:.001953125},{nlevels:2047,group:0,bits:11,C:1.00048851979,D:9.765625E-4},{nlevels:4095,group:0,bits:12,C:1.00024420024,D:4.8828125E-4},{nlevels:8191,group:0,bits:13,C:1.00012208522,D:2.4414063E-4},{nlevels:16383,group:0,bits:14,C:1.00006103888,D:1.2207031E-4}, +{nlevels:32767,group:0,bits:15,C:1.00003051851,D:6.103516E-5},{nlevels:65535,group:0,bits:16,C:1.00001525902,D:3.051758E-5}];g.prototype.decode=function(b,k){var e=k.header,t=e.nchannels(),u;if(e.flags&a.FLAGS.LSF_EXT)u=4;else if(e.flags&a.FLAGS.FREEFORMAT)u=48E3===e.samplerate?0:1;else{var g=e.bitrate;if(2===t)g/=2;else if(192E3=g?32E3===e.samplerate?3:2:8E4>=g?0:48E3===e.samplerate?0:1}var g=d[u].sblimit,A=d[u].offsets,m=32;e.mode===a.MODE.JOINT_STEREO&& +(e.flags|=a.FLAGS.I_STEREO,m=4+4*e.mode_extension);m>g&&(m=g);for(var e=this.allocation,n=0;nr;r++){for(n=0;n>2]];for(var B=0;3>B;B++)k.sbsample[p][3*r+B][n]=this.samples[B]*u}else for(B=0;3>B;B++)k.sbsample[p][3*r+B][n]=0;for(n=m;n>2]],B=0;3>B;B++)k.sbsample[p][3*r+B][n]=this.samples[B]*u;else for(p=0;p +B;B++)k.sbsample[p][3*r+B][n]=0;for(p=0;pB;B++)for(n=g;32>n;n++)k.sbsample[p][3*r+B][n]=0}};g.prototype.decodeSamples=function(a,b){var c=this.samples,d=b.group;if(d)for(var e=a.read(b.bits),h=b.nlevels,g=0;3>g;g++)c[g]=e%h,e=e/h|0;else for(d=b.bits,g=0;3>g;g++)c[g]=a.read(d);for(g=0;3>g;g++)e=c[g]^1<g.main_data_begin+n&&(d=0);var e=g.main_data_begin+n-d,l=0;if(0===g.main_data_begin)c=a.stream,a.md_len=0,l=e;else{if(g.main_data_begin>a.md_len)throw Error("bad main_data_begin pointer");var p=a.md_len;if(e>g.main_data_begin){if(a.md_len+e-g.main_data_begin>q.BUFFER_MDLEN)throw Error("Assertion failed: (stream.md_len + md_len - si.main_data_begin <= MAD_MP3FrameHeader.BUFFER_MDLEN)"); +l=e-g.main_data_begin;this.memcpy(a.main_data,a.md_len,a.stream.stream,a.nextByte(),l);a.md_len+=l}c=new AV.Bitstream(AV.Stream.fromBuffer(new AV.Buffer(a.main_data)));c.advance(8*(p-g.main_data_begin))}n-=l;this.decodeMainData(c,b,g,h);n>=d?(this.memcpy(a.main_data,0,a.stream.stream,a.next_frame-d,d),a.md_len=d):(ed&&(h=d-n),hm;m++)q.table_select[m]=a.read(5);for(m=0;3>m;m++)q.subblock_gain[m]=a.read(3)}else{for(m=q.block_type= +0;3>m;m++)q.table_select[m]=a.read(5);q.region0_count=a.read(4);q.region1_count=a.read(3)}q.flags|=a.read(c?2:3)}return{si:e,data_bitlen:h,priv_bitlen:g}};e.prototype.decodeMainData=function(a,b,c,e){var h=b.header,g=h.samplerate;h.flags&q.FLAGS.MPEG_2_5_EXT&&(g*=2);g=(g>>7&15)+(g>>15&1)-8;h.flags&q.FLAGS.MPEG_2_5_EXT&&(g+=3);for(var l=h.flags&q.FLAGS.LSF_EXT?1:2,n=this.xr,v=0;vy;++y,x+=18)this.imdct_l(n[r].subarray(x,x+18),I,E),this.overlap(I,b.overlap[r][y],C,y);else for(y=0;2>y;++y,x+=18)this.imdct_s(n[r].subarray(x,x+18),I),this.overlap(I,b.overlap[r][y],C,y);this.freqinver(C,1);for(y=576;36y;++y)this.overlap_z(b.overlap[r][y],C,y),y&1&&this.freqinver(C,y)}}};e.prototype.scalefactors=function(a,b,c,e){var h=a.offset(),g=d.SFLEN_TABLE[b.scalefac_compress].slen1,l=d.SFLEN_TABLE[b.scalefac_compress].slen2,n;if(2===b.block_type){n=0;for(c=b.flags&d.MIXED_BLOCK_FLAG?17:18;c--;)b.scalefac[n++]=a.read(g);for(c= +18;c--;)b.scalefac[n++]=a.read(l);for(c=3;c--;)b.scalefac[n++]=0}else{if(e&8)for(n=0;6>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=0;6>n;++n)b.scalefac[n]=a.read(g);if(e&4)for(n=6;11>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=6;11>n;++n)b.scalefac[n]=a.read(g);if(e&2)for(n=11;16>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=11;16>n;++n)b.scalefac[n]=a.read(l);if(e&1)for(n=16;21>n;++n)b.scalefac[n]=c.scalefac[n];else for(n=16;21>n;++n)b.scalefac[n]=a.read(l);b.scalefac[21]=0}return a.offset()-h}; +e.prototype.scalefactors_lsf=function(a,b,c,e){var h=a.offset(),g=b.scalefac_compress,l=2===b.block_type?b.flags&d.MIXED_BLOCK_FLAG?2:1:0,n=new Int32Array(4);if(e&d.I_STEREO&&c){g>>>=1;180>g?(n[0]=g/36,n[1]=g%36/6,n[2]=g%36%6,n[3]=0,e=d.NSFB_TABLE[3][l]):244>g?(g-=180,n[0]=g%64>>>4,n[1]=g%16>>>2,n[2]=g%4,n[3]=0,e=d.NSFB_TABLE[4][l]):(g-=244,n[0]=g/3,n[1]=g%3,n[2]=0,n[3]=0,e=d.NSFB_TABLE[5][l]);for(p=q=0;4>p;++p)for(g=(1<q;)b.scalefac[q]=0,c.scalefac[q++]=0}else{400>g?(n[0]=(g>>>4)/5,n[1]=(g>>>4)%5,n[2]=g%16>>>2,n[3]=g%4,e=d.NSFB_TABLE[0][l]):500>g?(g-=400,n[0]=(g>>>2)/5,n[1]=(g>>>2)%5,n[2]=g%4,n[3]=0,e=d.NSFB_TABLE[1][l]):(g-=500,n[0]=g/3,n[1]=g%3,n[2]=0,n[3]=0,b.flags|=d.PREFLAG,e=d.NSFB_TABLE[2][l]);for(var q=0,p=0;4>p;p++)for(var m=0;mq;)b.scalefac[q++]=0}return a.offset()-h};e.prototype.huffmanDecode=function(a,b,c,e,g){var l=this._exponents,m=0;g=c.part2_3_length- +g;if(0>g)throw Error("bad audio data length");this.exponents(c,e,l);var n=a.copy();a.advance(g);a=8-n.bitPosition;a+=7+(24-a)&-8;var v=n.read(a);g-=a;var p=0,x=0,r=this.reqcache,G=p+e[m++],D=c.region0_count+1,C=h.huff_pair_table[c.table_select[x]],y=C.table,E=C.linbits,C=C.startbits;if("undefined"===typeof y)throw Error("bad Huffman table select");for(var I=0,K=l[I++],L=0,P=c.big_values;P--&&0a){var J=10+(21-a)&-8,v=v<>a-z&(1<>a-z&(1<>a-E&(1<>a-E&(1< +a+g)throw Error("Huffman data overrun");for(var y=h.huff_quad_table[c.flags&d.COUNT1TABLE_SELECT],F=this.requantize(1,K);0=p;)10>a&&(v=v<<16|n.read(16),a+=16,g-=16),c=y[v>>a-4&15],c["final"]||(a-=4,c=y[c.ptr.offset+(v>>a-c.ptr.bits&(1<a+g&&(p-=4);if(-g>8*q.BUFFER_GUARD)throw Error("assertion failed: (-bits_left <= MP3FrameHeader.BUFFER_GUARD * CHAR_BIT)");for(;576>p;)b[p]=0,b[p+1]=0,p+=2};e.prototype.requantize=function(a,b){var c=b%4>>0;b=b/4>>0;var d=Math.pow(a,4/3),d=d*Math.pow(2,b/4);c&&(d*=Math.pow(2,c/4));0>b&&(d/=Math.pow(2,.75*-b));return d};e.prototype.exponents=function(a,b,c){var e=a.global_gain-210,h=a.flags&d.SCALEFAC_SCALE?2:1;if(2===a.block_type){var g= +0,l=0;if(a.flags&d.MIXED_BLOCK_FLAG)for(var n=a.flags&d.PREFLAG?-1:0;36>l;)c[g]=e-(a.scalefac[g]+(d.PRETAB[g]&n)<l;)c[g+0]=n-(a.scalefac[g+0]<g;g++)c[g]=e-(a.scalefac[g]+d.PRETAB[g]<g;g++)c[g]=e-(a.scalefac[g]<p;p++)l[p]=e.mode_extension;if(e.mode_extension&d.I_STEREO){var x=g.ch[1],r=a[1];e.flags|=q.FLAGS.tables.I_STEREO;if(2===x.block_type){var G,D,C,y=new Uint32Array(3),E,g=n=G=D=C=y[0]=y[1]=y[2]=0;if(x.flags&d.MIXED_BLOCK_FLAG){for(;36>n;){m=h[g++];for(p=0;pn;){m= +h[g++];for(p=0;pn;n+=m){m=h[g++];for(p=0;pn;++g,n+=m){if(m=h[g],l[g]&d.I_STEREO)if(b[g])l[g]&=~d.I_STEREO; +else for(is_pos=x.scalefac[g],p=0;pn;++g,n+=m)if(m=h[g],l[g]&d.I_STEREO)if(is_pos=x.scalefac[g],7<=is_pos)l[g]&=~d.I_STEREO;else for(p=0;pn;++g,n+=m)if(m=h[g],l[g]===d.MS_STEREO)for(p=0;pe;++e){var g=a[c-e-1],h=a[c+e];a[c-e-1]=g*d.CS[e]-h*d.CA[e];a[c+e]=h*d.CS[e]+g*d.CA[e]}};e.prototype.imdct_l=function(a,b,c){this.imdct.imdct36(a,b);switch(c){case 0:for(a=0;36>a;++a)b[a]*=d.WINDOW_L[a];break;case 1:for(a=0;18>a;++a)b[a]*=d.WINDOW_L[a];for(a=24;30>a;++a)b[a]*=d.WINDOW_S[a-18];for(a=30;36>a;++a)b[a]=0;break;case 3:for(a=0;6>a;++a)b[a]=0;for(a=6;12>a;++a)b[a]*= +d.WINDOW_S[a-6];for(a=18;36>a;++a)b[a]*=d.WINDOW_L[a]}};e.prototype.imdct_s=function(a,b){var e=0,g;g=0;for(var h=new Float64Array(36),l,q=0;3>q;++q){for(var n=0,m=0;3>m;++m)l=a[g+0]*c.S[n][0]+a[g+1]*c.S[n][1]+a[g+2]*c.S[n][2]+a[g+3]*c.S[n][3]+a[g+4]*c.S[n][4]+a[g+5]*c.S[n][5],h[e+m+0]=l,h[e+5-m]=-h[e+m+0],++n,l=a[g+0]*c.S[n][0]+a[g+1]*c.S[n][1]+a[g+2]*c.S[n][2]+a[g+3]*c.S[n][3]+a[g+4]*c.S[n][4]+a[g+5]*c.S[n][5],h[e+m+6]=l,h[e+11-m]=h[e+m+6],++n;e+=12;g+=6}for(m=g=e=0;6>m;++m)b[m+0]=0,b[m+6]=h[e+ +0+0]*d.WINDOW_S[g+0],l=h[e+0+6]*d.WINDOW_S[g+6]+h[e+12+0]*d.WINDOW_S[g+0],b[m+12]=l,l=h[e+12+6]*d.WINDOW_S[g+6]+h[e+24+0]*d.WINDOW_S[g+0],b[m+18]=l,b[m+24]=h[e+24+6]*d.WINDOW_S[g+6],b[m+30]=0,++e,++g};e.prototype.overlap=function(a,b,c,d){for(var e=0;18>e;++e)c[e][d]=a[e]+b[e],b[e]=a[e+18]};e.prototype.freqinver=function(a,b){for(var c=1;18>c;c+=2)a[c][b]=-a[c][b]};e.prototype.overlap_z=function(a,b,c){for(var d=0;18>d;++d)b[d][c]=a[d],a[d]=0};e.prototype.reorder=function(a,b,c){var e=0,g=this.tmp, +h=new Uint32Array(3),l=new Uint32Array(3),n=0;if(b.flags&d.MIXED_BLOCK_FLAG)for(n=2,b=0;36>b;)b+=c[e++];for(var m=0;3>m;++m)h[m]=n,l[m]=0;f=c[e++];m=0;for(b=18*n;576>b;++b)0===f--&&(f=c[e++]-1,m=(m+1)%3),g[h[m]][m][l[m]++]=a[b],6===l[m]&&(l[m]=0,++h[m]);c=this.tmp2;for(e=h=0;32>e;e++)for(l=0;3>l;l++)for(b=0;6>b;b++)c[h++]=g[e][l][b];g=576-18*n;for(e=0;e>1,t[0][u&1],t[1][u&1]);var v=u&-2,p=u-1&15|1,O=t[0][u&1];c=t[0][~u&1];var B=t[1][~u& +1],G=0,D=0;h=0;m=a[h];_fx=c[0];_fe=O[G];c=_fx[0]*m[p+0];c+=_fx[1]*m[p+14];c+=_fx[2]*m[p+12];c+=_fx[3]*m[p+10];c+=_fx[4]*m[p+8];c+=_fx[5]*m[p+6];c+=_fx[6]*m[p+4];c+=_fx[7]*m[p+2];c=-c;c+=_fe[0]*m[v+0];c+=_fe[1]*m[v+14];c+=_fe[2]*m[v+12];c+=_fe[3]*m[v+10];c+=_fe[4]*m[v+8];c+=_fe[5]*m[v+6];c+=_fe[6]*m[v+4];c+=_fe[7]*m[v+2];H[A++]=c;for(var M=A+30,C=1;16>C;++C)++G,++h,m=a[h],_fo=B[D],_fe=O[G],c=_fo[0]*m[p+0],c+=_fo[1]*m[p+14],c+=_fo[2]*m[p+12],c+=_fo[3]*m[p+10],c+=_fo[4]*m[p+8],c+=_fo[5]*m[p+6],c+=_fo[6]* +m[p+4],c+=_fo[7]*m[p+2],c=-c,c+=_fe[7]*m[v+2],c+=_fe[6]*m[v+4],c+=_fe[5]*m[v+6],c+=_fe[4]*m[v+8],c+=_fe[3]*m[v+10],c+=_fe[2]*m[v+12],c+=_fe[1]*m[v+14],c+=_fe[0]*m[v+0],H[A++]=c,c=_fe[0]*m[-v+31-16],c+=_fe[1]*m[-v+31-14],c+=_fe[2]*m[-v+31-12],c+=_fe[3]*m[-v+31-10],c+=_fe[4]*m[-v+31-8],c+=_fe[5]*m[-v+31-6],c+=_fe[6]*m[-v+31-4],c+=_fe[7]*m[-v+31-2],c+=_fo[7]*m[-p+31-2],c+=_fo[6]*m[-p+31-4],c+=_fo[5]*m[-p+31-6],c+=_fo[4]*m[-p+31-8],c+=_fo[3]*m[-p+31-10],c+=_fo[2]*m[-p+31-12],c+=_fo[1]*m[-p+31-14],c+= +_fo[0]*m[-p+31-16],H[M--]=c,++D;++h;m=a[h];_fo=B[D];c=_fo[0]*m[p+0];c+=_fo[1]*m[p+14];c+=_fo[2]*m[p+12];c+=_fo[3]*m[p+10];c+=_fo[4]*m[p+8];c+=_fo[5]*m[p+6];c+=_fo[6]*m[p+4];c+=_fo[7]*m[p+2];H[A]=-c;A+=16;u=(u+1)%16}};g.prototype.frame=function(a){var b=a.header.nchannels(),g=a.header.nbsamples();this.pcm.samplerate=a.header.samplerate;this.pcm.channels=b;this.pcm.length=32*g;this.full(a,b,g);this.phase=(this.phase+g)%16};b.exports=g},{"./utils":15}],14:[function(r,b,m){m.SF_TABLE=new Float32Array([2, +1.587401051968,1.259921049895,1,.793700525984,.629960524947,.5,.396850262992,.314980262474,.25,.198425131496,.157490131237,.125,.099212565748,.078745065618,.0625,.049606282874,.039372532809,.03125,.024803141437,.019686266405,.015625,.012401570719,.009843133202,.0078125,.006200785359,.004921566601,.00390625,.00310039268,.002460783301,.001953125,.00155019634,.00123039165,9.765625E-4,7.7509817E-4,6.15195825E-4,4.8828125E-4,3.87549085E-4,3.07597913E-4,2.44140625E-4,1.93774542E-4,1.53798956E-4,1.22070313E-4, +9.6887271E-5,7.6899478E-5,6.1035156E-5,4.8443636E-5,3.8449739E-5,3.0517578E-5,2.4221818E-5,1.922487E-5,1.5258789E-5,1.2110909E-5,9.612435E-6,7.629395E-6,6.055454E-6,4.806217E-6,3.814697E-6,3.027727E-6,2.403109E-6,1.907349E-6,1.513864E-6,1.201554E-6,0]);r=new Uint8Array([4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192]);b=new Uint8Array([4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158]);var g=new Uint8Array([4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26]),l=new Uint8Array([4, +4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66]),a=new Uint8Array([4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56]),e=new Uint8Array([4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12]),d=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66]),q=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,8, +8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56]),h=new Uint8Array([4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12]),c=new Uint8Array([6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36]),x=new Uint8Array([6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54]),k=new Uint8Array([4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12]),w=new Uint8Array([4,4,4,4,4,4,4,4,4, +6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18]),t=new Uint8Array([4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18]),u=new Uint8Array([6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12]),H=new Uint8Array([6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18]),A=new Uint8Array([6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14, +18,18,18,24,24,24,30,30,30,40,40,40,18,18,18]),M=new Uint8Array([12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2]),n=new Uint8Array([8,8,8,8,8,8,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26]),v=new Uint8Array([12,12,12,4,4,4,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26]);m.SFBWIDTH_TABLE=[{l:r,s:l,m:d},{l:b,s:a,m:q},{l:g,s:e,m:h},{l:c,s:k,m:u},{l:x,s:w,m:H},{l:x,s:t,m:A},{l:x,s:t,m:A},{l:x,s:t,m:A},{l:M, +s:n,m:v}];m.PRETAB=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0]);m.ROOT_TABLE=new Float32Array([.59460355750136,.70710678118655,.84089641525371,1,1.18920711500272,1.4142135623731,1.68179283050743]);m.CS=new Float32Array([.857492926,.881741997,.949628649,.983314592,.995517816,.999160558,.999899195,.999993155]);m.CA=new Float32Array([-.514495755,-.471731969,-.313377454,-.1819132,-.094574193,-.040965583,-.014198569,-.003699975]);m.COUNT1TABLE_SELECT=1;m.SCALEFAC_SCALE=2;m.PREFLAG=4;m.MIXED_BLOCK_FLAG= +8;m.I_STEREO=1;m.MS_STEREO=2;m.WINDOW_L=new Float32Array([.043619387,.130526192,.216439614,.3007058,.382683432,.461748613,.537299608,.608761429,.675590208,.737277337,.79335334,.843391446,.887010833,.923879533,.953716951,.976296007,.991444861,.999048222,.999048222,.991444861,.976296007,.953716951,.923879533,.887010833,.843391446,.79335334,.737277337,.675590208,.608761429,.537299608,.461748613,.382683432,.3007058,.216439614,.130526192,.043619387]);m.WINDOW_S=new Float32Array([.130526192,.382683432, +.608761429,.79335334,.923879533,.991444861,.991444861,.923879533,.79335334,.608761429,.382683432,.130526192]);m.IS_TABLE=new Float32Array([0,.211324865,.366025404,.5,.633974596,.788675135,1]);m.IS_LSF_TABLE=[new Float32Array([.840896415,.707106781,.594603558,.5,.420448208,.353553391,.297301779,.25,.210224104,.176776695,.148650889,.125,.105112052,.088388348,.074325445]),new Float32Array([.707106781,.5,.353553391,.25,.176776695,.125,.088388348,.0625,.044194174,.03125,.022097087,.015625,.011048543,.0078125, +.005524272])];m.SFLEN_TABLE=[{slen1:0,slen2:0},{slen1:0,slen2:1},{slen1:0,slen2:2},{slen1:0,slen2:3},{slen1:3,slen2:0},{slen1:1,slen2:1},{slen1:1,slen2:2},{slen1:1,slen2:3},{slen1:2,slen2:1},{slen1:2,slen2:2},{slen1:2,slen2:3},{slen1:3,slen2:1},{slen1:3,slen2:2},{slen1:3,slen2:3},{slen1:4,slen2:2},{slen1:4,slen2:3}];m.NSFB_TABLE=[[[6,5,5,5],[9,9,9,9],[6,9,9,9]],[[6,5,7,3],[9,9,12,6],[6,9,12,6]],[[11,10,0,0],[18,18,0,0],[15,18,0,0]],[[7,7,7,0],[12,12,12,0],[6,15,12,0]],[[6,6,6,3],[12,9,9,6],[6,12, +9,6]],[[8,8,5,0],[15,12,9,0],[6,18,9,0]]]},{}],15:[function(r,b,m){m.makeArray=function(b,l){l||(l=Float64Array);if(1===b.length)return new l(b[0]);for(var a=[],e=b[0],d=0;d