{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Player/SocialEngagement/Chat/ChatMessage.vue?cafd","webpack:///./src/components/Player/debug/DevControlPanel.vue?d3c8","webpack:///./src/components/Player/SocialEngagement/MeshViz.vue?18e8","webpack:///./src/components/Player/SocialEngagement/Chat/index.vue?6911","webpack:///./src/assets/gundamv2.png","webpack:///./src/components/Player/Splash/SplashHero.vue?c567","webpack:///./src/App.vue?c9b2","webpack:///./src/views/Player/index.vue?2d15","webpack:///./src/shaders/pointSpheres.vert","webpack:///./src/components/Player/Splash/MobileSplashHero.vue?e3fa","webpack:///./src/components/Player/AppControls/SidebarControls.vue?3dce","webpack:///./src/components/Player/MobilePlayer.vue?9934","webpack:///./src/shaders/pointSpheres.frag","webpack:///./src/components/Player/AppControls/PlayToggle.vue?839d","webpack:///./src/components/Player/SocialEngagement/Chat/ChatInput.vue?7178","webpack:///./src/components/Player/ArtistHighlight/VinylViz.vue?c569","webpack:///./src/views/Errors/404.vue?d639","webpack:///./src/components/Player/debug/Meter.vue?b464","webpack:///./src/App.vue","webpack:///./src/views/Player/index.vue","webpack:///./src/components/Player/Splash/SplashHero.vue","webpack:///./src/components/Player/Splash/SplashHero.vue?fb38","webpack:///./src/components/Player/Splash/SplashHero.vue?b2b0","webpack:///./src/components/Player/ArtistHighlight/index.vue","webpack:///./src/components/Player/ArtistHighlight/VinylViz.vue","webpack:///./src/components/Player/ArtistHighlight/VinylViz.vue?144f","webpack:///./src/components/Player/ArtistHighlight/VinylViz.vue?9691","webpack:///./src/components/Player/ArtistHighlight/index.vue?66b9","webpack:///./src/components/Player/ArtistHighlight/index.vue?4c93","webpack:///./src/components/Player/SocialEngagement/index.vue","webpack:///./src/components/Player/SocialEngagement/MeshViz.vue","webpack:///./src/components/Player/SocialEngagement/MeshViz.vue?a07b","webpack:///./src/components/Player/SocialEngagement/index.vue?24bb","webpack:///./src/components/Player/SocialEngagement/index.vue?745c","webpack:///./src/components/Player/AppControls/index.vue","webpack:///./src/components/Player/AppControls/ProgressRing.vue","webpack:///./src/components/Player/AppControls/ProgressRing.vue?138a","webpack:///./src/components/Player/AppControls/PlayToggle.vue","webpack:///./src/components/Player/AppControls/PlayToggle.vue?b753","webpack:///./src/components/Player/AppControls/PlayToggle.vue?d670","webpack:///./src/components/Player/AppControls/index.vue?2bb3","webpack:///./src/components/Player/AppControls/index.vue?49f6","webpack:///./src/components/Player/AppControls/SidebarControls.vue","webpack:///./src/components/Player/SocialEngagement/Chat/index.vue","webpack:///./src/components/Player/SocialEngagement/Chat/ChatMessage.vue","webpack:///./src/components/Player/SocialEngagement/Chat/ChatMessage.vue?cc0e","webpack:///./src/components/Player/SocialEngagement/Chat/ChatInput.vue","webpack:///./src/components/Player/SocialEngagement/Chat/ChatInput.vue?d0da","webpack:///./src/components/Player/SocialEngagement/Chat/index.vue?bfd8","webpack:///./src/components/Player/SocialEngagement/Chat/index.vue?c31b","webpack:///./src/components/Player/AppControls/SidebarControls.vue?be54","webpack:///./src/components/Player/AppControls/SidebarControls.vue?0876","webpack:///./src/components/Player/debug/DevControlPanel.vue","webpack:///./src/components/Player/debug/Analyzer.vue","webpack:///./src/components/Player/debug/Meter.vue","webpack:///./src/components/Player/debug/Meter.vue?ae18","webpack:///./src/components/Player/debug/Analyzer.vue?8aed","webpack:///./src/components/Player/debug/Analyzer.vue?9d0f","webpack:///./src/components/Player/debug/DevControlPanel.vue?567d","webpack:///./src/components/Player/debug/DevControlPanel.vue?cbb5","webpack:///./src/views/Player/logo.vue","webpack:///./src/views/Player/logo.vue?1e03","webpack:///./src/components/Player/lib/MESController.ts","webpack:///./src/components/Player/lib/AudioAnalyzer.ts","webpack:///./src/components/Player/lib/AudioPipeline.ts","webpack:///./src/views/Player/index.vue?1522","webpack:///./src/views/Player/index.vue?b557","webpack:///./src/components/Player/MobilePlayer.vue","webpack:///./src/components/Player/Splash/MobileSplashHero.vue","webpack:///./src/components/Player/Splash/MobileSplashHero.vue?d547","webpack:///./src/components/Player/Splash/MobileSplashHero.vue?1c1c","webpack:///./src/components/Player/MobilePlayer.vue?83a0","webpack:///./src/components/Player/MobilePlayer.vue?cab4","webpack:///./src/App.vue?3acc","webpack:///./src/App.vue?eabf","webpack:///./src/views/PressKit/index.vue","webpack:///./src/views/PressKit/index.vue?98ef","webpack:///./src/views/PressKit/index.vue?7653","webpack:///./src/views/Errors/404.vue","webpack:///./src/views/Errors/404.vue?ad55","webpack:///./src/views/Errors/404.vue?febd","webpack:///./src/router/index.ts","webpack:///./src/main.ts","webpack:///./src/assets/test.ogg","webpack:///./src/components/Player/AppControls/index.vue?1616","webpack:///./src/views/PressKit/index.vue?3703","webpack:///./src/components/Player/debug/Analyzer.vue?5f3e"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","id","ref","class","title","state","showDev","audioPipeline","apBus","userCount","sendChatMsg","onLogoClick","style","ap","streamInfo","buildVersion","artist","isMobile","mounted","this","document","body","clientWidth","addEventListener","handleResize","beforeDestroy","removeEventListener","methods","render","__scopeId","song","y2","x2","maskContentUnits","width","height","fill","cx","cy","shape-rendering","x","y","baseFrequency","numOctaves","in","xlink:href","startOffset","viewBox","xmlns","version","offset","stop-color","$theme","secondaryColor","stop-opacity","in2","scale","beatImpulse","xChannelSelector","yChannelSelector","stdDeviation","stroke","stroke-width","mask","filter","text-anchor","props","computed","setSize","$refs","wrapper","clientHeight","on","setInterval","Math","max","components","VinylViz","onMouseMove","onMouseDown","onMouseUp","gl","sps","prevRAFTime","startRAFTime","iProg","dProg","positionBuff","pointsBuff","fb1","mouse","lightWPos","lightColor","camera","identity","view","viewProjection","timeWaveform","simulate","animate","now","requestAnimationFrame","time","deltaTime","draw","canvas","viewport","enable","DEPTH_TEST","projection","perspective","PI","eye","target","up","world","lookAt","inverse","multiply","u_worldViewProjection","analyzer","normalizedTimeWaveform","normalizedWaveform","useProgram","program","u_texture","attachments","u_resolution","u_mouse","u_time","dt","u_beatImpulse","u_fft","POINTS","e","rect","getBoundingClientRect","clientX","left","clientY","top","console","log","getElementById","depth","antialias","vs","fs","vDraw","fDraw","undefined","posObj","position","numComponents","pointData","pointsObj","v_texcoord","MeshViz","radius","opacity","stroke-dasharray","circumference","strokeDashoffset","normalizedRadius","Number","progress","togglePlay","isActive","$emit","SC","ProgressRing","PlayToggle","type","required","curtains","volume","lpFreq","lpDetune","lpQ","isPlaying","onPlayToggle","stop","play","audioSourceController","getState","resume","uri","location","protocol","host","testFile","includes","connectSource","updateVolume","min","deltaY","emit","paramName","paramVal","updateLPFreq","v","updateLPDetune","updateLPQ","initialize","client_id","active","itemClick","$event","orient","updateVolumeFromWheel","placeholder","inputPlaceholder","sendMsg","chatsChronoSorted","chat","msg","username","avatar","data-pending","pending","data-self","src","alt","crossorigin","String","timestamp","onKeyDown","onBlur","autocomplete","maxlength","history","maxHistory","historyIndex","validateMsg","trim","emitMsg","setFromHistoryR","setFromHistoryF","updateHistory","ChatMessage","ChatInput","maxLength","chats","Array","sort","a","b","setUsername","val","replace","localStorage","setItem","welcomeMsg","Date","updateUsername","message","recvMsg","pend","cm","find","user","un","getItem","Chat","AppControls","event","keys","devControls","step","updateAudioParam","normalizedVolume","beatThreshold","maxHeight","$parent","Meter","onBeat","unmounted","off","el","$el","borderBottomColor","setTimeout","Analyzer","mainGainDry","mainGainWet","streamGainDry","streamGainWet","effectsGain","newVal","k","control","xmlns:dc","xmlns:cc","xmlns:rdf","xmlns:svg","transform","xml:space","rdf:about","rdf:resource","script","CreateAudioSourceController","ctx","ebus","prefetchSrc","_prefetchSrc","_isPlaying","_ctx","_ebus","_a","Audio","crossOrigin","audioSourceNode","createMediaElementSource","load","pause","Error","currentTime","duration","AudioPipelineState","defaultConfig","fftSize","sampleRate","beatDecay","beatDebounce","config","_config","node","createAnalyser","waveform","Uint8Array","frequencyBinCount","maxVolume","normalizedBeatThreshold","_lastBeatTime","_interval","_sampleAudio","clearInterval","disconnect","_unbindEvents","getByteFrequencyData","getByteTimeDomainData","reduce","total","from","map","beatTime","CreateAudioPipeline","_mainDry","_mainWet","_dry1","_wet1","_wet2","_audioSrcDry","_audioSrcWet","_lpFilter","_waveshaper","_reverb","_compressor","AudioContext","READY","PLAYING","SUSPENDED","UNINITIALIZED","close","unbindEvents","createGain","gain","createBiquadFilter","createWaveShaper","createConvolver","createDynamicsCompressor","connect","destination","setup","_bindEvents","_setParamValue","_setWaveshapeCurve","_setGainValue","frequency","Q","detune","warn","g","curve","SplashHero","ArtistHighlight","DevControlPanel","SocialEngagement","LogoSVG","SidebarControls","loc","audioAnalyzer","appName","ws","WebSocket","nextStreamInfo","readyState","OPEN","final","JSON","stringify","Type","User","Data","send","loadPlayer","suspend","onResize","keyHandler","code","created","onopen","onmessage","evt","parse","sidebarControls","destroy","MobileSplashHero","SocialChat","Player","MobilePlayer","test","navigator","userAgent","$options","copy","section","tabindex","nextSection","to","sections","vh","documentElement","innerHeight","scrollTo","routes","path","component","PressKit","redirect","router","fsapp","App","use","install","app","options","globalProperties","primaryColor","secondaryDarkColor","accentColor","mount"],"mappings":"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","file":"js/app.ae0e0c77.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChatMessage.vue?vue&type=style&index=0&id=72446334&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./DevControlPanel.vue?vue&type=style&index=0&id=06fd0868&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MeshViz.vue?vue&type=style&index=0&id=05003109&scoped=true&lang=css\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=706e864a&scoped=true&lang=css\"","module.exports = __webpack_public_path__ + \"img/gundamv2.c08bcabf.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SplashHero.vue?vue&type=style&index=0&id=3e61e76b&scoped=true&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=2225c018&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=05719680&lang=css\"","module.exports = \"precision mediump float;\\nattribute vec3 v_texcoord;\\nuniform float u_fft[128];\\nuniform sampler2D u_texture;\\nuniform mat4 u_worldViewProjection;\\nuniform float u_time;\\nuniform float u_beatImpulse;\\nvarying vec3 color;\\n#define PI 3.1415926538\\r\\nvec3 posf2(float t, float i) {\\n\\treturn vec3(((sin(t + (i * .9553)) + sin((t * 1.311) + i)) + sin((t + (i * .79553)) + 2.1)) + sin((t * 1.84) + (i * .76)), ((sin((t * 1.4) + (i * 1.53)) + sin(((t * 1.311) + (i * 1.1311)) + 2.1)) + sin(((t * 1.4) + (i * 1.353)) - 2.1)) + sin(((t * 1.84) + (i * .476)) - 2.1), ((sin((t + (i * .5553)) - 2.1) + sin(((t * 1.311) + (i * 1.1)) - 2.1)) + sin(((t * 1.4) + (i * 1.23)) + 2.1)) + sin(((t * 1.84) + (i * .36)) + 2.1)) * (.15 + (.2 * sin(t * .5)));\\n}\\nvec3 posf0(float t) {\\n\\treturn posf2(t, -1.) * 3.5;\\n}\\nvec3 posf(float t, float i) {\\n\\treturn posf2(t * .3, i) + posf0(t);\\n}\\nvec3 push(float t, float i, vec3 ofs, float lerpEnd) {\\n\\tvec3 pos = posf(t, i) + ofs;\\n\\tvec3 posf = fract(pos + .5) - .5;\\n\\tfloat l = length(posf) * 2.;\\n\\treturn (-posf + (posf / l)) * (1. - smoothstep(lerpEnd, 1., l));\\n}\\nvoid main() {\\n\\tfloat t = u_time * .20;\\n\\tvec2 resolution = vec2(1., 1.);\\n\\tvec4 particle = texture2D(u_texture, v_texcoord.xy);\\n\\tfloat vertexId = particle.x + particle.y;\\n\\tfloat i = v_texcoord.z;\\n\\tint iFreq = int(floor(i / 32.));\\n\\tvec3 pos = posf(t, i);\\n\\tvec3 ofs = vec3(0);\\n\\tfor (float f = -10.; f < 0.; f++) {\\n\\t\\tofs += push(t + (f * .05), i, ofs, 2. - exp(-f * .1));\\n\\t}\\n\\tofs += push(t, i, ofs, .999);\\n\\tpos -= posf0(t);\\n\\tpos += ofs;\\n\\tpos.yz *= mat2(.8, .6, -.6, .8);\\n\\tpos.xz *= mat2(.8, .6, -.6, .8);\\n\\tpos *= 8.;\\n\\tpos.z += ((2. * sin(u_time)) * sin(u_time * .66));\\n\\tcolor = mix(vec3(242. / 255., 55. / 255., 154. / 255.), vec3(1., 1., 201. / 255.), (pos.z * .15) + (u_fft[iFreq] * u_fft[iFreq]));\\n\\tgl_Position = u_worldViewProjection * vec4(pos, 1.);\\n\\tgl_PointSize = 1.;\\n}\\n\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MobileSplashHero.vue?vue&type=style&index=0&id=d75e798a&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SidebarControls.vue?vue&type=style&index=0&id=56fd8da6&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MobilePlayer.vue?vue&type=style&index=0&id=d1d850f4&scoped=true&lang=css\"","module.exports = \"precision mediump float;\\nvarying vec3 color;\\nuniform vec2 u_mouse;\\nuniform vec2 u_resolution;\\nuniform float u_beatImpulse;\\nvoid main() {\\n\\tvec2 uv = gl_FragCoord.xy / u_resolution.xy;\\n\\tvec3 outColor = color.rgb;\\n\\toutColor = pow(clamp(outColor, 0.0, 1.0), vec3(0.45));\\n\\toutColor *= ((pow((((16.0 * uv.x) * uv.y) * (1.0 - uv.x)) * (1.0 - uv.y), 0.5) * 0.7) + 0.3);\\n\\tgl_FragColor = vec4(outColor + (.5 * vec3(u_beatImpulse)), 1.);\\n}\\n\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./PlayToggle.vue?vue&type=style&index=0&id=72cb5632&scoped=true&lang=css\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChatInput.vue?vue&type=style&index=0&id=5eeb4439&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./VinylViz.vue?vue&type=style&index=0&id=c7142f46&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./404.vue?vue&type=style&index=0&id=164ff9e4&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Meter.vue?vue&type=style&index=0&id=53a3f1fa&scoped=true&lang=css\"","\n\n\n\n\n","\r\n\r\n","\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\nexport default defineComponent({\r\n name: \"SplashHero\",\r\n data() {\r\n return {\r\n isMobile: false\r\n }\r\n },\r\n mounted: function () {\r\n this.isMobile = document.body.clientWidth < 1200;\r\n window.addEventListener('resize', this.handleResize)\r\n },\r\n beforeDestroy: function () {\r\n window.removeEventListener('resize', this.handleResize)\r\n },\r\n methods: {\r\n handleResize() {\r\n this.isMobile = document.body.clientWidth < 1200;\r\n }\r\n }\r\n})\r\n","import { render } from \"./SplashHero.vue?vue&type=template&id=3e61e76b&scoped=true\"\nimport script from \"./SplashHero.vue?vue&type=script&lang=ts\"\nexport * from \"./SplashHero.vue?vue&type=script&lang=ts\"\n\nimport \"./SplashHero.vue?vue&type=style&index=0&id=3e61e76b&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-3e61e76b\"\n\nexport default script","\r\n","\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\n// import { Curtains, Plane } from \"curtainsjs\";\r\nexport default defineComponent({\r\n props: [\"apBus\", \"song\", \"artist\"],\r\n data(): { width: number, height: number, beatImpulse: number } {\r\n return {\r\n // curtains: null,\r\n width: 500,\r\n height: 500,\r\n beatImpulse: 1.0\r\n };\r\n },\r\n computed: {\r\n cx(): number {\r\n return this.width / 2;\r\n },\r\n cy(): number {\r\n return this.height / 2;\r\n },\r\n r(): number {\r\n return this.height / 2;\r\n }\r\n },\r\n methods: {\r\n setSize() {\r\n this.width = (this.$refs.wrapper as HTMLElement).clientWidth;\r\n this.height = (this.$refs.wrapper as HTMLElement).clientHeight;\r\n }\r\n },\r\n mounted() {\r\n this.setSize();\r\n this.apBus.on(\"beat-detect\", () => (this.beatImpulse = 1.));\r\n setInterval(() => {\r\n if (this.beatImpulse != 0) this.beatImpulse = Math.max(0, this.beatImpulse - (1 / 10) * 2);\r\n }, 100);\r\n // this.curtains = new Curtains({\r\n // container: \"vinyl-viz\",\r\n // });\r\n // const vs = `\r\n // precision mediump float;\r\n\r\n // // those are the mandatory attributes that the lib sets\r\n // attribute vec3 aVertexPosition;\r\n // attribute vec2 aTextureCoord;\r\n\r\n // // those are mandatory uniforms that the lib sets and that contain our model view and projection matrix\r\n // uniform mat4 uMVMatrix;\r\n // uniform mat4 uPMatrix;\r\n\r\n // // our texture matrix that will handle image cover\r\n // uniform mat4 uTextureMatrix0;\r\n\r\n // // pass your vertex and texture coords to the fragment shader\r\n // varying vec3 vVertexPosition;\r\n // varying vec2 vTextureCoord;\r\n\r\n // void main() {\r\n // vec3 vertexPosition = aVertexPosition;\r\n // gl_Position = uPMatrix * uMVMatrix * vec4(vertexPosition, 1.0);\r\n // // set the varyings\r\n // // here we use our texture matrix to calculate the accurate texture coords\r\n // vTextureCoord = (uTextureMatrix0 * vec4(aTextureCoord, 0.0, 1.0)).xy;\r\n // vVertexPosition = vertexPosition;\r\n // }\r\n // `;\r\n // let fs = `\r\n // precision mediump float;\r\n\r\n // // get our varyings\r\n // varying vec3 vVertexPosition;\r\n // varying vec2 vTextureCoord;\r\n\r\n // // the uniform we declared inside our javascript\r\n // uniform float uTime;\r\n\r\n // // our texture sampler (default name, to use a different name please refer to the documentation)\r\n // uniform sampler2D uSampler0;\r\n\r\n // void main() {\r\n // // get our texture coords from our varying\r\n // vec2 textureCoord = vTextureCoord;\r\n // // displace our pixels along the X axis based on our time uniform\r\n // // textures coords are ranging from 0.0 to 1.0 on both axis\r\n // textureCoord.x += sin(textureCoord.y * 25.0) * cos(textureCoord.x * 25.0) * (cos(uTime / 50.0)) / 25.0;\r\n // // map our texture with the texture matrix coords\r\n // gl_FragColor = texture2D(uSampler0, textureCoord);\r\n // }\r\n // `;\r\n // const params = {\r\n // vertexShader: vs,\r\n // fragmentShader: fs,\r\n // uniforms: {\r\n // time: {\r\n // name: \"uTime\",\r\n // type: \"1f\",\r\n // value: 0,\r\n // },\r\n // },\r\n // };\r\n // const plane = new Plane(this.curtains, this.$refs.plane, params);\r\n // plane.onRender(() => {\r\n // plane.uniforms.time.value++;\r\n // });\r\n\r\n // post process shader\r\n // const passParams = {\r\n // vertexShaderID: \"my-shader-pass-vs\", // ID of your shader pass vertex shader script tag\r\n // fragmentShaderID: \"my-shader-pass-fs\", // ID of your shader pass fragment shader script tag\r\n // uniforms: { // uniforms are what will allow you to interact with your shader pass\r\n // time: {\r\n // name: \"uTime\", // uniform name that will be passed to our shaders\r\n // type: \"1f\", // this means our uniform is a float\r\n // value: 0, // initial value of the uniform\r\n // },\r\n // },\r\n // };\r\n // // add our shader pass using our curtains object and the parameters\r\n // const shaderPass = new ShaderPass(curtains, passParams);\r\n // shaderPass.onRender(function() {\r\n // shaderPass.uniforms.time.value++; // update our time uniform value\r\n // });\r\n },\r\n});\r\n","import { render } from \"./VinylViz.vue?vue&type=template&id=c7142f46&scoped=true\"\nimport script from \"./VinylViz.vue?vue&type=script&lang=ts\"\nexport * from \"./VinylViz.vue?vue&type=script&lang=ts\"\n\nimport \"./VinylViz.vue?vue&type=style&index=0&id=c7142f46&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-c7142f46\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport VinylViz from \"./VinylViz.vue\";\r\nexport default defineComponent({\r\n name: \"ArtistHighlight\",\r\n components: {\r\n VinylViz\r\n },\r\n props: [\"apBus\", \"song\"]\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6d2ec651\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n","\r\n\r\n\r\n","import { render } from \"./MeshViz.vue?vue&type=template&id=05003109&scoped=true\"\nimport script from \"./MeshViz.vue?vue&type=script&lang=js\"\nexport * from \"./MeshViz.vue?vue&type=script&lang=js\"\n\nimport \"./MeshViz.vue?vue&type=style&index=0&id=05003109&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05003109\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport MeshViz from \"./MeshViz.vue\";\r\nexport default defineComponent({\r\n name: \"SocialEngagement\",\r\n components: {\r\n MeshViz\r\n },\r\n props: [\"audioPipeline\", \"apBus\", \"playerState\", \"userCount\"],\r\n data() { return {} },\r\n});\r\n","import { render } from \"./index.vue?vue&type=template&id=703aa865\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n\r\n","\r\n\r\n","import { render } from \"./ProgressRing.vue?vue&type=template&id=10e623f3\"\nimport script from \"./ProgressRing.vue?vue&type=script&lang=js\"\nexport * from \"./ProgressRing.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","\r\n\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\nexport default defineComponent({\r\n name: \"PlayToggle\",\r\n props: [\"isActive\"],\r\n data() {\r\n return {};\r\n },\r\n methods: {\r\n togglePlay(): void {\r\n this.$emit(\"toggle\");\r\n },\r\n },\r\n});\r\n","import { render } from \"./PlayToggle.vue?vue&type=template&id=72cb5632&scoped=true\"\nimport script from \"./PlayToggle.vue?vue&type=script&lang=ts\"\nexport * from \"./PlayToggle.vue?vue&type=script&lang=ts\"\n\nimport \"./PlayToggle.vue?vue&type=style&index=0&id=72cb5632&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-72cb5632\"\n\nexport default script","\r\nimport { defineComponent, PropType } from \"vue\";\r\nimport ProgressRing from \"./ProgressRing.vue\";\r\nimport PlayToggle from \"./PlayToggle.vue\";\r\nimport { AudioPipeline } from \"../lib/AudioPipeline\";\r\nimport EventEmitter from \"eventemitter3\";\r\nimport { IStreamInfo } from \"@/views/Player/index.vue\";\r\n\r\n//import SC from \"soundcloud\";\r\nconst SC: any = require(\"soundcloud\");\r\n\r\ninterface AppControlsData {\r\n curtains: any;\r\n volume: number;\r\n lpFreq: number;\r\n lpDetune: number;\r\n lpQ: number;\r\n isPlaying: boolean;\r\n}\r\nexport default defineComponent({\r\n name: \"AppControls\",\r\n components: {\r\n ProgressRing,\r\n PlayToggle,\r\n },\r\n props: {\r\n ap: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n apBus: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n streamInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n }\r\n },\r\n data(): AppControlsData {\r\n return {\r\n curtains: null,\r\n volume: 50,\r\n lpFreq: 10000 / 350,\r\n lpDetune: 0,\r\n lpQ: 50,\r\n isPlaying: false,\r\n };\r\n },\r\n methods: {\r\n onPlayToggle(): void {\r\n if (this.isPlaying) {\r\n this.stop();\r\n } else {\r\n this.play();\r\n }\r\n },\r\n stop(): void {\r\n if (!this.ap) return;\r\n if (!this.ap.audioSourceController) return;\r\n this.ap.audioSourceController.stop();\r\n this.isPlaying = false;\r\n },\r\n play(): void {\r\n if (!this.ap) return;\r\n // handle failed autoplay\r\n if (this.ap.getState() === \"suspended\") {\r\n this.ap.resume();\r\n }\r\n this.isPlaying = true;\r\n // SC.resolve(\"https://soundcloud.com/user-963275205/jamie-xx-bbc-radio-1-essential-mix-2020-04-25\").then(\r\n // (obj: any) => {\r\n // if (!this.ap || !this.ap.audioSourceController) return;\r\n // SC.get(`/i1/tracks/${obj.id}/streams`).then((streams: any) => {\r\n // if (!this.ap || !this.ap.audioSourceController) return;\r\n // this.ap.audioSourceController.connectSource(\r\n // streams.http_mp3_128_url\r\n // );\r\n // this.ap.audioSourceController.play();\r\n // });\r\n // }\r\n // );\r\n if (!this.ap || !this.ap.audioSourceController) return;\r\n let uri = `${window.location.protocol}//${window.location.host}/flow`;\r\n let testFile = require(\"@/assets/test.ogg\"); // TODO: better local switch than this\r\n if (window.location.host.includes('localhost')) {\r\n uri = testFile;\r\n }\r\n this.ap.audioSourceController.connectSource(uri);\r\n this.ap.audioSourceController.play();\r\n },\r\n updateVolume(e: WheelEvent): void {\r\n this.volume = Math.min(100, Math.max(0, this.volume + e.deltaY * -0.05));\r\n if (!this.apBus) return;\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"streamGain\",\r\n paramVal: this.volume / 100, // map to [0, 1]\r\n });\r\n },\r\n updateLPFreq(e: WheelEvent): void {\r\n this.lpFreq = Math.min(100, Math.max(0, this.lpFreq + e.deltaY * -0.025));\r\n if (!this.apBus) return;\r\n let v = this.lpFreq * 100; // remap to [0, nyquist]\r\n console.log(\"🚀 ~ file: index.vue ~ line 172 ~ updateLPFreq ~ v\", v);\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"lpFreq\",\r\n paramVal: v,\r\n });\r\n },\r\n updateLPDetune(e: WheelEvent): void {\r\n this.lpDetune = Math.min(\r\n 100,\r\n Math.max(0, this.lpDetune + e.deltaY * -0.05)\r\n );\r\n if (!this.apBus) return;\r\n let v = this.lpDetune * 100 - 5000; // remap to [-153000, 153000]\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"lpDetune\",\r\n paramVal: v,\r\n });\r\n },\r\n updateLPQ(e: WheelEvent): void {\r\n this.lpQ = Math.min(100, Math.max(0, this.lpQ + e.deltaY * -0.05));\r\n if (!this.apBus) return;\r\n let v = this.lpQ - 50; // remap to [-770, 770]\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"lpQ\",\r\n paramVal: v,\r\n });\r\n },\r\n },\r\n mounted() {\r\n SC.initialize({\r\n client_id: \"boDIr5bvOJeaKn2qiZGS3CR6ruDoAKS3\",\r\n });\r\n this.isPlaying = this.ap.isPlaying();\r\n if (!this.isPlaying) this.play();\r\n },\r\n});\r\n","import { render } from \"./index.vue?vue&type=template&id=5bae02f7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5bae02f7&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5bae02f7\"\n\nexport default script","\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","import { render } from \"./ChatMessage.vue?vue&type=template&id=72446334&scoped=true\"\nimport script from \"./ChatMessage.vue?vue&type=script&lang=js\"\nexport * from \"./ChatMessage.vue?vue&type=script&lang=js\"\n\nimport \"./ChatMessage.vue?vue&type=style&index=0&id=72446334&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-72446334\"\n\nexport default script","\r\n\r\n\r\n","import { render } from \"./ChatInput.vue?vue&type=template&id=5eeb4439&scoped=true\"\nimport script from \"./ChatInput.vue?vue&type=script&lang=js\"\nexport * from \"./ChatInput.vue?vue&type=script&lang=js\"\n\nimport \"./ChatInput.vue?vue&type=style&index=0&id=5eeb4439&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5eeb4439\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport ChatMessage from \"./ChatMessage.vue\";\r\nimport ChatInput from \"./ChatInput.vue\";\r\nimport { ISignalMessage } from \"@/views/Player/index.vue\"\r\n\r\ninterface IUserChat {\r\n id: number;\r\n timestamp: number;\r\n username: string;\r\n msg: string;\r\n avatar?: string;\r\n pending?: boolean;\r\n};\r\n\r\nexport default defineComponent({\r\n name: \"Chat\",\r\n components: {\r\n ChatMessage,\r\n ChatInput,\r\n },\r\n props: [\"userCount\"],\r\n data() {\r\n return {\r\n maxLength: 100,\r\n username: \"\",\r\n chats: Array(),\r\n };\r\n },\r\n computed: {\r\n inputPlaceholder(): string {\r\n return this.username ? `how's the music, ${this.username}?` : \"enter a username...\";\r\n },\r\n chatsChronoSorted(): any[] {\r\n return [...this.chats].sort((a, b) => {\r\n return a.timestamp < b.timestamp\r\n ? 1\r\n : a.timestamp > b.timestamp\r\n ? -1\r\n : 0;\r\n });\r\n },\r\n },\r\n methods: {\r\n setUsername(val: any) {\r\n this.username = val.replace(/[^\\w\\s]/gi, '');\r\n localStorage.setItem('username', this.username);\r\n\r\n const welcomeMsg = {\r\n id: Date.now(),\r\n timestamp: Date.now(),\r\n username: '▂▃▅▇█ flowscape █▇▅▃▂',\r\n msg: `welcome to flowscape, \"${this.username}\"\\n\\nyou can change your username by typing:\\n \"/username \"\\n`,\r\n avatar: \"logo.png\"\r\n };\r\n\r\n this.chats.push(welcomeMsg);\r\n },\r\n updateUsername(val: any) {\r\n this.username = val.replace(/[^\\w\\s]/gi, '');\r\n localStorage.setItem('username', this.username);\r\n\r\n const welcomeMsg = {\r\n id: Date.now(),\r\n timestamp: Date.now(),\r\n username: '▂▃▅▇█ flowscape █▇▅▃▂',\r\n msg: `your username is now \"${this.username}\"\\n\\n...they'll never even know ( ͡° ͜ʖ ͡°)\\n`,\r\n avatar: \"logo.png\"\r\n };\r\n\r\n this.chats.push(welcomeMsg);\r\n },\r\n sendMsg(msg: any) {\r\n if (!this.username) {\r\n this.setUsername(msg);\r\n return;\r\n } else if (msg.includes(\"/username\")) {\r\n this.updateUsername(msg.replace('/username ', ''));\r\n return;\r\n }\r\n if (this.chats.length > this.maxLength) {\r\n this.chats.shift();\r\n }\r\n this.chats.push({\r\n id: Date.now(),\r\n timestamp: Date.now(),\r\n msg: msg,\r\n username: this.username,\r\n pending: true\r\n });\r\n this.$emit(\"send\", { username: this.username, message: msg });\r\n },\r\n recvMsg(msg: ISignalMessage) {\r\n // if msg recv'd is one of our pending messages, resolve\r\n let pend = this.chats.filter(cm => cm.pending).find(m => m.msg == msg.data);\r\n if (pend) pend.pending = false\r\n else {\r\n if (this.chats.length > this.maxLength) {\r\n this.chats.shift();\r\n }\r\n this.chats.push({\r\n id: Date.now(),\r\n timestamp: Date.now(),\r\n msg: msg.data,\r\n username: msg.user\r\n })\r\n }\r\n }\r\n },\r\n mounted() {\r\n let un = localStorage.getItem(\"username\");\r\n if (un) this.setUsername(un);\r\n }\r\n});\r\n","import { render } from \"./index.vue?vue&type=template&id=706e864a&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=706e864a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-706e864a\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport Chat from \"@/components/Player/SocialEngagement/Chat/index.vue\";\r\nimport { IChatMessage, ISignalMessage } from \"@/views/Player/index.vue\";\r\nimport AppControls from \"@/components/Player/AppControls/index.vue\";\r\n\r\nexport default defineComponent({\r\n name: \"SidebarControls\",\r\n components: {\r\n Chat,\r\n AppControls\r\n },\r\n props: [\"audioPipeline\", \"apBus\", \"userCount\"],\r\n data() {\r\n return {\r\n active: 'chat',\r\n volume: 50,\r\n };\r\n },\r\n methods: {\r\n itemClick(event: Event, type: string) {\r\n if (type === 'chat') {\r\n if (this.active === 'chat') {\r\n // chat already active and clicked again\r\n this.active = \"\";\r\n } else {\r\n // show chat and hide previous widget\r\n this.active = type;\r\n }\r\n } else {\r\n this.active = type\r\n }\r\n\r\n },\r\n sendChatMsg(msg: IChatMessage) {\r\n this.$emit('send', msg);\r\n },\r\n recvMsg(msg: ISignalMessage) {\r\n (this.$refs.chat as any).recvMsg(msg);\r\n },\r\n updateVolume(): void {\r\n this.volume = Math.min(100, Math.max(0, this.volume));\r\n if (!this.apBus) return;\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"streamGain\",\r\n paramVal: this.volume / 100, // map to [0, 1]\r\n });\r\n },\r\n updateVolumeFromWheel(e: WheelEvent): void {\r\n this.volume = Math.min(100, Math.max(0, this.volume + e.deltaY * -0.05));\r\n if (!this.apBus) return;\r\n this.apBus.emit(\"setParam\", {\r\n paramName: \"streamGain\",\r\n paramVal: this.volume / 100, // map to [0, 1]\r\n });\r\n },\r\n },\r\n});\r\n","import { render } from \"./SidebarControls.vue?vue&type=template&id=56fd8da6&scoped=true\"\nimport script from \"./SidebarControls.vue?vue&type=script&lang=ts\"\nexport * from \"./SidebarControls.vue?vue&type=script&lang=ts\"\n\nimport \"./SidebarControls.vue?vue&type=style&index=0&id=56fd8da6&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-56fd8da6\"\n\nexport default script","\r\n\r\n","\r\n\r\n","\r\n\r\n","import { render } from \"./Meter.vue?vue&type=template&id=53a3f1fa&scoped=true\"\nimport script from \"./Meter.vue?vue&type=script&lang=js\"\nexport * from \"./Meter.vue?vue&type=script&lang=js\"\n\nimport \"./Meter.vue?vue&type=style&index=0&id=53a3f1fa&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-53a3f1fa\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport Meter from \"./Meter.vue\";\r\n\r\nexport default defineComponent({\r\n name: \"Analyzer\",\r\n components: {\r\n Meter,\r\n },\r\n props: [\"ap\", \"apBus\"],\r\n data() {\r\n return {\r\n width: 300,\r\n height: 500,\r\n };\r\n },\r\n computed: {\r\n normalizedVolume(): number {\r\n return this.ap.analyzer.normalizedVolume;\r\n },\r\n beatThreshold(): number {\r\n return this.ap.analyzer.beatThreshold;\r\n },\r\n },\r\n mounted() {\r\n this.apBus.on(\"beat-detect\", () => {\r\n this.onBeat();\r\n });\r\n this.height = 332;\r\n },\r\n unmounted() {\r\n this.apBus.off(\"beat-detect\");\r\n },\r\n methods: {\r\n onBeat() {\r\n let el = this.$el;\r\n el.style.borderBottomColor = \"white\";\r\n setTimeout(() => {\r\n el.style.borderBottomColor = \"transparent\";\r\n }, 250);\r\n // TweenMax.to(el, 0.1, {\r\n // borderBottomColor: \"white\",\r\n // onComplete: function () {\r\n // TweenMax.to(el, 0.25, {\r\n // borderBottomColor: \"transparent\",\r\n // });\r\n // },\r\n // });\r\n },\r\n },\r\n});\r\n","import { render } from \"./Analyzer.vue?vue&type=template&id=e96ac2cc&scoped=true\"\nimport script from \"./Analyzer.vue?vue&type=script&lang=ts\"\nexport * from \"./Analyzer.vue?vue&type=script&lang=ts\"\n\nimport \"./Analyzer.vue?vue&type=style&index=0&id=e96ac2cc&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-e96ac2cc\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport Analyzer from \"./Analyzer.vue\";\r\nexport default defineComponent({\r\n name: \"DevControlPanel\",\r\n components: {\r\n Analyzer,\r\n },\r\n props: [\"audioPipeline\", \"apBus\"],\r\n data(): { devControls: any } {\r\n return {\r\n devControls: {\r\n mainGainDry: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n mainGainWet: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n streamGainDry: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n streamGainWet: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n effectsGain: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n },\r\n }\r\n },\r\n methods: {\r\n updateAudioParam(newVal: number, k: string) {\r\n let control = this.devControls[k];\r\n control.val = +newVal;\r\n if (!control) return;\r\n this.apBus.emit(\"setParam\", { paramName: k, paramVal: +control.val });\r\n },\r\n }\r\n});\r\n","import { render } from \"./DevControlPanel.vue?vue&type=template&id=06fd0868&scoped=true\"\nimport script from \"./DevControlPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./DevControlPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./DevControlPanel.vue?vue&type=style&index=0&id=06fd0868&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-06fd0868\"\n\nexport default script","","import { render } from \"./logo.vue?vue&type=template&id=449f8eac\"\nconst script = {}\nscript.render = render\n\nexport default script","import EventEmitter from \"eventemitter3\";\r\nimport { IAudioEvents } from './AudioPipeline';\r\n\r\nexport interface IAudioSourceController {\r\n audioSourceNode: AudioNode;\r\n getAudioContext(): AudioContext;\r\n connectSource(src: string): void;\r\n play(): void;\r\n stop(): void;\r\n getTimeStats(): Error | { currentTime: Number; duration: Number };\r\n isPlaying(): boolean;\r\n}\r\n\r\n/* Factory function for creating an IAudioSourceController, for now we only use a MESController */\r\nexport function CreateAudioSourceController(\r\n ctx: AudioContext,\r\n ebus: EventEmitter,\r\n src?: string\r\n): IAudioSourceController {\r\n if (!src)\r\n src = \"\";//\"data:audio/wav;base64,UklGRjIAAABXQVZFZm10IBIAAAABAAEAQB8AAEAfAAABAAgAAABmYWN0BAAAAAAAAABkYXRhAAAAAA==\";\r\n\r\n // extend as needed to do logic and return different kinds of audio sources in future\r\n return new MESController(ctx, ebus, src);\r\n}\r\n\r\n/*\r\n * MESController is a utility wrapper for creating and managing a MediaElementAudioSourceNode\r\n *\r\n * params:\r\n * ctx (AudioContext): audio context used to create audio node\r\n * ebus (EventEmitter): event bus to emit and subscribe to\r\n * src (string) (optional):\r\n *\r\n */\r\n\r\nexport class MESController implements IAudioSourceController {\r\n public audioSourceNode: MediaElementAudioSourceNode;\r\n private _ctx: AudioContext;\r\n private _ebus: EventEmitter;\r\n private _a: HTMLAudioElement | null;\r\n\r\n // if set, will attempt to prefetch and pause playback\r\n private _prefetchSrc: string = \"\";\r\n\r\n // state ish\r\n private _isPlaying: boolean = false;\r\n\r\n constructor(ctx: AudioContext, ebus: EventEmitter, prefetchSrc?: string) {\r\n this._ctx = ctx;\r\n this._ebus = ebus;\r\n\r\n this._a = new Audio();\r\n this._a.crossOrigin = \"anonymous\"\r\n this.audioSourceNode = ctx.createMediaElementSource(this._a);\r\n if (prefetchSrc) {\r\n this._prefetchSrc = prefetchSrc;\r\n this.connectSource(prefetchSrc);\r\n }\r\n }\r\n\r\n public connectSource(src: string): void {\r\n if(!this._a){\r\n this._a = new Audio();\r\n // emit new a so pipeline can connect it?\r\n }\r\n this._a.src = src;\r\n this._a.load();\r\n }\r\n\r\n public play(): void {\r\n if (this._a && !this._isPlaying) {\r\n this._a.play();\r\n this._isPlaying = true;\r\n } else {\r\n // emit error?\r\n }\r\n }\r\n\r\n public stop(): void {\r\n if (this._a) {\r\n this._a.pause();\r\n this._isPlaying = false;\r\n }\r\n }\r\n\r\n public getAudioContext(): AudioContext {\r\n return this._ctx;\r\n }\r\n\r\n public getTimeStats(): Error | { currentTime: Number; duration: Number } {\r\n if (!this._a) throw Error(\"AudioSource not created!\");\r\n return {\r\n currentTime: this._a.currentTime, // current playback time in seconds\r\n duration: this._a.duration // length in seconds\r\n };\r\n }\r\n\r\n public isPlaying(): boolean {\r\n return this._isPlaying;\r\n }\r\n}\r\n","import EventEmitter from \"eventemitter3\";\r\nimport { IAudioEvents } from \"./AudioPipeline\";\r\n\r\ninterface IAudioAnalyzerOptions {\r\n fftSize: number;\r\n sampleRate: number;\r\n beatDecay: number;\r\n beatDebounce: number;\r\n}\r\nexport default function CreateAudioAnalyzer(ctx: AudioContext, ebus: EventEmitter, config?: IAudioAnalyzerOptions ): AudioAnalyzer {\r\n return new AudioAnalyzer(ctx, ebus, config);\r\n}\r\n\r\nvar defaultConfig = {\r\n fftSize: 256,\r\n sampleRate: 50, // in ms\r\n beatDecay: 0.15, // % decay per second\r\n beatDebounce: 300 // debounce in ms\r\n};\r\n\r\n/* AudioAnalyzer is a Web Audio API wrapper class useful for sound visualizations\r\n * Created by: Sammy G\r\n * License: use for whatever yo\r\n */\r\nexport class AudioAnalyzer {\r\n public node: AnalyserNode;\r\n\r\n public waveform: Uint8Array;\r\n public normalizedWaveform: number[] | null;\r\n public timeWaveform: Uint8Array;\r\n public normalizedTimeWaveform: number[] | null;\r\n public volume: number;\r\n public normalizedVolume: number;\r\n public maxVolume: number;\r\n public beatThreshold: number;\r\n public normalizedBeatThreshold: number;\r\n \r\n private _ebus: EventEmitter;\r\n private _ctx: AudioContext;\r\n private _config: IAudioAnalyzerOptions;\r\n\r\n private _lastBeatTime: number;\r\n private _interval: number;\r\n\r\n\r\n constructor(ctx: AudioContext, ebus: EventEmitter, config?: IAudioAnalyzerOptions) {\r\n this._config = {\r\n ...config,\r\n ...defaultConfig\r\n };\r\n this._ctx = ctx;\r\n this._ebus = ebus || null;\r\n this.node = this._ctx.createAnalyser();\r\n this.node.fftSize = this._config.fftSize;\r\n\r\n // useful props for visualizers\r\n this.waveform = new Uint8Array(128);\r\n this.normalizedWaveform = null;\r\n this.timeWaveform = new Uint8Array(this.node.frequencyBinCount);\r\n this.normalizedTimeWaveform = null;\r\n this.volume = 0;\r\n this.normalizedVolume = 0;\r\n\r\n this.maxVolume = 256;\r\n\r\n // beat detection\r\n this.beatThreshold = 0;\r\n this.normalizedBeatThreshold = 0;\r\n this._lastBeatTime = 0;\r\n\r\n this._interval = -1;\r\n }\r\n\r\n public setup() {\r\n this._interval = window.setInterval(() => {\r\n this._sampleAudio();\r\n }, this._config.sampleRate);\r\n }\r\n\r\n public destroy() {\r\n window.clearInterval(this._interval);\r\n this.node.disconnect();\r\n\r\n this._unbindEvents();\r\n }\r\n\r\n private _unbindEvents(): void {\r\n\r\n }\r\n\r\n private _bindEvents(): void {\r\n\r\n }\r\n\r\n private _sampleAudio() {\r\n this.node.getByteFrequencyData(this.waveform);\r\n this.node.getByteTimeDomainData(this.timeWaveform);\r\n this.volume = this.waveform.reduce((total, val) => total + val, 0);\r\n\r\n // temp normalize formulas\r\n this.normalizedVolume = this.volume / (this.maxVolume * this.waveform.length);\r\n this.normalizedWaveform = Array.from(this.waveform).map(a => a / 128);\r\n this.normalizedTimeWaveform = Array.from(this.timeWaveform).map(\r\n a => a / 128\r\n );\r\n\r\n // beat detect\r\n this.beatThreshold -=(this._config.beatDecay * this.beatThreshold) / this._config.sampleRate;\r\n this.normalizedBeatThreshold -=\r\n (this._config.beatDecay * this.normalizedBeatThreshold) /\r\n this._config.sampleRate;\r\n\r\n if (this.volume > this.beatThreshold) {\r\n this.beatThreshold = this.volume;\r\n this.normalizedBeatThreshold = this.normalizedVolume;\r\n let beatTime = Date.now() - this._lastBeatTime;\r\n if (this._ebus && beatTime > this._config.beatDebounce) {\r\n this._lastBeatTime = Date.now();\r\n this._ebus.emit(\"beat-detect\"); //debounce to prevent some false-positives?\r\n }\r\n }\r\n }\r\n}","import {\r\n CreateAudioSourceController,\r\n IAudioSourceController\r\n} from \"./MESController\";\r\nimport EventEmitter from \"eventemitter3\";\r\nimport { AudioAnalyzer } from \"./AudioAnalyzer\";\r\n\r\nexport interface IAudioEvents {\r\n \"setParam\": (obj: { paramName: string, paramVal: number | Float32Array}) => void;\r\n \"audio-source-error\": (e: ErrorEvent) => void;\r\n \"audio-source-ended\": () => void;\r\n \"beat-detect\": () => void;\r\n}\r\nexport function CreateAudioPipeline(ebus: EventEmitter): AudioPipeline {\r\n return new AudioPipeline(ebus);\r\n}\r\n\r\nexport enum AudioPipelineState {\r\n PLAYING = \"playing\",\r\n SUSPENDED = \"suspended\",\r\n UNINITIALIZED = \"uninitialized\",\r\n READY = \"ready\"\r\n}\r\n\r\n/*\r\n * AudioPipeline - a wrapper around AudioContext that includes composing the audio nodes\r\n * used throughout the application\r\n * GRAPH: AudioSource<->AudioEffects<->GainNode<->Analyzer<->Destination\r\n */\r\nexport class AudioPipeline {\r\n public ctx: AudioContext;\r\n\r\n // wrapper of main music stream audio source node\r\n public audioSourceController: IAudioSourceController | null = null;\r\n public analyzer: AudioAnalyzer;\r\n\r\n // events bus to emit and subscribe to\r\n private _ebus: EventEmitter;\r\n\r\n // gain nodes\r\n private _mainDry: GainNode | null = null;\r\n private _mainWet: GainNode | null = null;\r\n private _dry1: GainNode | null = null;\r\n private _wet1: GainNode | null = null;\r\n private _wet2: GainNode | null = null;\r\n private _audioSrcDry: GainNode | null = null;\r\n private _audioSrcWet: GainNode | null = null;\r\n\r\n // effects nodes\r\n private _lpFilter: BiquadFilterNode | null = null;\r\n private _waveshaper: WaveShaperNode | null = null;\r\n private _reverb: ConvolverNode | null = null;\r\n private _compressor: DynamicsCompressorNode | null = null;\r\n\r\n constructor(ebus: EventEmitter) {\r\n this._ebus = ebus;\r\n this.ctx = new AudioContext();\r\n this.analyzer = new AudioAnalyzer(this.ctx, this._ebus);\r\n }\r\n\r\n public getState(): AudioPipelineState {\r\n if(!this.audioSourceController) return AudioPipelineState.UNINITIALIZED\r\n else if(this.ctx.state === 'running') return AudioPipelineState.READY\r\n else if(this.audioSourceController.isPlaying()) return AudioPipelineState.PLAYING\r\n else return AudioPipelineState.SUSPENDED\r\n }\r\n\r\n public resume(): void {\r\n if(!(this.ctx && this.audioSourceController)) return;\r\n\r\n this.ctx.resume();\r\n }\r\n\r\n public destroy(): void {\r\n this._compressor?.disconnect();\r\n this._mainDry?.disconnect();\r\n this._mainWet?.disconnect();\r\n this._dry1?.disconnect();\r\n this._wet1?.disconnect();\r\n this._wet2?.disconnect();\r\n this._lpFilter?.disconnect();\r\n this._waveshaper?.disconnect();\r\n this._reverb?.disconnect();\r\n this._audioSrcDry?.disconnect();\r\n this._audioSrcWet?.disconnect();\r\n this.audioSourceController?.audioSourceNode.disconnect();\r\n this.audioSourceController?.stop();\r\n this.audioSourceController = null;\r\n this.ctx.close();\r\n\r\n this.unbindEvents();\r\n }\r\n\r\n public setup(): boolean {\r\n if(this.audioSourceController != null) return true; // already setup dawg \r\n if(!this.ctx){\r\n this.ctx = new AudioContext();\r\n }\r\n\r\n let c = this.ctx;\r\n\r\n this.audioSourceController = CreateAudioSourceController(c, this._ebus);\r\n // create gains\r\n this._mainDry = c.createGain();\r\n this._mainWet = c.createGain();\r\n this._mainWet.gain.value = 0;\r\n this._dry1 = c.createGain();\r\n this._wet1 = c.createGain();\r\n this._wet2 = c.createGain();\r\n this._audioSrcDry = c.createGain();\r\n this._audioSrcWet = c.createGain();\r\n\r\n // create effects\r\n this._lpFilter = c.createBiquadFilter();\r\n this._waveshaper = c.createWaveShaper();\r\n this._reverb = c.createConvolver();\r\n this._compressor = c.createDynamicsCompressor();\r\n \r\n // connect all the things\r\n this.analyzer.node.connect(this.ctx.destination);\r\n this._compressor.connect(this.analyzer.node);\r\n this._mainDry.connect(this._compressor);\r\n this._mainWet.connect(this._compressor);\r\n this._reverb.connect(this._mainWet);\r\n this._wet2.connect(this._reverb);\r\n this._lpFilter.connect(this._mainWet);\r\n this._lpFilter.connect(this._mainDry);\r\n this._dry1.connect(this._mainDry);\r\n this._waveshaper.connect(this._lpFilter);\r\n this._wet1.connect(this._waveshaper);\r\n\r\n // source connections\r\n this._audioSrcDry.connect(this._dry1);\r\n this._audioSrcWet.connect(this._wet1);\r\n this.audioSourceController.audioSourceNode.connect(this._audioSrcDry);\r\n this.audioSourceController.audioSourceNode.connect(this._audioSrcWet);\r\n\r\n \r\n // defaults\r\n this._mainDry.gain.value = 0.5;\r\n this._dry1.gain.value = 0.5;\r\n // this._audioSrcDry.gain.value = 0.5;\r\n this._mainWet.gain.value = 0;\r\n this._audioSrcWet.gain.value = 0;\r\n\r\n this.analyzer.setup();\r\n this._bindEvents();\r\n \r\n return this.ctx.state === \"suspended\";\r\n }\r\n\r\n private unbindEvents(){\r\n this._ebus.off(\"setParam\", this._setParamValue, this);\r\n }\r\n private _bindEvents(){\r\n this._ebus.on(\"setParam\", this._setParamValue, this);\r\n }\r\n \r\n private _setParamValue({paramName, paramVal}: {paramName: string, paramVal: number | Float32Array }): void {\r\n if(typeof paramVal != \"number\"){\r\n if(paramName == \"waveshape\") this._setWaveshapeCurve(paramVal);\r\n } else {\r\n switch(paramName){\r\n // case 'mainGain':\r\n // this._setGainValue(this._mainDry, paramVal);\r\n // this._setGainValue(this._mainWet, paramVal);\r\n // break;\r\n case 'mainGainDry':\r\n this._setGainValue(this._mainDry, paramVal);\r\n break;\r\n case 'mainGainWet':\r\n this._setGainValue(this._mainWet, paramVal);\r\n break;\r\n case 'streamGain':\r\n this._setGainValue(this._audioSrcDry, paramVal);\r\n this._setGainValue(this._mainDry, paramVal);\r\n break;\r\n case 'streamGainDry':\r\n this._setGainValue(this._audioSrcDry, paramVal);\r\n break;\r\n case 'streamGainWet':\r\n this._setGainValue(this._audioSrcWet, paramVal);\r\n break;\r\n case 'effectsGain': // waveshaper, filter, and reverb gain\r\n this._setGainValue(this._wet2, paramVal);\r\n break;\r\n case 'lpFreq': // range: [0, nyquistF (~64k?)]\r\n if(this._lpFilter) this._lpFilter.frequency.value = paramVal;\r\n break;\r\n case 'lpQ': // range: [-770, 770] although testing looks like [0, 50]?\r\n if(this._lpFilter) this._lpFilter.Q.value = paramVal;\r\n break;\r\n case 'lpDetune': // range: [-770, 770] although testing looks like [0, 50]?\r\n if(this._lpFilter) this._lpFilter.detune.value = paramVal;\r\n break;\r\n default:\r\n console.warn(`Could not find AudioPipeline param: ${paramName}`);\r\n break; \r\n }\r\n }\r\n }\r\n\r\n public isPlaying(): boolean {\r\n return !!(this.ctx.state === 'running' && this.audioSourceController && this.audioSourceController.isPlaying());\r\n }\r\n\r\n private _setGainValue(g: GainNode | null, val: number){\r\n if(g) g.gain.value = val;\r\n }\r\n\r\n private _setWaveshapeCurve(val: Float32Array): void {\r\n if(this._waveshaper) this._waveshaper.curve = val;\r\n }\r\n}\r\n","\r\nimport { defineComponent } from \"vue\";\r\nimport SplashHero from \"@/components/Player/Splash/SplashHero.vue\";\r\nimport ArtistHighlight from \"@/components/Player/ArtistHighlight/index.vue\";\r\nimport SocialEngagement from \"@/components/Player/SocialEngagement/index.vue\"\r\nimport AppControls from \"@/components/Player/AppControls/index.vue\";\r\nimport SidebarControls from \"@/components/Player/AppControls/SidebarControls.vue\"\r\nimport DevControlPanel from \"@/components/Player/debug/DevControlPanel.vue\"\r\nimport LogoSVG from \"./logo.vue\";\r\nimport {\r\n IAudioEvents,\r\n AudioPipeline,\r\n CreateAudioPipeline,\r\n} from \"@/components/Player/lib/AudioPipeline\";\r\nimport EventEmitter from \"eventemitter3\";\r\n\r\n// ISignalMessage is signaling message interface between client and server\r\nexport interface ISignalMessage {\r\n type: string;\r\n user: string;\r\n data: any;\r\n}\r\n// IStreamInfo is stream info interface sent from server\r\nexport interface IStreamInfo {\r\n name: string;\r\n artist: string;\r\n}\r\n\r\nexport interface IChatMessage {\r\n username: string;\r\n message: string;\r\n}\r\ninterface PlayerComponentData {\r\n curtains: null;\r\n apBus: EventEmitter;\r\n audioPipeline: AudioPipeline;\r\n audioAnalyzer: null;\r\n state: string;\r\n appName: string;\r\n streamInfo: IStreamInfo;\r\n nextStreamInfo: IStreamInfo;\r\n showDev: boolean;\r\n ws: WebSocket;\r\n buildVersion: string;\r\n userCount: number;\r\n}\r\nexport default defineComponent({\r\n name: \"Player\",\r\n components: {\r\n SplashHero,\r\n ArtistHighlight,\r\n AppControls,\r\n DevControlPanel,\r\n SocialEngagement,\r\n LogoSVG,\r\n SidebarControls\r\n },\r\n props: {},\r\n data(): PlayerComponentData {\r\n let ebus = new EventEmitter();\r\n let loc = window.location;\r\n let uri = loc.protocol === 'https:' ? 'wss:' : 'ws:';\r\n uri = `${uri}//${loc.host}/ws`;\r\n return {\r\n curtains: null,\r\n apBus: ebus, // audio pipeline bus\r\n audioPipeline: CreateAudioPipeline(ebus),\r\n audioAnalyzer: null,\r\n state: \"splash\", // splash, loading, loaded\r\n appName: \"FLOWSCAPE\",\r\n showDev: false,\r\n ws: new WebSocket(uri),\r\n streamInfo: { name: '', artist: '' },\r\n nextStreamInfo: { name: '', artist: '' },\r\n buildVersion: \"alpha build - Baragon 4\",\r\n userCount: 1\r\n };\r\n },\r\n methods: {\r\n /*\r\n type Message struct {\r\n Type string // enum later?\r\n User string // temp username, eventually User struct \r\n Data MessageData\r\n }\r\n */\r\n sendChatMsg(msg: IChatMessage) {\r\n if (this.ws.readyState != WebSocket.OPEN) return;\r\n let final = JSON.stringify({ Type: \"chat\", User: msg.username, Data: msg.message });\r\n this.ws.send(final);\r\n },\r\n onLogoClick() {\r\n if (this.state === \"splash\") {\r\n this.loadPlayer();\r\n } else if (this.state === \"loaded\") {\r\n this.state = \"splash\";\r\n this.audioPipeline.ctx.suspend();\r\n }\r\n },\r\n loadPlayer() {\r\n this.state = \"loading\";\r\n // if audio context hasn't been setup yet, do setup\r\n if (this.audioPipeline.getState() == \"uninitialized\") {\r\n this.audioPipeline.setup();\r\n } else {\r\n // otherwise, resume play\r\n this.audioPipeline.resume();\r\n }\r\n setTimeout(() => {\r\n this.state = \"loaded\";\r\n }, 1000);\r\n },\r\n onResize() {\r\n //this.setTxtRotate();\r\n },\r\n keyHandler(e: KeyboardEvent) {\r\n if (e.key === \"Enter\") {\r\n if (this.state === \"splash\") this.onLogoClick();\r\n } else if (e.code === \"Backquote\") {\r\n this.showDev = !this.showDev;\r\n }\r\n },\r\n },\r\n created() {\r\n this.ws.onopen = () => {\r\n //console.log('ws connected');\r\n };\r\n this.ws.onmessage = (evt: MessageEvent) => {\r\n let msg: ISignalMessage = JSON.parse(evt.data);\r\n if (msg.type == 'chat') {\r\n (this.$refs.sidebarControls as any).recvMsg(msg);\r\n } else if (msg.type == 'next_song') {\r\n if (this.streamInfo.name == '') {\r\n this.streamInfo = msg.data; // handle first conn\r\n (this.$refs.sidebarControls as any).recvMsg({\r\n user: '▂▃▅▇█ flowscape █▇▅▃▂',\r\n data: `Now Playing: ${this.streamInfo.name} by ${this.streamInfo.artist}`\r\n });\r\n } else {\r\n this.nextStreamInfo = msg.data; // buffer since comes early\r\n }\r\n } else if (msg.type == 'song_change') {\r\n this.streamInfo = this.nextStreamInfo;\r\n this.nextStreamInfo = { name: '', artist: '' };\r\n (this.$refs.sidebarControls as any).recvMsg({\r\n user: '▂▃▅▇█ flowscape █▇▅▃▂',\r\n data: `Now Playing: ${this.streamInfo.name} by ${this.streamInfo.artist}`\r\n });\r\n } else if (msg.type == 'user_count') {\r\n this.userCount = msg.data;\r\n }\r\n }\r\n },\r\n mounted() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n window.addEventListener(\"keypress\", this.keyHandler);\r\n //this.setTxtRotate();\r\n },\r\n unmounted() {\r\n this.audioPipeline.destroy();\r\n },\r\n});\r\n","import { render } from \"./index.vue?vue&type=template&id=05719680\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=05719680&lang=css\"\nscript.render = render\n\nexport default script","\r\n\r\n","\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\nexport default defineComponent({\r\n name: \"SplashHero\"\r\n})\r\n","import { render } from \"./MobileSplashHero.vue?vue&type=template&id=d75e798a&scoped=true\"\nimport script from \"./MobileSplashHero.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileSplashHero.vue?vue&type=script&lang=ts\"\n\nimport \"./MobileSplashHero.vue?vue&type=style&index=0&id=d75e798a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-d75e798a\"\n\nexport default script","\r\nimport { defineComponent } from \"vue\";\r\nimport MobileSplashHero from \"./Splash/MobileSplashHero.vue\";\r\nimport MeshViz from \"./SocialEngagement/MeshViz.vue\";\r\nimport VinylViz from \"./ArtistHighlight/VinylViz.vue\";\r\nimport SocialChat from \"./SocialEngagement/Chat/index.vue\";\r\nimport AppControls from \"./AppControls/index.vue\";\r\nimport Analyzer from \"./debug/Analyzer.vue\";\r\nimport {\r\n IAudioEvents,\r\n AudioPipeline,\r\n CreateAudioPipeline,\r\n} from \"./lib/AudioPipeline\";\r\nimport EventEmitter from \"eventemitter3\";\r\n\r\ninterface IChatMessage {\r\n username: string;\r\n message: string;\r\n}\r\ninterface PlayerComponentData {\r\n curtains: null;\r\n apBus: EventEmitter;\r\n audioPipeline: AudioPipeline;\r\n audioAnalyzer: null;\r\n state: string;\r\n appName: string;\r\n devControls: any;\r\n showDev: boolean;\r\n ws: WebSocket\r\n}\r\nexport default defineComponent({\r\n name: \"MobilePlayer\",\r\n components: {\r\n MobileSplashHero,\r\n VinylViz,\r\n MeshViz,\r\n SocialChat,\r\n AppControls,\r\n Analyzer,\r\n },\r\n props: {},\r\n data(): PlayerComponentData {\r\n let ebus = new EventEmitter();\r\n let loc = window.location;\r\n let uri = loc.protocol === 'https:' ? 'wss:' : 'ws:';\r\n uri = `${uri}//${loc.host}/ws`;\r\n return {\r\n curtains: null,\r\n apBus: ebus, // audio pipeline bus\r\n audioPipeline: CreateAudioPipeline(ebus),\r\n audioAnalyzer: null,\r\n state: \"splash\", // splash, loading, loaded\r\n appName: \"FLOWSCAPE\",\r\n showDev: false,\r\n ws: new WebSocket(uri),\r\n devControls: {\r\n mainGainDry: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n mainGainWet: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n streamGainDry: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n streamGainWet: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n effectsGain: {\r\n val: 0,\r\n min: 0,\r\n max: 1,\r\n step: 0.1,\r\n },\r\n },\r\n };\r\n },\r\n methods: {\r\n sendChatMsg(msg: IChatMessage) {\r\n if (this.ws.readyState != WebSocket.OPEN) return;\r\n this.ws.send(JSON.stringify(msg));\r\n },\r\n onLogoClick() {\r\n if (this.state === \"splash\") {\r\n this.loadPlayer();\r\n } else if (this.state === \"loaded\") {\r\n this.state = \"splash\";\r\n this.audioPipeline.ctx.suspend();\r\n }\r\n },\r\n loadPlayer() {\r\n this.state = \"loading\";\r\n // if audio context hasn't been setup yet, do setup\r\n if (this.audioPipeline.getState() == \"uninitialized\") {\r\n this.audioPipeline.setup();\r\n } else {\r\n // otherwise, resume play\r\n this.audioPipeline.resume();\r\n }\r\n setTimeout(() => {\r\n this.state = \"loaded\";\r\n }, 1000);\r\n },\r\n onResize() {\r\n //this.setTxtRotate();\r\n },\r\n keyHandler(e: KeyboardEvent) {\r\n if (e.key === \"Enter\") {\r\n if (this.state === \"splash\") this.onLogoClick();\r\n } else if (e.code === \"Backquote\") {\r\n this.showDev = !this.showDev;\r\n }\r\n },\r\n updateAudioParam(newVal: number, k: string) {\r\n let control = this.devControls[k];\r\n control.val = +newVal;\r\n if (!control) return;\r\n this.apBus.emit(\"setParam\", { paramName: k, paramVal: +control.val });\r\n },\r\n },\r\n created() {\r\n this.ws.onopen = () => {\r\n console.log('ws connected');\r\n };\r\n this.ws.onmessage = (evt: MessageEvent) => {\r\n console.log(\"🚀 ~ file: index.vue ~ line 230 ~ created ~ evt\", evt);\r\n // msg = { evt.username, evt.msg ...etc}\r\n (this.$refs.chat as any).recvMsg(JSON.parse(evt.data));\r\n }\r\n },\r\n mounted() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n window.addEventListener(\"keypress\", this.keyHandler);\r\n //this.setTxtRotate();\r\n },\r\n unmounted() {\r\n this.audioPipeline.destroy();\r\n },\r\n});\r\n","import { render } from \"./MobilePlayer.vue?vue&type=template&id=d1d850f4&scoped=true\"\nimport script from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=d1d850f4&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-d1d850f4\"\n\nexport default script","\nimport { defineComponent } from \"vue\";\nimport Player from \"./views/Player/index.vue\";\nimport MobilePlayer from \"./components/Player/MobilePlayer.vue\"\n\nexport default defineComponent({\n name: \"App\",\n components: {\n Player,\n MobilePlayer\n },\n computed: {\n isMobile() {\n return document.body.clientWidth < 500 || /Android|webOS|iPhone|iPad|Mac|Macintosh|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n }\n }\n});\n","import { render } from \"./App.vue?vue&type=template&id=2225c018\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=2225c018&lang=css\"\nscript.render = render\n\nexport default script","\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\nimport sections from \"./sections.json\"; // TODO: pull from s3 l8r for updating without code change\r\nexport default defineComponent({\r\n name: \"PressKit\",\r\n copy: sections, // custom option $options.copy\r\n data() {\r\n return {}\r\n },\r\n methods: {\r\n nextSection(i: number) {\r\n const n = i < this.$options.copy.length - 1 ? i + 1 : 0;\r\n const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n (document.getElementById('app') as HTMLElement).scrollTo(0, n * vh / 100 * 88);\r\n //window.scrollTo(0, n * vh);\r\n }\r\n }\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=5bd193d0\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5bd193d0&lang=css\"\nscript.render = render\n\nexport default script","\r\n\r\n","\r\nimport { defineComponent } from \"vue\";\r\nexport default defineComponent({\r\n name: \"404\",\r\n})\r\n","import { render } from \"./404.vue?vue&type=template&id=164ff9e4\"\nimport script from \"./404.vue?vue&type=script&lang=ts\"\nexport * from \"./404.vue?vue&type=script&lang=ts\"\n\nimport \"./404.vue?vue&type=style&index=0&id=164ff9e4&lang=css\"\nscript.render = render\n\nexport default script","import { createWebHistory, createRouter, RouteRecordRaw } from \"vue-router\";\r\nimport Player from \"@/views/Player/index.vue\";\r\nimport PressKit from \"@/views/PressKit/index.vue\";\r\nimport Err404 from \"@/views/Errors/404.vue\";\r\n\r\nconst routes: RouteRecordRaw[] = [\r\n {\r\n path: \"/\",\r\n name: \"Player\",\r\n component: Player\r\n },\r\n {\r\n path: \"/about\",\r\n name: \"About\",\r\n component: PressKit\r\n },\r\n {\r\n path: \"/:catchAll(.*)\",\r\n redirect: \"/404\"\r\n },\r\n {\r\n path: \"/404\",\r\n component: Err404\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes,\r\n});\r\n\r\nexport default router;","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport router from './router'\n\nconst fsapp = createApp(App);\n\n// inject theme object as a quasi-plugin\nfsapp.use({\n install: (app: any, options: any) => {\n app.config.globalProperties.$theme = {\n primaryColor: \"#000036\",\n secondaryColor: \"#ffffc9\",\n secondaryDarkColor: \"#8e8e70\",\n accentColor: \"#f2379a\"\n }\n }\n});\n\nfsapp.use(router);\n\nfsapp.mount(\"#app\");","module.exports = __webpack_public_path__ + \"media/test.a20e1c67.ogg\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5bae02f7&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5bd193d0&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Analyzer.vue?vue&type=style&index=0&id=e96ac2cc&scoped=true&lang=css\""],"sourceRoot":""}