@tensordoc/prism 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/prism.cjs +3 -3
- package/dist/prism.cjs.map +1 -1
- package/dist/prism.mjs +113 -113
- package/dist/prism.mjs.map +1 -1
- package/package.json +3 -3
- package/src/player.ts +22 -0
package/README.md
CHANGED
|
@@ -5,6 +5,13 @@ call `new PrismPlayer({ container })`, get a Milkdrop preset or
|
|
|
5
5
|
Shadertoy fragment shader playing in the browser — reacting to
|
|
6
6
|
whatever audio you connect.
|
|
7
7
|
|
|
8
|
+
**▶ Live demo at
|
|
9
|
+
[prism.scott.ai/examples/embed.html](https://prism.scott.ai/examples/embed.html).
|
|
10
|
+
Fork in
|
|
11
|
+
[CodeSandbox](https://codesandbox.io/p/sandbox/github/Tensor-Doc/prism/main/examples/codesandbox)
|
|
12
|
+
or
|
|
13
|
+
[StackBlitz](https://stackblitz.com/github/Tensor-Doc/prism/tree/main/examples/codesandbox).**
|
|
14
|
+
|
|
8
15
|
```bash
|
|
9
16
|
npm install @tensordoc/prism
|
|
10
17
|
```
|
package/dist/prism.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var re=Object.defineProperty;var se=(t,e,s)=>e in t?re(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var i=(t,e,s)=>se(t,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const oe=require("butterchurn"),ie=require("butterchurn-presets"),te=require("milkdrop-preset-converter");function le(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const ae=le(te),ne=ae;function W(t){const e=t;return e&&typeof e=="object"&&"default"in e?e.default:t}const ue=W(oe),ce=W(ie);function q(t,e,s,o,r={}){const l=(k,
|
|
1
|
+
"use strict";var re=Object.defineProperty;var se=(t,e,s)=>e in t?re(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var i=(t,e,s)=>se(t,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const oe=require("butterchurn"),ie=require("butterchurn-presets"),te=require("milkdrop-preset-converter");function le(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const ae=le(te),ne=ae;function W(t){const e=t;return e&&typeof e=="object"&&"default"in e?e.default:t}const ue=W(oe),ce=W(ie);function q(t,e,s,o,r={}){const l=(k,v)=>{e.width=k,e.height=v};l(window.innerWidth,window.innerHeight);const a=ue.createVisualizer(t,e,{width:e.width,height:e.height,pixelRatio:1,textureRatio:1});a.connectAudio(s);const c=ce.getPresets(),n=Object.keys(c);let u;const h=r.initialPresetName,x=h?V(n,h):null;x?u=x:u=n[Math.floor(Math.random()*n.length)],a.loadPreset(c[u],0);const m=()=>{const k=window.innerWidth,v=window.innerHeight;l(k,v),a.setRendererSize(k,v)};window.addEventListener("resize",m,{passive:!0});let f=!0,w=!0;const y=()=>{f&&(a.render(),w&&(w=!1,window.setTimeout(()=>o==null?void 0:o(),0)),requestAnimationFrame(y))};requestAnimationFrame(y);const R=()=>{if(n.length<2)return u;let k=u;for(;k===u;)k=n[Math.floor(Math.random()*n.length)];return k};return{get presetName(){return P(u)},get currentPresetId(){return u},connectAudio:k=>a.connectAudio(k),loadRandom:(k=2.5)=>{const v=R();return a.loadPreset(c[v],k),u=v,P(v)},loadByName:(k,v=2.5)=>{const b=V(n,k);return b?(a.loadPreset(c[b],v),u=b,P(b)):null},loadFromUrl:async(k,v=2.5)=>{var A;const b=await fetch(k);if(!b.ok)throw new Error(`fetch ${k} → ${b.status} ${b.statusText}`);const C=await b.text(),M=await ne.convertPreset(C);a.loadPreset(M,v);const G=((A=k.split("/").pop())==null?void 0:A.replace(/\.milk$/,""))??k;return u=G,P(G)},destroy:()=>{f=!1,window.removeEventListener("resize",m)}}}function V(t,e){if(t.includes(e))return e;const s=e.toLowerCase(),o=t.find(a=>a.toLowerCase()===s);if(o)return o;const r=a=>a.toLowerCase().replace(/[^a-z0-9]/g,""),l=r(e);return t.find(a=>r(a)===l)??null}function P(t){return t.replace(/^[\W\d]+/,"").replace(/[_]+/g," ").replace(/\s+/g," ").trim().toLowerCase()}const me=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
out vec2 v_uv;
|
|
4
4
|
void main() {
|
|
@@ -28,10 +28,10 @@ void main() {
|
|
|
28
28
|
mainImage(c, gl_FragCoord.xy);
|
|
29
29
|
outColor = vec4(c.rgb, 1.0);
|
|
30
30
|
}
|
|
31
|
-
`;function j(t,e,s){const o=e.getContext("webgl2",{alpha:!1,antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance"});if(!o)throw new Error("WebGL2 not available");const r=o,l=(d,p)=>{e.width=d,e.height=p,r.viewport(0,0,d,p)};l(window.innerWidth,window.innerHeight);let a=s;const c=t.createAnalyser();c.fftSize=512,a.connect(c);const n=new Uint8Array(256),u=r.createTexture();r.bindTexture(r.TEXTURE_2D,u),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texImage2D(r.TEXTURE_2D,0,r.R8,256,1,0,r.RED,r.UNSIGNED_BYTE,null);const h=r.createTexture();r.bindTexture(r.TEXTURE_2D,h),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.REPEAT),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.REPEAT),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,new Uint8Array([32,32,38,255]));const
|
|
31
|
+
`;function j(t,e,s){const o=e.getContext("webgl2",{alpha:!1,antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance"});if(!o)throw new Error("WebGL2 not available");const r=o,l=(d,p)=>{e.width=d,e.height=p,r.viewport(0,0,d,p)};l(window.innerWidth,window.innerHeight);let a=s;const c=t.createAnalyser();c.fftSize=512,a.connect(c);const n=new Uint8Array(256),u=r.createTexture();r.bindTexture(r.TEXTURE_2D,u),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texImage2D(r.TEXTURE_2D,0,r.R8,256,1,0,r.RED,r.UNSIGNED_BYTE,null);const h=r.createTexture();r.bindTexture(r.TEXTURE_2D,h),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.REPEAT),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.REPEAT),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,new Uint8Array([32,32,38,255]));const x=r.createVertexArray();let m=null,f=null,w="—",y=null;const R=performance.now();let k=R,v=0,b=0,C=0,M=!1,G=!0;function A(d,p){const g=r.createShader(d);if(r.shaderSource(g,p),r.compileShader(g),!r.getShaderParameter(g,r.COMPILE_STATUS)){const _=r.getShaderInfoLog(g)??"(no log)";throw r.deleteShader(g),new Error(`GLSL compile error:
|
|
32
32
|
${_}
|
|
33
33
|
--- source ---
|
|
34
34
|
${Q(p)}`)}return g}function Q(d){return d.split(`
|
|
35
35
|
`).map((p,g)=>`${String(g+1).padStart(3)}: ${p}`).join(`
|
|
36
|
-
`)}function ee(d){const p=A(r.VERTEX_SHADER,me),g=A(r.FRAGMENT_SHADER,de+d+pe),_=r.createProgram();if(r.attachShader(_,p),r.attachShader(_,g),r.linkProgram(_),!r.getProgramParameter(_,r.LINK_STATUS)){const S=r.getProgramInfoLog(_)??"(no log)";throw r.deleteShader(p),r.deleteShader(g),r.deleteProgram(_),new Error(`Shader link error: ${S}`)}return r.deleteShader(p),r.deleteShader(g),_}function B(){if(!G)return;const d=performance.now(),p=(d-R)*.001,g=(d-k)*.001;if(k=d,x++,c.getByteFrequencyData(n),r.bindTexture(r.TEXTURE_2D,u),r.texImage2D(r.TEXTURE_2D,0,r.R8,256,1,0,r.RED,r.UNSIGNED_BYTE,n),y&&(y instanceof HTMLCanvasElement?y.width>0&&y.height>0:y.readyState>=2)){r.bindTexture(r.TEXTURE_2D,h),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0);try{r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,y)}catch{}r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1)}if(m){r.useProgram(m);const _=S=>r.getUniformLocation(m,S);r.uniform1f(_("iTime"),p),r.uniform1f(_("iTimeDelta"),g),r.uniform1i(_("iFrame"),x),r.uniform3f(_("iResolution"),e.width,e.height,1),r.uniform4f(_("iMouse"),b,e.height-C,M?1:0,0),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,u),r.uniform1i(_("iChannel0"),0),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,h),r.uniform1i(_("iChannel1"),1),r.bindVertexArray(v),r.drawArrays(r.TRIANGLES,0,3)}else r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT);requestAnimationFrame(B)}requestAnimationFrame(B);const F=()=>l(window.innerWidth,window.innerHeight),L=d=>{b=d.clientX,C=d.clientY},U=()=>{M=!0},N=()=>{M=!1};return window.addEventListener("resize",F,{passive:!0}),window.addEventListener("pointermove",L,{passive:!0}),window.addEventListener("pointerdown",U,{passive:!0}),window.addEventListener("pointerup",N,{passive:!0}),{get presetName(){return w},get currentUrl(){return f},connectAudio:d=>{a.disconnect(),a=d,a.connect(c)},loadFromUrl:async d=>{var S;const p=await fetch(d);if(!p.ok)throw new Error(`fetch ${d} → ${p.status}`);const g=await p.text(),_=ee(g);return m&&r.deleteProgram(m),m=_,f=d,w=((S=d.split("/").pop())==null?void 0:S.replace(/\.glsl$/,""))??d,w},setLiveSource:d=>{y=d},bindImage:async d=>{if(!d){r.bindTexture(r.TEXTURE_2D,h),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,new Uint8Array([32,32,38,255]));return}const p=new Image;p.crossOrigin="anonymous",await new Promise((_,S)=>{p.onload=()=>_(),p.onerror=()=>S(new Error(`image load failed: ${d}`)),p.src=d}),r.bindTexture(r.TEXTURE_2D,h),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,p),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),(p.naturalWidth&p.naturalWidth-1)===0&&(p.naturalHeight&p.naturalHeight-1)===0?(r.generateMipmap(r.TEXTURE_2D),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR_MIPMAP_LINEAR)):r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR)},destroy:()=>{G=!1,window.removeEventListener("resize",F),window.removeEventListener("pointermove",L),window.removeEventListener("pointerdown",U),window.removeEventListener("pointerup",N),m&&r.deleteProgram(m),r.deleteTexture(u),r.deleteTexture(h),r.deleteVertexArray(v)}}}const ke=6,_e=1,T=1280,E=720;class X{constructor(e,s={}){i(this,"canvas");i(this,"ctx");i(this,"urls");i(this,"holdMs");i(this,"images");i(this,"currentIndex",0);i(this,"nextIndex",1);i(this,"crossfadeStartMs",null);i(this,"holdTimer",null);i(this,"rafHandle",null);i(this,"destroyed",!1);if(e.length===0)throw new Error("HeadlessSlideshow: urls list cannot be empty");this.urls=e,this.holdMs=Math.max(.5,s.holdSeconds??ke)*1e3,this.canvas=document.createElement("canvas"),this.canvas.width=T,this.canvas.height=E;const o=this.canvas.getContext("2d");if(!o)throw new Error("HeadlessSlideshow: 2D canvas context unavailable");this.ctx=o,this.images=e.map(()=>null),this.preload()}destroy(){this.destroyed=!0,this.holdTimer!=null&&clearTimeout(this.holdTimer),this.rafHandle!=null&&cancelAnimationFrame(this.rafHandle)}async preload(){const e=this.urls.map((s,o)=>he(s).then(r=>{this.destroyed||(this.images[o]=r,o===0&&this.start())},r=>{console.warn(`[/prism] image-feed: ${s} → ${r.message}`)}));await Promise.allSettled(e)}start(){this.destroyed||(this.drawFrame(),this.scheduleNext())}scheduleNext(){this.destroyed||(this.holdTimer=window.setTimeout(()=>this.advance(),this.holdMs))}advance(){if(this.destroyed)return;let e=(this.currentIndex+1)%this.urls.length;for(let s=0;s<this.urls.length&&!this.images[e];s++)e=(e+1)%this.urls.length;if(e===this.currentIndex){this.scheduleNext();return}this.nextIndex=e,this.crossfadeStartMs=performance.now(),this.rafHandle=requestAnimationFrame(()=>this.tickCrossfade())}tickCrossfade(){if(this.destroyed||this.crossfadeStartMs==null)return;const e=(performance.now()-this.crossfadeStartMs)/1e3/_e;if(e>=1){this.currentIndex=this.nextIndex,this.crossfadeStartMs=null,this.drawFrame(),this.scheduleNext();return}this.drawCrossfade(e),this.rafHandle=requestAnimationFrame(()=>this.tickCrossfade())}drawFrame(){const e=this.images[this.currentIndex];e&&(this.ctx.fillStyle="#000",this.ctx.fillRect(0,0,T,E),D(this.ctx,e,T,E))}drawCrossfade(e){const s=this.images[this.currentIndex],o=this.images[this.nextIndex];this.ctx.fillStyle="#000",this.ctx.fillRect(0,0,T,E),s&&D(this.ctx,s,T,E),o&&(this.ctx.save(),this.ctx.globalAlpha=e,D(this.ctx,o,T,E),this.ctx.restore())}}function he(t){return new Promise((e,s)=>{const o=new Image;o.crossOrigin="anonymous",o.onload=()=>e(o),o.onerror=()=>s(new Error(`image load failed: ${t}`)),o.src=t})}function D(t,e,s,o){const r=e.naturalWidth/e.naturalHeight,l=s/o;let a=0,c=0,n=e.naturalWidth,u=e.naturalHeight;r>l?(n=e.naturalHeight*l,a=(e.naturalWidth-n)/2):(u=e.naturalWidth/l,c=(e.naturalHeight-u)/2),t.drawImage(e,a,c,n,u,0,0,s,o)}const ye={name:"shifter - spincycle c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-spincycle-c.milk"},ge={name:"phat + Eo.S. - TesellatingFractal_Mix3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-tesellatingfractal-mix3.milk"},fe={name:"phat + Eo.S. - TesellatingFractal_Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-tesellatingfractal-mix.milk"},xe={name:"phat + Eo.S. - 2ct2V5",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-2ct2v5.milk"},ve={name:"nil - Vortex of Vortices",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/nil-vortex-of-vortices.milk"},be={name:"mstress - Scattered gravity (Smoked mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-scattered-gravity-smoked-mix.milk"},we={name:"mstress - Cleaning a path - Painterly Crossfire",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-cleaning-a-path-painterly-crossfire.milk"},Se={name:"fiShbRaiN - the adventures of prismo jenkins",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-the-adventures-of-prismo-jenkins.milk"},Te={name:"amandio c - new life",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-new-life.milk"},Ee={name:"Vovan + Geiss - Bass With Flover (Feedback Mix) 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-3.milk"},Re={name:"Vovan + Geiss - Bass With Flover (Feedback Mix) 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-2.milk"},Me={name:"Unchained - elite vectronics",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-elite-vectronics.milk"},Ge={name:"Telek - Slow Thing (Spiderman Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-slow-thing-spiderman-mix.milk"},Ae={name:"Rovastar + Zylot - Narell's Fever",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-zylot-narell-s-fever.milk"},Ce={name:"Rovastar + Unchained - Ambrosia Mystic (Dark Heart Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-ambrosia-mystic-dark-heart-mix-2.milk"},Pe={name:"Rovastar + Telek - Altars of Madness (Rolling Oceans Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-telek-altars-of-madness-rolling-oceans-mix.milk"},De={name:"Rovastar & Unchained - Unified Drag 2 (Ghostly Vision Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-unified-drag-2-ghostly-vision-mix.milk"},Ie={name:"Rovastar & Rocke - Sugar Spun Sister",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister.milk"},Be={name:"Reenen - phoenix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/reenen-phoenix.milk"},Fe={name:"Phat + Eo.S. - Data_swimmer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-data-swimmer.milk"},Le={name:"Krash - War Machine (Shifting Complexity Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-war-machine-shifting-complexity-mix.milk"},Ue={name:"Illusion & Boz - Hot Air Balloon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/illusion-boz-hot-air-balloon.milk"},Ne={name:"Geiss - Tokamak Plus Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-painterly.milk"},Ve={name:"Geiss - Tokamak Plus 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-3.milk"},Oe={name:"Geiss - Swirlie 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-swirlie-4.milk"},We={name:"Geiss - Sound And The Fury",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-sound-and-the-fury.milk"},qe={name:"Geiss - Mega Swirl 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mega-swirl-2.milk"},je={name:"Geiss - Cycloid 1 - painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly.milk"},Xe={name:"Geiss - Cycloid 1 - painterly vortex",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly-vortex.milk"},He={name:"Geiss - Cycloid 1 - painterly vortex 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly-vortex-3.milk"},ze={name:"Geiss - Cauldron - painterly 3 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-3-saturation-remix.milk"},Ke={name:"Image Metaball",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-metaball.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA15985%2FPIA15985~medium.jpg"},Ye={name:"Eo.S. - nematodes E daemon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-nematodes-e-daemon.milk"},Je={name:"Eo.S. + Phat - chasers 11 sentinel C_poltergeist_mix response daemon (geiss flicker fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-11-sentinel-c-poltergeist-mix-response-daemon-geiss-flicker.milk"},Ze={name:"Eo.S. + Phat - chasers 11 sentinel C",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-11-sentinel-c.milk"},$e={name:"Che - Terracarbon Stream",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/che-terracarbon-stream.milk"},Qe={name:"Aderrasi - The Lurker (Twin Mix) - Bitcore Tweak",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-the-lurker-twin-mix-bitcore-tweak.milk"},er={name:"Aderrasi - Ghast (Quarter Past Ghast Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-quarter-past-ghast-mix.milk"},rr={name:"Aderrasi - Contortion (Wide Twist Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-contortion-wide-twist-mix.milk"},sr={name:"Aderrasi - Airhandler (Last Breath - Eden)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-last-breath-eden.milk"},or={name:"Aderrasi - Airhandler (Last Breath - Calm)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-last-breath-calm.milk"},ir={name:"Cosmic Flow",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/cosmic-flow.glsl"},tr={name:"Image Pool",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-pool.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA17563%2FPIA17563~medium.jpg"},lr={name:"shifter - glassworms flare",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-glassworms-flare.milk"},ar={name:"shifter - escape the worm - Eo.S. + Phat 5362",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-escape-the-worm-eo-s-phat-5362.milk"},nr={name:"shifter + geiss - neon pulse (glow mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-geiss-neon-pulse-glow-mix.milk"},ur={name:"martin - volcano",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-volcano.milk"},cr={name:"martin - violet flash",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-violet-flash.milk"},mr={name:"martin - soma in pink (Ati Fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-soma-in-pink-ati-fix.milk"},dr={name:"martin - push cx",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-push-cx.milk"},pr={name:"martin - push ax",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-push-ax.milk"},kr={name:"martin - move this body",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-move-this-body.milk"},_r={name:"martin - infinity",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity.milk"},hr={name:"martin - bring up the big guns",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-bring-up-the-big-guns.milk"},yr={name:"martin - another kind of groove",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-another-kind-of-groove.milk"},gr={name:"martin - another kind of groove (Ati Fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-another-kind-of-groove-ati-fix.milk"},fr={name:"martin - angel flight",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-angel-flight.milk"},xr={name:"martin - Geiss - Psychotic Roulette",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-geiss-psychotic-roulette.milk"},vr={name:"martin + stahlregen - martin in da mash 12a",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-12a.milk"},br={name:"martin + stahlregen - martin in da mash 12",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-12.milk"},wr={name:"idiot - Spectrum",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-spectrum.milk"},Sr={name:"geiss - liquid beats (jelly v4.5)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-jelly-v4-5.milk"},Tr={name:"flexi, fishbrain + stahlregen - witchcraft [jelly5.5]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-fishbrain-stahlregen-witchcraft-jelly5-5.milk"},Er={name:"flexi - what is the matrix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-what-is-the-matrix.milk"},Rr={name:"flexi - lorenz attractor",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-lorenz-attractor.milk"},Mr={name:"flexi - hyperspaceflight (bn cn Jelly 4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-hyperspaceflight-bn-cn-jelly-4.milk"},Gr={name:"flexi - bouncing balls [neon mix]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-bouncing-balls-neon-mix.milk"},Ar={name:"flexi - alien web bouncer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-alien-web-bouncer.milk"},Cr={name:"flexi + stahlregen - jewelry tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-stahlregen-jewelry-tiles.milk"},Pr={name:"flexi + nitorami - beat explorer (cn bc jelly 4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-nitorami-beat-explorer-cn-bc-jelly-4.milk"},Dr={name:"flexi + fishbrain - neon mindblob grafitti",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-fishbrain-neon-mindblob-grafitti.milk"},Ir={name:"fiShbRaiN + geiss - witchcraft (Stahl's Mirror Crossfire Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-stahl-s-mirror-crossfire-mix.milk"},Br={name:"fiShbRaiN + geiss - witchcraft (Grow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-grow-mix.milk"},Fr={name:"beta106i - It's the Sun (Brotherhood of Tears) - mash0000 - vascular chemical allergy",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/beta106i-it-s-the-sun-brotherhood-of-tears-mash0000-vascular-chemical-allergy.milk"},Lr={name:"amandio c - salty beats - spiral",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-salty-beats-spiral.milk"},Ur={name:"amandio c - odd star",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-odd-star.milk"},Nr={name:"geiss_experimental__LSB Bass Cubes",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-experimental-lsb-bass-cubes.milk"},Vr={name:"geiss_experimental__Aderrasi - Kevlar Ore Deposit - geiss core stripe mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-experimental-aderrasi-kevlar-ore-deposit-geiss-core-stripe-mix.milk"},Or={name:"Geiss - Cosmic Dust 2 - Game of Life - zoom mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-game-of-life-zoom-mix.milk"},Wr={name:"Vovan + Geiss - Bass With Flover (Feedback Mix ORIG)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-orig.milk"},qr={name:"Mig_Oscilloscope022",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-oscilloscope022.milk"},jr={name:"Mig_Oscilloscope022 b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-oscilloscope022-b.milk"},Xr={name:"Mig_304 - geiss remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix.milk"},Hr={name:"Mig_304 - geiss remix 3b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-3b.milk"},zr={name:"Mig_304 - geiss remix 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-3.milk"},Kr={name:"Mig_304 - geiss remix 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-2.milk"},Yr={name:"Mig_197b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-197b.milk"},Jr={name:"Mig_120",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-120.milk"},Zr={name:"Mig_091b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-091b.milk"},$r={name:"Mig_091",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-091.milk"},Qr={name:"Mig_085",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-085-2.milk"},es={name:"Mig_082_version2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-082-version2.milk"},rs={name:"Mig_068",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-068.milk"},ss={name:"Mig_036_version3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-036-version3.milk"},os={name:"Mig_032_version3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-032-version3.milk"},is={name:"Martin - wire dance (geiss warp shader mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-wire-dance-geiss-warp-shader-mix.milk"},ts={name:"Geiss - Confetti (Kaleidoscope Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-confetti-kaleidoscope-mix.milk"},ls={name:"Eo.S. - glowsticks v2 02 - Geiss HPF",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-02-geiss-hpf.milk"},as={name:"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-zylot-skylight-stained-glass-majesty-mix-2.milk"},ns={name:"Unchained - Perverted Dialect",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-perverted-dialect.milk"},us={name:"Unchained - Free to Feel (Valium Remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-free-to-feel-valium-remix.milk"},cs={name:"Unchained & Rovastar - Rainbow Obscura",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-rovastar-rainbow-obscura.milk"},ms={name:"Unchained & Rovastar - Luckless",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-rovastar-luckless.milk"},ds={name:"Telek - Directive Swagger (Spectral Inferno) with radial blur",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-directive-swagger-spectral-inferno-with-radial-blur.milk"},ps={name:"Stahlregen - Spiral Beats (Fluctuating Flowers)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-spiral-beats-fluctuating-flowers.milk"},ks={name:"Stahlregen + Unchained - Psychedelic Flower Kung Fu (Corrupt)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-unchained-psychedelic-flower-kung-fu-corrupt.milk"},_s={name:"Stahlregen & Geiss + TobiasWolfBoi - Space Gelatin (Color Xplosion)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-geiss-tobiaswolfboi-space-gelatin-color-xplosion.milk"},hs={name:"Stahlregen & Geiss + TobiasWolfBoi - Space Gelatin (Color Xplosion 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-geiss-tobiaswolfboi-space-gelatin-color-xplosion-2.milk"},ys={name:"Rovastar - Snapshot Of Space",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-snapshot-of-space.milk"},gs={name:"Rovastar - LabFunk",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-labfunk.milk"},fs={name:"Rovastar - Hyperspace",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-hyperspace.milk"},xs={name:"Rovastar - Demon Sunflower (Double Resistance Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-demon-sunflower-double-resistance-mix.milk"},vs={name:"Rovastar + Rocke - Sugar Spun Sister - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister-painterly.milk"},bs={name:"Rovastar + Loadus - FractalDrop (Active Sparks Mix) Steady",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-fractaldrop-active-sparks-mix-steady.milk"},ws={name:"Rovastar + Loadus + Geiss - Tone-mapped FractalDrop",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-tone-mapped-fractaldrop.milk"},Ss={name:"Rovastar + Loadus + Geiss - Tone-mapped FractalDrop 7c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-tone-mapped-fractaldrop-7c.milk"},Ts={name:"Rovastar + Loadus + Geiss - FractalDrop (Triple Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-fractaldrop-triple-mix.milk"},Es={name:"Rovastar + Geiss - Bipolar 2 (Vectrip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-geiss-bipolar-2-vectrip-mix.milk"},Rs={name:"Rovastar + Che - Asylum Animations",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-che-asylum-animations.milk"},Ms={name:"Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-fishbrain-eo-s-mandala-chasers-remix.milk"},Gs={name:"ORB - Solar Radiation",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-solar-radiation.milk"},As={name:"ORB - Saturns Rings",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-saturns-rings.milk"},Cs={name:"ORB - Quicksand",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-quicksand.milk"},Ps={name:"ORB - Pastel Primer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-pastel-primer.milk"},Ds={name:"ORB - Liquid Fire",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-liquid-fire.milk"},Is={name:"ORB - Inferno",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-inferno.milk"},Bs={name:"ORB - Crysal Storm",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-crysal-storm.milk"},Fs={name:"Mstress - Acoustic Nerve Impulses",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-acoustic-nerve-impulses.milk"},Ls={name:"Martin - journey into space",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-journey-into-space.milk"},Us={name:"Martin - charisma",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-charisma.milk"},Ns={name:"Krash - Vinyl Disk",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-vinyl-disk.milk"},Vs={name:"Krash + Rovastar - Rainbow Orb",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-rovastar-rainbow-orb.milk"},Os={name:"Idiot - What Is",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-what-is.milk"},Ws={name:"Goody - Vertigo - revisited",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-vertigo-revisited.milk"},qs={name:"Goody - Unstable Sonic Reactor - Final",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-unstable-sonic-reactor-final.milk"},js={name:"Goody - Need - Gloam",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-need-gloam.milk"},Xs={name:"Goody - Need - Desire remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-need-desire-remix.milk"},Hs={name:"Geiss - Vortex 2 Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-vortex-2-painterly.milk"},zs={name:"Geiss - Tokamak Plus 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-4.milk"},Ks={name:"Geiss - Swirlie 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-swirlie-2.milk"},Ys={name:"Geiss - Smoke Rings",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-smoke-rings.milk"},Js={name:"Geiss - Skin Dots Multi-layer 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-multi-layer-3.milk"},Zs={name:"Geiss - Skin Dots 9",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-9.milk"},$s={name:"Geiss - Skin Dots 11b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-11b.milk"},Qs={name:"Geiss - Rose 5 Crossfire Beats",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats.milk"},eo={name:"Geiss - Rose 5 Crossfire Beats - mash0000 - ill gotten slobber catcher",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats-mash0000-ill-gotten-slobber-catcher.milk"},ro={name:"Geiss - Rose 5 Crossfire Beats (composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats-composite-remix.milk"},so={name:"Geiss - Rose 4 (composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-composite-remix.milk"},oo={name:"Geiss - Rose 4 (bccn Jelly V4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-bccn-jelly-v4.milk"},io={name:"Geiss - Rose 4 (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-lsb-mix.milk"},to={name:"Geiss - Rose 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-3.milk"},lo={name:"Geiss - Reaction Diffusion (Shifting Sphere Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-shifting-sphere-mix.milk"},ao={name:"Geiss - Reaction Diffusion (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-relief-mix.milk"},no={name:"Geiss - Reaction Diffusion (Puddle Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-puddle-mix.milk"},uo={name:"Geiss - Plasma 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-plasma-2.milk"},co={name:"Geiss - Pistons",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-pistons.milk"},mo={name:"Geiss - Neutron - radial blur 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-neutron-radial-blur-2.milk"},po={name:"Geiss - Motion Blur 2 (Stahl's Neon Jelly 2 RMX)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-stahl-s-neon-jelly-2-rmx.milk"},ko={name:"Geiss - Motion Blur 2 (Reverse Jelly V3)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-reverse-jelly-v3.milk"},_o={name:"Geiss - Motion Blur 2 (Relief Mix 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-relief-mix-2.milk"},ho={name:"Geiss - Mosaic Octopus 7",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mosaic-octopus-7.milk"},yo={name:"Geiss - MicroCheckers 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-microcheckers-3.milk"},go={name:"Geiss - Mega Swirl 3 (color tweak)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mega-swirl-3-color-tweak.milk"},fo={name:"Geiss - Mash-Up 1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mash-up-1.milk"},xo={name:"Geiss - Liquid Beats 2 (Reverse Jelly V3)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-2-reverse-jelly-v3.milk"},vo={name:"Geiss - Iris",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-iris.milk"},bo={name:"Geiss - Iris Storm",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-iris-storm.milk"},wo={name:"Geiss - Hyperion (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-hyperion-lsb-mix.milk"},So={name:"Geiss - Hurricane",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-hurricane.milk"},To={name:"Geiss - Game of Life",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life.milk"},Eo={name:"Geiss - Game of Life 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life-3.milk"},Ro={name:"Geiss - Eye of Jupiter",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-eye-of-jupiter.milk"},Mo={name:"Geiss - Downward Spiral - color invert mirror x",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-downward-spiral-color-invert-mirror-x.milk"},Go={name:"Geiss - Digitunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-digitunnel.milk"},Ao={name:"Geiss - Diffuser (Red Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-diffuser-red-mix.milk"},Co={name:"Geiss - Desert Rose 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-desert-rose-4.milk"},Po={name:"Geiss - Dancing Spirits (Bright)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-dancing-spirits-bright.milk"},Do={name:"Geiss - Cosmic Dust 2 - quasistatic noise dual pane window",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-dual-pane-window.milk"},Io={name:"Geiss - Cosmic Dust 2 - quasistatic noise desat trails",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-desat-trails.milk"},Bo={name:"Geiss - Cosmic Dust 2 - quasistatic noise desat trails 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-desat-trails-2.milk"},Fo={name:"Geiss - Cosmic Dust 2 - Trails 7",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-trails-7.milk"},Lo={name:"Geiss - Cosmic Dust 2 - Tiny Reaction Diffusion Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-tiny-reaction-diffusion-mix.milk"},Uo={name:"Geiss - Constant Velocity - angular blur",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-constant-velocity-angular-blur.milk"},No={name:"Geiss - Color Pox (Measles Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-measles-mix.milk"},Vo={name:"Geiss - Color Pox (Acid Impression Mix) (color saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-acid-impression-mix-color-saturation-remix.milk"},Oo={name:"Geiss - Cepia Dither",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cepia-dither.milk"},Wo={name:"Geiss - Cauldron - painterly 5 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-5-saturation-remix.milk"},qo={name:"Geiss - Cauldron - painterly 4 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-4-saturation-remix.milk"},jo={name:"Geiss - Casino",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-casino.milk"},Xo={name:"Geiss - All-Spark Sinews",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark-sinews.milk"},Ho={name:"Geiss - All-Spark Polar",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark-polar.milk"},zo={name:"Geiss - 3 layers (Tunnel Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-tunnel-mix.milk"},Ko={name:"Geiss - 3 layers (Planar Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-planar-mix.milk"},Yo={name:"Geiss + Rovastar - Julia Fractal (Vectrip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rovastar-julia-fractal-vectrip-mix.milk"},Jo={name:"Geiss - Cauldron - Tendrils (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-tendrils-saturation-remix.milk"},Zo={name:"Geiss - Eggs",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-eggs.milk"},$o={name:"Tunnel of Images",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/tunnel-of-images.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA13994%2FPIA13994~medium.jpg"},Qo={name:"Image Mosaic",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-mosaic.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA22351%2FPIA22351~medium.jpg"},ei={name:"Raymarch Sphere",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/raymarch-sphere.glsl"},ri={name:"Audio Spectrum",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/audio-spectrum.glsl"},si={name:"Flexi - using jedi forces",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-using-jedi-forces.milk"},oi={name:"Flexi - layered + Boz - Buckwild",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-layered-boz-buckwild.milk"},ii={name:"Esotic & Rozzor - Pixie Party Light ((No Wave Invasion) Mandala Chill Red Yellow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/esotic-rozzor-pixie-party-light-no-wave-invasion-mandala-chill-red-yellow-mix.milk"},ti={name:"Eo.S.+Phat - spectrum bubble new colors_v2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-spectrum-bubble-new-colors-v2.milk"},li={name:"Eo.S. and Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-and-zylot-skylight-stained-glass-majesty-mix.milk"},ai={name:"Eo.S. - skylight a1 [music warp switch]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-skylight-a1-music-warp-switch.milk"},ni={name:"Eo.S. - sarc c_Phats Zoom Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-sarc-c-phats-zoom-mix.milk"},ui={name:"Eo.S. - repeater 13 - definitive",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-repeater-13-definitive.milk"},ci={name:"Aderrasi - Airhandler (Kali Mix) - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-kali-mix-painterly.milk"},mi={name:"Eo.S. - glowsticks v2 03 music shifter edit b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b.milk"},di={name:"Eo.S. - glowsticks v2 03 music shifter edit b (Stahl's Reactive RMX V2i2 - feat. flexi + phat)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b-stahl-s-reactive-rmx-v2i2-feat-flexi.milk"},pi={name:"Eo.S. - glowsticks v2 03 music shifter edit b (Jelly V2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b-jelly-v2.milk"},ki={name:"Eo.S. + Phat cubetrace (cybercity madness remix) - mash0000 - evaporating crystal pharma",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-cubetrace-cybercity-madness-remix-mash0000-evaporating-crystal-pharma.milk"},_i={name:"Eo.S. + Phat - cubetrace - v2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-cubetrace-v2.milk"},hi={name:"Eo.S. + Phat - chasers 14 sentinel 616",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-14-sentinel-616.milk"},yi={name:"Eo.S. + Phat + Geiss - chasers 15 sentinels male and female (Dementia Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-geiss-chasers-15-sentinels-male-and-female-dementia-mix.milk"},gi={name:"Eo.S. + Geiss - glowsticks v2 03 music shifter edit b (Psychedelic Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-geiss-glowsticks-v2-03-music-shifter-edit-b-psychedelic-mix.milk"},fi={name:"Eo.S. + Geiss - glowsticks v2 02 (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-geiss-glowsticks-v2-02-relief-mix.milk"},xi={name:"Cope-WIP - Strange Attractor 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/cope-wip-strange-attractor-2.milk"},vi={name:"Cope - Passage (mandala mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/cope-passage-mandala-mix.milk"},bi={name:"Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone Mad Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-krash-rainbow-orb-peacock-lonely-signal-gone-mad-mix.milk"},wi={name:"Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-storm-of-the-eye-thunder-mash0000-quasi-pseudo-meta-concentrics.milk"},Si={name:"Aderrasi - Roaming Star (Himalaya Brach Office) - mash0000 - creaming the summit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-roaming-star-himalaya-brach-office-mash0000-creaming-the-summit.milk"},Ti={name:"Aderrasi - Ghast Entity",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-entity.milk"},Ei={name:"Aderrasi - Ghast (Full Circle Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-full-circle-mix.milk"},Ri={name:"Geiss - All-Spark",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark.milk"},Mi={name:"martin - reflections on black tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-reflections-on-black-tiles.milk"},Gi={name:"shifter - spills blender + krash beatdetect - mash0000 - here comb your hair with this planet",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-spills-blender-krash-beatdetect-mash0000-here-comb-your-hair-with-this.milk"},Ai={name:"shifter - neon pulse (reactive)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-neon-pulse-reactive.milk"},Ci={name:"martin - soma in pink",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-soma-in-pink.milk"},Pi={name:"martin - infinity (2010 update)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity-2010-update.milk"},Di={name:"martin - infinity (2008)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity-2008.milk"},Ii={name:"martin - gate to moria",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-gate-to-moria.milk"},Bi={name:"martin - disco mix 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-disco-mix-4.milk"},Fi={name:"martin + stahlregen - martin in da mash 10 (infinity mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-10-infinity-mix.milk"},Li={name:"fiShbRaiN - a quiet death",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-a-quiet-death.milk"},Ui={name:"fed - slowfast 1.1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fed-slowfast-1-1.milk"},Ni={name:"Unchained - Unified Drag 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-unified-drag-2.milk"},Vi={name:"Unchained - Cranked On Failure",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-cranked-on-failure.milk"},Oi={name:"Unchained - All You Can Eat",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-all-you-can-eat.milk"},Wi={name:"Rozzor & StudioMusic - Vertigyny (Geiss Shape Mod)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rozzor-studiomusic-vertigyny-geiss-shape-mod.milk"},qi={name:"Rovastar - VooV's Movement (After Dark Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-voov-s-movement-after-dark-mix.milk"},ji={name:"Rovastar - VooV's Movement (After Dark Mix) - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-voov-s-movement-after-dark-mix-painterly.milk"},Xi={name:"Rovastar - Fractopia (Upspoken Mix)_Phat_Speak_When_Spoken_2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fractopia-upspoken-mix-phat-speak-when-spoken-2.milk"},Hi={name:"Rovastar + Idiot24-7 - Balk Acid",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-idiot24-7-balk-acid.milk"},zi={name:"Rovastar + Fvese - Mosaic Waves",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fvese-mosaic-waves.milk"},Ki={name:"Rovastar & Unchained - Demonology (Vampire Soul Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-demonology-vampire-soul-mix.milk"},Yi={name:"Rovastar & Unchained - Ambrosia Mystic (Dark Heart Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-ambrosia-mystic-dark-heart-mix.milk"},Ji={name:"Reenen & Telek - Slow Shift Matrix (bb4.5 (Dynamic Beat) Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/reenen-telek-slow-shift-matrix-bb4-5-dynamic-beat-mix.milk"},Zi={name:"PieturP - triptrap_(ultimate-trip-mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/pieturp-triptrap-ultimate-trip-mix.milk"},$i={name:"Phat + Eo.S. - rainbow bubble_mid3-f. me dood",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-rainbow-bubble-mid3-f-me-dood.milk"},Qi={name:"Phat + Eo.S. - Swim_waveform_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-swim-waveform-mix.milk"},et={name:"ORB - Nova Sunrise",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-nova-sunrise.milk"},rt={name:"ORB - Fire and Fumes 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-fire-and-fumes-2.milk"},st={name:"ORB - Blue Emotion",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-blue-emotion.milk"},ot={name:"Ishan - Anuera",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/ishan-anuera.milk"},it={name:"Idiot24-7 - Ascending to heaven 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot24-7-ascending-to-heaven-2.milk"},tt={name:"Geiss - Motion Blur 2 (color sat boost)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-color-sat-boost.milk"},lt={name:"Geiss - Electric Storm Half-Digital 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-electric-storm-half-digital-2.milk"},at={name:"Geiss - Cosmic Dust 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2.milk"},nt={name:"Geiss + Rovastar - The Chaos Of Colours (sprouting dimentia mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rovastar-the-chaos-of-colours-sprouting-dimentia-mix.milk"},ut={name:"Flexi - self-lubricating",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-self-lubricating.milk"},ct={name:"Flexi - infused with the spiral",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-infused-with-the-spiral.milk"},mt={name:"Flexi + Martin - cascading decay swing",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-martin-cascading-decay-swing.milk"},dt={name:"Eo.S.+Phat Emergent factors - Bitcore Tweak",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-emergent-factors-bitcore-tweak.milk"},pt={name:"Eo.S.+Phat - Flare_dig_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-flare-dig-mix.milk"},kt={name:"Eo.S. - pulsecube f demon - mash0000 - yakuza gut cake",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-pulsecube-f-demon-mash0000-yakuza-gut-cake.milk"},_t={name:"Eo.S. - heater core C_Phat's_class + sparks_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-heater-core-c-phat-s-class-sparks-mix.milk"},ht={name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix07",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code-phat-remix07.milk"},yt={name:"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-zylot-skylight-stained-glass-majesty-mix.milk"},gt={name:"Eo.S. + Phat - Emergent factors",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-emergent-factors.milk"},ft={name:"Bmelgren - Pentultimate Nerual Slipstream (Tweak 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-pentultimate-nerual-slipstream-tweak-2.milk"},xt={name:"Aderrasi - What cannot be",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-what-cannot-be.milk"},vt={name:"Aderrasi - Kevlar Tunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-tunnel.milk"},bt={name:"Aderrasi - Kevlar Ore Deposit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-ore-deposit.milk"},wt={name:"Aderrasi - Kevlar Abyss",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-abyss.milk"},St={name:"Aderrasi - Curse of the Mirror Emu",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-curse-of-the-mirror-emu.milk"},Tt={tf1p4d:ye,Wxum6n:ge,dLgCse:fe,MVi179:xe,GhBm5e:ve,npT2uv:be,kOzc0s:we,I9ooYK:Se,RDy6sq:Te,Kf91oH:Ee,uNXJWh:Re,"96nqCN":{name:"Mig_061",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-061.milk"},uioEhi:Me,qaHSMU:Ge,"5vMLPd":{name:"Telek - Sine Wave",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-sine-wave.milk"},"9up6f0":{name:"Rovastar - Tripmaker",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-tripmaker.milk"},Az8g8u:Ae,KeuU8h:Ce,tCVMll:Pe,"0QA4xS":{name:"Rovastar + Rocke - Sugar Spun Sister",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister-2.milk"},Lrc5R0:De,d8pa1M:Ie,UMZdqF:Be,uX6UbW:Fe,xWFt5r:Le,"0EqR07":{name:"Krash + Illusion - Spiral Movement",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-illusion-spiral-movement.milk"},Q8GYVn:Ue,"21EsIq":{name:"Idiot - When I Get Bored",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-when-i-get-bored.milk"},ev6vIF:Ne,rsaa2P:Ve,RWvefs:Oe,S6FOvB:We,tjl532:qe,"60PO4U":{name:"Geiss - Inkblot",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-inkblot.milk"},SeVaRS:je,jDL6Sw:Xe,Ajw1Df:He,GQhtQW:ze,B1T3U8:Ke,pxJwLi:Ye,JPtzJM:Je,tWskpA:Ze,g5ZlWy:$e,eq9Qbc:Qe,tIMqOl:er,JsqzWG:rr,eZrZ4U:sr,W8R0Yc:or,dHmr2t:ir,N6KSf3:tr,LkZ5ho:lr,TXLytI:ar,gzetxX:nr,ALj3eW:ur,cldl8y:cr,sm0xFa:mr,hdJKtV:dr,yES2AZ:pr,Ko6Ekq:kr,Apnvzf:_r,iMXDEP:hr,jviFEg:yr,aavCbG:gr,jPnBOy:fr,Rc2xnL:xr,YCR4TG:vr,SKyUN4:br,fNsmHM:wr,kFMyOd:Sr,bDifaZ:Tr,xr8pYG:Er,Eokjpa:Rr,REYygJ:Mr,gPB8Ba:Gr,cfZG0z:Ar,oIQu1w:Cr,sifRsK:Pr,"4GwcDg":{name:"flexi + geiss - pogo-cubes on tokamak matter [mind over matter remix]2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-geiss-pogo-cubes-on-tokamak-matter-mind-over-matter-remix-2.milk"},o26wbv:Dr,v91g2p:Ir,sOX9Ne:Br,"4oZk7A":{name:"fiShbRaiN + geiss - witchcraft (Glow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-glow-mix.milk"},"29G3qf":{name:"fed - slowfast 1.1 (geiss composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fed-slowfast-1-1-geiss-composite-remix.milk"},lY8xa0:Fr,"7BOBGh":{name:"beta106i - Brilliance (Space-Time Breaking) - mash0000 - it's 2009 and you haven't replaced your analog tv with digital",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/beta106i-brilliance-space-time-breaking-mash0000-it-s-2009-and-you-haven-t.milk"},Y8m1Pt:Lr,x5qk8x:Ur,xDUeFe:Nr,MHYnjw:Vr,V08viA:Or,M1IT0g:Wr,"8e8JOa":{name:"Vovan + Geiss - Bass With Flover (Feedback Mix 2b)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-2b.milk"},lYoBpw:qr,boFs3y:jr,lIr7aL:Xr,HxWqlq:Hr,CzBdsd:zr,WjkAlB:Kr,Go59jW:Yr,"7OsvAQ":{name:"Mig_146",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-146.milk"},zmfXPk:Jr,e6sfNW:Zr,jJMXai:$r,OZq2ir:Qr,AtXQ4J:es,iXU9Y5:rs,INkWj7:ss,jDcvmK:os,"21Zqxm":{name:"Mig_010",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-010.milk"},nrnYxI:is,"8240cQ":{name:"Geiss - Reaction Diffusion (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-relief-mix-2.milk"},"4G2P6C":{name:"Geiss - Motion Blur 2 (Relief Mix) c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-relief-mix-c.milk"},dSobTn:ts,LBEy1N:ls,hPOltW:as,"77FD4m":{name:"Zylot - Magma Crawl",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/zylot-magma-crawl.milk"},"1C5DYO":{name:"Zylot - Crossing Over (Geiss Tweak)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/zylot-crossing-over-geiss-tweak.milk"},"3hbbDD":{name:"Vovan + Geiss - Bass With Flover (Feedback Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix.milk"},jcLfPE:ns,pJqkeg:us,H3H6Ev:cs,YDGm7t:ms,"8DTqcj":{name:"TobiasWolfBoi - The Pit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/tobiaswolfboi-the-pit.milk"},laytNQ:ds,QGCZyy:ps,kfORH5:ks,qmp9iC:_s,Qstv6S:hs,"912K5x":{name:"Rovastar - Tripmaker (Space Trip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-tripmaker-space-trip-mix.milk"},"13Ij96":{name:"Rovastar - Starquake (Sunquake Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-starquake-sunquake-mix.milk"},jG9qgt:ys,d1TVbH:gs,"2WNu94":{name:"Rovastar - Inner Thoughts (Frantic Thoughts Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-inner-thoughts-frantic-thoughts-mix.milk"},"6yh3Rt":{name:"Rovastar - Inner Thoughts (Distant Memories Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-inner-thoughts-distant-memories-mix.milk"},R4buQw:fs,XewbUX:xs,zbUD7v:vs,mn6kGh:bs,oZB2yD:ws,EudJTR:Ss,KyGl4e:Ts,"3LVtiu":{name:"Rovastar + Geiss - Snapshot Of Space (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-geiss-snapshot-of-space-lsb-mix.milk"},msMe5T:Es,TUDnFe:Rs,WFzcXl:Ms,CMgQij:Gs,Zuzg4t:As,CqzTGo:Cs,rlxaKq:Ps,A674lj:Ds,L90md1:Is,XrbIZj:Bs,ChEJhr:Fs,"8q0c6X":{name:"Martin - wire dance",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-wire-dance.milk"},cMkHlk:Ls,A63DaM:Us,ok4OA3:Ns,bgEwSc:Vs,Jzp5v8:Os,d9BWoH:Ws,Xvmwb5:qs,WIz7uW:js,oByLJj:Xs,"5da6qp":{name:"Goody - LSD Zoomtunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-lsd-zoomtunnel.milk"},VcUWDG:Hs,"6C79Ic":{name:"Geiss - Trampoline",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-trampoline.milk"},g39XvK:zs,prHVsY:Ks,UBZwV5:Ys,BRkffY:Js,v8bC4n:Zs,oqxj1M:$s,CHdpMB:Qs,gO8YZM:eo,G3mP9Z:ro,"1bVovV":{name:"Geiss - Rose 4 Shifted Tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-shifted-tiles.milk"},eug6vI:so,lntbPv:oo,vVX8fr:io,ot9bHP:to,iManzA:lo,sWDfCG:ao,CrLXt2:no,JIKDwH:uo,EBKwMD:co,duEqhk:mo,W7bEj3:po,NXQivi:ko,Hzvvbb:_o,"7GqSRQ":{name:"Geiss - Mosaic Octopus",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mosaic-octopus.milk"},ubVJL4:ho,UN6OBT:yo,"85CTzj":{name:"Geiss - MicroCheckers 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-microcheckers-2.milk"},Ej4WWj:go,aPqQbc:fo,bU0fR9:xo,"383gqZ":{name:"Geiss - Liquid Beats (janky ripple warp reflecto)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-janky-ripple-warp-reflecto.milk"},"5OYa4O":{name:"Geiss - Kaleidoscope 1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-kaleidoscope-1.milk"},bpSfLm:vo,zR06bi:bo,pUwwK2:wo,x35qdS:So,NOm3NC:To,y0QSRA:Eo,"1a2niA":{name:"Geiss - Game of Life 2b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life-2b.milk"},"9c1K6i":{name:"Geiss - Flower",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-flower.milk"},"3usf92":{name:"Geiss - Flower Blossom",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-flower-blossom.milk"},Z6UbQa:Ro,Rwa9ja:Mo,Qze1QX:Go,kBnBI0:Ao,"0pIFgC":{name:"Geiss - Diffuser (Gold Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-diffuser-gold-mix.milk"},tRyAth:Co,"8FhWXx":{name:"Geiss - Dancing Spirits",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-dancing-spirits.milk"},JZ6Wvh:Po,ZmiGje:Do,IsUYYO:Io,bRxPDX:Bo,Qy8in2:Fo,TcZGam:Lo,"5Yo7Jr":{name:"Geiss - Cosmic Dust 2 - Game of Life mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-game-of-life-mix.milk"},o9k7m7:Uo,"8fSxEp":{name:"Geiss - Confetti (color saturation boosted)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-confetti-color-saturation-boosted.milk"},"0LFkiK":{name:"Geiss - Color Pox (Van Gogh Mix) (color saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-van-gogh-mix-color-saturation-remix.milk"},VJQq6c:No,XmUCRN:Vo,Ksg664:Oo,j1nkP3:Wo,ks2aOS:qo,tarJU2:jo,Fj7fE6:Xo,wxHegg:Ho,"7yfapd":{name:"Geiss - 3 layers",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers.milk"},iBsVaJ:zo,"6s6AOK":{name:"Geiss - 3 layers (Rayleigh Scattering Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-rayleigh-scattering-mix.milk"},Sgpe4q:Ko,NEiYVo:Yo,hcBhUY:Jo,NTtk5V:Zo,vqgPdG:$o,OJEl9R:Qo,b594l9:ei,n19hhD:ri,ffCuEd:si,xD7sMo:oi,"7t90G5":{name:"Flexi - hue burst",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-hue-burst.milk"},VIsedw:ii,w4P8w9:ti,eSScUv:li,q8XM4Q:ai,JmIcYJ:ni,TMC3YZ:ui,haCqCh:ci,"164MuB":{name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code.milk"},rUYLuL:mi,uKnfXj:di,LXox04:pi,qIKWxc:ki,"1JVMxZ":{name:"Eo.S. + Phat - spectrum bubble field",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-spectrum-bubble-field.milk"},aucRFt:_i,xpVOei:hi,j72Wef:yi,HwoUcq:gi,y3PFWY:fi,vCpR86:xi,eYHXtB:vi,"9sJSry":{name:"By Adam FX 2 shifter + geiss - neon pulse (glow mix) + Rovastar + Orb + Mstress - mash0000 - prismatic spectral haze filter",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/by-adam-fx-2-shifter-geiss-neon-pulse-glow-mix-rovastar-orb-mstress-mash0000.milk"},"8yDedA":{name:"Bmelgren + Krash - Rainbow Orb Peacock (Centred Journey Mix 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-krash-rainbow-orb-peacock-centred-journey-mix-2.milk"},GNrYwr:bi,zH4iVV:wi,JYdwqQ:Si,"3HN05o":{name:"Aderrasi - Hackproof - mash0000 - stare at tv static remote viewing technique",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-hackproof-mash0000-stare-at-tv-static-remote-viewing-technique.milk"},G9voNd:Ti,oyNdIT:Ei,RXgbpz:Ri,asrnYp:Mi,"3Tfp2i":{name:"shifter - urchin mod",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-urchin-mod.milk"},nB08bI:Gi,c9cXzV:Ai,N4NU63:Ci,H5hh1F:Pi,X2yAeU:Di,nlD1AF:Ii,NXMegV:Bi,Oogg6s:Fi,"5DnU2L":{name:"martin + flexi - bombyx mori mix2 in the beehive",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-flexi-bombyx-mori-mix2-in-the-beehive.milk"},"0krhfg":{name:"fiShbRaiN - the dark side of the moon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-the-dark-side-of-the-moon.milk"},dqLXQa:Li,qa1I9P:Ui,kh3E8c:Ni,S33oA8:Vi,rzSBzp:Oi,HVjYuU:Wi,Q7zyz5:qi,RvS5Pe:ji,kLtW3v:Xi,"4E2nFx":{name:"Rovastar - Fractopia (Upspoken Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fractopia-upspoken-mix.milk"},gLgxTP:Hi,etGSAU:zi,iBcSFe:Ki,nuozxK:Yi,a16Z3X:Ji,MygiDZ:Zi,TVjhxk:$i,v0ESKE:Qi,"9ZbzfC":{name:"ORB - Waaa",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-waaa-2.milk"},na7R4N:et,VdPJGm:rt,WFaI9w:st,"9eqQnV":{name:"Mstress & Zylot - Acid UFO",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-zylot-acid-ufo.milk"},A3P2IV:ot,qwuNhy:it,"6nFusM":{name:"Geiss - Planar Travel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-planar-travel.milk"},njxMWO:tt,"6hxTDo":{name:"Geiss - Mash-Up 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mash-up-4.milk"},t3xlOK:lt,"75R7sz":{name:"Geiss - Electric Storm Half-Digital 2 (Fiesta Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-electric-storm-half-digital-2-fiesta-mix.milk"},DMJ1SB:at,buwqyb:nt,MjmlTk:ut,t11nN4:ct,bEp10M:mt,FQqWEr:dt,OdtDSl:pt,oABstK:kt,EqarxT:_t,x72Cbv:ht,"9pPWpB":{name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix02b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code-phat-remix02b.milk"},I2HEKG:yt,jjjX2L:gt,mnQbLP:ft,rZaP5M:xt,xxpUNA:vt,twWyLm:bt,Yu9GG8:wt,d3BbId:St},I="prism.graph/0.1";function H(t){return t.split(".")[0]}function z(t,e){return Object.entries(t.nodes).filter(([,s])=>H(s.type)===e)}function Et(t,e,s=2.5){return{schema:I,id:`g_${Math.random().toString(36).slice(2,10)}`,intent:e,nodes:{audio_in:{type:"signal.audio",params:{}},main:{type:"lf.milkdrop",params:{preset_name:t,blend_seconds:s},inputs:{audio:"audio_in.signal"}},out:{type:"sink.display",inputs:{frame:"main.frame"}}},output:"out"}}const K=Tt;function Y(t){return K[t]??null}function Rt(){return Object.keys(K)}function J(t){const e=Y(t);return e?Mt(t,e):null}function Mt(t,e){const s={};let o;e.source_type==="shadertoy"?(o="lf.shadertoy",e.source_url&&(s.shader_url=e.source_url),e.default_image&&(s.image_url=e.default_image)):(o="lf.milkdrop",e.source_loader==="url"&&e.source_url?s.preset_url=e.source_url:e.source_ref&&(s.preset_name=e.source_ref));const r={audio:{type:"signal.audio"},main:{type:o,params:s,inputs:{audio:"audio.signal"}},screen:{type:"sink.display",inputs:{frame:"main.frame"}}};return{schema:I,id:`g:${t}`,intent:e.name,nodes:r,output:"screen"}}class Z{constructor(e){i(this,"active",null);this.ctx=e}apply(e,s){var l,a,c,n,u,h,v;const o=z(e,"lf");if(o.length===0)return{ok:!1,error:"graph has no light-field generator"};const[,r]=o[0];if(r.type==="lf.milkdrop"){const m=(l=r.params)==null?void 0:l.preset_name,f=(a=r.params)==null?void 0:a.preset_url,w=s??(typeof((c=r.params)==null?void 0:c.blend_seconds)=="number"?r.params.blend_seconds:2.5);if(this.ctx.setActiveBackend("milkdrop"),typeof f=="string")return this.ctx.milkdrop.loadFromUrl(f,w).catch(k=>{console.warn("[runtime] milkdrop loadFromUrl failed:",k.message)}),this.active=e,{ok:!0,presetName:((n=f.split("/").pop())==null?void 0:n.replace(/\.milk$/,""))??f,backend:"milkdrop"};if(typeof m!="string")return{ok:!1,error:"lf.milkdrop missing preset_name or preset_url"};const y=this.ctx.milkdrop.loadByName(m,w);return y===null?{ok:!1,error:`preset not found: ${m}`}:(this.active=e,{ok:!0,presetName:y,backend:"milkdrop"})}if(r.type==="lf.shadertoy"){const m=(u=r.params)==null?void 0:u.shader_url;if(typeof m!="string")return{ok:!1,error:"lf.shadertoy missing shader_url"};const f=(h=r.params)==null?void 0:h.image_url;return this.ctx.setActiveBackend("shadertoy"),this.ctx.shadertoy.loadFromUrl(m).catch(y=>{console.warn("[runtime] shadertoy loadFromUrl failed:",y.message)}),this.ctx.shadertoy.bindImage(typeof f=="string"?f:null).catch(y=>{console.warn("[runtime] shadertoy bindImage failed:",y.message)}),this.active=e,{ok:!0,presetName:((v=m.split("/").pop())==null?void 0:v.replace(/\.glsl$/,""))??m,backend:"shadertoy"}}return{ok:!1,error:`unsupported lf type: ${r.type}`}}get current(){return this.active}}class ${constructor(e){i(this,"ctx");i(this,"output");i(this,"voices",[]);i(this,"analyser");i(this,"fft");i(this,"beatTimer",null);i(this,"mutationTimer",null);i(this,"stopped",!1);i(this,"lastCursorBeatAt",0);this.ctx=e,this.output=e.createGain(),this.output.gain.value=.65;const s=[[50,"sine",.55,.06,18],[110,"sine",.4,.09,24],[230,"triangle",.28,.12,60],[460,"sawtooth",.18,.17,140],[950,"triangle",.12,.21,280],[1900,"sine",.08,.27,520],[3900,"triangle",.05,.33,1100]];for(const[o,r,l,a,c]of s)this.addVoice(o,r,l,a,c);this.analyser=e.createAnalyser(),this.analyser.fftSize=256,this.analyser.smoothingTimeConstant=.78,this.output.connect(this.analyser),this.fft=new Uint8Array(this.analyser.frequencyBinCount),this.scheduleBeats(),this.scheduleMutations()}getOutput(){return this.output}readEnergy(){if(this.stopped)return 0;this.analyser.getByteFrequencyData(this.fft);let e=0;for(let s=0;s<this.fft.length;s++)e+=this.fft[s];return e/255/this.fft.length}readBands(){if(this.stopped)return{bass:0,mid:0,treble:0};this.analyser.getByteFrequencyData(this.fft);const e=this.fft.length,s=Math.floor(e*.1),o=Math.floor(e*.45);let r=0,l=0,a=0;for(let c=0;c<e;c++){const n=this.fft[c]/255;c<s?r+=n:c<o?l+=n:a+=n}return{bass:r/Math.max(1,s),mid:l/Math.max(1,o-s),treble:a/Math.max(1,e-o)}}stop(){if(!this.stopped){this.stopped=!0,this.beatTimer!=null&&clearTimeout(this.beatTimer),this.mutationTimer!=null&&clearTimeout(this.mutationTimer);for(const e of this.voices){try{e.osc.stop(),e.lfo.stop()}catch{}try{e.osc.disconnect(),e.lfo.disconnect(),e.lfoGain.disconnect(),e.gain.disconnect()}catch{}}try{this.output.disconnect()}catch{}try{this.analyser.disconnect()}catch{}}}addVoice(e,s,o,r,l){const a=this.ctx,c=a.createOscillator();c.frequency.value=e,c.type=s;const n=a.createGain();n.gain.value=o,c.connect(n).connect(this.output);const u=a.createOscillator();u.frequency.value=r,u.type="sine";const h=a.createGain();h.gain.value=l,u.connect(h).connect(c.frequency),u.start(),c.start();const v=e<200?"bass":e<1100?"mid":"treble";this.voices.push({base:e,baseGain:o,band:v,osc:c,lfo:u,lfoGain:h,gain:n})}setCursorModulation(e,s,o){if(this.stopped)return;const r=this.ctx.currentTime,l=.12,a=Math.max(0,Math.min(1,e)),c=Math.max(0,Math.min(1,s)),n=Math.max(0,Math.min(1,o)),u=.55+(1-c)*.9+n*.15,h=.55+a*.9+n*.2,v=.7+n*.7;for(const m of this.voices){const f=m.band==="bass"?m.baseGain*u:m.band==="treble"?m.baseGain*h:m.baseGain*v;m.gain.gain.cancelScheduledValues(r),m.gain.gain.setValueAtTime(m.gain.gain.value,r),m.gain.gain.linearRampToValueAtTime(f,r+l)}if(n>.45&&r-this.lastCursorBeatAt>.22){const m=.95+n*.45;this.output.gain.cancelScheduledValues(r),this.output.gain.setValueAtTime(this.output.gain.value,r),this.output.gain.linearRampToValueAtTime(m,r+.035),this.output.gain.exponentialRampToValueAtTime(.52,r+.22),this.lastCursorBeatAt=r}}pulseBeat(e=.8){if(this.stopped)return;const s=this.ctx.currentTime,o=Math.max(0,Math.min(1,e)),r=.95+o*.55;this.output.gain.cancelScheduledValues(s),this.output.gain.setValueAtTime(this.output.gain.value,s),this.output.gain.linearRampToValueAtTime(r,s+.035),this.output.gain.exponentialRampToValueAtTime(.42,s+.26);for(const l of this.voices){if(l.band!=="bass")continue;const a=l.baseGain*(1.6+o*1.4);l.gain.gain.cancelScheduledValues(s),l.gain.gain.setValueAtTime(l.gain.gain.value,s),l.gain.gain.linearRampToValueAtTime(a,s+.025),l.gain.gain.exponentialRampToValueAtTime(Math.max(.01,l.baseGain),s+.34)}}scheduleBeats(){const e=()=>{if(this.stopped)return;const s=this.ctx.currentTime,o=.95+Math.random()*.35;this.output.gain.cancelScheduledValues(s),this.output.gain.setValueAtTime(this.output.gain.value,s),this.output.gain.linearRampToValueAtTime(o,s+.04),this.output.gain.exponentialRampToValueAtTime(.45,s+.28);const r=600+Math.random()*1e3;this.beatTimer=window.setTimeout(e,r)};this.beatTimer=window.setTimeout(e,900)}scheduleMutations(){const e=()=>{if(this.stopped)return;const s=this.voices[Math.floor(Math.random()*this.voices.length)],o=this.ctx.currentTime,r=.65+Math.random()*.7,l=Math.max(20,Math.min(6e3,s.base*r));s.osc.frequency.cancelScheduledValues(o),s.osc.frequency.setValueAtTime(s.osc.frequency.value,o),s.osc.frequency.linearRampToValueAtTime(l,o+7.5),s.base=l,this.mutationTimer=window.setTimeout(e,18e3+Math.random()*16e3)};this.mutationTimer=window.setTimeout(e,6e3)}}class Gt{constructor(e){i(this,"audioCtx");i(this,"synth");i(this,"milkdrop");i(this,"shadertoy");i(this,"runtime");i(this,"activeBackend","milkdrop");i(this,"milkdropCanvas");i(this,"shadertoyCanvas");i(this,"ownsAudioCtx");i(this,"defaultHoldSeconds");i(this,"currentSlideshow",null);i(this,"currentVideo",null);i(this,"currentStream",null);i(this,"currentAudioOwnedStream",null);const s=At(e.container);if(this.audioCtx=e.audioCtx??new AudioContext,this.ownsAudioCtx=e.audioCtx===void 0,this.defaultHoldSeconds=e.holdSeconds??6,this.synth=new $(this.audioCtx),this.milkdropCanvas=O("milkdrop"),this.shadertoyCanvas=O("shadertoy"),this.shadertoyCanvas.classList.add("bg-canvas--hidden"),s.appendChild(this.milkdropCanvas),s.appendChild(this.shadertoyCanvas),this.milkdrop=q(this.audioCtx,this.milkdropCanvas,this.synth.getOutput(),e.onReady,{initialPresetName:e.initialPresetName}),this.shadertoy=j(this.audioCtx,this.shadertoyCanvas,this.synth.getOutput()),e.defaultImage&&this.shadertoy.bindImage(e.defaultImage).catch(o=>{var r;(r=e.onError)==null||r.call(e,o)}),this.runtime=new Z({milkdrop:this.milkdrop,shadertoy:this.shadertoy,setActiveBackend:o=>this.setActiveBackend(o)}),e.graph!==void 0){const o=this.load(e.graph);!o.ok&&e.onError&&e.onError(new Error(o.error??"graph apply failed"))}e.audio!==void 0&&this.connectAudio(e.audio).catch(o=>{var r;return(r=e.onError)==null?void 0:r.call(e,o)}),e.image!==void 0&&this.connectImage(e.image).catch(o=>{var r;return(r=e.onError)==null?void 0:r.call(e,o)})}load(e,s){if(typeof e=="string"){const o=J(e);return o?this.runtime.apply(o,s):{ok:!1,error:`unknown short_id: ${e}`}}return this.runtime.apply(e,s)}async connectAudio(e){const{node:s,owned:o}=await this.resolveAudioNode(e);return this.milkdrop.connectAudio(s),this.shadertoy.connectAudio(s),this.currentAudioOwnedStream=o,s}disconnectAudio(){if(this.currentAudioOwnedStream){for(const s of this.currentAudioOwnedStream.getTracks())s.stop();this.currentAudioOwnedStream=null}const e=this.synth.getOutput();this.milkdrop.connectAudio(e),this.shadertoy.connectAudio(e)}setLiveSource(e){this.shadertoy.setLiveSource(e)}async connectImage(e){if(this.teardownImageFeed(),typeof e=="string"){if(e==="webcam"){const s=await navigator.mediaDevices.getUserMedia({video:!0,audio:!1});this.bindStream(s);return}if(e==="tab"){const s=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});this.bindStream(s);return}this.setLiveSource(null),await this.shadertoy.bindImage(e);return}if(Array.isArray(e)){const s=new X(e,{holdSeconds:this.defaultHoldSeconds});this.currentSlideshow=s,this.setLiveSource(s.canvas);return}if(e instanceof MediaStream){this.bindStream(e);return}this.setLiveSource(e)}disconnectImage(){this.teardownImageFeed()}setActiveBackend(e){this.activeBackend=e,e==="milkdrop"?(this.milkdropCanvas.classList.remove("bg-canvas--hidden"),this.milkdropCanvas.classList.add("bg-canvas--active"),this.shadertoyCanvas.classList.add("bg-canvas--hidden"),this.shadertoyCanvas.classList.remove("bg-canvas--active")):(this.shadertoyCanvas.classList.remove("bg-canvas--hidden"),this.shadertoyCanvas.classList.add("bg-canvas--active"),this.milkdropCanvas.classList.add("bg-canvas--hidden"),this.milkdropCanvas.classList.remove("bg-canvas--active"))}destroy(){if(this.teardownImageFeed(),this.currentAudioOwnedStream){for(const e of this.currentAudioOwnedStream.getTracks())e.stop();this.currentAudioOwnedStream=null}this.milkdrop.destroy(),this.shadertoy.destroy(),this.synth.stop(),this.milkdropCanvas.remove(),this.shadertoyCanvas.remove(),this.ownsAudioCtx&&this.audioCtx.close()}bindStream(e){const s=document.createElement("video");s.srcObject=e,s.autoplay=!0,s.muted=!0,s.playsInline=!0,s.play().catch(()=>{}),this.currentVideo=s,this.currentStream=e,this.setLiveSource(s)}teardownImageFeed(){if(this.currentSlideshow&&(this.currentSlideshow.destroy(),this.currentSlideshow=null),this.currentStream){for(const e of this.currentStream.getTracks())e.stop();this.currentStream=null}this.currentVideo&&(this.currentVideo.srcObject=null,this.currentVideo=null),this.setLiveSource(null)}async resolveAudioNode(e){if(e instanceof AudioNode)return{node:e,owned:null};let s,o=!1;return e instanceof MediaStream?s=e:e==="mic"?(s=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1}),o=!0):(s=await navigator.mediaDevices.getDisplayMedia({audio:!0,video:!1}),o=!0),{node:this.audioCtx.createMediaStreamSource(s),owned:o?s:null}}}function At(t){if(typeof t!="string")return t;const e=document.getElementById(t);if(!e)throw new Error(`PrismPlayer: no element found with id "${t}"`);return e}function O(t){const e=document.createElement("canvas");return e.id=t,e.className="bg-canvas",e.setAttribute("aria-hidden","true"),e}class Ct{constructor(e={}){i(this,"element");i(this,"mount");i(this,"className");i(this,"thumbW");i(this,"thumbH");i(this,"thumbMargin",16);i(this,"statusBarH");i(this,"minVisible");i(this,"minWidth");i(this,"minHeight");i(this,"onChange");i(this,"_rect");i(this,"_collapsed",!1);i(this,"uncollapsedRect",null);i(this,"drag",null);i(this,"destroyed",!1);i(this,"onWindowResize",()=>{this._collapsed&&(this._rect=this.thumbRect(),this.applyRectToDom(),this.emit())});i(this,"onPointerDown",e=>{const s=e.target;if(!s.closest(`.${this.className}__collapse`)){if(this._collapsed){e.preventDefault(),this.expand(),this.emit();return}e.preventDefault(),this.element.setPointerCapture(e.pointerId),this.drag={startCard:{...this._rect},startPointer:{x:e.clientX,y:e.clientY},handle:s.classList.contains(`${this.className}__handle`)?s.dataset.handle??null:null}}});i(this,"onPointerMove",e=>{if(!this.drag)return;e.preventDefault();const s=e.clientX-this.drag.startPointer.x,o=e.clientY-this.drag.startPointer.y,r=this.drag.startCard,l=this.drag.handle;if(l===null)this._rect=this.clampRect({x:r.x+s,y:r.y+o,w:r.w,h:r.h});else{let a=r.x,c=r.y,n=r.w,u=r.h;l.includes("r")&&(n=Math.max(this.minWidth,r.w+s)),l.includes("l")&&(n=Math.max(this.minWidth,r.w-s),a=r.x+(r.w-n)),l.includes("b")&&(u=Math.max(this.minHeight,r.h+o)),l.includes("t")&&(u=Math.max(this.minHeight,r.h-o),c=r.y+(r.h-u)),this._rect={x:a,y:c,w:n,h:u}}this.applyRectToDom(),this.emit()});i(this,"onPointerEnd",e=>{if(this.drag){try{this.element.releasePointerCapture(e.pointerId)}catch{}this.drag=null}});this.mount=e.mount??document.body,this.className=e.className??"prism-overlay",this.thumbW=e.thumbWidth??200,this.thumbH=this.thumbW*(9/16),this.minVisible=e.minVisible??60,this.statusBarH=e.topMargin??36,this.minWidth=e.minWidth??80,this.minHeight=e.minHeight??45,this.onChange=e.onChange,this._rect=e.initialRect??this.defaultRect(),this.element=this.buildDom(),this.mount.appendChild(this.element),this.applyRectToDom(),window.addEventListener("resize",this.onWindowResize,{passive:!0})}get rect(){return{...this._rect}}isCollapsed(){return this._collapsed}setRect(e){this._rect={...e},this.applyRectToDom()}collapse(){this._collapsed||(this.uncollapsedRect={...this._rect},this._rect=this.thumbRect(),this._collapsed=!0,this.element.setAttribute("data-collapsed",""),this.applyRectToDom())}expand(){this._collapsed&&(this._rect=this.uncollapsedRect??this.defaultRect(),this._collapsed=!1,this.element.removeAttribute("data-collapsed"),this.applyRectToDom())}show(){this.element.removeAttribute("data-hidden")}hide(){this.element.setAttribute("data-hidden","")}isVisible(){return!this.element.hasAttribute("data-hidden")}destroy(){this.destroyed||(this.destroyed=!0,window.removeEventListener("resize",this.onWindowResize),this.element.remove())}buildDom(){const e=document.createElement("div");e.className=this.className,e.setAttribute("data-hidden","");const s=document.createElement("button");s.type="button",s.className=`${this.className}__collapse`,s.title="Collapse to thumbnail",s.setAttribute("aria-label","Collapse");const o=document.createElement("span");o.setAttribute("aria-hidden","true"),o.textContent="−",s.appendChild(o),s.addEventListener("click",r=>{r.stopPropagation(),this.collapse(),this.emit()}),e.appendChild(s);for(const r of["tl","tr","bl","br"]){const l=document.createElement("span");l.className=`${this.className}__handle ${this.className}__handle--${r}`,l.dataset.handle=r,l.setAttribute("aria-hidden","true"),e.appendChild(l)}return e.addEventListener("pointerdown",this.onPointerDown),e.addEventListener("pointermove",this.onPointerMove),e.addEventListener("pointerup",this.onPointerEnd),e.addEventListener("pointercancel",this.onPointerEnd),e}applyRectToDom(){const e=this._rect;this.element.style.left=`${e.x}px`,this.element.style.top=`${e.y}px`,this.element.style.width=`${e.w}px`,this.element.style.height=`${e.h}px`}emit(){var e;(e=this.onChange)==null||e.call(this,{rect:{...this._rect},collapsed:this._collapsed})}defaultRect(){const e=window.innerWidth,s=window.innerHeight,o=e*.58,r=Math.min(o*(9/16),s*.54);return{x:(e-o)/2,y:s*.16,w:o,h:r}}thumbRect(){return{x:window.innerWidth-this.thumbW-this.thumbMargin,y:this.statusBarH+this.thumbMargin,w:this.thumbW,h:this.thumbH}}clampRect(e){return{x:Math.max(-(e.w-this.minVisible),Math.min(window.innerWidth-this.minVisible,e.x)),y:Math.max(this.statusBarH,Math.min(window.innerHeight-this.minVisible,e.y)),w:e.w,h:e.h}}}exports.GraphRuntime=Z;exports.HeadlessSlideshow=X;exports.ImageOverlay=Ct;exports.PrismPlayer=Gt;exports.SCHEMA_VERSION=I;exports.SyntheticSignal=$;exports.createMilkdropBackground=q;exports.createShadertoyBackground=j;exports.lookup=Y;exports.makeMilkdropGraph=Et;exports.nodesByRole=z;exports.roleOf=H;exports.shortIdToGraph=J;exports.shortIds=Rt;
|
|
36
|
+
`)}function ee(d){const p=A(r.VERTEX_SHADER,me),g=A(r.FRAGMENT_SHADER,de+d+pe),_=r.createProgram();if(r.attachShader(_,p),r.attachShader(_,g),r.linkProgram(_),!r.getProgramParameter(_,r.LINK_STATUS)){const S=r.getProgramInfoLog(_)??"(no log)";throw r.deleteShader(p),r.deleteShader(g),r.deleteProgram(_),new Error(`Shader link error: ${S}`)}return r.deleteShader(p),r.deleteShader(g),_}function B(){if(!G)return;const d=performance.now(),p=(d-R)*.001,g=(d-k)*.001;if(k=d,v++,c.getByteFrequencyData(n),r.bindTexture(r.TEXTURE_2D,u),r.texImage2D(r.TEXTURE_2D,0,r.R8,256,1,0,r.RED,r.UNSIGNED_BYTE,n),y&&(y instanceof HTMLCanvasElement?y.width>0&&y.height>0:y.readyState>=2)){r.bindTexture(r.TEXTURE_2D,h),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0);try{r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,y)}catch{}r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1)}if(m){r.useProgram(m);const _=S=>r.getUniformLocation(m,S);r.uniform1f(_("iTime"),p),r.uniform1f(_("iTimeDelta"),g),r.uniform1i(_("iFrame"),v),r.uniform3f(_("iResolution"),e.width,e.height,1),r.uniform4f(_("iMouse"),b,e.height-C,M?1:0,0),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,u),r.uniform1i(_("iChannel0"),0),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,h),r.uniform1i(_("iChannel1"),1),r.bindVertexArray(x),r.drawArrays(r.TRIANGLES,0,3)}else r.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT);requestAnimationFrame(B)}requestAnimationFrame(B);const F=()=>l(window.innerWidth,window.innerHeight),L=d=>{b=d.clientX,C=d.clientY},U=()=>{M=!0},N=()=>{M=!1};return window.addEventListener("resize",F,{passive:!0}),window.addEventListener("pointermove",L,{passive:!0}),window.addEventListener("pointerdown",U,{passive:!0}),window.addEventListener("pointerup",N,{passive:!0}),{get presetName(){return w},get currentUrl(){return f},connectAudio:d=>{a.disconnect(),a=d,a.connect(c)},loadFromUrl:async d=>{var S;const p=await fetch(d);if(!p.ok)throw new Error(`fetch ${d} → ${p.status}`);const g=await p.text(),_=ee(g);return m&&r.deleteProgram(m),m=_,f=d,w=((S=d.split("/").pop())==null?void 0:S.replace(/\.glsl$/,""))??d,w},setLiveSource:d=>{y=d},bindImage:async d=>{if(!d){r.bindTexture(r.TEXTURE_2D,h),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,new Uint8Array([32,32,38,255]));return}const p=new Image;p.crossOrigin="anonymous",await new Promise((_,S)=>{p.onload=()=>_(),p.onerror=()=>S(new Error(`image load failed: ${d}`)),p.src=d}),r.bindTexture(r.TEXTURE_2D,h),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,p),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),(p.naturalWidth&p.naturalWidth-1)===0&&(p.naturalHeight&p.naturalHeight-1)===0?(r.generateMipmap(r.TEXTURE_2D),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR_MIPMAP_LINEAR)):r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR)},destroy:()=>{G=!1,window.removeEventListener("resize",F),window.removeEventListener("pointermove",L),window.removeEventListener("pointerdown",U),window.removeEventListener("pointerup",N),m&&r.deleteProgram(m),r.deleteTexture(u),r.deleteTexture(h),r.deleteVertexArray(x)}}}const ke=6,_e=1,E=1280,T=720;class X{constructor(e,s={}){i(this,"canvas");i(this,"ctx");i(this,"urls");i(this,"holdMs");i(this,"images");i(this,"currentIndex",0);i(this,"nextIndex",1);i(this,"crossfadeStartMs",null);i(this,"holdTimer",null);i(this,"rafHandle",null);i(this,"destroyed",!1);if(e.length===0)throw new Error("HeadlessSlideshow: urls list cannot be empty");this.urls=e,this.holdMs=Math.max(.5,s.holdSeconds??ke)*1e3,this.canvas=document.createElement("canvas"),this.canvas.width=E,this.canvas.height=T;const o=this.canvas.getContext("2d");if(!o)throw new Error("HeadlessSlideshow: 2D canvas context unavailable");this.ctx=o,this.images=e.map(()=>null),this.preload()}destroy(){this.destroyed=!0,this.holdTimer!=null&&clearTimeout(this.holdTimer),this.rafHandle!=null&&cancelAnimationFrame(this.rafHandle)}async preload(){const e=this.urls.map((s,o)=>he(s).then(r=>{this.destroyed||(this.images[o]=r,o===0&&this.start())},r=>{console.warn(`[/prism] image-feed: ${s} → ${r.message}`)}));await Promise.allSettled(e)}start(){this.destroyed||(this.drawFrame(),this.scheduleNext())}scheduleNext(){this.destroyed||(this.holdTimer=window.setTimeout(()=>this.advance(),this.holdMs))}advance(){if(this.destroyed)return;let e=(this.currentIndex+1)%this.urls.length;for(let s=0;s<this.urls.length&&!this.images[e];s++)e=(e+1)%this.urls.length;if(e===this.currentIndex){this.scheduleNext();return}this.nextIndex=e,this.crossfadeStartMs=performance.now(),this.rafHandle=requestAnimationFrame(()=>this.tickCrossfade())}tickCrossfade(){if(this.destroyed||this.crossfadeStartMs==null)return;const e=(performance.now()-this.crossfadeStartMs)/1e3/_e;if(e>=1){this.currentIndex=this.nextIndex,this.crossfadeStartMs=null,this.drawFrame(),this.scheduleNext();return}this.drawCrossfade(e),this.rafHandle=requestAnimationFrame(()=>this.tickCrossfade())}drawFrame(){const e=this.images[this.currentIndex];e&&(this.ctx.fillStyle="#000",this.ctx.fillRect(0,0,E,T),D(this.ctx,e,E,T))}drawCrossfade(e){const s=this.images[this.currentIndex],o=this.images[this.nextIndex];this.ctx.fillStyle="#000",this.ctx.fillRect(0,0,E,T),s&&D(this.ctx,s,E,T),o&&(this.ctx.save(),this.ctx.globalAlpha=e,D(this.ctx,o,E,T),this.ctx.restore())}}function he(t){return new Promise((e,s)=>{const o=new Image;o.crossOrigin="anonymous",o.onload=()=>e(o),o.onerror=()=>s(new Error(`image load failed: ${t}`)),o.src=t})}function D(t,e,s,o){const r=e.naturalWidth/e.naturalHeight,l=s/o;let a=0,c=0,n=e.naturalWidth,u=e.naturalHeight;r>l?(n=e.naturalHeight*l,a=(e.naturalWidth-n)/2):(u=e.naturalWidth/l,c=(e.naturalHeight-u)/2),t.drawImage(e,a,c,n,u,0,0,s,o)}const ye={name:"shifter - spincycle c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-spincycle-c.milk"},ge={name:"phat + Eo.S. - TesellatingFractal_Mix3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-tesellatingfractal-mix3.milk"},fe={name:"phat + Eo.S. - TesellatingFractal_Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-tesellatingfractal-mix.milk"},ve={name:"phat + Eo.S. - 2ct2V5",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-2ct2v5.milk"},xe={name:"nil - Vortex of Vortices",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/nil-vortex-of-vortices.milk"},be={name:"mstress - Scattered gravity (Smoked mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-scattered-gravity-smoked-mix.milk"},we={name:"mstress - Cleaning a path - Painterly Crossfire",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-cleaning-a-path-painterly-crossfire.milk"},Se={name:"fiShbRaiN - the adventures of prismo jenkins",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-the-adventures-of-prismo-jenkins.milk"},Ee={name:"amandio c - new life",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-new-life.milk"},Te={name:"Vovan + Geiss - Bass With Flover (Feedback Mix) 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-3.milk"},Re={name:"Vovan + Geiss - Bass With Flover (Feedback Mix) 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-2.milk"},Me={name:"Unchained - elite vectronics",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-elite-vectronics.milk"},Ge={name:"Telek - Slow Thing (Spiderman Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-slow-thing-spiderman-mix.milk"},Ae={name:"Rovastar + Zylot - Narell's Fever",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-zylot-narell-s-fever.milk"},Ce={name:"Rovastar + Unchained - Ambrosia Mystic (Dark Heart Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-ambrosia-mystic-dark-heart-mix-2.milk"},Pe={name:"Rovastar + Telek - Altars of Madness (Rolling Oceans Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-telek-altars-of-madness-rolling-oceans-mix.milk"},De={name:"Rovastar & Unchained - Unified Drag 2 (Ghostly Vision Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-unified-drag-2-ghostly-vision-mix.milk"},Ie={name:"Rovastar & Rocke - Sugar Spun Sister",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister.milk"},Be={name:"Reenen - phoenix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/reenen-phoenix.milk"},Fe={name:"Phat + Eo.S. - Data_swimmer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-data-swimmer.milk"},Le={name:"Krash - War Machine (Shifting Complexity Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-war-machine-shifting-complexity-mix.milk"},Ue={name:"Illusion & Boz - Hot Air Balloon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/illusion-boz-hot-air-balloon.milk"},Ne={name:"Geiss - Tokamak Plus Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-painterly.milk"},Ve={name:"Geiss - Tokamak Plus 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-3.milk"},Oe={name:"Geiss - Swirlie 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-swirlie-4.milk"},We={name:"Geiss - Sound And The Fury",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-sound-and-the-fury.milk"},qe={name:"Geiss - Mega Swirl 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mega-swirl-2.milk"},je={name:"Geiss - Cycloid 1 - painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly.milk"},Xe={name:"Geiss - Cycloid 1 - painterly vortex",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly-vortex.milk"},He={name:"Geiss - Cycloid 1 - painterly vortex 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cycloid-1-painterly-vortex-3.milk"},ze={name:"Geiss - Cauldron - painterly 3 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-3-saturation-remix.milk"},Ke={name:"Image Metaball",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-metaball.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA15985%2FPIA15985~medium.jpg"},Ye={name:"Eo.S. - nematodes E daemon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-nematodes-e-daemon.milk"},Je={name:"Eo.S. + Phat - chasers 11 sentinel C_poltergeist_mix response daemon (geiss flicker fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-11-sentinel-c-poltergeist-mix-response-daemon-geiss-flicker.milk"},Ze={name:"Eo.S. + Phat - chasers 11 sentinel C",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-11-sentinel-c.milk"},$e={name:"Che - Terracarbon Stream",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/che-terracarbon-stream.milk"},Qe={name:"Aderrasi - The Lurker (Twin Mix) - Bitcore Tweak",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-the-lurker-twin-mix-bitcore-tweak.milk"},er={name:"Aderrasi - Ghast (Quarter Past Ghast Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-quarter-past-ghast-mix.milk"},rr={name:"Aderrasi - Contortion (Wide Twist Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-contortion-wide-twist-mix.milk"},sr={name:"Aderrasi - Airhandler (Last Breath - Eden)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-last-breath-eden.milk"},or={name:"Aderrasi - Airhandler (Last Breath - Calm)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-last-breath-calm.milk"},ir={name:"Cosmic Flow",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/cosmic-flow.glsl"},tr={name:"Image Pool",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-pool.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA17563%2FPIA17563~medium.jpg"},lr={name:"shifter - glassworms flare",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-glassworms-flare.milk"},ar={name:"shifter - escape the worm - Eo.S. + Phat 5362",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-escape-the-worm-eo-s-phat-5362.milk"},nr={name:"shifter + geiss - neon pulse (glow mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-geiss-neon-pulse-glow-mix.milk"},ur={name:"martin - volcano",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-volcano.milk"},cr={name:"martin - violet flash",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-violet-flash.milk"},mr={name:"martin - soma in pink (Ati Fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-soma-in-pink-ati-fix.milk"},dr={name:"martin - push cx",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-push-cx.milk"},pr={name:"martin - push ax",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-push-ax.milk"},kr={name:"martin - move this body",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-move-this-body.milk"},_r={name:"martin - infinity",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity.milk"},hr={name:"martin - bring up the big guns",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-bring-up-the-big-guns.milk"},yr={name:"martin - another kind of groove",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-another-kind-of-groove.milk"},gr={name:"martin - another kind of groove (Ati Fix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-another-kind-of-groove-ati-fix.milk"},fr={name:"martin - angel flight",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-angel-flight.milk"},vr={name:"martin - Geiss - Psychotic Roulette",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-geiss-psychotic-roulette.milk"},xr={name:"martin + stahlregen - martin in da mash 12a",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-12a.milk"},br={name:"martin + stahlregen - martin in da mash 12",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-12.milk"},wr={name:"idiot - Spectrum",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-spectrum.milk"},Sr={name:"geiss - liquid beats (jelly v4.5)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-jelly-v4-5.milk"},Er={name:"flexi, fishbrain + stahlregen - witchcraft [jelly5.5]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-fishbrain-stahlregen-witchcraft-jelly5-5.milk"},Tr={name:"flexi - what is the matrix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-what-is-the-matrix.milk"},Rr={name:"flexi - lorenz attractor",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-lorenz-attractor.milk"},Mr={name:"flexi - hyperspaceflight (bn cn Jelly 4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-hyperspaceflight-bn-cn-jelly-4.milk"},Gr={name:"flexi - bouncing balls [neon mix]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-bouncing-balls-neon-mix.milk"},Ar={name:"flexi - alien web bouncer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-alien-web-bouncer.milk"},Cr={name:"flexi + stahlregen - jewelry tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-stahlregen-jewelry-tiles.milk"},Pr={name:"flexi + nitorami - beat explorer (cn bc jelly 4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-nitorami-beat-explorer-cn-bc-jelly-4.milk"},Dr={name:"flexi + fishbrain - neon mindblob grafitti",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-fishbrain-neon-mindblob-grafitti.milk"},Ir={name:"fiShbRaiN + geiss - witchcraft (Stahl's Mirror Crossfire Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-stahl-s-mirror-crossfire-mix.milk"},Br={name:"fiShbRaiN + geiss - witchcraft (Grow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-grow-mix.milk"},Fr={name:"beta106i - It's the Sun (Brotherhood of Tears) - mash0000 - vascular chemical allergy",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/beta106i-it-s-the-sun-brotherhood-of-tears-mash0000-vascular-chemical-allergy.milk"},Lr={name:"amandio c - salty beats - spiral",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-salty-beats-spiral.milk"},Ur={name:"amandio c - odd star",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/amandio-c-odd-star.milk"},Nr={name:"geiss_experimental__LSB Bass Cubes",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-experimental-lsb-bass-cubes.milk"},Vr={name:"geiss_experimental__Aderrasi - Kevlar Ore Deposit - geiss core stripe mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-experimental-aderrasi-kevlar-ore-deposit-geiss-core-stripe-mix.milk"},Or={name:"Geiss - Cosmic Dust 2 - Game of Life - zoom mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-game-of-life-zoom-mix.milk"},Wr={name:"Vovan + Geiss - Bass With Flover (Feedback Mix ORIG)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-orig.milk"},qr={name:"Mig_Oscilloscope022",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-oscilloscope022.milk"},jr={name:"Mig_Oscilloscope022 b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-oscilloscope022-b.milk"},Xr={name:"Mig_304 - geiss remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix.milk"},Hr={name:"Mig_304 - geiss remix 3b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-3b.milk"},zr={name:"Mig_304 - geiss remix 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-3.milk"},Kr={name:"Mig_304 - geiss remix 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-304-geiss-remix-2.milk"},Yr={name:"Mig_197b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-197b.milk"},Jr={name:"Mig_120",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-120.milk"},Zr={name:"Mig_091b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-091b.milk"},$r={name:"Mig_091",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-091.milk"},Qr={name:"Mig_085",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-085-2.milk"},es={name:"Mig_082_version2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-082-version2.milk"},rs={name:"Mig_068",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-068.milk"},ss={name:"Mig_036_version3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-036-version3.milk"},os={name:"Mig_032_version3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-032-version3.milk"},is={name:"Martin - wire dance (geiss warp shader mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-wire-dance-geiss-warp-shader-mix.milk"},ts={name:"Geiss - Confetti (Kaleidoscope Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-confetti-kaleidoscope-mix.milk"},ls={name:"Eo.S. - glowsticks v2 02 - Geiss HPF",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-02-geiss-hpf.milk"},as={name:"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-zylot-skylight-stained-glass-majesty-mix-2.milk"},ns={name:"Unchained - Perverted Dialect",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-perverted-dialect.milk"},us={name:"Unchained - Free to Feel (Valium Remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-free-to-feel-valium-remix.milk"},cs={name:"Unchained & Rovastar - Rainbow Obscura",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-rovastar-rainbow-obscura.milk"},ms={name:"Unchained & Rovastar - Luckless",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-rovastar-luckless.milk"},ds={name:"Telek - Directive Swagger (Spectral Inferno) with radial blur",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-directive-swagger-spectral-inferno-with-radial-blur.milk"},ps={name:"Stahlregen - Spiral Beats (Fluctuating Flowers)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-spiral-beats-fluctuating-flowers.milk"},ks={name:"Stahlregen + Unchained - Psychedelic Flower Kung Fu (Corrupt)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-unchained-psychedelic-flower-kung-fu-corrupt.milk"},_s={name:"Stahlregen & Geiss + TobiasWolfBoi - Space Gelatin (Color Xplosion)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-geiss-tobiaswolfboi-space-gelatin-color-xplosion.milk"},hs={name:"Stahlregen & Geiss + TobiasWolfBoi - Space Gelatin (Color Xplosion 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/stahlregen-geiss-tobiaswolfboi-space-gelatin-color-xplosion-2.milk"},ys={name:"Rovastar - Snapshot Of Space",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-snapshot-of-space.milk"},gs={name:"Rovastar - LabFunk",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-labfunk.milk"},fs={name:"Rovastar - Hyperspace",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-hyperspace.milk"},vs={name:"Rovastar - Demon Sunflower (Double Resistance Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-demon-sunflower-double-resistance-mix.milk"},xs={name:"Rovastar + Rocke - Sugar Spun Sister - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister-painterly.milk"},bs={name:"Rovastar + Loadus - FractalDrop (Active Sparks Mix) Steady",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-fractaldrop-active-sparks-mix-steady.milk"},ws={name:"Rovastar + Loadus + Geiss - Tone-mapped FractalDrop",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-tone-mapped-fractaldrop.milk"},Ss={name:"Rovastar + Loadus + Geiss - Tone-mapped FractalDrop 7c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-tone-mapped-fractaldrop-7c.milk"},Es={name:"Rovastar + Loadus + Geiss - FractalDrop (Triple Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-loadus-geiss-fractaldrop-triple-mix.milk"},Ts={name:"Rovastar + Geiss - Bipolar 2 (Vectrip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-geiss-bipolar-2-vectrip-mix.milk"},Rs={name:"Rovastar + Che - Asylum Animations",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-che-asylum-animations.milk"},Ms={name:"Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-fishbrain-eo-s-mandala-chasers-remix.milk"},Gs={name:"ORB - Solar Radiation",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-solar-radiation.milk"},As={name:"ORB - Saturns Rings",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-saturns-rings.milk"},Cs={name:"ORB - Quicksand",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-quicksand.milk"},Ps={name:"ORB - Pastel Primer",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-pastel-primer.milk"},Ds={name:"ORB - Liquid Fire",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-liquid-fire.milk"},Is={name:"ORB - Inferno",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-inferno.milk"},Bs={name:"ORB - Crysal Storm",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-crysal-storm.milk"},Fs={name:"Mstress - Acoustic Nerve Impulses",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-acoustic-nerve-impulses.milk"},Ls={name:"Martin - journey into space",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-journey-into-space.milk"},Us={name:"Martin - charisma",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-charisma.milk"},Ns={name:"Krash - Vinyl Disk",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-vinyl-disk.milk"},Vs={name:"Krash + Rovastar - Rainbow Orb",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-rovastar-rainbow-orb.milk"},Os={name:"Idiot - What Is",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-what-is.milk"},Ws={name:"Goody - Vertigo - revisited",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-vertigo-revisited.milk"},qs={name:"Goody - Unstable Sonic Reactor - Final",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-unstable-sonic-reactor-final.milk"},js={name:"Goody - Need - Gloam",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-need-gloam.milk"},Xs={name:"Goody - Need - Desire remix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-need-desire-remix.milk"},Hs={name:"Geiss - Vortex 2 Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-vortex-2-painterly.milk"},zs={name:"Geiss - Tokamak Plus 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-tokamak-plus-4.milk"},Ks={name:"Geiss - Swirlie 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-swirlie-2.milk"},Ys={name:"Geiss - Smoke Rings",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-smoke-rings.milk"},Js={name:"Geiss - Skin Dots Multi-layer 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-multi-layer-3.milk"},Zs={name:"Geiss - Skin Dots 9",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-9.milk"},$s={name:"Geiss - Skin Dots 11b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-skin-dots-11b.milk"},Qs={name:"Geiss - Rose 5 Crossfire Beats",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats.milk"},eo={name:"Geiss - Rose 5 Crossfire Beats - mash0000 - ill gotten slobber catcher",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats-mash0000-ill-gotten-slobber-catcher.milk"},ro={name:"Geiss - Rose 5 Crossfire Beats (composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-5-crossfire-beats-composite-remix.milk"},so={name:"Geiss - Rose 4 (composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-composite-remix.milk"},oo={name:"Geiss - Rose 4 (bccn Jelly V4)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-bccn-jelly-v4.milk"},io={name:"Geiss - Rose 4 (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-lsb-mix.milk"},to={name:"Geiss - Rose 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-3.milk"},lo={name:"Geiss - Reaction Diffusion (Shifting Sphere Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-shifting-sphere-mix.milk"},ao={name:"Geiss - Reaction Diffusion (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-relief-mix.milk"},no={name:"Geiss - Reaction Diffusion (Puddle Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-puddle-mix.milk"},uo={name:"Geiss - Plasma 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-plasma-2.milk"},co={name:"Geiss - Pistons",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-pistons.milk"},mo={name:"Geiss - Neutron - radial blur 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-neutron-radial-blur-2.milk"},po={name:"Geiss - Motion Blur 2 (Stahl's Neon Jelly 2 RMX)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-stahl-s-neon-jelly-2-rmx.milk"},ko={name:"Geiss - Motion Blur 2 (Reverse Jelly V3)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-reverse-jelly-v3.milk"},_o={name:"Geiss - Motion Blur 2 (Relief Mix 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-relief-mix-2.milk"},ho={name:"Geiss - Mosaic Octopus 7",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mosaic-octopus-7.milk"},yo={name:"Geiss - MicroCheckers 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-microcheckers-3.milk"},go={name:"Geiss - Mega Swirl 3 (color tweak)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mega-swirl-3-color-tweak.milk"},fo={name:"Geiss - Mash-Up 1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mash-up-1.milk"},vo={name:"Geiss - Liquid Beats 2 (Reverse Jelly V3)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-2-reverse-jelly-v3.milk"},xo={name:"Geiss - Iris",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-iris.milk"},bo={name:"Geiss - Iris Storm",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-iris-storm.milk"},wo={name:"Geiss - Hyperion (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-hyperion-lsb-mix.milk"},So={name:"Geiss - Hurricane",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-hurricane.milk"},Eo={name:"Geiss - Game of Life",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life.milk"},To={name:"Geiss - Game of Life 3",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life-3.milk"},Ro={name:"Geiss - Eye of Jupiter",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-eye-of-jupiter.milk"},Mo={name:"Geiss - Downward Spiral - color invert mirror x",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-downward-spiral-color-invert-mirror-x.milk"},Go={name:"Geiss - Digitunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-digitunnel.milk"},Ao={name:"Geiss - Diffuser (Red Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-diffuser-red-mix.milk"},Co={name:"Geiss - Desert Rose 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-desert-rose-4.milk"},Po={name:"Geiss - Dancing Spirits (Bright)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-dancing-spirits-bright.milk"},Do={name:"Geiss - Cosmic Dust 2 - quasistatic noise dual pane window",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-dual-pane-window.milk"},Io={name:"Geiss - Cosmic Dust 2 - quasistatic noise desat trails",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-desat-trails.milk"},Bo={name:"Geiss - Cosmic Dust 2 - quasistatic noise desat trails 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-quasistatic-noise-desat-trails-2.milk"},Fo={name:"Geiss - Cosmic Dust 2 - Trails 7",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-trails-7.milk"},Lo={name:"Geiss - Cosmic Dust 2 - Tiny Reaction Diffusion Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-tiny-reaction-diffusion-mix.milk"},Uo={name:"Geiss - Constant Velocity - angular blur",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-constant-velocity-angular-blur.milk"},No={name:"Geiss - Color Pox (Measles Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-measles-mix.milk"},Vo={name:"Geiss - Color Pox (Acid Impression Mix) (color saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-acid-impression-mix-color-saturation-remix.milk"},Oo={name:"Geiss - Cepia Dither",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cepia-dither.milk"},Wo={name:"Geiss - Cauldron - painterly 5 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-5-saturation-remix.milk"},qo={name:"Geiss - Cauldron - painterly 4 (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-painterly-4-saturation-remix.milk"},jo={name:"Geiss - Casino",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-casino.milk"},Xo={name:"Geiss - All-Spark Sinews",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark-sinews.milk"},Ho={name:"Geiss - All-Spark Polar",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark-polar.milk"},zo={name:"Geiss - 3 layers (Tunnel Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-tunnel-mix.milk"},Ko={name:"Geiss - 3 layers (Planar Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-planar-mix.milk"},Yo={name:"Geiss + Rovastar - Julia Fractal (Vectrip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rovastar-julia-fractal-vectrip-mix.milk"},Jo={name:"Geiss - Cauldron - Tendrils (saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cauldron-tendrils-saturation-remix.milk"},Zo={name:"Geiss - Eggs",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-eggs.milk"},$o={name:"Tunnel of Images",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/tunnel-of-images.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA13994%2FPIA13994~medium.jpg"},Qo={name:"Image Mosaic",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/image-mosaic.glsl",default_image:"/api/image-proxy?url=https%3A%2F%2Fimages-assets.nasa.gov%2Fimage%2FPIA22351%2FPIA22351~medium.jpg"},ei={name:"Raymarch Sphere",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/raymarch-sphere.glsl"},ri={name:"Audio Spectrum",source_type:"shadertoy",source_loader:"url",source_url:"/presets/shadertoy/audio-spectrum.glsl"},si={name:"Flexi - using jedi forces",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-using-jedi-forces.milk"},oi={name:"Flexi - layered + Boz - Buckwild",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-layered-boz-buckwild.milk"},ii={name:"Esotic & Rozzor - Pixie Party Light ((No Wave Invasion) Mandala Chill Red Yellow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/esotic-rozzor-pixie-party-light-no-wave-invasion-mandala-chill-red-yellow-mix.milk"},ti={name:"Eo.S.+Phat - spectrum bubble new colors_v2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-spectrum-bubble-new-colors-v2.milk"},li={name:"Eo.S. and Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-and-zylot-skylight-stained-glass-majesty-mix.milk"},ai={name:"Eo.S. - skylight a1 [music warp switch]",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-skylight-a1-music-warp-switch.milk"},ni={name:"Eo.S. - sarc c_Phats Zoom Mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-sarc-c-phats-zoom-mix.milk"},ui={name:"Eo.S. - repeater 13 - definitive",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-repeater-13-definitive.milk"},ci={name:"Aderrasi - Airhandler (Kali Mix) - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-airhandler-kali-mix-painterly.milk"},mi={name:"Eo.S. - glowsticks v2 03 music shifter edit b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b.milk"},di={name:"Eo.S. - glowsticks v2 03 music shifter edit b (Stahl's Reactive RMX V2i2 - feat. flexi + phat)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b-stahl-s-reactive-rmx-v2i2-feat-flexi.milk"},pi={name:"Eo.S. - glowsticks v2 03 music shifter edit b (Jelly V2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-03-music-shifter-edit-b-jelly-v2.milk"},ki={name:"Eo.S. + Phat cubetrace (cybercity madness remix) - mash0000 - evaporating crystal pharma",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-cubetrace-cybercity-madness-remix-mash0000-evaporating-crystal-pharma.milk"},_i={name:"Eo.S. + Phat - cubetrace - v2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-cubetrace-v2.milk"},hi={name:"Eo.S. + Phat - chasers 14 sentinel 616",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-chasers-14-sentinel-616.milk"},yi={name:"Eo.S. + Phat + Geiss - chasers 15 sentinels male and female (Dementia Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-geiss-chasers-15-sentinels-male-and-female-dementia-mix.milk"},gi={name:"Eo.S. + Geiss - glowsticks v2 03 music shifter edit b (Psychedelic Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-geiss-glowsticks-v2-03-music-shifter-edit-b-psychedelic-mix.milk"},fi={name:"Eo.S. + Geiss - glowsticks v2 02 (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-geiss-glowsticks-v2-02-relief-mix.milk"},vi={name:"Cope-WIP - Strange Attractor 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/cope-wip-strange-attractor-2.milk"},xi={name:"Cope - Passage (mandala mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/cope-passage-mandala-mix.milk"},bi={name:"Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone Mad Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-krash-rainbow-orb-peacock-lonely-signal-gone-mad-mix.milk"},wi={name:"Aderrasi - Storm of the Eye (Thunder) - mash0000 - quasi pseudo meta concentrics",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-storm-of-the-eye-thunder-mash0000-quasi-pseudo-meta-concentrics.milk"},Si={name:"Aderrasi - Roaming Star (Himalaya Brach Office) - mash0000 - creaming the summit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-roaming-star-himalaya-brach-office-mash0000-creaming-the-summit.milk"},Ei={name:"Aderrasi - Ghast Entity",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-entity.milk"},Ti={name:"Aderrasi - Ghast (Full Circle Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-ghast-full-circle-mix.milk"},Ri={name:"Geiss - All-Spark",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-all-spark.milk"},Mi={name:"martin - reflections on black tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-reflections-on-black-tiles.milk"},Gi={name:"shifter - spills blender + krash beatdetect - mash0000 - here comb your hair with this planet",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-spills-blender-krash-beatdetect-mash0000-here-comb-your-hair-with-this.milk"},Ai={name:"shifter - neon pulse (reactive)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-neon-pulse-reactive.milk"},Ci={name:"martin - soma in pink",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-soma-in-pink.milk"},Pi={name:"martin - infinity (2010 update)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity-2010-update.milk"},Di={name:"martin - infinity (2008)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-infinity-2008.milk"},Ii={name:"martin - gate to moria",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-gate-to-moria.milk"},Bi={name:"martin - disco mix 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-disco-mix-4.milk"},Fi={name:"martin + stahlregen - martin in da mash 10 (infinity mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-stahlregen-martin-in-da-mash-10-infinity-mix.milk"},Li={name:"fiShbRaiN - a quiet death",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-a-quiet-death.milk"},Ui={name:"fed - slowfast 1.1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fed-slowfast-1-1.milk"},Ni={name:"Unchained - Unified Drag 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-unified-drag-2.milk"},Vi={name:"Unchained - Cranked On Failure",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-cranked-on-failure.milk"},Oi={name:"Unchained - All You Can Eat",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/unchained-all-you-can-eat.milk"},Wi={name:"Rozzor & StudioMusic - Vertigyny (Geiss Shape Mod)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rozzor-studiomusic-vertigyny-geiss-shape-mod.milk"},qi={name:"Rovastar - VooV's Movement (After Dark Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-voov-s-movement-after-dark-mix.milk"},ji={name:"Rovastar - VooV's Movement (After Dark Mix) - Painterly",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-voov-s-movement-after-dark-mix-painterly.milk"},Xi={name:"Rovastar - Fractopia (Upspoken Mix)_Phat_Speak_When_Spoken_2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fractopia-upspoken-mix-phat-speak-when-spoken-2.milk"},Hi={name:"Rovastar + Idiot24-7 - Balk Acid",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-idiot24-7-balk-acid.milk"},zi={name:"Rovastar + Fvese - Mosaic Waves",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fvese-mosaic-waves.milk"},Ki={name:"Rovastar & Unchained - Demonology (Vampire Soul Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-demonology-vampire-soul-mix.milk"},Yi={name:"Rovastar & Unchained - Ambrosia Mystic (Dark Heart Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-unchained-ambrosia-mystic-dark-heart-mix.milk"},Ji={name:"Reenen & Telek - Slow Shift Matrix (bb4.5 (Dynamic Beat) Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/reenen-telek-slow-shift-matrix-bb4-5-dynamic-beat-mix.milk"},Zi={name:"PieturP - triptrap_(ultimate-trip-mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/pieturp-triptrap-ultimate-trip-mix.milk"},$i={name:"Phat + Eo.S. - rainbow bubble_mid3-f. me dood",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-rainbow-bubble-mid3-f-me-dood.milk"},Qi={name:"Phat + Eo.S. - Swim_waveform_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/phat-eo-s-swim-waveform-mix.milk"},et={name:"ORB - Nova Sunrise",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-nova-sunrise.milk"},rt={name:"ORB - Fire and Fumes 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-fire-and-fumes-2.milk"},st={name:"ORB - Blue Emotion",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-blue-emotion.milk"},ot={name:"Ishan - Anuera",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/ishan-anuera.milk"},it={name:"Idiot24-7 - Ascending to heaven 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot24-7-ascending-to-heaven-2.milk"},tt={name:"Geiss - Motion Blur 2 (color sat boost)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-color-sat-boost.milk"},lt={name:"Geiss - Electric Storm Half-Digital 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-electric-storm-half-digital-2.milk"},at={name:"Geiss - Cosmic Dust 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2.milk"},nt={name:"Geiss + Rovastar - The Chaos Of Colours (sprouting dimentia mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rovastar-the-chaos-of-colours-sprouting-dimentia-mix.milk"},ut={name:"Flexi - self-lubricating",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-self-lubricating.milk"},ct={name:"Flexi - infused with the spiral",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-infused-with-the-spiral.milk"},mt={name:"Flexi + Martin - cascading decay swing",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-martin-cascading-decay-swing.milk"},dt={name:"Eo.S.+Phat Emergent factors - Bitcore Tweak",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-emergent-factors-bitcore-tweak.milk"},pt={name:"Eo.S.+Phat - Flare_dig_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-flare-dig-mix.milk"},kt={name:"Eo.S. - pulsecube f demon - mash0000 - yakuza gut cake",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-pulsecube-f-demon-mash0000-yakuza-gut-cake.milk"},_t={name:"Eo.S. - heater core C_Phat's_class + sparks_mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-heater-core-c-phat-s-class-sparks-mix.milk"},ht={name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix07",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code-phat-remix07.milk"},yt={name:"Eo.S. + Zylot - skylight (Stained Glass Majesty mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-zylot-skylight-stained-glass-majesty-mix.milk"},gt={name:"Eo.S. + Phat - Emergent factors",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-emergent-factors.milk"},ft={name:"Bmelgren - Pentultimate Nerual Slipstream (Tweak 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-pentultimate-nerual-slipstream-tweak-2.milk"},vt={name:"Aderrasi - What cannot be",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-what-cannot-be.milk"},xt={name:"Aderrasi - Kevlar Tunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-tunnel.milk"},bt={name:"Aderrasi - Kevlar Ore Deposit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-ore-deposit.milk"},wt={name:"Aderrasi - Kevlar Abyss",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-kevlar-abyss.milk"},St={name:"Aderrasi - Curse of the Mirror Emu",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-curse-of-the-mirror-emu.milk"},Et={tf1p4d:ye,Wxum6n:ge,dLgCse:fe,MVi179:ve,GhBm5e:xe,npT2uv:be,kOzc0s:we,I9ooYK:Se,RDy6sq:Ee,Kf91oH:Te,uNXJWh:Re,"96nqCN":{name:"Mig_061",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-061.milk"},uioEhi:Me,qaHSMU:Ge,"5vMLPd":{name:"Telek - Sine Wave",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/telek-sine-wave.milk"},"9up6f0":{name:"Rovastar - Tripmaker",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-tripmaker.milk"},Az8g8u:Ae,KeuU8h:Ce,tCVMll:Pe,"0QA4xS":{name:"Rovastar + Rocke - Sugar Spun Sister",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-rocke-sugar-spun-sister-2.milk"},Lrc5R0:De,d8pa1M:Ie,UMZdqF:Be,uX6UbW:Fe,xWFt5r:Le,"0EqR07":{name:"Krash + Illusion - Spiral Movement",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/krash-illusion-spiral-movement.milk"},Q8GYVn:Ue,"21EsIq":{name:"Idiot - When I Get Bored",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/idiot-when-i-get-bored.milk"},ev6vIF:Ne,rsaa2P:Ve,RWvefs:Oe,S6FOvB:We,tjl532:qe,"60PO4U":{name:"Geiss - Inkblot",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-inkblot.milk"},SeVaRS:je,jDL6Sw:Xe,Ajw1Df:He,GQhtQW:ze,B1T3U8:Ke,pxJwLi:Ye,JPtzJM:Je,tWskpA:Ze,g5ZlWy:$e,eq9Qbc:Qe,tIMqOl:er,JsqzWG:rr,eZrZ4U:sr,W8R0Yc:or,dHmr2t:ir,N6KSf3:tr,LkZ5ho:lr,TXLytI:ar,gzetxX:nr,ALj3eW:ur,cldl8y:cr,sm0xFa:mr,hdJKtV:dr,yES2AZ:pr,Ko6Ekq:kr,Apnvzf:_r,iMXDEP:hr,jviFEg:yr,aavCbG:gr,jPnBOy:fr,Rc2xnL:vr,YCR4TG:xr,SKyUN4:br,fNsmHM:wr,kFMyOd:Sr,bDifaZ:Er,xr8pYG:Tr,Eokjpa:Rr,REYygJ:Mr,gPB8Ba:Gr,cfZG0z:Ar,oIQu1w:Cr,sifRsK:Pr,"4GwcDg":{name:"flexi + geiss - pogo-cubes on tokamak matter [mind over matter remix]2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-geiss-pogo-cubes-on-tokamak-matter-mind-over-matter-remix-2.milk"},o26wbv:Dr,v91g2p:Ir,sOX9Ne:Br,"4oZk7A":{name:"fiShbRaiN + geiss - witchcraft (Glow Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-geiss-witchcraft-glow-mix.milk"},"29G3qf":{name:"fed - slowfast 1.1 (geiss composite remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fed-slowfast-1-1-geiss-composite-remix.milk"},lY8xa0:Fr,"7BOBGh":{name:"beta106i - Brilliance (Space-Time Breaking) - mash0000 - it's 2009 and you haven't replaced your analog tv with digital",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/beta106i-brilliance-space-time-breaking-mash0000-it-s-2009-and-you-haven-t.milk"},Y8m1Pt:Lr,x5qk8x:Ur,xDUeFe:Nr,MHYnjw:Vr,V08viA:Or,M1IT0g:Wr,"8e8JOa":{name:"Vovan + Geiss - Bass With Flover (Feedback Mix 2b)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix-2b.milk"},lYoBpw:qr,boFs3y:jr,lIr7aL:Xr,HxWqlq:Hr,CzBdsd:zr,WjkAlB:Kr,Go59jW:Yr,"7OsvAQ":{name:"Mig_146",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-146.milk"},zmfXPk:Jr,e6sfNW:Zr,jJMXai:$r,OZq2ir:Qr,AtXQ4J:es,iXU9Y5:rs,INkWj7:ss,jDcvmK:os,"21Zqxm":{name:"Mig_010",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mig-010.milk"},nrnYxI:is,"8240cQ":{name:"Geiss - Reaction Diffusion (Relief Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-reaction-diffusion-relief-mix-2.milk"},"4G2P6C":{name:"Geiss - Motion Blur 2 (Relief Mix) c",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-motion-blur-2-relief-mix-c.milk"},dSobTn:ts,LBEy1N:ls,hPOltW:as,"77FD4m":{name:"Zylot - Magma Crawl",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/zylot-magma-crawl.milk"},"1C5DYO":{name:"Zylot - Crossing Over (Geiss Tweak)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/zylot-crossing-over-geiss-tweak.milk"},"3hbbDD":{name:"Vovan + Geiss - Bass With Flover (Feedback Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/vovan-geiss-bass-with-flover-feedback-mix.milk"},jcLfPE:ns,pJqkeg:us,H3H6Ev:cs,YDGm7t:ms,"8DTqcj":{name:"TobiasWolfBoi - The Pit",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/tobiaswolfboi-the-pit.milk"},laytNQ:ds,QGCZyy:ps,kfORH5:ks,qmp9iC:_s,Qstv6S:hs,"912K5x":{name:"Rovastar - Tripmaker (Space Trip Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-tripmaker-space-trip-mix.milk"},"13Ij96":{name:"Rovastar - Starquake (Sunquake Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-starquake-sunquake-mix.milk"},jG9qgt:ys,d1TVbH:gs,"2WNu94":{name:"Rovastar - Inner Thoughts (Frantic Thoughts Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-inner-thoughts-frantic-thoughts-mix.milk"},"6yh3Rt":{name:"Rovastar - Inner Thoughts (Distant Memories Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-inner-thoughts-distant-memories-mix.milk"},R4buQw:fs,XewbUX:vs,zbUD7v:xs,mn6kGh:bs,oZB2yD:ws,EudJTR:Ss,KyGl4e:Es,"3LVtiu":{name:"Rovastar + Geiss - Snapshot Of Space (LSB mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-geiss-snapshot-of-space-lsb-mix.milk"},msMe5T:Ts,TUDnFe:Rs,WFzcXl:Ms,CMgQij:Gs,Zuzg4t:As,CqzTGo:Cs,rlxaKq:Ps,A674lj:Ds,L90md1:Is,XrbIZj:Bs,ChEJhr:Fs,"8q0c6X":{name:"Martin - wire dance",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-wire-dance.milk"},cMkHlk:Ls,A63DaM:Us,ok4OA3:Ns,bgEwSc:Vs,Jzp5v8:Os,d9BWoH:Ws,Xvmwb5:qs,WIz7uW:js,oByLJj:Xs,"5da6qp":{name:"Goody - LSD Zoomtunnel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/goody-lsd-zoomtunnel.milk"},VcUWDG:Hs,"6C79Ic":{name:"Geiss - Trampoline",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-trampoline.milk"},g39XvK:zs,prHVsY:Ks,UBZwV5:Ys,BRkffY:Js,v8bC4n:Zs,oqxj1M:$s,CHdpMB:Qs,gO8YZM:eo,G3mP9Z:ro,"1bVovV":{name:"Geiss - Rose 4 Shifted Tiles",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-rose-4-shifted-tiles.milk"},eug6vI:so,lntbPv:oo,vVX8fr:io,ot9bHP:to,iManzA:lo,sWDfCG:ao,CrLXt2:no,JIKDwH:uo,EBKwMD:co,duEqhk:mo,W7bEj3:po,NXQivi:ko,Hzvvbb:_o,"7GqSRQ":{name:"Geiss - Mosaic Octopus",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mosaic-octopus.milk"},ubVJL4:ho,UN6OBT:yo,"85CTzj":{name:"Geiss - MicroCheckers 2",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-microcheckers-2.milk"},Ej4WWj:go,aPqQbc:fo,bU0fR9:vo,"383gqZ":{name:"Geiss - Liquid Beats (janky ripple warp reflecto)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-liquid-beats-janky-ripple-warp-reflecto.milk"},"5OYa4O":{name:"Geiss - Kaleidoscope 1",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-kaleidoscope-1.milk"},bpSfLm:xo,zR06bi:bo,pUwwK2:wo,x35qdS:So,NOm3NC:Eo,y0QSRA:To,"1a2niA":{name:"Geiss - Game of Life 2b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-game-of-life-2b.milk"},"9c1K6i":{name:"Geiss - Flower",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-flower.milk"},"3usf92":{name:"Geiss - Flower Blossom",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-flower-blossom.milk"},Z6UbQa:Ro,Rwa9ja:Mo,Qze1QX:Go,kBnBI0:Ao,"0pIFgC":{name:"Geiss - Diffuser (Gold Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-diffuser-gold-mix.milk"},tRyAth:Co,"8FhWXx":{name:"Geiss - Dancing Spirits",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-dancing-spirits.milk"},JZ6Wvh:Po,ZmiGje:Do,IsUYYO:Io,bRxPDX:Bo,Qy8in2:Fo,TcZGam:Lo,"5Yo7Jr":{name:"Geiss - Cosmic Dust 2 - Game of Life mix",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-cosmic-dust-2-game-of-life-mix.milk"},o9k7m7:Uo,"8fSxEp":{name:"Geiss - Confetti (color saturation boosted)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-confetti-color-saturation-boosted.milk"},"0LFkiK":{name:"Geiss - Color Pox (Van Gogh Mix) (color saturation remix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-color-pox-van-gogh-mix-color-saturation-remix.milk"},VJQq6c:No,XmUCRN:Vo,Ksg664:Oo,j1nkP3:Wo,ks2aOS:qo,tarJU2:jo,Fj7fE6:Xo,wxHegg:Ho,"7yfapd":{name:"Geiss - 3 layers",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers.milk"},iBsVaJ:zo,"6s6AOK":{name:"Geiss - 3 layers (Rayleigh Scattering Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-3-layers-rayleigh-scattering-mix.milk"},Sgpe4q:Ko,NEiYVo:Yo,hcBhUY:Jo,NTtk5V:Zo,vqgPdG:$o,OJEl9R:Qo,b594l9:ei,n19hhD:ri,ffCuEd:si,xD7sMo:oi,"7t90G5":{name:"Flexi - hue burst",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/flexi-hue-burst.milk"},VIsedw:ii,w4P8w9:ti,eSScUv:li,q8XM4Q:ai,JmIcYJ:ni,TMC3YZ:ui,haCqCh:ci,"164MuB":{name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code.milk"},rUYLuL:mi,uKnfXj:di,LXox04:pi,qIKWxc:ki,"1JVMxZ":{name:"Eo.S. + Phat - spectrum bubble field",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-phat-spectrum-bubble-field.milk"},aucRFt:_i,xpVOei:hi,j72Wef:yi,HwoUcq:gi,y3PFWY:fi,vCpR86:vi,eYHXtB:xi,"9sJSry":{name:"By Adam FX 2 shifter + geiss - neon pulse (glow mix) + Rovastar + Orb + Mstress - mash0000 - prismatic spectral haze filter",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/by-adam-fx-2-shifter-geiss-neon-pulse-glow-mix-rovastar-orb-mstress-mash0000.milk"},"8yDedA":{name:"Bmelgren + Krash - Rainbow Orb Peacock (Centred Journey Mix 2)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/bmelgren-krash-rainbow-orb-peacock-centred-journey-mix-2.milk"},GNrYwr:bi,zH4iVV:wi,JYdwqQ:Si,"3HN05o":{name:"Aderrasi - Hackproof - mash0000 - stare at tv static remote viewing technique",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/aderrasi-hackproof-mash0000-stare-at-tv-static-remote-viewing-technique.milk"},G9voNd:Ei,oyNdIT:Ti,RXgbpz:Ri,asrnYp:Mi,"3Tfp2i":{name:"shifter - urchin mod",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/shifter-urchin-mod.milk"},nB08bI:Gi,c9cXzV:Ai,N4NU63:Ci,H5hh1F:Pi,X2yAeU:Di,nlD1AF:Ii,NXMegV:Bi,Oogg6s:Fi,"5DnU2L":{name:"martin + flexi - bombyx mori mix2 in the beehive",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/martin-flexi-bombyx-mori-mix2-in-the-beehive.milk"},"0krhfg":{name:"fiShbRaiN - the dark side of the moon",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/fishbrain-the-dark-side-of-the-moon.milk"},dqLXQa:Li,qa1I9P:Ui,kh3E8c:Ni,S33oA8:Vi,rzSBzp:Oi,HVjYuU:Wi,Q7zyz5:qi,RvS5Pe:ji,kLtW3v:Xi,"4E2nFx":{name:"Rovastar - Fractopia (Upspoken Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/rovastar-fractopia-upspoken-mix.milk"},gLgxTP:Hi,etGSAU:zi,iBcSFe:Ki,nuozxK:Yi,a16Z3X:Ji,MygiDZ:Zi,TVjhxk:$i,v0ESKE:Qi,"9ZbzfC":{name:"ORB - Waaa",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/orb-waaa-2.milk"},na7R4N:et,VdPJGm:rt,WFaI9w:st,"9eqQnV":{name:"Mstress & Zylot - Acid UFO",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/mstress-zylot-acid-ufo.milk"},A3P2IV:ot,qwuNhy:it,"6nFusM":{name:"Geiss - Planar Travel",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-planar-travel.milk"},njxMWO:tt,"6hxTDo":{name:"Geiss - Mash-Up 4",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-mash-up-4.milk"},t3xlOK:lt,"75R7sz":{name:"Geiss - Electric Storm Half-Digital 2 (Fiesta Mix)",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/geiss-electric-storm-half-digital-2-fiesta-mix.milk"},DMJ1SB:at,buwqyb:nt,MjmlTk:ut,t11nN4:ct,bEp10M:mt,FQqWEr:dt,OdtDSl:pt,oABstK:kt,EqarxT:_t,x72Cbv:ht,"9pPWpB":{name:"Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix02b",source_type:"milkdrop",source_loader:"url",source_url:"/presets/milkdrop/eo-s-glowsticks-v2-05-and-proton-lights-krash-s-beat-code-phat-remix02b.milk"},I2HEKG:yt,jjjX2L:gt,mnQbLP:ft,rZaP5M:vt,xxpUNA:xt,twWyLm:bt,Yu9GG8:wt,d3BbId:St},I="prism.graph/0.1";function H(t){return t.split(".")[0]}function z(t,e){return Object.entries(t.nodes).filter(([,s])=>H(s.type)===e)}function Tt(t,e,s=2.5){return{schema:I,id:`g_${Math.random().toString(36).slice(2,10)}`,intent:e,nodes:{audio_in:{type:"signal.audio",params:{}},main:{type:"lf.milkdrop",params:{preset_name:t,blend_seconds:s},inputs:{audio:"audio_in.signal"}},out:{type:"sink.display",inputs:{frame:"main.frame"}}},output:"out"}}const K=Et;function Y(t){return K[t]??null}function Rt(){return Object.keys(K)}function J(t){const e=Y(t);return e?Mt(t,e):null}function Mt(t,e){const s={};let o;e.source_type==="shadertoy"?(o="lf.shadertoy",e.source_url&&(s.shader_url=e.source_url),e.default_image&&(s.image_url=e.default_image)):(o="lf.milkdrop",e.source_loader==="url"&&e.source_url?s.preset_url=e.source_url:e.source_ref&&(s.preset_name=e.source_ref));const r={audio:{type:"signal.audio"},main:{type:o,params:s,inputs:{audio:"audio.signal"}},screen:{type:"sink.display",inputs:{frame:"main.frame"}}};return{schema:I,id:`g:${t}`,intent:e.name,nodes:r,output:"screen"}}class Z{constructor(e){i(this,"active",null);this.ctx=e}apply(e,s){var l,a,c,n,u,h,x;const o=z(e,"lf");if(o.length===0)return{ok:!1,error:"graph has no light-field generator"};const[,r]=o[0];if(r.type==="lf.milkdrop"){const m=(l=r.params)==null?void 0:l.preset_name,f=(a=r.params)==null?void 0:a.preset_url,w=s??(typeof((c=r.params)==null?void 0:c.blend_seconds)=="number"?r.params.blend_seconds:2.5);if(this.ctx.setActiveBackend("milkdrop"),typeof f=="string")return this.ctx.milkdrop.loadFromUrl(f,w).catch(k=>{console.warn("[runtime] milkdrop loadFromUrl failed:",k.message)}),this.active=e,{ok:!0,presetName:((n=f.split("/").pop())==null?void 0:n.replace(/\.milk$/,""))??f,backend:"milkdrop"};if(typeof m!="string")return{ok:!1,error:"lf.milkdrop missing preset_name or preset_url"};const y=this.ctx.milkdrop.loadByName(m,w);return y===null?{ok:!1,error:`preset not found: ${m}`}:(this.active=e,{ok:!0,presetName:y,backend:"milkdrop"})}if(r.type==="lf.shadertoy"){const m=(u=r.params)==null?void 0:u.shader_url;if(typeof m!="string")return{ok:!1,error:"lf.shadertoy missing shader_url"};const f=(h=r.params)==null?void 0:h.image_url;return this.ctx.setActiveBackend("shadertoy"),this.ctx.shadertoy.loadFromUrl(m).catch(y=>{console.warn("[runtime] shadertoy loadFromUrl failed:",y.message)}),this.ctx.shadertoy.bindImage(typeof f=="string"?f:null).catch(y=>{console.warn("[runtime] shadertoy bindImage failed:",y.message)}),this.active=e,{ok:!0,presetName:((x=m.split("/").pop())==null?void 0:x.replace(/\.glsl$/,""))??m,backend:"shadertoy"}}return{ok:!1,error:`unsupported lf type: ${r.type}`}}get current(){return this.active}}class ${constructor(e){i(this,"ctx");i(this,"output");i(this,"voices",[]);i(this,"analyser");i(this,"fft");i(this,"beatTimer",null);i(this,"mutationTimer",null);i(this,"stopped",!1);i(this,"lastCursorBeatAt",0);this.ctx=e,this.output=e.createGain(),this.output.gain.value=.65;const s=[[50,"sine",.55,.06,18],[110,"sine",.4,.09,24],[230,"triangle",.28,.12,60],[460,"sawtooth",.18,.17,140],[950,"triangle",.12,.21,280],[1900,"sine",.08,.27,520],[3900,"triangle",.05,.33,1100]];for(const[o,r,l,a,c]of s)this.addVoice(o,r,l,a,c);this.analyser=e.createAnalyser(),this.analyser.fftSize=256,this.analyser.smoothingTimeConstant=.78,this.output.connect(this.analyser),this.fft=new Uint8Array(this.analyser.frequencyBinCount),this.scheduleBeats(),this.scheduleMutations()}getOutput(){return this.output}readEnergy(){if(this.stopped)return 0;this.analyser.getByteFrequencyData(this.fft);let e=0;for(let s=0;s<this.fft.length;s++)e+=this.fft[s];return e/255/this.fft.length}readBands(){if(this.stopped)return{bass:0,mid:0,treble:0};this.analyser.getByteFrequencyData(this.fft);const e=this.fft.length,s=Math.floor(e*.1),o=Math.floor(e*.45);let r=0,l=0,a=0;for(let c=0;c<e;c++){const n=this.fft[c]/255;c<s?r+=n:c<o?l+=n:a+=n}return{bass:r/Math.max(1,s),mid:l/Math.max(1,o-s),treble:a/Math.max(1,e-o)}}stop(){if(!this.stopped){this.stopped=!0,this.beatTimer!=null&&clearTimeout(this.beatTimer),this.mutationTimer!=null&&clearTimeout(this.mutationTimer);for(const e of this.voices){try{e.osc.stop(),e.lfo.stop()}catch{}try{e.osc.disconnect(),e.lfo.disconnect(),e.lfoGain.disconnect(),e.gain.disconnect()}catch{}}try{this.output.disconnect()}catch{}try{this.analyser.disconnect()}catch{}}}addVoice(e,s,o,r,l){const a=this.ctx,c=a.createOscillator();c.frequency.value=e,c.type=s;const n=a.createGain();n.gain.value=o,c.connect(n).connect(this.output);const u=a.createOscillator();u.frequency.value=r,u.type="sine";const h=a.createGain();h.gain.value=l,u.connect(h).connect(c.frequency),u.start(),c.start();const x=e<200?"bass":e<1100?"mid":"treble";this.voices.push({base:e,baseGain:o,band:x,osc:c,lfo:u,lfoGain:h,gain:n})}setCursorModulation(e,s,o){if(this.stopped)return;const r=this.ctx.currentTime,l=.12,a=Math.max(0,Math.min(1,e)),c=Math.max(0,Math.min(1,s)),n=Math.max(0,Math.min(1,o)),u=.55+(1-c)*.9+n*.15,h=.55+a*.9+n*.2,x=.7+n*.7;for(const m of this.voices){const f=m.band==="bass"?m.baseGain*u:m.band==="treble"?m.baseGain*h:m.baseGain*x;m.gain.gain.cancelScheduledValues(r),m.gain.gain.setValueAtTime(m.gain.gain.value,r),m.gain.gain.linearRampToValueAtTime(f,r+l)}if(n>.45&&r-this.lastCursorBeatAt>.22){const m=.95+n*.45;this.output.gain.cancelScheduledValues(r),this.output.gain.setValueAtTime(this.output.gain.value,r),this.output.gain.linearRampToValueAtTime(m,r+.035),this.output.gain.exponentialRampToValueAtTime(.52,r+.22),this.lastCursorBeatAt=r}}pulseBeat(e=.8){if(this.stopped)return;const s=this.ctx.currentTime,o=Math.max(0,Math.min(1,e)),r=.95+o*.55;this.output.gain.cancelScheduledValues(s),this.output.gain.setValueAtTime(this.output.gain.value,s),this.output.gain.linearRampToValueAtTime(r,s+.035),this.output.gain.exponentialRampToValueAtTime(.42,s+.26);for(const l of this.voices){if(l.band!=="bass")continue;const a=l.baseGain*(1.6+o*1.4);l.gain.gain.cancelScheduledValues(s),l.gain.gain.setValueAtTime(l.gain.gain.value,s),l.gain.gain.linearRampToValueAtTime(a,s+.025),l.gain.gain.exponentialRampToValueAtTime(Math.max(.01,l.baseGain),s+.34)}}scheduleBeats(){const e=()=>{if(this.stopped)return;const s=this.ctx.currentTime,o=.95+Math.random()*.35;this.output.gain.cancelScheduledValues(s),this.output.gain.setValueAtTime(this.output.gain.value,s),this.output.gain.linearRampToValueAtTime(o,s+.04),this.output.gain.exponentialRampToValueAtTime(.45,s+.28);const r=600+Math.random()*1e3;this.beatTimer=window.setTimeout(e,r)};this.beatTimer=window.setTimeout(e,900)}scheduleMutations(){const e=()=>{if(this.stopped)return;const s=this.voices[Math.floor(Math.random()*this.voices.length)],o=this.ctx.currentTime,r=.65+Math.random()*.7,l=Math.max(20,Math.min(6e3,s.base*r));s.osc.frequency.cancelScheduledValues(o),s.osc.frequency.setValueAtTime(s.osc.frequency.value,o),s.osc.frequency.linearRampToValueAtTime(l,o+7.5),s.base=l,this.mutationTimer=window.setTimeout(e,18e3+Math.random()*16e3)};this.mutationTimer=window.setTimeout(e,6e3)}}class Gt{constructor(e){i(this,"audioCtx");i(this,"synth");i(this,"milkdrop");i(this,"shadertoy");i(this,"runtime");i(this,"activeBackend","milkdrop");i(this,"milkdropCanvas");i(this,"shadertoyCanvas");i(this,"ownsAudioCtx");i(this,"defaultHoldSeconds");i(this,"currentSlideshow",null);i(this,"currentVideo",null);i(this,"currentStream",null);i(this,"currentAudioOwnedStream",null);const s=At(e.container);if(this.audioCtx=e.audioCtx??new AudioContext,this.ownsAudioCtx=e.audioCtx===void 0,this.defaultHoldSeconds=e.holdSeconds??6,this.synth=new $(this.audioCtx),this.milkdropCanvas=O("milkdrop"),this.shadertoyCanvas=O("shadertoy"),this.shadertoyCanvas.classList.add("bg-canvas--hidden"),this.shadertoyCanvas.style.opacity="0",this.shadertoyCanvas.style.pointerEvents="none",s.appendChild(this.milkdropCanvas),s.appendChild(this.shadertoyCanvas),this.milkdrop=q(this.audioCtx,this.milkdropCanvas,this.synth.getOutput(),e.onReady,{initialPresetName:e.initialPresetName}),this.shadertoy=j(this.audioCtx,this.shadertoyCanvas,this.synth.getOutput()),e.defaultImage&&this.shadertoy.bindImage(e.defaultImage).catch(o=>{var r;(r=e.onError)==null||r.call(e,o)}),this.runtime=new Z({milkdrop:this.milkdrop,shadertoy:this.shadertoy,setActiveBackend:o=>this.setActiveBackend(o)}),e.graph!==void 0){const o=this.load(e.graph);!o.ok&&e.onError&&e.onError(new Error(o.error??"graph apply failed"))}e.audio!==void 0&&this.connectAudio(e.audio).catch(o=>{var r;return(r=e.onError)==null?void 0:r.call(e,o)}),e.image!==void 0&&this.connectImage(e.image).catch(o=>{var r;return(r=e.onError)==null?void 0:r.call(e,o)})}load(e,s){if(typeof e=="string"){const o=J(e);return o?this.runtime.apply(o,s):{ok:!1,error:`unknown short_id: ${e}`}}return this.runtime.apply(e,s)}async connectAudio(e){const{node:s,owned:o}=await this.resolveAudioNode(e);return this.milkdrop.connectAudio(s),this.shadertoy.connectAudio(s),this.currentAudioOwnedStream=o,s}disconnectAudio(){if(this.currentAudioOwnedStream){for(const s of this.currentAudioOwnedStream.getTracks())s.stop();this.currentAudioOwnedStream=null}const e=this.synth.getOutput();this.milkdrop.connectAudio(e),this.shadertoy.connectAudio(e)}setLiveSource(e){this.shadertoy.setLiveSource(e)}async connectImage(e){if(this.teardownImageFeed(),typeof e=="string"){if(e==="webcam"){const s=await navigator.mediaDevices.getUserMedia({video:!0,audio:!1});this.bindStream(s);return}if(e==="tab"){const s=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});this.bindStream(s);return}this.setLiveSource(null),await this.shadertoy.bindImage(e);return}if(Array.isArray(e)){const s=new X(e,{holdSeconds:this.defaultHoldSeconds});this.currentSlideshow=s,this.setLiveSource(s.canvas);return}if(e instanceof MediaStream){this.bindStream(e);return}this.setLiveSource(e)}disconnectImage(){this.teardownImageFeed()}setActiveBackend(e){this.activeBackend=e,e==="milkdrop"?(this.milkdropCanvas.classList.remove("bg-canvas--hidden"),this.milkdropCanvas.classList.add("bg-canvas--active"),this.milkdropCanvas.style.opacity="1",this.milkdropCanvas.style.pointerEvents="",this.shadertoyCanvas.classList.add("bg-canvas--hidden"),this.shadertoyCanvas.classList.remove("bg-canvas--active"),this.shadertoyCanvas.style.opacity="0",this.shadertoyCanvas.style.pointerEvents="none"):(this.shadertoyCanvas.classList.remove("bg-canvas--hidden"),this.shadertoyCanvas.classList.add("bg-canvas--active"),this.shadertoyCanvas.style.opacity="1",this.shadertoyCanvas.style.pointerEvents="",this.milkdropCanvas.classList.add("bg-canvas--hidden"),this.milkdropCanvas.classList.remove("bg-canvas--active"),this.milkdropCanvas.style.opacity="0",this.milkdropCanvas.style.pointerEvents="none")}destroy(){if(this.teardownImageFeed(),this.currentAudioOwnedStream){for(const e of this.currentAudioOwnedStream.getTracks())e.stop();this.currentAudioOwnedStream=null}this.milkdrop.destroy(),this.shadertoy.destroy(),this.synth.stop(),this.milkdropCanvas.remove(),this.shadertoyCanvas.remove(),this.ownsAudioCtx&&this.audioCtx.close()}bindStream(e){const s=document.createElement("video");s.srcObject=e,s.autoplay=!0,s.muted=!0,s.playsInline=!0,s.play().catch(()=>{}),this.currentVideo=s,this.currentStream=e,this.setLiveSource(s)}teardownImageFeed(){if(this.currentSlideshow&&(this.currentSlideshow.destroy(),this.currentSlideshow=null),this.currentStream){for(const e of this.currentStream.getTracks())e.stop();this.currentStream=null}this.currentVideo&&(this.currentVideo.srcObject=null,this.currentVideo=null),this.setLiveSource(null)}async resolveAudioNode(e){if(e instanceof AudioNode)return{node:e,owned:null};let s,o=!1;return e instanceof MediaStream?s=e:e==="mic"?(s=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1}),o=!0):(s=await navigator.mediaDevices.getDisplayMedia({audio:!0,video:!1}),o=!0),{node:this.audioCtx.createMediaStreamSource(s),owned:o?s:null}}}function At(t){if(typeof t!="string")return t;const e=document.getElementById(t);if(!e)throw new Error(`PrismPlayer: no element found with id "${t}"`);return e}function O(t){const e=document.createElement("canvas");return e.id=t,e.className="bg-canvas",e.setAttribute("aria-hidden","true"),e.style.position="fixed",e.style.inset="0",e.style.width="100%",e.style.height="100%",e.style.display="block",e.style.zIndex="0",e}class Ct{constructor(e={}){i(this,"element");i(this,"mount");i(this,"className");i(this,"thumbW");i(this,"thumbH");i(this,"thumbMargin",16);i(this,"statusBarH");i(this,"minVisible");i(this,"minWidth");i(this,"minHeight");i(this,"onChange");i(this,"_rect");i(this,"_collapsed",!1);i(this,"uncollapsedRect",null);i(this,"drag",null);i(this,"destroyed",!1);i(this,"onWindowResize",()=>{this._collapsed&&(this._rect=this.thumbRect(),this.applyRectToDom(),this.emit())});i(this,"onPointerDown",e=>{const s=e.target;if(!s.closest(`.${this.className}__collapse`)){if(this._collapsed){e.preventDefault(),this.expand(),this.emit();return}e.preventDefault(),this.element.setPointerCapture(e.pointerId),this.drag={startCard:{...this._rect},startPointer:{x:e.clientX,y:e.clientY},handle:s.classList.contains(`${this.className}__handle`)?s.dataset.handle??null:null}}});i(this,"onPointerMove",e=>{if(!this.drag)return;e.preventDefault();const s=e.clientX-this.drag.startPointer.x,o=e.clientY-this.drag.startPointer.y,r=this.drag.startCard,l=this.drag.handle;if(l===null)this._rect=this.clampRect({x:r.x+s,y:r.y+o,w:r.w,h:r.h});else{let a=r.x,c=r.y,n=r.w,u=r.h;l.includes("r")&&(n=Math.max(this.minWidth,r.w+s)),l.includes("l")&&(n=Math.max(this.minWidth,r.w-s),a=r.x+(r.w-n)),l.includes("b")&&(u=Math.max(this.minHeight,r.h+o)),l.includes("t")&&(u=Math.max(this.minHeight,r.h-o),c=r.y+(r.h-u)),this._rect={x:a,y:c,w:n,h:u}}this.applyRectToDom(),this.emit()});i(this,"onPointerEnd",e=>{if(this.drag){try{this.element.releasePointerCapture(e.pointerId)}catch{}this.drag=null}});this.mount=e.mount??document.body,this.className=e.className??"prism-overlay",this.thumbW=e.thumbWidth??200,this.thumbH=this.thumbW*(9/16),this.minVisible=e.minVisible??60,this.statusBarH=e.topMargin??36,this.minWidth=e.minWidth??80,this.minHeight=e.minHeight??45,this.onChange=e.onChange,this._rect=e.initialRect??this.defaultRect(),this.element=this.buildDom(),this.mount.appendChild(this.element),this.applyRectToDom(),window.addEventListener("resize",this.onWindowResize,{passive:!0})}get rect(){return{...this._rect}}isCollapsed(){return this._collapsed}setRect(e){this._rect={...e},this.applyRectToDom()}collapse(){this._collapsed||(this.uncollapsedRect={...this._rect},this._rect=this.thumbRect(),this._collapsed=!0,this.element.setAttribute("data-collapsed",""),this.applyRectToDom())}expand(){this._collapsed&&(this._rect=this.uncollapsedRect??this.defaultRect(),this._collapsed=!1,this.element.removeAttribute("data-collapsed"),this.applyRectToDom())}show(){this.element.removeAttribute("data-hidden")}hide(){this.element.setAttribute("data-hidden","")}isVisible(){return!this.element.hasAttribute("data-hidden")}destroy(){this.destroyed||(this.destroyed=!0,window.removeEventListener("resize",this.onWindowResize),this.element.remove())}buildDom(){const e=document.createElement("div");e.className=this.className,e.setAttribute("data-hidden","");const s=document.createElement("button");s.type="button",s.className=`${this.className}__collapse`,s.title="Collapse to thumbnail",s.setAttribute("aria-label","Collapse");const o=document.createElement("span");o.setAttribute("aria-hidden","true"),o.textContent="−",s.appendChild(o),s.addEventListener("click",r=>{r.stopPropagation(),this.collapse(),this.emit()}),e.appendChild(s);for(const r of["tl","tr","bl","br"]){const l=document.createElement("span");l.className=`${this.className}__handle ${this.className}__handle--${r}`,l.dataset.handle=r,l.setAttribute("aria-hidden","true"),e.appendChild(l)}return e.addEventListener("pointerdown",this.onPointerDown),e.addEventListener("pointermove",this.onPointerMove),e.addEventListener("pointerup",this.onPointerEnd),e.addEventListener("pointercancel",this.onPointerEnd),e}applyRectToDom(){const e=this._rect;this.element.style.left=`${e.x}px`,this.element.style.top=`${e.y}px`,this.element.style.width=`${e.w}px`,this.element.style.height=`${e.h}px`}emit(){var e;(e=this.onChange)==null||e.call(this,{rect:{...this._rect},collapsed:this._collapsed})}defaultRect(){const e=window.innerWidth,s=window.innerHeight,o=e*.58,r=Math.min(o*(9/16),s*.54);return{x:(e-o)/2,y:s*.16,w:o,h:r}}thumbRect(){return{x:window.innerWidth-this.thumbW-this.thumbMargin,y:this.statusBarH+this.thumbMargin,w:this.thumbW,h:this.thumbH}}clampRect(e){return{x:Math.max(-(e.w-this.minVisible),Math.min(window.innerWidth-this.minVisible,e.x)),y:Math.max(this.statusBarH,Math.min(window.innerHeight-this.minVisible,e.y)),w:e.w,h:e.h}}}exports.GraphRuntime=Z;exports.HeadlessSlideshow=X;exports.ImageOverlay=Ct;exports.PrismPlayer=Gt;exports.SCHEMA_VERSION=I;exports.SyntheticSignal=$;exports.createMilkdropBackground=q;exports.createShadertoyBackground=j;exports.lookup=Y;exports.makeMilkdropGraph=Tt;exports.nodesByRole=z;exports.roleOf=H;exports.shortIdToGraph=J;exports.shortIds=Rt;
|
|
37
37
|
//# sourceMappingURL=prism.cjs.map
|