{"version":3,"file":"anim_words.min.js","sources":["../src/anim_words.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/speech_poodll'], function ($, log, speechrecognition) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('anim_words: initialising');\n\n    return {\n\n        analyser: null,\n        cvs: null,\n        cvsctx: null,\n        speechrec: null,\n        enabled: false,\n        drawparams: {\n            textColor: '#0',\n            wavColor: '#0',\n            font: '14px Comic Sans MS',\n            textAlign: \"center\"\n        },\n\n        //for making multiple instances\n        clone: function () {\n            return $.extend(true, {}, this);\n        },\n\n\n        //init\n        init: function (analyser, cvs) {\n            this.cvs = cvs;\n            this.cvsctx = cvs.getContext(\"2d\");\n            this.analyser = analyser;\n\n            this.speechrec = speechrecognition.clone();\n            this.speechrec.init('en-US');\n\n        },\n\n        setDrawParam: function (paramkey, paramvalue) {\n            this.drawparams[paramkey] = paramvalue;\n        },\n\n        //clear\n        //more specifically stop, but to be consistent with how we do other anims, we call it clear\n        clear: function () {\n            this.cvsctx.clearRect(0, 0, this.cvs.width, this.cvs.height);\n            this.enabled = false;\n            this.speechrec.stop();\n        },\n\n\n        //start the anim\n        start: function () {\n            //set up variables used in drawing\n            this.enabled = true;\n            var that = this;\n            this.analyser.core.fftSize = 2048;\n            var bufferLength = this.analyser.core.fftSize;\n            var dataArray = new Uint8Array(bufferLength);\n            var cwidth = this.cvs.width;\n            var cheight = this.cvs.height;\n\n            //clear the canvas\n            this.cvsctx.clearRect(0, 0, cwidth, this.ceight);\n\n            //set up speechrecognizer to fill words array\n            var words = ['..', '..', '..', '..', '..', '..', '..', '..'];\n            this.speechrec.oninterimspeechcapture = function (speechtext) {\n                var newwords = speechtext.split(' ');\n                words = words.concat(newwords);\n            };\n            this.speechrec.start();\n\n            var draw = function () {\n\n                //cancel out if no longer active is null.\n                if (!that.enabled) {\n                    return;\n                }\n\n                //this is the loop that continually calls itself to draw\n                var reqAnimFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||\n                    window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\n                var drawVisual = reqAnimFrame(draw);\n\n\n                //this is the audio data\n                that.analyser.core.getByteTimeDomainData(dataArray);\n\n                //this fills grey, but its lame lets just leave it clear\n                //that.cvsctx.fillStyle = 'rgb(200, 200, 200)';\n                that.cvsctx.clearRect(0, 0, cwidth, cheight);\n\n                //sets up the pen\n                that.cvsctx.lineWidth = 2;\n                that.cvsctx.strokeStyle = that.drawparams.wavColor;\n                that.cvsctx.beginPath();\n                //how long to drw each datapoint\n                var sliceWidth = cwidth * 1.0 / bufferLength;\n                var x = 0;\n                //draw all the points\n                for (var i = 0; i < bufferLength; i++) {\n\n                    var v = dataArray[i] / 128.0;\n                    var y = v * cheight / 2;\n\n                    if (i === 0) {\n                        that.cvsctx.moveTo(x, y);\n                    } else {\n                        that.cvsctx.lineTo(x, y);\n                    }\n\n                    x += sliceWidth;\n                }\n\n                that.cvsctx.lineTo(cwidth, cheight / 2);\n                that.cvsctx.stroke();\n\n                //draw words\n                that.cvsctx.font = that.drawparams.font;\n                that.cvsctx.fillStyle = that.drawparams.textColor;\n                that.cvsctx.textAlign = that.drawparams.textAlign;\n                var cellvcenter = cheight / 4;\n                var cellwidth = cwidth / 4;\n                var cellhcenter = cwidth / 8;\n                for (i = 1; i < 9; i++) {\n                    that.cvsctx.fillText(words[words.length - i], (cellwidth * (i % 4)) + cellhcenter, i < 5 ? cellvcenter : cellvcenter * 3);\n                }\n            };\n\n            draw();\n        }//END OF START\n    };//end of returned object\n});//total end\n"],"names":["define","$","log","speechrecognition","debug","analyser","cvs","cvsctx","speechrec","enabled","drawparams","textColor","wavColor","font","textAlign","clone","extend","this","init","getContext","setDrawParam","paramkey","paramvalue","clear","clearRect","width","height","stop","start","that","core","fftSize","bufferLength","dataArray","Uint8Array","cwidth","cheight","ceight","words","oninterimspeechcapture","speechtext","newwords","split","concat","draw","window","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","getByteTimeDomainData","lineWidth","strokeStyle","beginPath","sliceWidth","x","i","y","moveTo","lineTo","stroke","fillStyle","cellvcenter","cellwidth","cellhcenter","fillText","length"],"mappings":"AACAA,kCAAO,CAAC,SAAU,WAAY,gCAAgC,SAAUC,EAAGC,IAAKC,0BAI5ED,IAAIE,MAAM,4BAEH,CAEHC,SAAU,KACVC,IAAK,KACLC,OAAQ,KACRC,UAAW,KACXC,SAAS,EACTC,WAAY,CACRC,UAAW,KACXC,SAAU,KACVC,KAAM,qBACNC,UAAW,UAIfC,MAAO,kBACId,EAAEe,QAAO,EAAM,GAAIC,OAK9BC,KAAM,SAAUb,SAAUC,UACjBA,IAAMA,SACNC,OAASD,IAAIa,WAAW,WACxBd,SAAWA,cAEXG,UAAYL,kBAAkBY,aAC9BP,UAAUU,KAAK,UAIxBE,aAAc,SAAUC,SAAUC,iBACzBZ,WAAWW,UAAYC,YAKhCC,MAAO,gBACEhB,OAAOiB,UAAU,EAAG,EAAGP,KAAKX,IAAImB,MAAOR,KAAKX,IAAIoB,aAChDjB,SAAU,OACVD,UAAUmB,QAKnBC,MAAO,gBAEEnB,SAAU,MACXoB,KAAOZ,UACNZ,SAASyB,KAAKC,QAAU,SACzBC,aAAef,KAAKZ,SAASyB,KAAKC,QAClCE,UAAY,IAAIC,WAAWF,cAC3BG,OAASlB,KAAKX,IAAImB,MAClBW,QAAUnB,KAAKX,IAAIoB,YAGlBnB,OAAOiB,UAAU,EAAG,EAAGW,OAAQlB,KAAKoB,YAGrCC,MAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,WAClD9B,UAAU+B,uBAAyB,SAAUC,gBAC1CC,SAAWD,WAAWE,MAAM,KAChCJ,MAAQA,MAAMK,OAAOF,gBAEpBjC,UAAUoB,YAEXgB,KAAO,cAGFf,KAAKpB,UAKSoC,OAAOC,uBAAyBD,OAAOE,0BACtDF,OAAOG,6BAA+BH,OAAOI,yBACnBL,MAI9Bf,KAAKxB,SAASyB,KAAKoB,sBAAsBjB,WAIzCJ,KAAKtB,OAAOiB,UAAU,EAAG,EAAGW,OAAQC,SAGpCP,KAAKtB,OAAO4C,UAAY,EACxBtB,KAAKtB,OAAO6C,YAAcvB,KAAKnB,WAAWE,SAC1CiB,KAAKtB,OAAO8C,oBAERC,WAAsB,EAATnB,OAAeH,aAC5BuB,EAAI,EAECC,EAAI,EAAGA,EAAIxB,aAAcwB,IAAK,KAG/BC,EADIxB,UAAUuB,GAAK,IACXpB,QAAU,EAEZ,IAANoB,EACA3B,KAAKtB,OAAOmD,OAAOH,EAAGE,GAEtB5B,KAAKtB,OAAOoD,OAAOJ,EAAGE,GAG1BF,GAAKD,WAGTzB,KAAKtB,OAAOoD,OAAOxB,OAAQC,QAAU,GACrCP,KAAKtB,OAAOqD,SAGZ/B,KAAKtB,OAAOM,KAAOgB,KAAKnB,WAAWG,KACnCgB,KAAKtB,OAAOsD,UAAYhC,KAAKnB,WAAWC,UACxCkB,KAAKtB,OAAOO,UAAYe,KAAKnB,WAAWI,cACpCgD,YAAc1B,QAAU,EACxB2B,UAAY5B,OAAS,EACrB6B,YAAc7B,OAAS,MACtBqB,EAAI,EAAGA,EAAI,EAAGA,IACf3B,KAAKtB,OAAO0D,SAAS3B,MAAMA,MAAM4B,OAASV,GAAKO,WAAaP,EAAI,GAAMQ,YAAaR,EAAI,EAAIM,YAA4B,EAAdA,eAIjHlB"}