{"version":3,"file":"audioanalyser.min.js","sources":["../src/audioanalyser.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log'], function ($, log) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('audioanalyser: initialising');\n\n    return {\n\n        acontext: null,\n        core: null,\n        freq_data: null,\n        wav_data: null,\n        theinterval: null,\n\n        //for making multiple instances\n        clone: function () {\n            return $.extend(true, {}, this);\n        },\n\n        clear: function () {\n            clearInterval(this.theinterval);\n            this.theinterval = null;\n        },\n\n        //init\n        init: function (acontext) {\n            if (this.theinterval) {\n                this.clear();\n            }\n            this.acontext = acontext;\n            this.core = this.acontext.createAnalyser();\n        },\n\n        //start\n        start: function () {\n            if (this.theinterval) {\n                this.clear();\n            }\n            var bufferLength = this.core.frequencyBinCount;\n            this.freq_data = new Uint8Array(bufferLength);\n            this.wav_data = new Uint8Array(bufferLength);\n\n            //this runs the events loop that we use to publish data\n            var thisthing = this;\n            this.theinterval = setInterval(function () {\n                    thisthing.process_recent_data(thisthing);\n                }\n                , 2000);\n\n        },\n\n        process_recent_data: function (that) {\n\n\n            //prepare the loop that will roll over publishing data\n            /*\n\t\t\tvar raf = window.requestAnimationFrame || window.mozRequestAnimationFrame ||\n\t\t\t\t\t\t  window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\n\t\t\traf(that.process_recent_data);\n\t\t\t*/\n            //get store and publish wav data\n            that.core.getByteTimeDomainData(that.wav_data);\n            that.wav_event(that.wav_data);\n\n            //get store and publish freq data\n            that.core.getByteFrequencyData(that.freq_data);\n            that.freq_event(that.freq_data);\n        },\n\n        //overwrite these to get events 5 a second\n        //but probably you will just call getByteTimeDomainData or gtByteFrequencyData from\n        //requestanimationframe in your drawing code if youa re using visualisations\n        //wav_event: function(data){log.debug(data);},\n        wav_event: function (data) {\n        },\n        freq_event: function (data) {\n        }\n    };//end of returned object\n});//total end\n"],"names":["define","$","log","debug","acontext","core","freq_data","wav_data","theinterval","clone","extend","this","clear","clearInterval","init","createAnalyser","start","bufferLength","frequencyBinCount","Uint8Array","thisthing","setInterval","process_recent_data","that","getByteTimeDomainData","wav_event","getByteFrequencyData","freq_event","data"],"mappings":"AACAA,qCAAO,CAAC,SAAU,aAAa,SAAUC,EAAGC,YAIxCA,IAAIC,MAAM,+BAEH,CAEHC,SAAU,KACVC,KAAM,KACNC,UAAW,KACXC,SAAU,KACVC,YAAa,KAGbC,MAAO,kBACIR,EAAES,QAAO,EAAM,GAAIC,OAG9BC,MAAO,WACHC,cAAcF,KAAKH,kBACdA,YAAc,MAIvBM,KAAM,SAAUV,UACRO,KAAKH,kBACAI,aAEJR,SAAWA,cACXC,KAAOM,KAAKP,SAASW,kBAI9BC,MAAO,WACCL,KAAKH,kBACAI,YAELK,aAAeN,KAAKN,KAAKa,uBACxBZ,UAAY,IAAIa,WAAWF,mBAC3BV,SAAW,IAAIY,WAAWF,kBAG3BG,UAAYT,UACXH,YAAca,aAAY,WACvBD,UAAUE,oBAAoBF,aAEhC,MAIVE,oBAAqB,SAAUC,MAU3BA,KAAKlB,KAAKmB,sBAAsBD,KAAKhB,UACrCgB,KAAKE,UAAUF,KAAKhB,UAGpBgB,KAAKlB,KAAKqB,qBAAqBH,KAAKjB,WACpCiB,KAAKI,WAAWJ,KAAKjB,YAOzBmB,UAAW,SAAUG,QAErBD,WAAY,SAAUC"}