diff options
Diffstat (limited to 'dot-config/spicetify/CustomApps/ncs-visualizer')
3 files changed, 221 insertions, 0 deletions
diff --git a/dot-config/spicetify/CustomApps/ncs-visualizer/index.js b/dot-config/spicetify/CustomApps/ncs-visualizer/index.js new file mode 100644 index 00000000..d2e343af --- /dev/null +++ b/dot-config/spicetify/CustomApps/ncs-visualizer/index.js @@ -0,0 +1,213 @@ +var ncsDvisualizer=(()=>{var e,t,r,o=Object.create,a=Object.defineProperty,u=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,c=Object.getOwnPropertySymbols,i=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable,g=(e,t,r)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,l=(t,r,o,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let e of n(r))d.call(t,e)||e===o||a(t,e,{get:()=>r[e],enumerable:!(i=u(r,e))||i.enumerable});return t},s=(e,t,r)=>(r=null!=e?o(i(e)):{},l(!t&&e&&e.__esModule?r:a(r,"default",{value:e,enumerable:!0}),e)),f=(e={"external-global-plugin:react"(e,t){t.exports=Spicetify.React}},function(){return t||(0,e[n(e)[0]])((t={exports:{}}).exports,t),t.exports}),p={},x=p,v={default:()=>function(){return P.default.createElement(U,null)}};for(r in v)a(x,r,{get:v[r],enumerable:!0});var E=s(f()),R={unavailable_message:"app-module__unavailable_message___HYGlM_ncsDvisualizer"},T=s(f());function h(){return T.default.createElement("svg",{width:"100px",height:"100px",viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"},T.default.createElement("circle",{cx:"50",cy:"50",r:"0",fill:"none",stroke:"currentColor","stroke-width":"2"},T.default.createElement("animate",{attributeName:"r",repeatCount:"indefinite",dur:"1s",values:"0;40",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"0s"}),T.default.createElement("animate",{attributeName:"opacity",repeatCount:"indefinite",dur:"1s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"0s"})),T.default.createElement("circle",{cx:"50",cy:"50",r:"0",fill:"none",stroke:"currentColor","stroke-width":"2"},T.default.createElement("animate",{attributeName:"r",repeatCount:"indefinite",dur:"1s",values:"0;40",keyTimes:"0;1",keySplines:"0 0.2 0.8 1",calcMode:"spline",begin:"-0.5s"}),T.default.createElement("animate",{attributeName:"opacity",repeatCount:"indefinite",dur:"1s",values:"1;0",keyTimes:"0;1",keySplines:"0.2 0 0.8 1",calcMode:"spline",begin:"-0.5s"})))}var y=s(f()),b=s(f());function C(e){const{onInit:o,onResize:i,onRender:a,data:u,isEnabled:t}=e,n=(0,b.useRef)(null),[l,s]=(0,b.useState)(null),f=(0,b.useCallback)(e=>{var t=Math.min(e.clientWidth,e.clientHeight),t=Math.round(t*window.devicePixelRatio);e.width===t&&e.height===t||(e.width=e.height=t)},[]);return(0,b.useEffect)(()=>{if(o){var e,t,r=n.current;if(r)return e=r.getContext("webgl2"),t=o(e),f(r),i(e,t),s(t),()=>s(null)}},[o]),(0,b.useEffect)(()=>{if(t&&l&&a){var e=n.current;if(e){const r=e.getContext("webgl2");let t=0;const o=e=>{l&&(a(r,u,l,e),t=requestAnimationFrame(o))};return t=requestAnimationFrame(o),()=>{t&&cancelAnimationFrame(t)}}}},[a,u,l,t]),(0,b.useEffect)(()=>{if(n.current){const e=new ResizeObserver(()=>{var e=n.current;e&&(f(e),e=e.getContext("webgl2"))&&l&&i(e,l)});return e.observe(n.current),()=>e.disconnect()}},[i,l]),b.default.createElement("canvas",{ref:n,style:((e,t)=>{for(var r in t=t||{})d.call(t,r)&&g(e,r,t[r]);if(c)for(var r of c(t))m.call(t,r)&&g(e,r,t[r]);return e})({width:"100%",height:"100%",objectFit:"contain"},t?{}:{visibility:"hidden"})})}function A(e,t){let r=0,o=e.length;for(;1<o-r;){var i=Math.floor((o+r)/2);e[i].x<=t?r=i:o=i}return r}function S(e){return Math.min(Math.max(Math.pow(10,e/20),0),1)}function L(e,t,r,o,i){return e=(e=(e-t)/(r-t))*(i-o)+o}function D(e,t){return-.5*(e.x-t.x)*(e.y+t.y)}function _(o,e,t){if(0==t)return i=A(r=o,a=e),u=r[i],i>r.length-2?u.y:(r=r[i+1],L(a,u.x,r.x,u.y,r.y));var r,i=e-t/2,a=e+t/2,u=A(o,i),n=A(o,a);let l=0;if(u==n)return r=o[u],u>o.length-2?r.y:(e=o[u+1],(L(i,r.x,e.x,r.y,e.y)+L(a,r.x,e.x,r.y,e.y))/2);{let t=o[u],r=o[u+1];e={x:i,y:L(i,t.x,r.x,t.y,r.y)};l=D(e,r);for(let e=u+1;e<n;e++)t=r,r=o[e+1],l+=D(t,r);t=r,n>o.length-2?l+=t.y*(a-t.x):(r=o[n+1],e={x:a,y:L(a,t.x,r.x,t.y,r.y)},l+=D(t,e))}return l/t}var N=`#version 300 es + +uniform float uNoiseOffset; +uniform float uAmplitude; +uniform int uSeed; + +uniform int uDotCount; +uniform float uDotRadius; +uniform float uDotRadiusPX; + +uniform float uDotSpacing; +uniform float uDotOffset; + +uniform float uSphereRadius; +uniform float uFeather; + +uniform float uNoiseFrequency; +uniform float uNoiseAmplitude; + +in vec2 inPosition; + +out vec2 fragUV; +out float fragDotRadiusPX; + +// https://github.com/Auburn/FastNoiseLite + +const float FREQUENCY = 0.01; + +const float GAIN = 0.5; +const float LACUNARITY = 1.5; +const float FRACTAL_BOUNDING = 1.0 / 1.75; + +const ivec3 PRIMES = ivec3(501125321, 1136930381, 1720413743); + +const float GRADIENTS_3D[] = float[]( + 0., 1., 1., 0., 0.,-1., 1., 0., 0., 1.,-1., 0., 0.,-1.,-1., 0., + 1., 0., 1., 0., -1., 0., 1., 0., 1., 0.,-1., 0., -1., 0.,-1., 0., + 1., 1., 0., 0., -1., 1., 0., 0., 1.,-1., 0., 0., -1.,-1., 0., 0., + 0., 1., 1., 0., 0.,-1., 1., 0., 0., 1.,-1., 0., 0.,-1.,-1., 0., + 1., 0., 1., 0., -1., 0., 1., 0., 1., 0.,-1., 0., -1., 0.,-1., 0., + 1., 1., 0., 0., -1., 1., 0., 0., 1.,-1., 0., 0., -1.,-1., 0., 0., + 0., 1., 1., 0., 0.,-1., 1., 0., 0., 1.,-1., 0., 0.,-1.,-1., 0., + 1., 0., 1., 0., -1., 0., 1., 0., 1., 0.,-1., 0., -1., 0.,-1., 0., + 1., 1., 0., 0., -1., 1., 0., 0., 1.,-1., 0., 0., -1.,-1., 0., 0., + 0., 1., 1., 0., 0.,-1., 1., 0., 0., 1.,-1., 0., 0.,-1.,-1., 0., + 1., 0., 1., 0., -1., 0., 1., 0., 1., 0.,-1., 0., -1., 0.,-1., 0., + 1., 1., 0., 0., -1., 1., 0., 0., 1.,-1., 0., 0., -1.,-1., 0., 0., + 0., 1., 1., 0., 0.,-1., 1., 0., 0., 1.,-1., 0., 0.,-1.,-1., 0., + 1., 0., 1., 0., -1., 0., 1., 0., 1., 0.,-1., 0., -1., 0.,-1., 0., + 1., 1., 0., 0., -1., 1., 0., 0., 1.,-1., 0., 0., -1.,-1., 0., 0., + 1., 1., 0., 0., 0.,-1., 1., 0., -1., 1., 0., 0., 0.,-1.,-1., 0. +); + +float smootherStep(float t) { + return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); +} +vec3 smootherStep(vec3 coord) { + return vec3(smootherStep(coord.x), smootherStep(coord.y), smootherStep(coord.z)); +} + +int hash(int seed, ivec3 primed) { + return (seed ^ primed.x ^ primed.y ^ primed.z) * 0x27d4eb2d; +} + +float gradCoord(int seed, ivec3 primed, vec3 d) { + int hash = hash(seed, primed); + hash ^= hash >> 15; + hash &= 63 << 2; + return d.x * GRADIENTS_3D[hash] + d.y * GRADIENTS_3D[hash | 1] + d.z * GRADIENTS_3D[hash | 2]; +} + +float perlinSingle(int seed, vec3 coord) { + ivec3 coord0 = ivec3(floor(coord)); + vec3 d0 = coord - vec3(coord0); + vec3 d1 = d0 - 1.0; + vec3 s = smootherStep(d0); + coord0 *= PRIMES; + ivec3 coord1 = coord0 + PRIMES; + float xf00 = mix(gradCoord(seed, coord0, d0), gradCoord(seed, ivec3(coord1.x, coord0.yz), vec3(d1.x, d0.yz)), s.x); + float xf10 = mix(gradCoord(seed, ivec3(coord0.x, coord1.y, coord0.z), vec3(d0.x, d1.y, d0.z)), gradCoord(seed, ivec3(coord1.xy, coord0.z), vec3(d1.xy, d0.z)), s.x); + float xf01 = mix(gradCoord(seed, ivec3(coord0.xy, coord1.z), vec3(d0.xy, d1.z)), gradCoord(seed, ivec3(coord1.x, coord0.y, coord1.z), vec3(d1.x, d0.y, d1.z)), s.x); + float xf11 = mix(gradCoord(seed, ivec3(coord0.x, coord1.yz), vec3(d0.x, d1.yz)), gradCoord(seed, coord1, d1), s.x); + float yf0 = mix(xf00, xf10, s.y); + float yf1 = mix(xf01, xf11, s.y); + return mix(yf0, yf1, s.z) * 0.964921414852142333984375f; +} + +float fractalNoise(vec3 coord) { + return perlinSingle(uSeed, coord) * FRACTAL_BOUNDING + + perlinSingle(uSeed + 1, coord * LACUNARITY) * FRACTAL_BOUNDING * GAIN + + perlinSingle(uSeed + 2, coord * LACUNARITY * LACUNARITY) * FRACTAL_BOUNDING * GAIN * GAIN; +} + +void main() { + vec2 dotPos = vec2(float(gl_InstanceID % uDotCount), float(gl_InstanceID / uDotCount)); + float noise = fractalNoise(vec3(dotPos * uNoiseFrequency, uNoiseOffset)) * uNoiseAmplitude; + + vec3 dotCenter = vec3(dotPos * uDotSpacing + uDotOffset + noise, (noise + 0.5 * uNoiseAmplitude) * uAmplitude * 0.4); + + float distanceFromCenter = length(dotCenter); + dotCenter /= distanceFromCenter; + distanceFromCenter = min(uSphereRadius, distanceFromCenter); + dotCenter *= distanceFromCenter; + + float featherRadius = uSphereRadius - uFeather; + float featherStrength = 1.0 - clamp((distanceFromCenter - featherRadius) / uFeather, 0.0, 1.0); + dotCenter *= featherStrength * (uSphereRadius / distanceFromCenter - 1.0) + 1.0; + + dotCenter.y *= -1.0; + + gl_Position = vec4(dotCenter.xy + inPosition * uDotRadius * (1.0 + 1.0 / uDotRadiusPX), 0.0, 1.0); + fragUV = inPosition; + fragDotRadiusPX = uDotRadiusPX + 1.0; +} +`,B=`#version 300 es +precision highp float; + +in vec2 fragUV; +in float fragDotRadiusPX; +out float outColor; + +void main() { + float t = clamp((1.0 - length(fragUV)) * fragDotRadiusPX, 0.0, 1.0); + outColor = t; +} +`,I=`#version 300 es + +uniform float uBlurRadius; +uniform vec2 uBlurDirection; + +in vec2 inPosition; + +out vec2 fragUV; +flat out vec2 fragBlurDirection; +flat out int fragSupport; +flat out vec3 fragGaussCoefficients; + +float calculateGaussianTotal(int support, vec3 fragGaussCoefficients) { + float total = fragGaussCoefficients.x; + for (int i = 1; i < support; i++) { + fragGaussCoefficients.xy *= fragGaussCoefficients.yz; + total += 2.0 * fragGaussCoefficients.x; + } + return total; +} + +void main() { + fragSupport = int(ceil(1.5 * uBlurRadius)) * 2; + fragGaussCoefficients = vec3(1.0 / (sqrt(2.0 * 3.14159265) * uBlurRadius), exp(-0.5 / (uBlurRadius * uBlurRadius)), 0.0); + fragGaussCoefficients.z = fragGaussCoefficients.y * fragGaussCoefficients.y; + fragGaussCoefficients.x /= calculateGaussianTotal(fragSupport, fragGaussCoefficients); + + gl_Position = vec4(inPosition, 0.0, 1.0); + fragUV = (inPosition + 1.0) / 2.0; + fragBlurDirection = uBlurDirection; +} +`,O=`#version 300 es +precision highp float; + +uniform sampler2D uInputTexture; + +in vec2 fragUV; +flat in vec2 fragBlurDirection; +flat in int fragSupport; +flat in vec3 fragGaussCoefficients; + +out float outColor; + +void main() { + vec3 gaussCoefficients = fragGaussCoefficients; + outColor = gaussCoefficients.x * texture(uInputTexture, fragUV).r; + + for (int i = 1; i < fragSupport; i += 2) { + gaussCoefficients.xy *= gaussCoefficients.yz; + float coefficientSum = gaussCoefficients.x; + gaussCoefficients.xy *= gaussCoefficients.yz; + coefficientSum += gaussCoefficients.x; + + float pixelRatio = gaussCoefficients.x / coefficientSum; + vec2 offset = (float(i) + pixelRatio) * fragBlurDirection; + + outColor += coefficientSum * (texture(uInputTexture, fragUV + offset).r + texture(uInputTexture, fragUV - offset).r); + } +} +`,z=`#version 300 es + +uniform vec3 uOutputColor; +in vec2 inPosition; + +out vec2 fragUV; +out vec3 fragOutputColor; + +void main() { + gl_Position = vec4(inPosition, 0.0, 1.0); + fragUV = (inPosition + 1.0) / 2.0; + fragOutputColor = uOutputColor; +} +`,G=`#version 300 es +precision highp float; + +uniform sampler2D uBlurredTexture; +uniform sampler2D uOriginalTexture; + +in vec2 fragUV; +in vec3 fragOutputColor; + +out vec4 outColor; + +void main() { + float value = max(texture(uBlurredTexture, fragUV).r, texture(uOriginalTexture, fragUV).r); + outColor = vec4(fragOutputColor * value, value); +} +`;function F(P){var e=(0,y.useMemo)(()=>{var t;if(!P.audioAnalysis)return[{x:0,y:0}];var e=P.audioAnalysis.segments,r=e.flatMap(e=>e.loudness_max_time?[{x:e.start,y:S(e.loudness_start)},{x:e.start+e.loudness_max_time,y:S(e.loudness_max)}]:[{x:e.start,y:S(e.loudness_start)}]);if(e.length){r[0].accumulatedIntegral=0;for(let e=1;e<r.length;e++){var o=r[e-1],i=r[e];i.accumulatedIntegral=(null!=(t=o.accumulatedIntegral)?t:0)+D(o,i)}e=e[e.length-1];r.push({x:e.start+e.duration,y:S(e.loudness_end)})}return r},[P.audioAnalysis]),t=null!=(t=null==(t=P.audioAnalysis)?void 0:t.meta.timestamp)?t:0,r=(0,y.useCallback)(i=>{{var e,t,r,o,a,u,n,l,s,f,c,d,m,g,p,x,v,E,R,T,h,y,b,C,A,S,L,D,_,F,U;if(i)return T=(e,t,r)=>{var o=i.createProgram();return i.attachShader(o,e),i.attachShader(o,t),i.linkProgram(o),i.getProgramParameter(o,i.LINK_STATUS)||i.isContextLost()?o:(e=`Error: Failed to link ${r} shader`,t=i.getProgramInfoLog(o),console.error(e,t),P.onError(e),null)},_=e=>{var t=i.createFramebuffer(),r=(i.bindFramebuffer(i.FRAMEBUFFER,t),i.createTexture());return i.bindTexture(i.TEXTURE_2D,r),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,e),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,r,0),{framebuffer:t,texture:r}},(e=(y=(e,t,r)=>{e=i.createShader(e);return i.shaderSource(e,t),i.compileShader(e),i.getShaderParameter(e,i.COMPILE_STATUS)||i.isContextLost()?e:(t=`Error: Failed to compile ${r} shader`,r=i.getShaderInfoLog(e),console.error(t,r),P.onError(t),null)})(i.VERTEX_SHADER,N,"particle vertex"))&&(t=y(i.FRAGMENT_SHADER,B,"particle fragment"))&&(e=T(e,t,"particle"))&&(t=i.getAttribLocation(e,"inPosition"),r=i.getUniformLocation(e,"uNoiseOffset"),o=i.getUniformLocation(e,"uAmplitude"),a=i.getUniformLocation(e,"uSeed"),u=i.getUniformLocation(e,"uDotCount"),n=i.getUniformLocation(e,"uDotRadius"),l=i.getUniformLocation(e,"uDotRadiusPX"),s=i.getUniformLocation(e,"uDotSpacing"),f=i.getUniformLocation(e,"uDotOffset"),c=i.getUniformLocation(e,"uSphereRadius"),d=i.getUniformLocation(e,"uFeather"),m=i.getUniformLocation(e,"uNoiseFrequency"),g=i.getUniformLocation(e,"uNoiseAmplitude"),p=y(i.VERTEX_SHADER,I,"blur vertex"))&&(x=y(i.FRAGMENT_SHADER,O,"blur fragment"))&&(p=T(p,x,"blur"))&&(x=i.getAttribLocation(p,"inPosition"),v=i.getUniformLocation(p,"uBlurRadius"),E=i.getUniformLocation(p,"uBlurDirection"),R=i.getUniformLocation(p,"uInputTexture"),h=y(i.VERTEX_SHADER,z,"finalize vertex"))&&(y=y(i.FRAGMENT_SHADER,G,"finalize fragment"))&&(T=T(h,y,"finalize"))?(h=i.getAttribLocation(T,"inPosition"),y=i.getUniformLocation(T,"uOutputColor"),b=i.getUniformLocation(T,"uBlurredTexture"),C=i.getUniformLocation(T,"uOriginalTexture"),{framebuffer:A,texture:S}=_(i.LINEAR),{framebuffer:L,texture:D}=_(i.LINEAR),{framebuffer:_,texture:F}=_(i.NEAREST),U=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,U),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),i.STATIC_DRAW),i.enable(i.BLEND),i.blendEquation(i.MAX),{isError:!1,particleShader:e,blurShader:p,finalizeShader:T,viewportSize:0,inPositionLoc:t,inPositionLocBlur:x,inPositionLocFinalize:h,uNoiseOffsetLoc:r,uAmplitudeLoc:o,uSeedLoc:a,uDotCountLoc:u,uDotRadiusLoc:n,uDotRadiusPXLoc:l,uDotSpacingLoc:s,uDotOffsetLoc:f,uSphereRadiusLoc:c,uFeatherLoc:d,uNoiseFrequencyLoc:m,uNoiseAmplitudeLoc:g,uBlurRadiusLoc:v,uBlurDirectionLoc:E,uBlurInputTextureLoc:R,uOutputColorLoc:y,uBlurredTextureLoc:b,uOriginalTextureLoc:C,quadBuffer:U,particleFramebuffer:A,particleTexture:S,blurXFramebuffer:L,blurXTexture:D,blurYFramebuffer:_,blurYTexture:F}):{isError:!0}}return P.onError("Error: WebGL2 is not supported"),{isError:!0}},[]),o=(0,y.useCallback)((e,t)=>{!t.isError&&e&&(t.viewportSize=Math.min(e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),e.bindTexture(e.TEXTURE_2D,t.particleTexture),e.texImage2D(e.TEXTURE_2D,0,e.R8,t.viewportSize,t.viewportSize,0,e.RED,e.UNSIGNED_BYTE,null),e.bindTexture(e.TEXTURE_2D,t.blurXTexture),e.texImage2D(e.TEXTURE_2D,0,e.R8,t.viewportSize,t.viewportSize,0,e.RED,e.UNSIGNED_BYTE,null),e.bindTexture(e.TEXTURE_2D,t.blurYTexture),e.texImage2D(e.TEXTURE_2D,0,e.R8,t.viewportSize,t.viewportSize,0,e.RED,e.UNSIGNED_BYTE,null))},[]),i=(0,y.useCallback)((e,t,r)=>{var o,i,a,u,n,l;!r.isError&&e&&(e.bindFramebuffer(e.FRAMEBUFFER,r.particleFramebuffer),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),o=75*(.5*(l=Spicetify.Player.getProgress()/1e3)+(n=t.amplitudeCurve,a=A(n,o=l),u=n[a],a+1>=n.length?(null!=(i=u.accumulatedIntegral)?i:0)+u.y*(o-u.x):(i=n[a+1],n={x:o,y:L(o,u.x,i.x,u.y,i.y)},(null!=(a=u.accumulatedIntegral)?a:0)+D(u,n))))*.01,i=_(t.amplitudeCurve,l,.15),a=t.seed,u=.9/322*.5*r.viewportSize,n=L(i,0,1,.675,.9),l=Math.pow(i+3,2)*(45/1568),e.useProgram(r.particleShader),e.uniform1f(r.uNoiseOffsetLoc,o),e.uniform1f(r.uAmplitudeLoc,i),e.uniform1i(r.uSeedLoc,a),e.uniform1i(r.uDotCountLoc,322),e.uniform1f(r.uDotRadiusLoc,.9/322),e.uniform1f(r.uDotRadiusPXLoc,u),e.uniform1f(r.uDotSpacingLoc,.9/321),e.uniform1f(r.uDotOffsetLoc,-.45),e.uniform1f(r.uSphereRadiusLoc,n),e.uniform1f(r.uFeatherLoc,l),e.uniform1f(r.uNoiseFrequencyLoc,4/322),e.uniform1f(r.uNoiseAmplitudeLoc,.32*.9),e.bindBuffer(e.ARRAY_BUFFER,r.quadBuffer),e.enableVertexAttribArray(r.inPositionLoc),e.vertexAttribPointer(r.inPositionLoc,2,e.FLOAT,!1,0,0),e.drawArraysInstanced(e.TRIANGLE_FAN,0,4,103684),e.bindTexture(e.TEXTURE_2D,r.particleTexture),e.bindFramebuffer(e.FRAMEBUFFER,r.blurXFramebuffer),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.useProgram(r.blurShader),e.uniform1f(r.uBlurRadiusLoc,.01*r.viewportSize),e.uniform2f(r.uBlurDirectionLoc,1/r.viewportSize,0),e.uniform1i(r.uBlurInputTextureLoc,0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r.particleTexture),e.bindBuffer(e.ARRAY_BUFFER,r.quadBuffer),e.enableVertexAttribArray(r.inPositionLocBlur),e.vertexAttribPointer(r.inPositionLocBlur,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_FAN,0,4),e.bindFramebuffer(e.FRAMEBUFFER,r.blurYFramebuffer),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.uniform2f(r.uBlurDirectionLoc,0,1/r.viewportSize),e.bindTexture(e.TEXTURE_2D,r.blurXTexture),e.drawArrays(e.TRIANGLE_FAN,0,4),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.useProgram(r.finalizeShader),e.uniform3f(r.uOutputColorLoc,t.themeColor.rgb.r/255,t.themeColor.rgb.g/255,t.themeColor.rgb.b/255),e.uniform1i(r.uBlurredTextureLoc,0),e.uniform1i(r.uOriginalTextureLoc,1),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r.blurYTexture),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,r.particleTexture),e.bindBuffer(e.ARRAY_BUFFER,r.quadBuffer),e.enableVertexAttribArray(r.inPositionLocFinalize),e.vertexAttribPointer(r.inPositionLocFinalize,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_FAN,0,4))},[]);return y.default.createElement(C,{isEnabled:P.isEnabled,data:{themeColor:P.themeColor,seed:t,amplitudeCurve:e},onInit:r,onResize:o,onRender:i})}function U(){const[e,r]=(0,E.useState)(0),[t,o]=(0,E.useState)(""),[i,a]=(0,E.useState)({themeColor:Spicetify.Color.fromHex("#535353")}),u=((0,E.useEffect)(()=>{const t=async e=>{var t,e=null==e?void 0:e.item;e?(t=Spicetify.URI.fromString(e.uri)).type!==Spicetify.URI.Type.TRACK?r(3):(r(0),t=`https://spclient.wg.spotify.com/audio-attributes/v1/audio-analysis/${t.id}?format=json`,[t,e]=await Promise.all([Spicetify.CosmosAsync.get(t).catch(console.error),Spicetify.extractColorPreset(e.metadata.image_url).then(e=>e[0].colorLight)]),t?t.error?u(`Error ${t.error.status}: `+t.error.message):(a({audioAnalysis:t,themeColor:e}),r(1)):r(4)):r(2)},e=e=>{null!=e&&e.data&&t(e.data)};return Spicetify.Player.addEventListener("songchange",e),t(Spicetify.Player.data),()=>Spicetify.Player.removeEventListener("songchange",e)},[]),(0,E.useCallback)(e=>{o(e),r(5)},[]));return E.default.createElement("div",{className:"ncs-visualizer-container"},E.default.createElement(F,{isEnabled:1==e,onError:u,audioAnalysis:i.audioAnalysis,themeColor:i.themeColor}),0==e?E.default.createElement(h,null):2==e?E.default.createElement("div",{className:R.unavailable_message},"Start playing a song to see the visualization!"):3==e?E.default.createElement("div",{className:R.unavailable_message},"Error: The type of track you're listening to is currently not supported"):4==e?E.default.createElement("div",{className:R.unavailable_message},"Error: The audio analysis could not be loaded, please check your internet connection"):5==e?E.default.createElement("div",{className:R.unavailable_message},t):null)}var P=s(f());return s=p,l(a({},"__esModule",{value:!0}),s)})();const render=()=>ncsDvisualizer.default();
\ No newline at end of file diff --git a/dot-config/spicetify/CustomApps/ncs-visualizer/manifest.json b/dot-config/spicetify/CustomApps/ncs-visualizer/manifest.json new file mode 100644 index 00000000..0d7aa67e --- /dev/null +++ b/dot-config/spicetify/CustomApps/ncs-visualizer/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "NCS Visualizer", + "icon": "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\" stroke-width=\"0\">\r\n\t<path d=\"M 127.99805,1.3897628e-6C 57.387077,0.00212929 9.4410044e-7,57.390462 9.4410046e-7,128.00189 9.4410046e-7,198.57009 57.317605,255.91973 127.86914,255.99206A 127.99999,127.99993 0 0 0 128,256a 127.99999,127.99993 0 0 0 0.12695,-0.008c 70.52763,-0.068 127.82253,-57.37514 127.86719,-127.90814a 127.99999,127.99993 0 0 0 0.006,-0.084 127.99999,127.99993 0 0 0 -0.15234,-5.91796c -0.0252,-0.55238 -0.0615,-1.1018 -0.0937,-1.65235a 127.99999,127.99993 0 0 0 -0.33008,-4.33203c -0.055,-0.59413 -0.10486,-1.18948 -0.16797,-1.78124a 127.99999,127.99993 0 0 0 -0.68555,-5.39453 127.99999,127.99993 0 0 0 -0.002,-0.0136c -0.11266,-0.75096 -0.25518,-1.49161 -0.38086,-2.23828a 127.99999,127.99993 0 0 0 -0.57422,-3.20312c -0.18638,-0.95714 -0.38807,-1.90799 -0.5957,-2.85742a 127.99999,127.99993 0 0 0 -0.58594,-2.539064c -0.23944,-0.996438 -0.47564,-1.993201 -0.73828,-2.980466a 127.99999,127.99993 0 0 0 -0.64649,-2.267579c -0.5002,-1.748662 -1.0335,-3.481869 -1.60546,-5.199214a 127.99999,127.99993 0 0 0 -0.84571,-2.496093c -0.30806,-0.86471 -0.63099,-1.722062 -0.95703,-2.578124a 127.99999,127.99993 0 0 0 -1.13686,-2.882882c -0.3014,-0.736883 -0.59937,-1.475112 -0.91406,-2.205078a 127.99999,127.99993 0 0 0 -2.19726,-4.853512 127.99999,127.99993 0 0 0 -0.0293,-0.06444c -0.001,-0.0026 -0.003,-0.0053 -0.004,-0.0079a 127.99999,127.99993 0 0 0 -2.67969,-5.228512c -0.14074,-0.26041 -0.28524,-0.518015 -0.42773,-0.777343a 127.99999,127.99993 0 0 0 -2.68555,-4.666013c -0.0685,-0.113197 -0.13618,-0.226885 -0.20507,-0.339855A 127.99999,127.99993 0 0 0 194.50781,18.660148c -0.13839,-0.08445 -0.27728,-0.168011 -0.41601,-0.251954a 127.99999,127.99993 0 0 0 -4.49805,-2.587888c -0.32527,-0.179218 -0.64763,-0.362596 -0.97461,-0.539062a 127.99999,127.99993 0 0 0 -5.08203,-2.605467 127.99999,127.99993 0 0 0 -0.0176,-0.0078c -0.19965,-0.09644 -0.40525,-0.181912 -0.60547,-0.277345A 127.99999,127.99993 0 0 0 178.61326,10.44139C 177.80101,10.090578 176.979,9.7601162 176.15818,9.425765a 127.99999,127.99993 0 0 0 -2.50976,-0.9921871c -0.9712,-0.3717692 -1.94539,-0.7353902 -2.92774,-1.0839838A 127.99999,127.99993 0 0 0 168.79686,6.697251c -2.11149,-0.7114666 -4.24541,-1.3701106 -6.4043,-1.9726554A 127.99999,127.99993 0 0 0 160.99414,4.3281241C 159.9101,4.0389329 158.8158,3.7768165 157.7207,3.5156246A 127.99999,127.99993 0 0 0 155.57813,3.0214843C 154.5151,2.7873241 153.44965,2.5610086 152.37695,2.3535158A 127.99999,127.99993 0 0 0 149.85156,1.9023442C 148.64344,1.6938179 147.43424,1.4907232 146.21484,1.316407A 127.99999,127.99993 0 0 0 141.8164,0.75586038c -0.71606,-0.0771159 -1.43672,-0.13595143 -2.15624,-0.20117168a 127.99999,127.99993 0 0 0 -3.88477,-0.29687487c -0.66155,-0.0397984 -1.32213,-0.0816497 -1.98633,-0.11132808A 127.99999,127.99993 0 0 0 128.00781,1.3897628e-6a 127.99999,127.99993 0 0 0 -0.008,0 127.99999,127.99993 0 0 0 -0.002,0zM 116.48437,14.001947c 0.81247,0.40314 1.57745,0.814971 2.41602,1.212891 2.14235,1.016591 4.37073,2.016146 6.6875,2.994139 2.31677,0.977992 4.72096,1.936151 7.2168,2.869139 2.49583,0.932988 5.08412,1.841078 7.76367,2.722655 2.67955,0.881577 5.45045,1.736785 8.31836,2.560546 5.7178,1.642345 10.95849,3.259558 15.76172,4.855466 4.80323,1.595908 9.16997,3.169491 13.14258,4.722654 3.97261,1.553162 7.55139,3.085501 10.77734,4.599606 3.22595,1.514112 6.09886,3.00953 8.66211,4.488281 2.56324,1.478743 4.81628,2.94159 6.80078,4.388668 1.9845,1.447082 3.69974,2.879726 5.18945,4.298825 1.48971,1.419106 2.75316,2.823933 3.83204,4.218748 1.07886,1.394823 1.97456,2.778118 2.72656,4.152342 0.75198,1.374232 1.36007,2.740326 1.86914,4.097656 0.50907,1.357326 0.91943,2.706654 1.26953,4.050778 0.7002,2.688245 1.16631,5.354141 1.73438,8.011714 0.28403,1.328791 0.59377,2.655763 0.97069,3.982422 0.37694,1.326655 0.82122,2.652248 1.37501,3.980464 0.55378,1.328224 1.21665,2.658708 2.03124,3.992188 0.81461,1.333474 1.78009,2.671248 2.93946,4.013668 3.91087,4.528374 7.34481,8.711803 10.33984,12.591793 1.06895,1.3848 2.01575,2.68678 2.97461,3.99609 0.84175,5.60978 1.28516,11.35197 1.28516,17.19921 0,16.2532 -3.39133,31.69615 -9.47266,45.69138 -0.64397,0.62637 -1.28796,1.24956 -1.93359,1.9043 -1.82156,1.84729 -3.64236,3.81533 -5.42383,5.9414 -0.89073,1.06304 -1.77094,2.16528 -2.63672,3.3125 -0.86578,1.14723 -1.71601,2.33901 -2.54687,3.58008 -0.83086,1.24106 -1.64175,2.53238 -2.42774,3.87695 -0.78598,1.34457 -1.54813,2.74149 -2.2793,4.19922 -0.73115,1.45773 -1.43128,2.97609 -2.09765,4.55663 -0.66637,1.58055 -1.299,3.22448 -1.89062,4.9375 -0.0169,0.0489 -0.032,0.0899 -0.0488,0.13867 -13.00028,13.94014 -29.43796,24.61498 -47.98243,30.70116 -0.68364,-0.27719 -1.29423,-0.55467 -2.00586,-0.82813 -2.24621,-0.86315 -4.63476,-1.7006 -7.18945,-2.46093 -2.55468,-0.76034 -5.27435,-1.44256 -8.17968,-1.99805 -1.45267,-0.27776 -2.95177,-0.52502 -4.5,-0.73242 -1.54824,-0.20739 -3.14585,-0.37569 -4.79493,-0.5 -1.64907,-0.12431 -3.35028,-0.20394 -5.10546,-0.23244 -1.7552,-0.0283 -3.56507,-0.006 -5.43165,0.0742 -1.86657,0.0801 -3.7902,0.21842 -5.77343,0.41992 -1.98324,0.20149 -4.0257,0.46713 -6.13086,0.80273 -2.10517,0.33562 -4.11257,0.61868 -6.02735,0.85157 -1.91478,0.23289 -3.73778,0.41564 -5.47265,0.55078 -1.73487,0.13515 -3.38183,0.22129 -4.947269,0.26366 -1.565435,0.0424 -3.048605,0.0396 -4.455077,-0.006 -1.406479,-0.0454 -2.736158,-0.13349 -3.99414,-0.26173 -1.257989,-0.12824 -2.444485,-0.29586 -3.564454,-0.50196 -1.119972,-0.20606 -2.173587,-0.44958 -3.166015,-0.72851 -0.992432,-0.27893 -1.92347,-0.59459 -2.798827,-0.94141 -0.875365,-0.34681 -1.694125,-0.72504 -2.462892,-1.13476 -0.768767,-0.40973 -1.487512,-0.85071 -2.160158,-1.31836 -0.672643,-0.46765 -1.29972,-0.96183 -1.886718,-1.48242 -0.586998,-0.52061 -1.134659,-1.06619 -1.646483,-1.63477 -1.023651,-1.13715 -1.907562,-2.36684 -2.693359,-3.66601 -0.785798,-1.29918 -1.473737,-2.66846 -2.105469,-4.08984 -0.631733,-1.42139 -1.206119,-2.89466 -1.76758,-4.39844 -0.56146,-1.50377 -1.108618,-3.03764 -1.683594,-4.58398 -0.574972,-1.54635 -1.17733,-3.1052 -1.84961,-4.6543 -0.672272,-1.54909 -1.414205,-3.08953 -2.267577,-4.60156 -0.853372,-1.51202 -1.819249,-2.99454 -2.937498,-4.42968 -0.559128,-0.71757 -1.155817,-1.42435 -1.796878,-2.11524 -0.641057,-0.69088 -1.327083,-1.36617 -2.060545,-2.02538 -0.733463,-0.65922 -1.51522,-1.30126 -2.351562,-1.92383 -0.836341,-0.62258 -1.726091,-1.22569 -2.675781,-1.80664 -0.949693,-0.58096 -1.959688,-1.13947 -3.033203,-1.67383 -1.073522,-0.53436 -2.21015,-1.04456 -3.41797,-1.52734 -2.039977,-0.81542 -3.992233,-1.65301 -5.859375,-2.51172 -1.867142,-0.85871 -3.64925,-1.73792 -5.349609,-2.63672 -1.70036,-0.8988 -3.319745,-1.81822 -4.859375,-2.7539 -0.81834,-0.49733 -1.555997,-1.01272 -2.330079,-1.51953 -6.201716,-14.10958 -9.667968,-29.70149 -9.667968,-46.12303 0,-16.57379 3.532928,-32.302511 9.84375,-46.515599 1.399743,-1.439103 2.867685,-2.923403 4.46875,-4.498044 4.619437,-4.543194 10.001358,-9.623942 15.71875,-15.078115 2.858695,-2.727094 5.802421,-5.547633 8.77539,-8.441404 2.972969,-2.893772 5.976594,-5.861107 8.957031,-8.880854 2.980437,-3.01975 5.937263,-6.092248 8.818359,-9.197262 2.881096,-3.105017 5.686383,-6.241044 8.361328,-9.39062 0.595964,-0.701519 1.159646,-1.404462 1.742159,-2.107194 11.258214,-5.178177 23.491868,-8.609258 36.371088,-9.890621z\" />\r\n</svg>", + "active-icon": "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\" stroke-width=\"0\">\r\n\t<path d=\"M 127.99805 0C 125.79146 6.6496985e-05 123.59738 0.055214536 121.41797 0.16601562C 119.23856 0.27681672 117.07337 0.4432692 114.92383 0.66210938C 112.77429 0.88094956 110.64041 1.1523787 108.52344 1.4765625C 106.40646 1.8007463 104.30632 2.1786369 102.22461 2.6054688C 100.1429 3.0323005 98.078909 3.508372 96.035156 4.0351562C 93.991403 4.5619406 91.967944 5.1376774 89.964844 5.7617188C 87.961744 6.3857602 85.979283 7.0587409 84.019531 7.7773438C 82.05978 8.4959467 80.122692 9.2617962 78.208984 10.072266C 76.295277 10.882734 74.405984 11.737079 72.541016 12.636719C 70.676047 13.536358 68.835018 14.480682 67.021484 15.466797C 65.207951 16.452911 63.421513 17.480887 61.662109 18.550781C 59.902707 19.620675 58.171327 20.731835 56.46875 21.882812C 54.766173 23.033791 53.092274 24.225711 51.449219 25.455078C 49.806163 26.684445 48.19412 27.950801 46.613281 29.255859C 45.032443 30.560919 43.482722 31.903193 41.966797 33.28125C 40.45087 34.659307 38.96785 36.075079 37.519531 37.523438C 36.071214 38.971797 34.657311 40.452785 33.279297 41.96875C 31.901282 43.484715 30.558922 45.034359 29.253906 46.615234C 27.948892 48.196111 26.682446 49.810034 25.453125 51.453125C 24.223804 53.096216 23.03179 54.768092 21.880859 56.470703C 20.72993 58.173314 19.618673 59.906579 18.548828 61.666016C 17.478983 63.425451 16.450908 65.211825 15.464844 67.025391C 14.47878 68.838955 13.534353 70.677971 12.634766 72.542969C 11.735178 74.407967 10.880728 76.299155 10.070312 78.212891C 9.2598967 80.126626 8.4939384 82.063659 7.7753906 84.023438C 7.0568429 85.983217 6.3857033 87.965625 5.7617188 89.96875C 5.1377343 91.971875 4.5618822 93.995287 4.0351562 96.039062C 3.5084304 98.082839 3.0302874 100.14678 2.6035156 102.22852C 2.1767439 104.31024 1.8006846 106.41036 1.4765625 108.52734C 1.1524404 110.64434 0.88088629 112.77818 0.66210938 114.92773C 0.44333247 117.07729 0.27675184 119.24245 0.16601562 121.42188C 0.055279416 123.60129 0 125.79536 0 128.00195C 0 130.2072 0.055412676 132.40004 0.16601562 134.57812C 0.27661858 136.75622 0.44164101 138.92012 0.66015625 141.06836C 0.87867149 143.2166 1.1508725 145.34915 1.4746094 147.46484C 1.7983463 149.58054 2.1752946 151.6793 2.6015625 153.75977C 3.0278304 155.84023 3.5031887 157.90276 4.0292969 159.94531C 4.555405 161.98786 5.1306485 164.00977 5.7539062 166.01172C 6.3771641 168.01366 7.0498613 169.99449 7.7675781 171.95312C 8.485295 173.91177 9.2491084 175.84906 10.058594 177.76172C 10.868079 179.67438 11.722531 181.56376 12.621094 183.42773C 13.519656 185.29172 14.462316 187.12878 15.447266 188.94141C 16.432215 190.75402 17.458697 192.54221 18.527344 194.30078C 19.59599 196.05935 20.705817 197.78842 21.855469 199.49023C 23.005121 201.19206 24.195861 202.86542 25.423828 204.50781C 26.651795 206.15021 27.917112 207.76347 29.220703 209.34375C 30.524295 210.92403 31.865663 212.47086 33.242188 213.98633C 34.618713 215.50179 36.031747 216.98564 37.478516 218.43359C 38.925283 219.88156 40.405601 221.29411 41.919922 222.67188C 43.434242 224.04965 44.981364 225.39236 46.560547 226.69727C 48.139729 228.00216 49.751225 229.26871 51.392578 230.49805C 53.033931 231.72738 54.705417 232.91923 56.40625 234.07031C 58.107083 235.22139 59.83808 236.33221 61.595703 237.40234C 63.353326 238.47248 65.137496 239.50178 66.949219 240.48828C 68.760941 241.47478 70.599759 242.41818 72.462891 243.31836C 74.326022 244.21854 76.213151 245.07555 78.125 245.88672C 80.036849 246.69788 81.973765 247.46413 83.931641 248.18359C 85.889517 248.90306 87.869881 249.5761 89.871094 250.20117C 91.872306 250.82625 93.893689 251.40365 95.935547 251.93164C 97.977405 252.45964 100.03933 252.93701 102.11914 253.36523C 104.19896 253.79346 106.29703 254.17228 108.41211 254.49805C 110.52719 254.82382 112.65899 255.09774 114.80664 255.31836C 116.95429 255.53898 119.11738 255.70557 121.29492 255.81836C 123.47246 255.93114 125.66441 255.98993 127.86914 255.99219A 127.9999 127.99993 0 0 0 128 256A 127.9999 127.99993 0 0 0 128.12695 255.99219C 130.33094 255.99019 132.52242 255.93089 134.69922 255.81836C 136.87601 255.70578 139.03863 255.5387 141.18555 255.31836C 143.33246 255.09801 145.46378 254.82542 147.57812 254.5C 149.69248 254.17458 151.79003 253.79696 153.86914 253.36914C 155.94825 252.94132 158.00765 252.46307 160.04883 251.93555C 162.09 251.40802 164.11273 250.83157 166.11328 250.20703C 168.11384 249.58249 170.09353 248.91028 172.05078 248.19141C 174.00803 247.47253 175.94226 246.70701 177.85352 245.89648C 179.76476 245.08597 181.65306 244.22956 183.51562 243.33008C 185.3782 242.43059 187.21419 241.48771 189.02539 240.50195C 190.83659 239.51619 192.62176 238.48732 194.37891 237.41797C 196.13604 236.34862 197.866 235.23814 199.56641 234.08789C 201.2668 232.93764 202.9391 231.748 204.58008 230.51953C 206.22106 229.29107 207.83129 228.0247 209.41016 226.7207C 210.98901 225.41671 212.53672 224.07606 214.05078 222.69922C 215.56485 221.32238 217.04561 219.90988 218.49219 218.46289C 219.93876 217.0159 221.35016 215.53399 222.72656 214.01953C 224.10297 212.50507 225.4445 210.95814 226.74805 209.37891C 228.05159 207.79966 229.31693 206.18822 230.54492 204.54688C 231.77292 202.90554 232.96352 201.23396 234.11328 199.5332C 235.26304 197.83245 236.37257 196.10318 237.44141 194.3457C 238.51025 192.58822 239.5382 190.80175 240.52344 188.99023C 241.50867 187.17873 242.45067 185.34138 243.34961 183.47852C 244.24855 181.61565 245.1041 179.72793 245.91406 177.81641C 246.72402 175.90487 247.48874 173.96923 248.20703 172.01172C 248.92532 170.0542 249.59677 168.07503 250.2207 166.07422C 250.84464 164.07341 251.42037 162.05117 251.94727 160.00977C 252.47416 157.96835 252.95174 155.90746 253.37891 153.82812C 253.80608 151.7488 254.18306 149.65168 254.50781 147.53711C 254.83257 145.42254 255.10652 143.28969 255.32617 141.14258C 255.54583 138.99546 255.71235 136.83323 255.82422 134.65625C 255.93609 132.47927 255.99275 130.28814 255.99414 128.08398A 127.9999 127.99993 0 0 0 256 128A 127.9999 127.99993 0 0 0 255.84766 122.08203C 255.82236 121.52965 255.78621 120.98024 255.75391 120.42969A 127.9999 127.99993 0 0 0 255.42383 116.09766C 255.36883 115.50353 255.31898 114.90817 255.25586 114.31641A 127.9999 127.99993 0 0 0 254.57031 108.92188A 127.9999 127.99993 0 0 0 254.56836 108.9082C 254.45569 108.15724 254.31317 107.41659 254.1875 106.66992A 127.9999 127.99993 0 0 0 253.61328 103.4668C 253.4269 102.50966 253.22521 101.55879 253.01758 100.60938A 127.9999 127.99993 0 0 0 252.43164 98.070312C 252.1922 97.073876 251.956 96.077107 251.69336 95.089844A 127.9999 127.99993 0 0 0 251.04688 92.822266C 250.54669 91.07361 250.01337 89.340384 249.44141 87.623047A 127.9999 127.99993 0 0 0 248.5957 85.126953C 248.28763 84.262245 247.96471 83.404888 247.63867 82.548828A 127.9999 127.99993 0 0 0 246.50195 79.666016C 246.20053 78.929134 245.90258 78.190903 245.58789 77.460938A 127.9999 127.99993 0 0 0 243.39062 72.607422A 127.9999 127.99993 0 0 0 243.36133 72.542969C 243.36033 72.540369 243.35842 72.537756 243.35742 72.535156A 127.9999 127.99993 0 0 0 240.67773 67.306641C 240.53698 67.046232 240.39249 66.788625 240.25 66.529297A 127.9999 127.99993 0 0 0 237.56445 61.863281C 237.49585 61.750084 237.42827 61.636407 237.35938 61.523438A 127.9999 127.99993 0 0 0 228.65039 48.957031A 127.9999 127.99993 0 0 0 218.50781 37.519531A 127.9999 127.99993 0 0 0 207.07227 27.371094A 127.9999 127.99993 0 0 0 194.50781 18.660156C 194.36944 18.575706 194.23054 18.492146 194.0918 18.408203A 127.9999 127.99993 0 0 0 189.59375 15.820312C 189.26848 15.641095 188.94612 15.457712 188.61914 15.28125A 127.9999 127.99993 0 0 0 183.53711 12.675781A 127.9999 127.99993 0 0 0 183.51953 12.667969C 183.3199 12.571529 183.11428 12.486055 182.91406 12.390625A 127.9999 127.99993 0 0 0 178.61328 10.441406C 177.80104 10.090597 176.97901 9.7601314 176.1582 9.4257812A 127.9999 127.99993 0 0 0 173.64844 8.4335938C 172.67724 8.0618289 171.70304 7.6982021 170.7207 7.3496094A 127.9999 127.99993 0 0 0 168.79688 6.6972656C 166.68541 5.9858012 164.55147 5.3271523 162.39258 4.7246094A 127.9999 127.99993 0 0 0 160.99414 4.328125C 159.91011 4.0389352 158.8158 3.776816 157.7207 3.515625A 127.9999 127.99993 0 0 0 155.57812 3.0214844C 154.51512 2.787325 153.44965 2.5610078 152.37695 2.3535156A 127.9999 127.99993 0 0 0 149.85156 1.9023438C 148.64344 1.693818 147.43423 1.490722 146.21484 1.3164062A 127.9999 127.99993 0 0 0 141.81641 0.75585938C 141.10035 0.67874395 140.37967 0.61990762 139.66016 0.5546875A 127.9999 127.99993 0 0 0 135.77539 0.2578125C 135.11385 0.21801414 134.45326 0.17616268 133.78906 0.14648438A 127.9999 127.99993 0 0 0 128.00781 0A 127.9999 127.99993 0 0 0 128 0A 127.9999 127.99993 0 0 0 127.99805 0zM 116.48438 14.001953C 117.29682 14.405092 118.06182 14.816924 118.90039 15.214844C 121.04274 16.231432 123.27112 17.230994 125.58789 18.208984C 127.90465 19.186973 130.30886 20.14514 132.80469 21.078125C 135.30052 22.011109 137.88882 22.919207 140.56836 23.800781C 143.2479 24.682355 146.01882 25.537569 148.88672 26.361328C 154.6045 28.003667 159.84522 29.620892 164.64844 31.216797C 167.05005 32.014749 169.34259 32.806722 171.53125 33.59375C 173.71991 34.380778 175.80471 35.162875 177.79102 35.939453C 179.7773 36.716032 181.66448 37.487414 183.45898 38.253906C 185.2535 39.020398 186.95539 39.782014 188.56836 40.539062C 190.18133 41.296118 191.70656 42.048914 193.14844 42.796875C 194.59031 43.544836 195.94885 44.287969 197.23047 45.027344C 198.51209 45.766712 199.71593 46.502936 200.84766 47.234375C 201.97938 47.965814 203.03901 48.692479 204.03125 49.416016C 205.0235 50.139555 205.94746 50.859739 206.81055 51.576172C 207.67363 52.292604 208.47585 53.005297 209.2207 53.714844C 209.96556 54.424395 210.65408 55.131039 211.29102 55.833984C 211.92794 56.536931 212.5133 57.236188 213.05273 57.933594C 213.59216 58.631003 214.08628 59.325625 214.53906 60.017578C 214.99185 60.709531 215.4033 61.398829 215.7793 62.085938C 216.53128 63.460167 217.13937 64.826267 217.64844 66.183594C 218.15751 67.540913 218.56787 68.890253 218.91797 70.234375C 219.61817 72.92261 220.08428 75.588528 220.65234 78.246094C 220.93637 79.57488 221.24613 80.901859 221.62305 82.228516C 221.99998 83.555163 222.44426 84.880776 222.99805 86.208984C 223.27494 86.873096 223.57925 87.537793 223.91602 88.203125C 224.25278 88.868457 224.622 89.534433 225.0293 90.201172C 225.4366 90.867905 225.88102 91.536149 226.36914 92.205078C 226.85726 92.874008 227.38907 93.543636 227.96875 94.214844C 229.92418 96.479023 231.7607 98.657003 233.48242 100.75391C 235.20414 102.8508 236.81109 104.86665 238.30859 106.80664C 239.37754 108.19144 240.32433 109.49344 241.2832 110.80273C 241.70407 113.60762 242.02612 116.44483 242.24219 119.3125C 242.45826 122.18017 242.56836 125.07835 242.56836 128.00195C 242.56836 130.0336 242.51476 132.05156 242.41016 134.05664C 242.30555 136.06172 242.14984 138.05327 241.94336 140.0293C 241.73688 142.00531 241.47944 143.96763 241.17383 145.91211C 240.86822 147.85659 240.51528 149.78291 240.11328 151.69336C 239.71128 153.60381 239.26127 155.49718 238.76562 157.37109C 238.26999 159.24502 237.72719 161.10064 237.14062 162.93555C 236.55407 164.77045 235.92278 166.58551 235.24805 168.37891C 234.57331 170.17229 233.85587 171.94396 233.0957 173.69336C 232.45173 174.31973 231.80774 174.94292 231.16211 175.59766C 229.34055 177.44493 227.51974 179.41299 225.73828 181.53906C 224.84754 182.6021 223.96734 183.70434 223.10156 184.85156C 222.23578 185.99878 221.38556 187.19057 220.55469 188.43164C 219.72384 189.6727 218.91294 190.96404 218.12695 192.30859C 217.34097 193.65315 216.57882 195.05008 215.84766 196.50781C 215.11651 197.96554 214.41637 199.4839 213.75 201.06445C 213.08364 202.64499 212.45099 204.28894 211.85938 206.00195C 211.84238 206.05085 211.82725 206.09186 211.81055 206.14062C 210.18552 207.88314 208.5072 209.575 206.77734 211.21289C 205.0475 212.85078 203.26502 214.43479 201.43555 215.96289C 199.60607 217.49099 197.72859 218.96187 195.80469 220.375C 193.88079 221.78813 191.91156 223.14255 189.89844 224.43555C 187.88531 225.72855 185.82958 226.96121 183.73242 228.12891C 181.63527 229.2966 179.4963 230.40028 177.32031 231.4375C 175.14433 232.47472 172.93126 233.44607 170.68164 234.34766C 168.43202 235.24924 166.14618 236.08103 163.82812 236.8418C 163.1445 236.56461 162.53388 236.28713 161.82227 236.01367C 159.57606 235.15052 157.18748 234.31307 154.63281 233.55273C 153.35547 233.17256 152.03625 232.8116 150.67383 232.47656C 149.31141 232.14153 147.90579 231.83243 146.45312 231.55469C 145.00048 231.27693 143.50135 231.02967 141.95312 230.82227C 140.4049 230.61489 138.80727 230.44658 137.1582 230.32227C 135.50912 230.19796 133.80791 230.11834 132.05273 230.08984C 130.29755 230.06154 128.48767 230.08386 126.62109 230.16406C 124.75454 230.24416 122.83087 230.38248 120.84766 230.58398C 118.86443 230.78547 116.82194 231.05112 114.7168 231.38672C 112.61163 231.72235 110.60423 232.0054 108.68945 232.23828C 106.77468 232.47117 104.95167 232.65392 103.2168 232.78906C 101.48193 232.92421 99.834966 233.01036 98.269531 233.05273C 96.704105 233.09513 95.220918 233.09257 93.814453 233.04688C 92.407978 233.00148 91.078287 232.9134 89.820312 232.78516C 88.562328 232.65692 87.375821 232.4893 86.255859 232.2832C 85.13589 232.07714 84.082269 231.83363 83.089844 231.55469C 82.097414 231.27576 81.166367 230.9601 80.291016 230.61328C 79.415653 230.26648 78.59689 229.88824 77.828125 229.47852C 77.05936 229.06879 76.340613 228.62781 75.667969 228.16016C 74.995331 227.69251 74.368246 227.19832 73.78125 226.67773C 73.194254 226.15713 72.646587 225.61155 72.134766 225.04297C 71.622941 224.47439 71.146376 223.88149 70.699219 223.26953C 70.252061 222.65757 69.834304 222.02654 69.441406 221.37695C 68.65561 220.07778 67.96767 218.70849 67.335938 217.28711C 66.704207 215.86572 66.129819 214.39245 65.568359 212.88867C 65.006901 211.3849 64.459739 209.85103 63.884766 208.30469C 63.309795 206.75834 62.707436 205.19949 62.035156 203.65039C 61.362894 202.10153 60.620947 200.56086 59.767578 199.04883C 59.340894 198.29282 58.886359 197.54371 58.398438 196.80469C 57.910517 196.06566 57.3892 195.33671 56.830078 194.61914C 56.270953 193.90156 55.674261 193.1948 55.033203 192.50391C 54.392148 191.81303 53.706118 191.13771 52.972656 190.47852C 52.239195 189.81929 51.457432 189.17726 50.621094 188.55469C 49.784755 187.93211 48.894997 187.329 47.945312 186.74805C 46.995621 186.16709 45.985617 185.60858 44.912109 185.07422C 43.83859 184.53986 42.701956 184.02965 41.494141 183.54688C 39.454173 182.73147 37.501899 181.89387 35.634766 181.03516C 33.767629 180.17645 31.98551 179.29724 30.285156 178.39844C 28.584803 177.49964 26.965406 176.5802 25.425781 175.64453C 24.607444 175.1472 23.869781 174.6318 23.095703 174.125C 22.320492 172.36131 21.588692 170.57437 20.900391 168.76562C 20.212088 166.95689 19.567287 165.12663 18.96875 163.27539C 18.370213 161.42415 17.816464 159.55134 17.310547 157.66016C 16.804629 155.76896 16.34599 153.85828 15.935547 151.92969C 15.525103 150.0011 15.163677 148.05523 14.851562 146.0918C 14.539447 144.12836 14.277338 142.14808 14.066406 140.15234C 13.855475 138.15661 13.694784 136.14463 13.587891 134.11914C 13.480998 132.09365 13.427734 130.05464 13.427734 128.00195C 13.427734 125.93024 13.482864 123.87212 13.591797 121.82812C 13.700726 119.78412 13.863216 117.7539 14.078125 115.74023C 14.293034 113.72658 14.560968 111.72875 14.878906 109.74805C 15.196846 107.76734 15.564401 105.8045 15.982422 103.85938C 16.400442 101.91424 16.867661 99.987015 17.382812 98.080078C 17.897965 96.173142 18.460979 94.286043 19.070312 92.419922C 19.679647 90.553801 20.336543 88.709405 21.037109 86.886719C 21.737677 85.064033 22.482635 83.262959 23.271484 81.486328C 24.671223 80.047232 26.139175 78.56292 27.740234 76.988281C 32.359656 72.445101 37.741614 67.364312 43.458984 61.910156C 46.317669 59.183068 49.261418 56.362511 52.234375 53.46875C 55.207331 50.574988 58.210981 47.607628 61.191406 44.587891C 64.171832 41.568151 67.128682 38.49563 70.009766 35.390625C 72.89085 32.285618 75.696159 29.149567 78.371094 26C 78.967086 25.298257 79.530771 24.595308 80.113281 23.892578C 81.520549 23.245308 82.943752 22.625091 84.380859 22.033203C 85.817968 21.441316 87.268716 20.878682 88.734375 20.34375C 90.200034 19.808818 91.678953 19.302575 93.171875 18.826172C 94.664797 18.349768 96.172513 17.902631 97.691406 17.486328C 99.210301 17.070026 100.74158 16.684707 102.28516 16.330078C 103.82873 15.975449 105.3842 15.650757 106.95117 15.359375C 108.51815 15.067993 110.09647 14.808594 111.68555 14.582031C 113.27463 14.355469 114.87448 14.162123 116.48438 14.001953zM 113.3457 32.564453C 113.21125 32.565041 113.07073 32.593085 112.92188 32.660156C 105.57379 34.073458 98.074637 35.491345 91.365234 38.949219C 89.213411 40.465475 87.770493 42.72233 85.949219 44.583984C 80.724297 50.36549 75.237809 55.904948 69.728516 61.414062C 60.898833 70.162858 51.788073 78.778888 42.851562 87.476562C 41.401768 88.935662 39.856068 90.331935 38.464844 91.830078C 30.686397 111.06177 29.382688 132.82518 34.705078 152.86719C 35.520324 155.98374 36.548571 159.03977 37.664062 162.06055C 41.96976 163.99537 46.356412 165.84919 50.525391 167.86914C 51.922998 168.55464 53.214712 169.20679 54.615234 169.97656C 61.485504 173.70112 67.804709 178.68953 72.285156 185.1543C 76.523599 191.11331 79.189543 197.97845 81.771484 204.76758C 82.883952 207.62984 84.133293 210.442 85.638672 213.12109C 88.165633 214.61019 91.145963 214.84933 94.009766 214.96875C 100.84802 215.28183 107.6332 214.03547 114.375 213.27148C 117.30727 212.89754 120.39112 212.55715 123.24609 212.33203C 124.69457 212.22471 126.12507 212.14414 127.49609 212.10156C 134.64434 211.98735 141.8046 212.57546 148.85352 213.75781C 153.93101 214.62012 158.91879 215.95144 163.79688 217.5957C 175.83508 212.98135 186.68312 205.58176 195.93359 196.65234C 197.31803 194.58845 197.79557 192.09037 199.03711 189.95117C 203.76801 180.21769 210.17822 171.33346 217.74023 163.60352C 223.36071 149.16332 225.85387 133.34783 223.81836 117.92383C 222.73926 115.97657 221.1882 114.34694 219.8418 112.58594C 215.30926 106.97 210.30416 101.57618 207.18555 94.992188C 204.8509 90.192413 203.66298 84.92806 202.63086 79.759766C 201.77384 75.924106 200.99883 71.854018 198.47266 68.708984C 196.84399 66.64739 194.6653 65.11735 192.58203 63.552734C 183.98132 57.35963 173.91374 53.731664 164.01758 50.191406C 153.27079 46.324266 142.26368 43.296197 131.45703 39.615234C 125.77409 37.669093 120.01178 35.506733 114.50195 32.976562C 114.10325 32.806892 113.74907 32.562689 113.3457 32.564453z\" />\r\n</svg>", + "subfiles": [], + "subfiles_extension": [] +}
\ No newline at end of file diff --git a/dot-config/spicetify/CustomApps/ncs-visualizer/style.css b/dot-config/spicetify/CustomApps/ncs-visualizer/style.css new file mode 100644 index 00000000..5da090ec --- /dev/null +++ b/dot-config/spicetify/CustomApps/ncs-visualizer/style.css @@ -0,0 +1 @@ +.ncs-visualizer-container{position:absolute;inset:0}.ncs-visualizer-container>*{position:absolute;top:50%;left:50%;translate:-50% -50%}.app-module__unavailable_message___HYGlM_ncsDvisualizer{font-size:24px;font-weight:700;text-align:center;max-width:50%}
\ No newline at end of file |
