0xf429…aeac

All memos sent from and to 0xf429…aeac.

Inspired by my nostalgic love of rich worlds constructed in early video games using simple shapes with limited palettes, and the mesmerizing music visualization plugins that emerged in an era when sharing creativity online was a joyous pastime, this artwork reflects the playful media I have enjoyed over the years and aims to contribute more joy to the world. **Interactions** **`click`** - allow microphone & activate audio **`drag & drop`** - add audio files to playlist **`spacebar`** - toggle playlist / microphone monitoring **`left/right arrows`** - next / previous track **`double click`** - toggle fullscreen **URL Configuration** **`quality=1`** - adjust pixelation (0.25 to 4,) **`maxDb=6`** - set max sample decibel (>0)\* **`minDb=120`** - set min sample decibel (>30)\* _\*Decibles will be interpreted as negative values_ `URL?quality=2&maxDb=12&minDb=96` **`static=true`** - render single frame (quality 4) **`time=1`** - advances time in seconds (1 to N) `URL?static=true&time=60`
(()=>{"use strict";let e=(e,n,r)=>Math.min(Math.max(e,n),r),n=(n,r,t,a,s,i=!1)=>{let o=(n-r)/(t-r)*(s-a)+a;return i?e(o,a,s):o};function r(e,n,r){let t=n/2,a=Math.round(e/t*r);return Math.min(r,Math.max(0,a))}function t(e,t,a,s){if(!e)return 0;let i=e.context.sampleRate,o=e.frequencyBinCount,m=r(a,i,o),u=r(s,i,o),c=u-m,d=0;for(;m<u;m++)d+=t[m];let p=e.minDecibels,l=e.maxDecibels,V=0!==c&&isFinite(d)?d/c:p;return n(V,p,l,0,1,!0)}String.prototype.INC=function(e,n){return this.replaceAll(`#include<${e}>\n`,n)},Number.prototype.F=function(){return this.toFixed(10)};let a,s=new class{constructor(){this.useA=!1;let e=function(e){let n=parseInt(e.substr(0,8),16),r=parseInt(e.substr(8,8),16),t=parseInt(e.substr(16,8),16),a=parseInt(e.substr(24,8),16);return function(){n|=0,r|=0,t|=0,a|=0;let e=(n+r|0)+a|0;return a=a+1|0,n=r^r>>>9,r=t+(t<<3)|0,t=t<<21|t>>>11,t=t+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}dec(e=1){return this.useA=!this.useA,(this.useA?this.prngA():this.prngB())*e}num(e,n){return e+(n-e)*this.dec()}int(e,n){return Math.floor(this.num(e,n+1))}lim(e=1){return this.map(this.dec(),0,1,-e,e)}choice(e){return e[this.int(0,e.length-1)]}map(e,n,r,t,a){return(e-n)/(r-n)*(a-t)+t}hash(){let e="0x";for(let n=0;n<64;n++)e+=Math.floor(16*this.dec()).toString(16);return e}min(e){return Math.min(...e)}max(e){return Math.max(...e)}pn(e,n){let r=this.num(e,n);return this.dec()<.5?r:-r}},i=s.dec()<.35?0:s.dec()<.275?2:1,o={samples:new Array(8).fill(0),colors:Array.from(new Array(15),((r,t)=>e(t%3?(t-1)%3?s.num(.2,.7):s.num(.125,.625):s.num(.175,.715),n(t,0,14,.125,.3),1))),randoms:Array.from(new Array(3),(e=>s.dec())),A:{wave:s.int(0,2),form:s.int(0,3)},B:{wave:i,form:1===i?s.dec()<.45?0:s.int(1,3):s.int(0,3)}},m=window,u=document,c=u.body,d=new URLSearchParams(m.location.search),p=/\bHeadlessChrome/.test(navigator.userAgent),l=d.get("static"),V=-(parseInt(d.get("minDb"))||120),F=-(parseInt(d.get("maxDb"))||6),x=1e3*parseInt(d.get("time"))||0,S=parseFloat(d.get("quality")),h=-1!=navigator.userAgent.indexOf("Chrome"),M=-1!=navigator.userAgent.indexOf("Firefox")&&!h,f=S?e(parseFloat(S),.25,4):l?4:p?2:1,R="#version 300 es\n#define U uniform\n#define F float\n#define I int\nprecision highp I;\nprecision highp F;\n#define V2 vec2\n#define V3 vec3\n#define V4 vec4\n#define MX mix\n#define PW pow\n#define MA max\n#define MN min\n#define MD mod\n#define FL floor\n#define DT dot\n#define LN length\n#define TX texture\n#define S2D sampler2D\n#define NOR normalize\n#define CLM clamp\n#define DST distance\n#define CL01(T) CLM((T),0.,1.)\n#define SS01(T) smoothstep(0.,1.,T)\n#define SSCL01(T) CL01(SS01(T))\nF MPV(F n,F a,F b,F x,F y){return ((n-a)/(b-a))*(y-x)+x;}F MPS(F n,F x,F y){return MPV(n,-1.,1.,x,y);}F MPR(F n,F v){return ((n)/(1.))*(v-(-v))+(-v);}\n",y=new class{v=R+"in V3 aPs;in V2 aTc;out V2 vTc;void main(){gl_Position=V4(aPs,1.);vTc=aTc;}";d=R+"U F uTm;U V2 uRs;U F uSm[7];U S2D uWv;U V3 uCl[5];U F uRn[3];in V2 vTc;out V4 o0;struct SDF {F d;V2 m;V4 w;V2 p;I s;};V4 prm(V4 x){return MD(((x*34.)+1.)*x,289.);}V4 tis(V4 r){return 1.79284291400159-.85373472095314*r;}F sns(V3 v){const V2 C=V2(1./6.,1./3.);const V4 D=V4(0.,.5,1.,2.);V3 i=FL(v+DT(v,C.yyy));V3 x0=v-i+DT(i,C.xxx);V3 g=step(x0.yzx,x0.xyz);V3 l=1.-g;V3 i1=MN(g.xyz,l.zxy);V3 i2=MA(g.xyz,l.zxy);V3 x1=x0-i1+1.*C.xxx;V3 x2=x0-i2+2.*C.xxx;V3 x3=x0-1.+3.*C.xxx;i=MD(i,289.);V4 p=prm(prm(prm(i.z+V4(0.,i1.z,i2.z,1.))+i.y+V4(0.,i1.y,i2.y,1.))+i.x+V4(0.,i1.x,i2.x,1.));F n_=1./7.;V3 ns=n_*D.wyz-D.xzx;V4 j=p-49.*FL(p*ns.z*ns.z);V4 x_=FL(j*ns.z);V4 y_=FL(j-7.*x_);V4 x=x_*ns.x+ns.yyyy;V4 y=y_*ns.x+ns.yyyy;V4 h=1.-abs(x)-abs(y);V4 b0=V4(x.xy,y.xy);V4 b1=V4(x.zw,y.zw);V4 s0=FL(b0)*2.+1.;V4 s1=FL(b1)*2.+1.;V4 sh=-step(h,V4(0.));V4 a0=b0.xzyw+s0.xzyw*sh.xxyy;V4 a1=b1.xzyw+s1.xzyw*sh.zzww;V3 p0=V3(a0.xy,h.x);V3 p1=V3(a0.zw,h.y);V3 p2=V3(a1.xy,h.z);V3 p3=V3(a1.zw,h.w);V4 norm=tis(V4(DT(p0,p0),DT(p1,p1),DT(p2,p2),DT(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;V4 m=MA(.6-V4(DT(x0,x0),DT(x1,x1),DT(x2,x2),DT(x3,x3)),0.);m=m*m;return 42.*DT(m*m,V4(DT(p0,x0),DT(p1,x1),DT(p2,x2),DT(p3,x3)));}F fP(V3 p,V4 n){return DT(p,n.xyz)+n.w;}F fS(V3 p,F s){return LN(p)-s;}F fB(V3 p,V3 b){V3 q=abs(p)-b;return LN(MA(q,0.))+MN(MA(q.x,MA(q.y,q.z)),0.);}mat3 rtm(V3 v,F a){v=NOR(v);F s=sin(a);F c=cos(a);F oc=1.-c;return mat3(oc*v.x*v.x+c,oc*v.x*v.y-v.z*s,oc*v.z*v.x+v.y*s,oc*v.x*v.y+v.z*s,oc*v.y*v.y+c,oc*v.y*v.z-v.x*s,oc*v.z*v.x-v.y*s,oc*v.y*v.z+v.x*s,oc*v.z*v.z+c);}V3 oRt(V3 p,V3 v,F a){mat3 m=rtm(v,a);p*=m;return p;}V2 pM2(inout V2 p,V2 s){V2 c=FL((p+s*.5)/s);p=MD(p+s*.5,s)-s*.5;return c;}V2 pMM2(inout V2 p,V2 s){V2 halfsize=s*.5;V2 c=FL((p+halfsize)/s);p=MD(p+halfsize,s)-halfsize;p*=MD(c,V2(2.))*2.-V2(1.);return c;}F pUS(F a,F b,F r,F n){F s=r/n;F u=b-r;return MN(MN(a,b),.5*(u+a+abs((MD(u-a+s,2.*s))-s)));}SDF oUS(SDF a,SDF b,F r,F n,F k){F h=CLM(.5+.5*(b.d-a.d)/k,0.,1.);F d=pUS(a.d,b.d,r,n);V2 m=MX(b.m,a.m,h);V2 p=MX(b.p,a.p,h);return SDF(d,m,V4(0.),p,0);}SDF oIS(SDF a,SDF b,F k){F h=CLM(.5-.5*(b.d-a.d)/k,0.,1.);F d=MX(b.d,a.d,h)+k*h*(1.-h);V2 m=MX(b.m,a.m,h);V2 p=MX(b.p,a.p,h);return SDF(d,m,V4(0.),p,0);}V2 Ma=V2(0.,0.);V2 Mb=V2(0.,1.);V2 Mc=V2(1.,0.);V2 Md=V2(1.,1.);\n#include<A>\n#include<B>\nSDF map(V3 pos){SDF R=A(pos);R=oUS(R,B(pos),.2+.2*uRn[0],1.5+2.5*uRn[1],.5+.2*uRn[2]);V4 m=V4(PW(DST(Ma,R.m),8.),PW(DST(Mb,R.m),8.),PW(DST(Mc,R.m),8.),PW(DST(Md,R.m),8.));F t=m.x+m.y+m.z+m.w;R.w=CL01(m/t);return R;}SDF INT(V3 ro,V3 rd){F t=0.;I s=0;SDF R=SDF(1e10,V2(-1.),V4(0.),V2(0.),0);for (s=0;s<150;s++){R=map(ro+rd*t);R.s=s;if(R.d<.0001){t+=.0001;break;}else if(R.d>1e10){R.m=V2(-1.);R.d=-1.;break;}t+=R.d*.1;}R.d=t;return R;}V3 NRM(V3 p){V2 e=V2(1.,-1.)*.5773*.1;return NOR(e.xyy*map(p+e.xyy).d+e.yyx*map(p+e.yyx).d+e.yxy*map(p+e.yxy).d+e.xxx*map(p+e.xxx).d);}V3 render(V3 ro,V3 rd){V3 C;SDF R=INT(ro,rd);V3 N=V3(0.,1.,0.);V3 L=NOR(V3(1.,.95,.25));if(R.m.x>=0.&&R.m.y>=0.){V3 pos=ro+rd*R.d;N=NRM(pos);C+=.725*MX(uCl[0],uCl[4],R.p[0])*R.w.w;C+=uCl[1]*R.w.x;C+=uCl[2]*R.w.y;C+=uCl[3]*R.w.z;F aoc=1.-(float(R.s)/150.);C=MX(C,C+CL01(PW(aoc,2.)),.2);C=MX(C,C*CL01(PW(aoc,.05)),.2);F NoL=MA(DT(N,L),0.);C*=CLM(PW(NoL,1.2),.5,1.)+.175;C=MX(C,C*1.1,SSCL01(PW(N.y,4.)));C=MX(C,C*1.2,SSCL01(PW(N.y,8.)));C=MX(C,C*.6,SSCL01(PW(MA(N.x,N.z),2.)));C=MX(C,C*.5+(1.-C)*.25+.25*uCl[4],SSCL01(R.p[1]*PW(1.-N.y,.8)));C=CL01(C);}else{C=V3(1.,0.,0.);}return C;}void main(){V2 uv=gl_FragCoord.xy/uRs.xy;V3 cF=NOR(V3(-1.));V3 cR=NOR(cross(cF,V3(0.,-1.,0.)));V3 cU=NOR(cross(cF,cR));F a=uRs.x/uRs.y;F rm=step(1.,a);F o=13.;F vpW=MX(o,o*a,rm);F vpH=MX(vpW/a,o,rm);uv.x=(uv.x*vpW)-vpW*.5;uv.y=(uv.y*vpH)-vpH*.5;V3 rd=cF;V3 ro=-uv.x*cR+uv.y*cU+vpH*.5;o0=V4(render(ro,rd),1.);}";p=R+"U V2 uRs;U S2D uT0;U F uSm[7];U V3 uCl[5];U F uPX;in V2 vTc;out V4 o0;V3 GMA(V3 c,F g){return PW(c,V3(1./g));}V3 RNG(V3 c,F l,F h){return MN(MA(c-V3(l),V3(0.))/(V3(h)-V3(l)),V3(1.));}V3 LVL(V3 c,F l,F g,F h){return GMA(RNG(c,l,h),g);}V3 CON(V3 c,F v){return .5+(1.+v)*(c-.5);}V3 EXP(V3 c,F v){return (1.+v)*c;}F LUM(V3 c){return DT(c,V3(.2126,.7152,.0722));}V3 SAT(V3 c,F v){return MX(V3(LUM(c)),c,1.+v);}V3 SRP(S2D t,V2 uv,F a,F o){V3 c=TX(t,vTc).rgb;V3 b=c;b+=TX(t,uv+V2(0.,.001*o)).rgb;b+=TX(t,uv+V2(.001*o,0.)).rgb;b+=TX(t,uv-V2(0.,.001*o)).rgb;b+=TX(t,uv-V2(.001*o,0.)).rgb;b+=TX(t,uv+V2(.001*o)).rgb/2.;b+=TX(t,uv-V2(.001*o)).rgb/2.;b+=TX(t,uv+V2(.001*o,-.001*o)).rgb/2.;b+=TX(t,uv+V2(-.001*o,.001*o)).rgb/2.;b/=7.;F s=(c-b).r*a;return c+s;}void main(){F kk=SS01(uSm[0]);F dm=SS01(uSm[1]);F sg=SS01(uSm[2]);F wd=SS01(uSm[3]);F sp=SS01(uSm[4]);F cp=SS01(uSm[5]);F me=SS01(uSm[6]);V2 uv=gl_FragCoord.xy/uRs;V3 C=SRP(uT0,vTc,.4,uPX);C=CLM(C,.05,.95);C=MX(C,C*2.,SSCL01(PW(sp,12.)));F q=16.-MPV(PW(MA(sg,wd),16.),0.,1.,0.,16.*.3);C*=q;C=round(C);C/=q;C=EXP(C,.225);C=CON(C,.325);C=SAT(C,.225);C=LVL(C,.05,.825,.925);uv*=1.-uv.yx;F V=uv.x*uv.y*100.;V=PW(V,.275)+.125+MPR(sg,.125);C*=V;F l=LUM(C);if(l>.1){C=EXP(C,.1+MPR(PW(sp,2.),.1));C=CON(C,.1+MPR(PW(cp,2.),.1));C=RNG(C,0.+.05-MPR(MA(sg,wd),-.05),1.+.1+MPR(PW(me,4.),.125));}else{C=MX(C,uCl[4]*.3,.5);}C=CLM(C,.05,.95);o0=V4(C,1.);}";constructor(e,r){let t=(e,n)=>{let r=`vec${n}(`;for(let t=0;t<n;t++)r+=e().F(),t<n-1&&(r+=",");return r+=")",r},a=e=>t(e,3),s=e=>t(e,4),i=n=>e.choice(["sin","cos"]),o=["c.x","c.y","abs(c.x)","abs(c.y)","c.x+c.y","DST(c.x,c.y)","LN(c)"],m=n=>`MD(${e.choice(o)},${n})`,u=n=>`MD(${e.choice(o.slice(0,5))},${n})`,c=n=>`MD(${e.choice(o.slice(2,7))},${n})`,d=(n,r)=>e.choice([`fS(${n},LN(${r})*.5)`,`fB(${n},${r})`]),p=n=>e.choice(["+=","-="]),l=e.num(1,1.5),V=e.num(-.05,.05),F=r=>0===r?e.dec()<.5?"X":"Z":1===r?"LN(V2(X,Z))":2===r?`sns(V3(V2(X,Z)*${n(l,1,2,.3,.5).F()},${e.dec(10).F()}+T*.2))`:`(.5*(sin(X*${e.num(1,3).F()})+cos(Z*${e.num(1,3).F()})))`,x=`F mmx=${e.dec()<.5?e.num(.3,.5).F():e.num(.5,.7).F()};F mx=mmx+MPR(SSCL01(MA(kk,dm)),(mmx>.5 ? 1.-mmx : mmx));mx=MX(mmx,mx,abs(sin(${u("denom.w")})));F d=MX(a,b,mx);denom=${s((()=>e.num(2,9)))};V2 m1=Mb;V2 m2=Mc;if( ${e.dec().F()}<0.){m1=MX(m1,m1+V2(1.,0.),CL01(${c("denom.x")}));m1=MX(m1,m1-V2(0.,1.),CL01(${c("denom.y")}));m2=MX(m2,m2+V2(0.,1.),CL01(${c("denom.z")}));m2=MX(m2,m2-V2(1.,0.),CL01(${c("denom.w")}));}else{m1+=abs(${i()}(${c("denom.x")}))*V2(1.,0.);m1-=abs(${i()}(${c("denom.y")}))*V2(0.,1.);m2+=abs(${i()}(${c("denom.z")}))*V2(0.,1.);m2-=abs(${i()}(${c("denom.w")}))*V2(1.,0.);}V2 m=MX(m1,m2,SSCL01(mx));denom=${s((()=>e.num(2,5)))};F p=SS01(sp);p=MX(p*.2,p,SSCL01(${m("denom.x")}));p=MX(p*.2,p,SSCL01(${m("denom.y")}));p=MX(p*.2,p,SSCL01(${m("denom.z")}));p=MX(p*.2,p,SSCL01(${m("denom.w")}));p=CL01(p);`;["A","B"].forEach(((n,t)=>{let o=r[n],S=`SDF ${n}(in V3 pos){SDF R=SDF(1e10,V2(-1.),V4(0.),V2(0.),0);pos=oRt(pos,V3(0.,1.,0.),6.2831853072*${V.F()});F X=pos.x;F Z=pos.z;F kk=SS01(uSm[0]);F dm=SS01(uSm[1]);F sg=SS01(uSm[2]);F wd=SS01(uSm[3]);F sp=SS01(uSm[4]);F cp=SS01(uSm[5]);F me=SS01(uSm[6]);F T=1.+uTm*.0003+MPR(me,.325);`;if(0===t)S+=`F W=MPR(SS01(TX(uWv,V2(${F(o.form)}*.02,0.)).a),1.35)+(.1+${e.num(0,.1).F()})*sin(${1===o.wave?"2.":"4."}*(T*${o.wave>1?".3":"1."})-${F(o.wave)}*(2.-MPR(SSCL01(me),${e.num(.1,.2).F()}*${l.F()}))*${l.F()}*${e.num(.8,1.6).F()});R=SDF(fP(pos,V4(0.,1.,0.,W+.2)),Ma,V4(0.),V2(SS01(.5+.5*MX(W,me,.6))),0);`;else if(1===t){let n=e.dec()<.5,r=`{F C=${o.form<2?e.num(.8,1).F():e.num(.725,.775).F()};V2 c=pM2(P.xz,V2(C+${e.num(-.2,.2).F()},C+${e.num(-.2,.2).F()})+MPR(sg,.0125));F bounds=fB(P,V3(.5,5.0,.5));P=oRt(P,NOR(${a((()=>e.dec()))}),${e.num(-.2,.2).F()}*6.2831853072);P.x-=amplitude.x*${i()}(period.x*(${u("denom.x")}+t));P.y-=amplitude.y*${i()}(period.y*(${u("denom.y")}+t));P.z-=amplitude.z*${i()}(period.z*(${u("denom.z")}+t));denom=${s((()=>e.num(4,12)))};V3 off=V3(0.,+.1+MPR(MA(dm,kk),.1)*${i()}(period.w*(${u("denom.w")}+t)),0.);V3 sA=${a((()=>e.num(.4,.7)))};sA+=.1+MPR(dm,.1)+MPS(sin(${e.dec(10).F()}+t*period.x),0.,.1)*amplitude.x;V3 pA=P-V3(0.,MPR(MA(kk,cp),.1)*abs(sin(${c("denom.x")})),0.);F a=${d("pA-off","sA")};a=MA(bounds,a);off*=${e.num(.95,1.05).F()};V3 sB=${a((()=>e.num(.4,.7)))};sB-=.1+MPR(sp,.1)+MPS(sin(${e.dec(10).F()}+t*period.y),0.,.1)*amplitude.y;V3 pB=P-V3(0.,MPR(MA(wd,sg),.1)*abs(sin(${c("denom.y")})),0.);F b=${d("pB-off","sB")};b=MA(bounds,b);${x}d-=.08+MPR(cp,.08);r=SDF(d,m,V4(0.),V2(p),0);}`,t=`{V2 xz=V2(abs(pos.x),abs(pos.z));xz.xy=xz.${e.dec()<.5?"xy":"yx"};xz ${p()} t*${e.num(0,2).F()};P.xz=P.${((n=!0)=>n?e.choice(["x","z"]):e.choice(["xz","zx"]))(0)};V2 c=pM2(P.xz,V2(${n?e.num(3,9).F():e.num(1,2).F()},${e.num(.3,.7).F()})+MPR(sg,.0125));${n} ? pMM2(P.xz,V2(${e.num(.6,1.2).F()}+${i()}(t*${e.pn(.6,1.2).F()})*.5,1.)) : c;P=oRt(P,NOR(${a((()=>e.dec()))}),Z*${e.num(.2,.8).F()}+t*${e.pn(3,4).F()});V3 size=${a((()=>e.num(.3,.8)))};size.y=${e.num(.35,.45).F()}+${i()}(${e.dec().F()}+${[e.choice(["xz.x","xz.y"]),"LN(xz)","MN(xz.x,xz.y)","MA(xz.x,xz.y)"][o.form]}*${e.num(.8,1.6).F()}*MPS(sin(period.w+t*.025),.6,1.2))*${e.num(.3,.5).F()};size.x ${p()} amplitude.x*MPS(sin(${e.dec().F()}+t*period.x),0.,.2)+.1+MPR(dm,.1);size.y ${p()} amplitude.y*MPS(sin(${e.dec().F()}+t*period.y),0.,.2)+.1+MPR(kk,.1);size.z ${p()} amplitude.z*MPS(sin(${e.dec().F()}+t*period.z),0.,.2)+.1+MPR(sg,.1);F pY=${i()}((P.z*${e.num(.5,.5).F()}))*.2+MPR(MA(dm,kk),.1);F a=fB(P-V3(0.,pY,0.),size)-MPV((dm+kk)*.5,0.,1.,0.,.4)*sin(${m("denom.y")});F b=a-MPS(wd,0.,.175);${x}r=SDF(d,m,V4(0.),V2(p),0);}`,l=`{t=T*${e.num(.4,.6).F()};r=SDF(1e10,V2(-1.),V4(0.),V2(0.),0);X=abs(pos.x);Z=abs(pos.z);X ${p()} t*${e.num(1.25,2.5).F()};Z ${p()} t*${e.num(1.25,2.5).F()};F posY=.1+MPR(MA(dm,kk),.1);F radius=${e.num(.2,.5).F()}+${i()}(X*${e.num(.4,1.6).F()}+1.+MPR(dm,1.))*${e.num(.1,.3).F()}+${i()}(Z*${e.num(.4,1.6).F()}+1.+MPR(kk,1.))*${e.num(.1,.3).F()};F height=.5+${i()}(LN(V2(X,Z))*.5)*${e.num(.2,.5).F()};F offset=${i()}(LN(V2(X,Z))*${e.num(.4,1.2).F()})*${e.num(.3,.6).F()};radius+=.2+MPR(MA(dm,kk),.2);offset+=.1+MPR(MA(sp,cp),.1);V2 c=pM2(P.xz,V2(${e.num(3,9).F()}+MPR(sg,.075)));P.x+=t*.6*${e.dec()<.5?"1.":"-1."}*${e.num(.8,1.2).F()};P.z+=t*.6*${e.dec()<.5?"1.":"-1."}*${e.num(.8,1.2).F()};c=pM2(P.xz,V2(${e.num(.5,1).F()}+MPR(wd,0.01)));posY+=.1+MPR(cp,.1)*abs(sin(${c("denom.x")}));radius ${p()} .125+MPR(dm,.125)*abs(sin(${c("denom.y")}));offset ${p()} .125+MPR(sg,.125)*abs(sin(${c("denom.z")}));height ${p()} .125+MPR(wd,.125)*abs(sin(${c("denom.w")}));V3 h=V3(${e.num(.3,.6).F()},height*2.,${e.num(.4,.6).F()});F a=${d("P+V3(0.,posY,0.)","h")};F b=${d("P+V3(offset,0.,offset)","V3(radius,radius*1.5,radius)")};${x}d-=.08+MPR(cp,.08);m=MX(m,Md,.3);r=oIS(SDF(a,m,V4(0.),V2(p),0),SDF(b,m,V4(0.),V2(p),0),MPS(sg,0.,.2));}`;S+=`V3 P=pos;F t=1.+.2*uTm*.0003+MPR(me,.325)*.6;SDF r=SDF(1e10,V2(-1.),V4(0.),V2(0.),0);V4 amplitude=${s((()=>e.num(.15,.5)))};V4 period=${s((()=>e.num(3,6)))};V4 denom=${s((()=>e.num(4,12)))};`,0===o.wave?o.form<2?S+=`${r}R=r;`:S+=`${r}SDF a=r;${r}SDF b=r;R=oIS(a,b,MPS(sg,0.,.25));`:S+=`${1===o.wave?t:l}R=r;`}S+="return R;}",this.d=this.d.INC(n,S)}))}}(s,o),v=u.createElement("style");v.innerHTML="*{overflow:hidden;margin:0;background:#000;visibility:hidden;}body{display:flex;justify-content:center;align-items:center}canvas{visibility:visible}}",c.appendChild(v);let $=u.createElement("canvas");c.appendChild($);let C=$.getContext("webgl2",{preserveDrawingBuffer:!0});"drawingBufferColorSpace"in C&&(C.drawingBufferColorSpace="display-p3");let g=C.FRAMEBUFFER,P=C.ARRAY_BUFFER,b=C.ELEMENT_ARRAY_BUFFER,T=C.TEXTURE_2D,A=C.STATIC_DRAW,D=C.UNSIGNED_BYTE,w=C.RGBA,z=C.TEXTURE_MIN_FILTER,L=C.TEXTURE_MAG_FILTER,X=C.TEXTURE_WRAP_S,E=C.TEXTURE_WRAP_T,N=C.CLAMP_TO_EDGE,U=C.NEAREST,k=C.LINEAR,B=C.MIRRORED_REPEAT,W=C.COLOR_ATTACHMENT0,_=e=>C.createBuffer(),I=e=>C.bindVertexArray(e),O=(e,n)=>C.bindBuffer(e,n),q=(e,n,r)=>C.bufferData(e,n,r),G=e=>C.bindFramebuffer(g,e),H=e=>C.bindTexture(T,e),Z=(e,n)=>C.texParameteri(T,e,n),Y=(e,n,r,t,a,s,i)=>C.texImage2D(T,0,e,n,r,t,a,s,i),j=e=>C.activeTexture(C.TEXTURE0),J=(e,n)=>C.uniform1i(e,n),K=(e,n)=>C.uniform1f(e,n),Q=(e,n)=>C.uniform1fv(e,n),ee=(e,n)=>C.uniform2fv(e,n),ne=(e,n)=>C.uniform3fv(e,n),re=e=>C.viewport(0,0,be[0],be[1]),te=e=>C.drawElements(C.TRIANGLES,6,C.UNSIGNED_SHORT,0),ae=e=>C.finish();class se{constructor(e,n,r,t,a,s){C??=e,this.v=n,this.frag=r,this.createProgram(),this.useProgram(),t.forEach((e=>{this[e]=C.getAttribLocation(this.program,e)})),a.forEach((e=>{this[e]=C.getUniformLocation(this.program,e)})),this.vertexArray=C.createVertexArray(),I(this.vertexArray),this.vertexBuffer=_(),O(P,this.vertexBuffer),q(P,new Float32Array([-1,1,0,-1,-1,0,1,-1,0,1,1,0]),A),-1!==this.aPs&&(C.enableVertexAttribArray(this.aPs),C.vertexAttribPointer(this.aPs,3,C.FLOAT,!1,0,0)),s&&(O(P,s),C.enableVertexAttribArray(this.aTc),C.vertexAttribPointer(this.aTc,2,C.FLOAT,!1,0,0)),this.indexBuffer=_(),O(b,this.indexBuffer),q(b,new Uint16Array([0,1,2,0,2,3]),A),I(null),O(P,null),O(b,null)}useProgram(){C.useProgram(this.program)}getUniform(e){return C.getUniform(this.program,e)}createProgram(){return this.vertexShader=this.createShader(C.VERTEX_SHADER,this.v),this.fragmentShader=this.createShader(C.FRAGMENT_SHADER,this.frag),this.program=C.createProgram(),C.attachShader(this.program,this.vertexShader),C.attachShader(this.program,this.fragmentShader),C.linkProgram(this.program),this.program}createShader(e,n){let r=C.createShader(e);return C.shaderSource(r,n),C.compileShader(r),r}}let ie,oe,me,ue,ce,de,pe,le,Ve,Fe=4096,xe=!1,Se=!1,he=[40,180,450,1500,3e3,5e3,1e4],Me=u.createElement("audio"),fe=C.createTexture(),Re=new Uint8Array(Array.from(new Array(1024),(e=>127)));H(fe),Y(w,256,1,0,w,D,Re),Z(z,k),Z(L,k),Z(X,B),Z(E,B);let ye=[],ve=!0,$e=0,Ce=(e=!1)=>{ye.length>0&&(ge(),e&&(Me.src=ye[$e].url,Me.load()),Me.play(),ve=!1)},ge=e=>{Me.paused||Me.pause()},Pe=e=>{$e+=1,$e>=ye.length&&($e=0),Ce(!0)};m.onkeydown=e=>{let n=e.keyCode;ye.length>0&&(37===n&&($e-=1,$e<0&&($e=ye.length-1),Ce(!0)),39===n&&Pe(),32===n&&(ye.length<=0||(Me.paused?Ce():ge(),ve=Me.paused)))},m.ondragover=e=>e.preventDefault(),m.ondrop=e=>{if(e.preventDefault(),e.stopPropagation(),!ie)return void alert("Click Required");let n=0===ye.length,r=e.dataTransfer.files;if(r.length>0)for(let e=0;e<r.length;e++){let n=r[e];["wav","mpeg","aac","ogg","flac"].some((e=>n.type.includes(e)))&&(ye.some((e=>e.name===n.name))||ye.push({name:n.name,url:URL.createObjectURL(n)}))}ye.length>0&&Me.paused&&n&&Ce(!0)};let be=[m.innerWidth,m.innerHeight],Te=e=>{be=[m.innerWidth,m.innerHeight],$.width=be[0],$.height=be[1],$.style.width=be[0]+"px",$.style.height=be[1]+"px",$.style.imageRendering="pixelated",a=Math.max(1,Math.round(Math.min(be[0],be[1])/(448*f)*4)/4),C.texImage2D(T,0,w,be[0]/a,be[1]/a,0,w,D,null),xe=!0},Ae=C.createTexture();H(Ae),Y(w,be[0]/a,be[1]/a,0,w,D,null),Z(z,U),Z(L,U),Z(X,N),Z(E,N),m.onresize=Te,Te();let De=e=>{Se=u.webkitIsFullScreen||u.mozFullScreen||u.fullscreenElement||!1,$.style.cursor=Se?"none":"auto"};m.addEventListener("fullscreenchange",De,!1),m.addEventListener("webkitfullscreenchange",De,!1),m.addEventListener("mozfullscreenchange",De,!1),m.onclick=async e=>{if(!l&&!ie){ie=new(window.AudioContext||window.webkitAudioContext),de=ie.createAnalyser(),de.fftSize=Fe,de.minDecibels=V,de.maxDecibels=F,pe=new Float32Array(Fe),le=new Float32Array(Fe),Ve=new Float32Array(Fe),navigator.mediaSession.setActionHandler("pause",(()=>{}));let e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:M,sampleRate:48e3,sampleSize:16,latency:0,volume:1},video:!1});oe=ie.createMediaStreamSource(e),me=ie.createGain(),oe.connect(me),me.connect(de),ue=ie.createMediaElementSource(Me),ce=ie.createGain(),ue.connect(ce),ce.connect(de),ce.connect(ie.destination)}},m.ondblclick=e=>{var n=c;e instanceof HTMLElement&&(n=e),n.requestFullScreen=n.requestFullScreen||n.webkitRequestFullScreen||n.mozRequestFullScreen||function(){return!1},u.cancelFullScreen=u.cancelFullScreen||u.webkitCancelFullScreen||u.mozCancelFullScreen||function(){return!1},Se?u.cancelFullScreen():n.requestFullScreen()};let we=((...e)=>{let n=C.createFramebuffer();G(n);let r=[W];return e.forEach(((e,n,t)=>{C.framebufferTexture2D(g,r[n],T,e,0)})),n})(Ae),ze=new se(C,y.v,y.d,["aPs","aTc"],["uRs","uTm","uSm","uWv","uCl","uRn"]),Le=_();O(P,Le),q(P,new Float32Array([0,1,0,0,1,0,1,1]),A);let Xe,Ee,Ne,Ue,ke,Be,We=new se(C,y.v,y.p,["aPs","aTc"],["uRs","uT0","uSm","uCl","uPX"],Le),_e=0,Ie=e=>{ke=Date.now(),Be&&Ee||(Be=ke,Ee=ke),l?(Ne=0,Ue=0,_e=0):(Ne=ke-Be,Ue=ke-Ee),ie&&(me&&ce&&(me.gain.value=Me.paused?1:0,ce.gain.value=Me.paused?0:1),ye.length>0&&Me.paused&&!ve&&Pe()),(Ne>Xe||l)&&(Be=ke-Ne%Xe,_e+=30*(o.samples[7]??0),l&&!xe||(Oe(),qe(),Ge(),xe=!1)),requestAnimationFrame(Ie)},Oe=r=>{if(!ie)return;de.getFloatFrequencyData(pe),de.getFloatTimeDomainData(Ve);let a=[];for(let e=0;e<le.length;e++){let r=(s=le[e],i=Ve[e],.005,m=Ne,void 0,void 0,void 0,u=s,c=i,(1-(d=1-Math.exp(-.005*m)))*u+d*c);le[e]=r,r=parseInt(n(r,-1,1,0,255)),a.push(r)}var s,i,m,u,c,d;let p=[];for(let e=0;e<a.length;e+=16){let n=0;for(let r=0;r<16;r++)n+=a[e+r];n/=16,p.push([n,n,n,n])}let l=new Uint8Array(p.flat());H(fe),Y(w,256,1,0,w,D,l);let V=0;for(let r=0;r<6;r++){let a=t(de,pe,he[r+0],he[r+1]);a=n(e(a,.15,1),.15,1,0,1),a=Math.pow(a,n(r,0,5,1,.3)),F=a,a=(F/=.5)<1?.5*F*F:-.5*(--F*(F-2)-1),o.samples[r]=a,V+=a}var F;o.samples[6]=V/6,o.samples[7]=Math.pow(n(V,0,5,0,1),1.4)},qe=e=>{re(),C.clear(C.COLOR_BUFFER_BIT|C.DEPTH_BUFFER_BIT),ze.useProgram(C),I(ze.vertexArray),G(we),K(ze.uTm,Ue+_e+x),ee(ze.uRs,[be[0]/a,be[1]/a]),Q(ze.uSm,o.samples),ne(ze.uCl,o.colors),Q(ze.uRn,o.randoms),J(ze.uWv,0),j(),H(fe),C.drawBuffers([W]),te(),ae()},Ge=e=>{re(),We.useProgram(C),G(null),I(We.vertexArray),ee(We.uRs,be),J(We.uT0,0),Q(We.uSm,o.samples),ne(We.uCl,o.colors),K(We.uPX,a),j(),C.bindTexture(T,Ae),te(),ae()};Xe=1e3/(p?30:60),requestAnimationFrame(Ie)})();
Inspired by my nostalgic love of rich worlds constructed in early video games using simple shapes with limited palettes, and the mesmerizing music visualization plugins that emerged in an era when sharing creativity online was a joyous pastime, this artwork reflects the playful media I have enjoyed over the years and aims to contribute more joy to the world.. **Interactions** **`click`** - allow microphone & activate audio **`drag & drop`** - add audio files to playlist **`spacebar`** - toggle playlist / microphone monitoring **`left/right arrows`** - next / previous track **`double click`** - toggle fullscreen **URL Configuration** **`quality=1`** - adjust pixelation (0.25 to 4,) **`maxDb=6`** - set max sample decibel (>0)\* **`minDb=120`** - set min sample decibel (>30)\* _\*Decibles will be interpreted as negative values_ `URL?quality=2&maxDb=12&minDb=96` **`static=true`** - render single frame (quality 4) **`time=1`** - advances time in seconds (1 to N) `URL?static=true&time=60`
0xf429690d…aeac·#16,285,572·0x79d9080d…3a2ab0
Editions by Owen MooreAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failed
0xf429690d…aeac·#16,278,789·0x8ab561d6…cbe307
Editions by Owen MooreAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failed
0xf429690d…aeac·#16,278,693·0xaa6f1c5e…0a7ab7
Artwork by Owen MooreAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failed
*Erratic : irregular in performance, behaviour, or attitude; inconsistent and unpredictable* One’s harmony with the world can become severed while experiencing stress. Feeling lost or confused within a clouded mind, struggling to call upon a creative muse, defending your self-worth against creeping doubts, and projecting flashes of anger towards others. This torrent of bubbling turmoil can sustain by fixating on the moments of chaos, past, and present. Continuing to feed the storm in this way ultimately will lead to burdensome strife and a ravaged mind. As a nascent artist working to hone my artistic abilities and establish myself within a historical art movement, I have often experienced stress along my journey. This collection captures these internal struggles as fragmented waves of colour arranged across a spectrum of relative calms, chaotic bursts, and winding paths. Each piece reflects a unique sense of uncertainty. My intent for Erratic was to challenge myself to create a purist’s form of generative art, wherein a set of randomized values are shaped to be used directly as inputs into an instruction path that is consistent in execution and does not use branching conditionals as a means of achieving variety in composition, colour or form. By actively rejecting predetermined features in favour of shaping a domain that is acted upon consistently, I felt I could achieve occurrences of uniquely identifiable emergent design that I otherwise may not have discovered. The work begins with a euclidean coordinate space intended to render a smoothed half-torus which is then randomly mutated through progressive iterations of translations, rotations, polar reflections, slices, twists, and distortions. This pattern of operations produces a nearly infinite set, shaped only by the defined input ranges, from which each piece will be minted. Any knowledge of the instantiated values before viewing could not lead to any reasonable prediction of what will be rendered.
*Erratic : irregular in performance, behaviour, or attitude; inconsistent and unpredictable* One’s harmony with the world can become severed while experiencing stress. Feeling lost or confused within a clouded mind, struggling to call upon a creative muse, defending your self-worth against creeping doubts, and projecting flashes of anger towards others. This torrent of bubbling turmoil can sustain by fixating on the moments of chaos, past, and present. Continuing to feed the storm in this way ultimately will lead to burdensome strife and a ravaged mind. As a nascent artist working to hone my artistic abilities and establish myself within a historical art movement, I have often experienced stress along my journey. This collection captures these internal struggles as fragmented waves of colour arranged across a spectrum of relative calms, chaotic bursts, and winding paths. Each piece reflects a unique sense of uncertainty. My intent for Erratic was to challenge myself to create a purist’s form of generative art, wherein a set of randomized values are shaped to be used directly as inputs into an instruction path that is consistent in execution and does not use branching conditionals as a means of achieving variety in composition, colour or form. By actively rejecting predetermined features in favour of shaping a domain that is acted upon consistently, I felt I could achieve occurrences of uniquely identifiable emergent design that I otherwise may not have discovered. The work begins with a euclidean coordinate space intended to render a smoothed half-torus which is then randomly mutated through progressive iterations of translations, rotations, polar reflections, slices, twists, and distortions. This pattern of operations produces a nearly infinite set, shaped only by the defined input ranges, from which each piece will be minted. Any knowledge of the instantiated values before viewing could not lead to any reasonable prediction of what will be rendered. **URL Parameters** Editions can be rendered in custom aspect ratios/resolutions by using these URL parameters in live mode and are intended for generating desktop or mobile backgrounds, social media banners, and print-quality images for any frame size. Once generated, simply - *right click, save as...* - `aspect=W:H` - fits window to aspect ratio, from `3:1` to `1:3` ( ex: `16:9` | `5:4` | `1:1` ) - `xy=W:H` - renders at resolution, min `500` for both W and H (ex: `1920:1080`) - `aa=N` - renders at specified anti-aliasing (defaults to 2, maximum is 4) Example URL for social media banner, with high AA samples: `https://{ab_url}/{token_id}?xy=1500:500&aa=4`
class PRG{constructor(r,e,t,u,a){this.v=cS(G,G.VERTEX_SHADER,`${fD}${r}`),this.f=cS(G,G.FRAGMENT_SHADER,`${fD}${fU}${e}`.replace("#UT",fI).replace("#AJ",fA).replace("#NS",fN)),this.P=G.createProgram(),[this.v,this.f].forEach(r=>G.attachShader(this.P,r)),G.linkProgram(this.P),UP(this.P),t.forEach(r=>{this[r]=G.getAttribLocation(this.P,r)}),u.forEach(r=>{this[r]=G.getUniformLocation(this.P,r)}),this.vA=G.createVertexArray(),BV(this.vA),this.vB=CB(),BB(AB,this.vB),BD(AB,new Float32Array([-1,1,0,-1,-1,0,1,-1,0,1,1,0])),-1!==this.aPS&&(EV(this.aPS),AP(this.aPS,3)),a&&(BB(AB,a),EV(this.aTX),AP(this.aTX,2)),this.iB=CB(),BB(EB,this.iB),BD(EB,new Uint16Array([0,1,2,0,2,3])),BV(null),BB(AB,null),BB(EB,null)}D(){G.deleteVertexArray(this.vA),[this.vB,this.iB].forEach(r=>G.deleteBuffer(r)),[(this.v,this.f)].forEach(r=>G.deleteShader(r)),G.deleteProgram(this.P)}}let pR=new PRG(vQ,fR,["aPS","aTX"],["uRS","uT","uR","uP","uM","uC","uW","uL","uO","uY","uZ","uD","uX"]),pB=new PRG(vQ,fB,["aPS","aTX"],["uRS","uT0"],bP),pP=new PRG(vQ,fP,["aPS","aTX"],["uRS","uC","uS","uB","uN","uO","uT0","uT1"],bP),Z=r=>{G.clearColor(0,0,0,0),G.clear(G.COLOR_BUFFER_BIT|G.DEPTH_BUFFER_BIT),UP(pR.P),BF(bR),BV(pR.vA),U2F(pR.uRS,D),U1F(pR.uT,uT),U1V(pR.uR,uR),U3F(pR.uP,uP),U3F(pR.uM,uM),U3F(pR.uC,uC),U4F(pR.uW,uW),U3F(pR.uL,uL),U1F(pR.uY,uY),U1F(pR.uZ,uZ),U3F(pR.uD,uD),U3F(pR.uX,uX),G.drawBuffers(TT);((r,e)=>{[[0,0,r,e],[r,0,r,e],[0,e,r,e],[r,e,r,e]].forEach(r=>{G.viewport(r[0],r[1],r[2],r[3]),DE(),FN()})})(.5*D[0],.5*D[1])},px=new Uint8Array(D[0]*D[1]*4),QC=r=>{G.readPixels(0,0,D[0],D[1],G.RGBA,UB,px);let e=r=>.21*r[0]+.71*r[1]+.07*r[2],t=0,u=0,a=0,n=(r=>{var e,t=r.length,u=new Float32Array(r.length);for(e=0;e<t;e++)u[e]=r[e]/255;return u})(px);for(let r=0;r<n.length;r+=4){let i=n.slice(r,r+4);if(0!==i[3]){let r=e(i);t+=r<.225?1:0,u+=r>.325?1:0,a+=1}}let i=t/a,V=u/a;return i=i>.9?Math.ceil(100*(i+.1))/100:Math.floor(100*(i-.1))/100,V=V>.9?Math.ceil(100*(V+.1))/100:Math.floor(100*(V-.1))/100,i>.9||V>.9},J=r=>{UP(pB.P),AT(T0),U1I(pB.uT0,0),BV(pB.vA),U2F(pB.uRS,D),VP();for(let r=0;r<64;r++)r%2==0?(BT(t0),BF(b1),DE()):(BT(t1),BF(b0),DE()),FN()},K=r=>{UP(pP.P),BF(null),BV(pP.vA),U2F(pP.uRS,D),U3F(pP.uC,uC),U1F(pP.uS,uS),U1F(pP.uB,uB),U1F(pP.uN,uN),U1F(pP.uO,uO),U1I(pP.uT0,0),U1I(pP.uT1,1),AT(T0),BT(tR),AT(T1),BT(t0),VP(),DE()},L=r=>{BV(null),BB(AB,null),BB(EB,null),BF(null),[tR,t0,t1].forEach(r=>G.deleteTexture(r)),[bR,b0,b1].forEach(r=>G.deleteFramebuffer(r)),G.deleteBuffer(bP),pR.D(G),pP.D(G)};if(Object.keys(Q).includes(ID)){do{dw++,I()}while(dw<Q[ID]);Z()}else do{dw++,I(),Z()}while(QC()&&dw<9);J(),K(),L();
let fD="#version 300 es\nprecision highp int;\nprecision highp float;\n#define EPS .0006\n#define ASR (3./2.)\n#define SCL 2400.\n#define PI 3.14159265359\n#define FL float\n#define V2 vec2\n#define V3 vec3\n#define V4 vec4\n#define IN int\n#define S2D sampler2D\n#define UNI uniform\n#define CL01(T) CL(T,0.,1.)\n#define VD void\n#define M3 mat3\n#define M2 mat2\n#define PW pow\n#define AB abs\n#define DT dot\n#define NM normalize\n#define LN length\n#define MN min\n#define MA max\n#define CL clamp\n#define RT return\n#define MX mix\n#define TX texture\n",fU="UNI V2 uRS;UNI FL uT;UNI FL uR[9];UNI V3 uP;UNI V3 uM[4];UNI V3 uC[3];UNI V4 uW;UNI V3 uL;UNI FL uY;UNI FL uZ;UNI V3 uD;UNI V3 uX;UNI FL uS;UNI FL uB;UNI FL uN;UNI FL uO;UNI S2D uT0;UNI S2D uT1;",fI="FL sm3(V3 c){RT c.x+c.y+c.z;}FL lm(V3 c){RT .21*c.r+.71*c.g+.07*c.b;}FL mpd(FL n,FL a,FL b,FL c,FL d){RT((n-a)/(b-a))*(d-c)+c;}",fA="V3 G(V3 c,FL g){RT PW(c,V3(1./g));}V3 R(V3 c,FL l,FL h){RT MN(MA(c-V3(l),V3(0.))/(V3(h)-V3(l)),V3(1.));}V3 lvl(V3 c,FL l,FL g,FL h){RT G(R(c,l,h),g);}FL ovr(FL a,FL b){RT a<.5?(2.*a*b):(1.-2.*(1.-a)*(1.-b));}V3 ovr(V3 a,V3 b){RT V3(ovr(a.r,b.r),ovr(a.g,b.g),ovr(a.b,b.b));}V3 ovr(V3 a,V3 b,FL o){RT(ovr(a,b)*o+a*(1.-o));}FL ddg(FL a,FL b){RT(b==1.)?b:MN(a/(1.-b),1.);}V3 ddg(V3 a,V3 b){RT V3(ddg(a.r,b.r),ddg(a.g,b.g),ddg(a.b,b.b));}V3 ddg(V3 a,V3 b,FL o){RT(ddg(a,b)*o+a*(1.-o));}",fN="V3 m289(V3 x){RT x-floor(x*(1./289.))*289.;}V4 m289(V4 x){RT x-floor(x*(1./289.))*289.;}V4 pr(V4 x){RT m289(((x*34.)+1.)*x);}V4 ty(V4 r){RT 1.79284291400159-0.85373472095314*r;}V3 fd(V3 t){RT t*t*t*(t*(t*6.-15.)+10.);}FL nse(V3 P){V3 i0=m289(floor(P)),i1=m289(i0+V3(1.));V3 f0=fract(P),f1=f0-V3(1.),f=fd(f0);V4 ix=V4(i0.x,i1.x,i0.x,i1.x),iy=V4(i0.yy,i1.yy);V4 iz0=i0.zzzz,iz1=i1.zzzz;V4 ixy=pr(pr(ix)+iy),ixy0=pr(ixy+iz0),ixy1=pr(ixy+iz1);V4 gx0=ixy0*(1./7.),gy0=fract(floor(gx0)*(1./7.))-.5;V4 gx1=ixy1*(1./7.),gy1=fract(floor(gx1)*(1./7.))-.5;gx0=fract(gx0);gx1=fract(gx1);V4 gz0=V4(.5)-AB(gx0)-AB(gy0),sz0=step(gz0,V4(0.));V4 gz1=V4(.5)-AB(gx1)-AB(gy1),sz1=step(gz1,V4(0.));gx0-=sz0*(step(0.,gx0)-.5);gy0-=sz0*(step(0.,gy0)-.5);gx1-=sz1*(step(0.,gx1)-.5);gy1-=sz1*(step(0.,gy1)-.5);V3 g0=V3(gx0.x,gy0.x,gz0.x),g1=V3(gx0.y,gy0.y,gz0.y),g2=V3(gx0.z,gy0.z,gz0.z),g3=V3(gx0.w,gy0.w,gz0.w),g4=V3(gx1.x,gy1.x,gz1.x),g5=V3(gx1.y,gy1.y,gz1.y),g6=V3(gx1.z,gy1.z,gz1.z),g7=V3(gx1.w,gy1.w,gz1.w);V4 norm0=ty(V4(DT(g0,g0),DT(g2,g2),DT(g1,g1),DT(g3,g3)));V4 norm1=ty(V4(DT(g4,g4),DT(g6,g6),DT(g5,g5),DT(g7,g7)));g0*=norm0.x;g2*=norm0.y;g1*=norm0.z;g3*=norm0.w;g4*=norm1.x;g6*=norm1.y;g5*=norm1.z;g7*=norm1.w;V4 nz=MX(V4(DT(g0,V3(f0.x,f0.y,f0.z)),DT(g1,V3(f1.x,f0.y,f0.z)),DT(g2,V3(f0.x,f1.y,f0.z)),DT(g3,V3(f1.x,f1.y,f0.z))),V4(DT(g4,V3(f0.x,f0.y,f1.z)),DT(g5,V3(f1.x,f0.y,f1.z)),DT(g6,V3(f0.x,f1.y,f1.z)),DT(g7,V3(f1.x,f1.y,f1.z))),f.z);RT 2.2*MX(MX(nz.x,nz.z,f.y),MX(nz.y,nz.w,f.y),f.x);}",vQ="in V3 aPS;in V2 aTX;out V2 vTX;VD main(){gl_Position=V4(aPS,1.);vTX=aTX;}",fB="in V2 vTX;out V4 o0;#UTV3 B(S2D t,V2 uv,V2 xy,V2 d){V4 c=V4(0.);V2 x=V2(1.411764705882353)*d;V2 y=V2(3.2941176470588234)*d;V2 z=V2(5.176470588235294)*d;c+=TX(t,uv)*0.1964825501511404;c+=TX(t,uv+(x/xy))*.2969069646728344;c+=TX(t,uv-(x/xy))*.2969069646728344;c+=TX(t,uv+(y/xy))*.09447039785044732;c+=TX(t,uv-(y/xy))*.09447039785044732;c+=TX(t,uv+(z/xy))*.010381362401148057;c+=TX(t,uv-(z/xy))*.010381362401148057;RT c.rgb;}VD main(){V2 uv=gl_FragCoord.xy/uRS.xy;o0=V4(B(uT0,uv,uRS,4.*V2((uRS.x/SCL))),1.);}",fR=`layout(location=0) out V4 o0;layout(location=1) out V4 o1;layout(location=2) out V4 o2;#UT#NSFL bx(V3 p,V3 b){V3 q=AB(p)-b;RT LN(MA(q,0.))+MN(MA(q.x,MA(q.y,q.z)),0.);}FL ts(V3 p,V2 t){V2 q=V2(LN(p.xz)-t.x,p.y);RT LN(q)-t.y;}FL sub(FL a,FL b,FL k){FL h=CL01(.5-.5*(b+a)/k);RT MX(b,-a,h)+k*h*(1.-h);}VD pol(inout V2 p,FL i){FL d=2.*PI/i;FL a=atan(p.y,p.x)+d/2.;FL r=LN(p);a=mod(a,d)-d/2.;p=V2(cos(a),sin(a))*r;}V3 twt(V3 p,FL k){FL c=cos(k*p.z+k);FL s=sin(k*p.z+k);M2 m=M2(c,-s,s,c);RT V3(m*p.xy,p.z);}M3 rot(V3 a,FL d){a=NM(a);FL s=sin(d);FL c=cos(d);FL o=1.-c;RT M3(o*a.x*a.x+c,o*a.x*a.y-a.z*s,o*a.z*a.x+a.y*s,o*a.x*a.y+a.z*s,o*a.y*a.y+c,o*a.y*a.z-a.x*s,o*a.z*a.x-a.y*s,o*a.y*a.z+a.x*s,o*a.z*a.z+c);}FL map(V3 p){p*=rot(V3(1.),EPS);p*=rot(V3(0.,0.,1.),PI/2.);p+=uM[0];V3 A=V3(0.);V3 B=NM(uL);for(FL i=0.;i<uT;i++){FL r=uR[0];FL s=mpd(i,0.,uT-1.,.2,PI);p+=uM[1]*s*r;pol(p.xy,uP.x);p+=uM[2]*s*r;pol(p.yx,uP.y);p+=uM[3]*s*r;pol(p.xy,uP.z);FL h=DT(p-A,B-A)/PW(LN(B-A),2.);if(h<.5){p+=V3(uR[1])*mpd(i,0.,uT,-.5,.5);p*=rot(NM(uP.xyz),uR[2]);}}p.x=AB(p.x)+EPS;p.y=AB(p.y)+EPS;p.z=AB(p.z)+EPS;FL t=ts(p,V2(1.05,.3));FL b=bx(p+V3(0.,0.,-2.),V3(2.,2.,2.));FL r=sub(b,t,.3);RT r;}FL unwrap(V3 ro,V3 rd){FL d=0.;for(IN i=0;i<5;++i){FL D=map(ro+rd*d);d+=D*.15;}RT d;}V3 nor(V3 p){FL d=map(p);FL E=EPS+uY;RT NM(V3(d-map(p-V3(E,0,0)),d-map(p-V3(0,E,0)),d-map(p-V3(0,0,E))));}V3 ren(V3 ro,V3 rd,V2 uv){V3 c;FL d=unwrap(ro,rd);rd+=uW.xyz;rd=twt(rd,uW.w);d+=sin(uD.x*rd.x)+cos(uD.y*rd.y)+tan(uD.z*rd.z);d+=nse(V3(uv,uX.x*1000.)*uX.y)*uX.z;V3 pos=ro+rd*d;V3 nor=nor(pos);V3 ref=reflect(rd,nor);V3 lgt=NM(V3(.8,.4,.6));FL dff=CL01(DT(nor,lgt));c=.8*NM(nor.x*uC[0]+nor.y*uC[1]+nor.z*uC[2])*dff;c+=.06*uC[1]*(.6+.4*nor.y);c+=.06*uC[2]*CL01(-nor.y);c+=.12*PW(CL01(DT(nor,NM(lgt-rd))),8.)*dff;c+=.12*PW(CL01(1.+DT(nor,rd)),8.)*dff;RT c;}VD main(){V3 t,c;V2 fg=gl_FragCoord.xy;V2 uv=gl_FragCoord.xy/uRS.xy;if(uR[3]<.5)fg.x=uRS.x-fg.x;if(uR[4]<.5)fg.y=uRS.y-fg.y;FL r=uRS.x/uRS.y;FL f=r<ASR?r/ASR:1.;for(IN m=0;m<${AA};m++){for(IN n=0;n<${AA};n++){V2 o=V2(FL(m),FL(n))/FL(${AA})-.5;V2 p=(2.*(fg+o)-uRS.xy)/uRS.y;V3 ro=V3(0.,0.,.5);V3 rd=NM(V3(p.xy,-uZ*f));c=ren(ro,rd,uv);for(FL i=0.;i<3.;i++){FL s=mpd(i,0.,2.,1.,.8);V4 z=V4(.6*i,.4/i,.3*i,.2/i);rd=i==2.?rd*V3(-1.2,-1.2,.8):rd;if(lm(c)<.1*s){c=MA(c,ren(ro+V3(-.2*i,-.2*i,uR[5]+z.x),rd,uv));}if(lm(c)>.9*s){c=MN(c,ren(ro-V3(-.2*i,-.2*i,uR[6]+z.y),rd,uv));}if(sm3(c)<.1*s){c=MA(c,ren(ro+V3(.2*i,.2*i,uR[7]+z.z),rd,uv));}if(sm3(c)>.9*s){c=MN(c,ren(ro-V3(.2*i,.2*i,uR[8]+z.w),rd,uv));}}t+=c;}}t/=FL(${AA}*${AA});t=PW(t,V3(.45));t=CL01(t);t=t*t*(3.-2.*t);FL a=1.;if(r!=ASR){if(r<ASR){FL Y=uv.y*ASR/r;FL A=((ASR/r)-1.)*.5;a=(Y>1.+A||Y<0.+A)?0.:1.;}else{FL X=uv.x*r/ASR;FL A=((r/ASR)-1.)*.5;a=(X>1.+A||X<0.+A)?0.:1.;}}V4 res=V4(t,a);o0=o1=o2=res;}`,fP="in V2 vTX;out V4 o0;#UT#AJVD main(){V2 uv=gl_FragCoord.xy/uRS.xy;V3 c=TX(uT0,vTX).rgb;FL bl=.0085;FL ct=.015;FL as=uRS.x/uRS.y;FL xa=as>1.?ct/as:ct;FL xb=1.-xa;FL ya=as<1.?ct*as:ct;FL yb=1.-ya;if(uv.x>xa&&uv.x<xb&&uv.y>ya&&uv.y<yb){FL l=lm(c);c+=uB*PW(l,1.2);c=MX(V3(DT(c,V3(.2125,.7154,.0721))),c,uS);c=MX(c,smoothstep(0.,1.,c),uN);c=MX(c,MA(c,NM((uC[0]+uC[1]+uC[2])*(1./3.))),uO);V3 ad=TX(uT1,vTX).rgb;ad=lvl(ad,.1,1.1,.9);c=ovr(c,ad,.15);c=ddg(c,ad,.15);FL blk=.14;FL wht=.92;c=V3(CL(c.r,blk,wht),CL(c.g,blk,wht),CL(c.b,blk,wht));FL L=(uv.x-xa)/bl;FL R=(xb-uv.x)/bl;FL B=(uv.y-ya)/bl/as;FL T=(yb-uv.y)/bl/as;FL M=MN(MN(L,R),MN(T,B));if(M<=1.&&l<1.-M){c=V3(1.);}}else{c=V3(1.);}o0=V4(c,1.);}";
let Q={},ID=tokenData.tokenId.slice(-3),W=window,O=document,Y=O.body,S=O.createElement("style");S.innerHTML="*{overflow:clip;margin:0;background:#000;height:100%;}body{display:flex;justify-content:center;align-items:center}canvas{align-self:center;}",Y.appendChild(S);let C=O.createElement("canvas");Y.appendChild(C);let G=C.getContext("webgl2",{preserveDrawingBuffer:!0});class RND{constructor(r){this.h=r,this.u=!1;let e=function(r){let e=parseInt(r.substr(0,8),16),t=parseInt(r.substr(8,8),16),u=parseInt(r.substr(16,8),16),a=parseInt(r.substr(24,8),16);return function(){let r=((e|=0)+(t|=0)|0)+(a|=0)|0;return a=a+1|0,e=t^t>>>9,t=(u|=0)+(u<<3)|0,u=(u=u<<21|u>>>11)+r|0,(r>>>0)/4294967296}};this.A=new e(this.h.substr(2,32)),this.B=new e(this.h.substr(34,32));for(let r=0;r<1e6;r+=2)this.A(),this.B()}dec(){return this.u=!this.u,this.u?this.A():this.B()}num(r,e){return r+(e-r)*this.dec()}int(r,e){return Math.floor(this.num(r,e+1))}dst(r,e){return Array.from(new Array(r),r=>this.dec()).reduce((r,e)=>r+e,0)/r*(2*e)-e}}let uT,uR,uP,uM,uC,uW,uL,uS,uB,uN,uO,uY,uZ,uD,uX,z,R=new RND(tokenData.hash),AB=G.ARRAY_BUFFER,EB=G.ELEMENT_ARRAY_BUFFER,FB=G.FRAMEBUFFER,T2=G.TEXTURE_2D,UB=G.UNSIGNED_BYTE,TT=[G.COLOR_ATTACHMENT0,G.COLOR_ATTACHMENT1,G.COLOR_ATTACHMENT2],T0=G.TEXTURE0,T1=G.TEXTURE1,CB=r=>G.createBuffer(),BB=(r,e)=>G.bindBuffer(r,e),BV=r=>G.bindVertexArray(r),BF=r=>G.bindFramebuffer(FB,r),BD=(r,e)=>G.bufferData(r,e,G.STATIC_DRAW),EV=r=>G.enableVertexAttribArray(r),AP=(r,e)=>G.vertexAttribPointer(r,e,G.FLOAT,!1,0,0),TP=(r,e)=>G.texParameteri(T2,r,e),DE=r=>G.drawElements(G.TRIANGLES,6,G.UNSIGNED_SHORT,0),AT=r=>G.activeTexture(r),BT=r=>G.bindTexture(T2,r),UP=r=>G.useProgram(r),FN=r=>G.finish(),U1F=(r,e)=>G.uniform1f(r,e),U1V=(r,e)=>G.uniform1fv(r,e),U1I=(r,e)=>G.uniform1i(r,e),U2F=(r,e)=>G.uniform2fv(r,e),U3F=(r,e)=>G.uniform3fv(r,e),U4F=(r,e)=>G.uniform4fv(r,e),cS=(r,e,t)=>{let u=r.createShader(e);return r.shaderSource(u,t),r.compileShader(u),u},w=W.innerWidth,h=W.innerHeight,AA=2,dw=0,CL=(r,e,t)=>r<=e?e:r>=t?t:r,url=new URLSearchParams(W.location.search),U=(r,e,t)=>(t&&(t=parseInt(t))&&!isNaN(t)&&(AA=t>1&&t<5?t:AA),e&&(e=e.split(":"))&&2===e.length&&!isNaN(e[0])&&!isNaN(e[1])&&(e[0]=parseInt(e[0]),e[1]=parseInt(e[1]),e[0]>=500&&e[1]>=500)?(w=e[0],h=e[1],w/h):r&&(r=r.split(":"))&&2===r.length&&!isNaN(r[0])&&!isNaN(r[1])?parseInt(r[0])/parseInt(r[1]):1.5),A=CL(U(url.get("aspect"),url.get("xy"),url.get("aa")),.3,3),I=r=>{uT=R.int(3,11),uR=Array.from(new Array(9),r=>R.dec()),uP=Array.from(new Array(3),r=>R.int(4,12)),uM=Array.from(new Array(12),(r,e)=>(e+1)%3?R.num(-.5,.5):R.num(-.05,.05)),uC=Array.from(new Array(9),(r,e)=>(e-1)%3?e%3?R.num(.2,.8):R.num(.15,.9):R.num(.1,.7)),uW=[R.num(-1.5,1.5),R.num(-1.5,1.5),R.num(-.1,.1),R.num(-2,2)],uL=Array.from(new Array(3),r=>R.int(-1,1)),uS=R.dec()<.1?R.dst(2,.6):1.1+R.dst(3,.3),uB=.3+.15*Math.pow(R.dec(),1.2),uN=.4+.15*Math.pow(R.dec(),.6),uO=.15+.05*Math.pow(R.dec(),.8),uY=R.num(0,1e-4),uZ=R.num(.3,1.8),z=Math.abs(R.dst(4,2)),uD=[R.dst(2,3),R.dst(2,3),z<1.4?.75*z:1.25*z],uX=[R.dec(),R.dst(2,2.6),R.dst(2,2.6)];for(let r=0;r<3;r++)uC.splice(3*r,3,...(r=>{let e=((r,e,t)=>{let u,a,n=Math.max(r,e,t),i=Math.min(r,e,t),V=(n+i)/2;if(n==i)u=a=0;else{let o=n-i;switch(a=V>.5?o/(2-n-i):o/(n+i),n){case r:u=(e-t)/o+(e<t?6:0);break;case e:u=(t-r)/o+2;break;case t:u=(r-e)/o+4}u/=6}return{h:u,s:a,l:V}})(r[0],r[1],r[2]),t=.1,u=0,a=0,n=e.h>.4-t&&e.h<.5,i=e.h>.8-t&&e.h<.9;return(n||i)&&(n&&(a=e.h-.4),i&&(a=e.h-.8),u=(1-(a=(r=>{let e=Math.max(0,Math.min(1,r/1));return e*e*(3-2*e)})(10*a)))*t*1.25),e.h+=u,e.h>1?e.h-=1:e.h<0&&(e.h+=1),(r=>{let e,t,u,a=r.h,n=r.s,i=r.l;if(0==n)e=t=u=i;else{let r=(r,e,t)=>(t<0&&(t+=1),t>1&&(t-=1),t<1/6?r+6*(e-r)*t:t<.5?e:t<2/3?r+(e-r)*(2/3-t)*6:r);var V=i<.5?i*(1+n):i+n-i*n,o=2*i-V;e=r(o,V,a+1/3),t=r(o,V,a),u=r(o,V,a-1/3)}return[e,t,u]})(e)})(uC.slice(3*r,3*r+3)))},D=[h*A>=w?w:h*A,w/A>=h?h:w/A];C.width=D[0],C.height=D[1],C.style.width=D[0]+"px",C.style.height=D[1]+"px";let VP=r=>G.viewport(0,0,D[0],D[1]),T=r=>{let e=G.createTexture();return BT(e),G.texImage2D(T2,0,G.RGBA,D[0],D[1],0,G.RGBA,UB,null),TP(G.TEXTURE_MIN_FILTER,G.NEAREST),e},tR=T(),t0=T(),t1=T(),B=(...r)=>{let e=G.createFramebuffer();return BF(e),r.forEach((r,e,t)=>{G.framebufferTexture2D(FB,TT[e],T2,r,0)}),e},bR=B(tR,t0,t1),b0=B(t0),b1=B(t1),bP=CB();BB(AB,bP),BD(AB,new Float32Array([0,1,0,0,1,0,1,1]));
*Erratic : irregular in performance, behaviour, or attitude; inconsistent and unpredictable* One’s harmony with the world can become severed while experiencing stress. Feeling lost or confused within a clouded mind, struggling to call upon a creative muse, defending your self worth against creeping doubts, and projecting flashes of anger towards others. This torrent of bubbling turmoil can sustain through fixating on the moments of chaos, past and present. Continuing to feed the storm in this way ultimately will lead to burdensome strife and a ravaged mind. As a nascent artist working to hone my artistic abilities and establish myself within a historic art movement, I have often experienced stresses along my journey. This collection captures these internal struggles as fragmented waves of colour arranged across a spectrum of relative calms, chaotic bursts and winding paths. Each individual piece reflects a unique sense of uncertainty. My intent for Erratic was to challenge myself to create a purist’s form of generative art, wherein a set of randomized values are shaped to be used directly as inputs into an instruction path that is consistent in execution and does not use branching conditionals as a means of achieving variety in composition, colour or form. By actively rejecting predetermined features in favour of shaping a domain that is acted upon consistently, I felt I could achieve occurrences of uniquely identifiable emergent design that I otherwise may not have discovered. The work begins with a euclidean coordinate space intended to render a smoothed half-torus which is then randomly mutated through progressive iterations of translations, rotations, polar reflections, slices, twists and distortions. This pattern of operations produces a near infinite set, shaped only by the defined input ranges, from which each piece will be minted. Any knowledge of the instantiated values in advance of viewing could not lead to any reasonable prediction of what will be rendered. **URL Parameters** Editions can be rendered in custom aspect ratios / resolutions by using the these URL parameters in live mode and is intended for generating desktop or mobile backgrounds, social media banners, and print-quality images for any frame size. Once generated, simply - *right click, save as...* - `aspect=W:H` - fits window to aspect ratio, from `3:1` to `1:3` ( ex: `16:9` | `5:4` | `1:1` ) - `xy=W:H` - renders at resolution, min `500` for both W and H (ex: `1920:1080`) - `aa=N` - renders at specified anti-aliasing (defaults to 2, maximum is 4) Example URL for social media banner, with high AA samples: `https://{ab_url}/{token_id}?xy=1500:500&aa=4` **WARNING** The artwork relies on **high memory GPUs** for many precision calculations. I cannot guarantee live results for older and/or mobile devices as you could experience crashes and inconsistencies.
function i(){px=W.devicePixelRatio||1,C=D.createElement("canvas"),B.appendChild(C),G=C.getContext("webgl",{preserveDrawingBuffer:!0}),AB=G.ARRAY_BUFFER,T2=G.TEXTURE_2D,SD=G.STATIC_DRAW,UB=G.UNSIGNED_BYTE,TM=G.TEXTURE_MIN_FILTER,TS=G.TEXTURE_WRAP_S,TT=G.TEXTURE_WRAP_T,CE=G.CLAMP_TO_EDGE,FB=G.FRAMEBUFFER,C0=G.COLOR_ATTACHMENT0,C.onclick=K,C.ontouchend=K,C.ondblclick=F,W.onresize=O,O(),Vpb=G.createBuffer(),G.bindBuffer(AB,Vpb),G.bufferData(AB,new Float32Array([-1,-1,1,-1,1,1,-1,1]),SD),Tpb=G.createBuffer(),G.bindBuffer(AB,Tpb),G.bufferData(AB,new Float32Array([1,0,0,0,0,1,1,1]),SD),Pr=M(Vq,Fr),Pp=M(Vq,Fp);let e=(e,r,a)=>G.texParameteri(e,r,a);Tr=G.createTexture(),G.bindTexture(T2,Tr),G.texImage2D(T2,0,G.RGBA,rx,ry,0,G.RGBA,UB,null),e(T2,TM,G.LINEAR),e(T2,TS,CE),e(T2,TT,CE),Br=G.createFramebuffer(),G.bindFramebuffer(FB,Br),G.framebufferTexture2D(FB,C0,T2,Tr,0),Ts=G.createTexture(),G.bindTexture(T2,Ts),G.texImage2D(T2,0,G.RGBA,sx,sy,0,G.RGBA,UB,null),e(T2,TM,G.LINEAR),e(T2,TS,CE),e(T2,TT,CE),Bs=G.createFramebuffer(),G.bindFramebuffer(FB,Bs),G.framebufferTexture2D(FB,C0,T2,Ts,0),Rp=AL(Pr,"p"),Rt=AL(Pr,"q"),Pt=AL(Pp,"q"),fwd=new Tone.StereoWidener(.3).toDestination(),fhi=new Tone.Filter({frequency:80,type:"highpass"}).connect(fwd),flw=new Tone.Filter({frequency:880,type:"lowpass"}).connect(fhi),frv=new Tone.Reverb(15).connect(flw);for(let e=0;e<n.length;e++){let r=new Tone.Oscillator({frequency:n[e],volume:-60}).connect(frv);r.partials=new Array(PS).fill(0),o.push(r)}Tone.Destination.volume.value=-60,r()}function l(e=0){r();let a=d.A;flw.frequency.value=q(a,0,1,80,1200),fhi.frequency.value=a>.6?c(q(a,.6,.8,80,880),80,880):80,o.forEach((e,r)=>{let a=d.P[r].reduce((e,r)=>e+r)/d.P[r].length,t=q(r,0,vc,-6,-18);e.set({partials:d.P[r],detune:q(a,0,1,-30,30),volume:q(a,1,0,t+4,t-4)})}),function(r){var a=Date.now(),t=Math.max(0,1e3/60-(a-e));self.setTimeout(function(){r(a+t)},t)}(l)}function r(){function e(e,r,a,n){let f="f"===e?Pp:Pr;G.bindFramebuffer(FB,r),G.bindTexture(T2,a),rs&&"r"===e&&(G.texImage2D(T2,0,G.RGBA,rx,ry,0,G.RGBA,UB,null),rs=!1),G.clear(G.COLOR_BUFFER_BIT|G.DEPTH_BUFFER_BIT),G.bindBuffer(AB,Vpb),G.vertexAttribPointer(Rp,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(Rp),G.bindBuffer(AB,Tpb),G.vertexAttribPointer("f"===e?Rt:Pt,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray("f"===e?Rt:Pt),G.useProgram(f),F1(f,"t",t),F2(f,"r",n),F2(f,"X",[pr[0],dr[0]]),F2(f,"Y",[pr[1],dr[1]]),F1(f,"O",of),F1(f,"Z",zd),F3(f,"T",[P[0],P[1],P[2]]),F3(f,"A",[P[3],P[4],P[5]]),F3(f,"B",[P[6],P[7],P[8]]),F3(f,"C",[P[9],P[10],P[11]]),"f"!==e?(I1(f,"S","d"===e),I1(f,"M",md),F2(f,"D",vA),F2(f,"W",vB),F3(f,"L",mX),F3(f,"P",mY),F1(f,"N",ns),F1(f,"H",tA),F1(f,"J",tB),F1(f,"K",tO),F1(f,"Q",rt)):F1(f,"M",rm),G.drawArrays(G.TRIANGLE_FAN,0,4)}if(!Pr||!Pp)return;t=(new Date).getTime()-ts,rm<1&&(rm+=2e-4*(t-tl)),tl=t,G.viewport(0,0,rx,ry),e("r",Br,Tr,[rx,ry]),e("d",Bs,Ts,[sx,sy]),e("f",null,Tr,[rx,ry]),d={};let r=new Uint8Array(sx*sy*4);G.bindFramebuffer(FB,Bs),G.readPixels(0,0,sx,sy,G.RGBA,UB,r);let a=function(e){let r,a=e.length,t=new Float32Array(e.length);for(r=0;r<a;r++)t[r]=e[r]/255;return t}(r=r.filter((e,r)=>r%4==0).reverse());d.A=a.reduce((e,r)=>e+r)/a.length;let n=function(e,r){let a,t,n=[];for(a=0,t=-1;a<e.length;a++)a%r==0&&(n[++t]=[]),n[t].push(e[a]);return n}(a,sx),f=[],b=sx/PS,o=sy/vc;for(let e=0;e<sy;e+=o){f.push([]);for(let r=0;r<sx;r+=b){let a=r/b,t=e/o,d=0;for(let a=0;a<o;a++)for(let t=0;t<b;t++)d+=n[e+a][r+t];f[t].push(c(Math.pow(d/(b*o),2)*q(t,0,vc-1,1.2,.6)*q(a,0,PS-1,1.2,.3),0,1))}}d.P=f}function M(e,r){let a=G.createProgram();return G.attachShader(a,L(e,G.VERTEX_SHADER)),G.attachShader(a,L(r,G.FRAGMENT_SHADER)),G.linkProgram(a),a}function L(e,r){let a=G.createShader(r);return G.shaderSource(a,e),G.compileShader(a),a}function K(){A||(A=!0,N=(new Date).getTime(),ts=N,rm=0,o.forEach(e=>e.start()),Tone.Destination.volume.rampTo(-8,3),l())}function O(){let e=W.innerWidth,r=W.innerHeight,a=1.5*r>=e?e:1.5*r,t=e/1.5>=r?r:e/1.5;C.width=rx=a*px,C.height=ry=t*px,C.style.width=a+"px",C.style.height=t+"px",rs=!0}function F(){D.fullscreenElement?D.exitFullscreen():D.documentElement.requestFullscreen()}function b(e,r){return q(R(),0,1,e,r)}function q(e,r,a,t,n){return(e-r)/(a-r)*(n-t)+t}function c(e,r,a){return e<=r?r:e>=a?a:e}let W=window,D=document,B=D.body,s=D.createElement("style");s.innerHTML="body,html{overflow:hidden;background:#000}body{margin:0;display:flex;justify-content:center;align-items:center}C{display:block;background:#000}",B.appendChild(s);let C,G,Pr,Tr,Br,Bs,Ts,Pp,Rp,Rt,Pt,Vpb,Tpb,px,flw,fhi,frv,fwd,A=!1,h="#define F float\n#define I int\n#define V vec3\n#define V2 vec2\n#define V4 vec4\n#define U uniform\n#define R return\n#define s sin\n#define c cos\n#define m mix\n#define w pow\n#define d texture2D\n#define o smoothstep\n#define n normalize\n#define pr precision\n#define mp highp\n#define at attribute\n",Vq=h+"pr mp F;at V4 p;at V2 q;varying V2 e;void main(){gl_Position=p;e=q;}",Fr=h+"pr mp F;pr mp I;U F t;U V2 r;U V2 X;U V2 Y;U F O;U F Z;U I M;U bool S;U V T;U V A;U V B;U V C;U V2 D;U V2 W;U V L;U V P;U F N;U F H;U F J;U F K;U F Q;F sT(V p,V2 t){V2 q=V2(length(p.xz)-t.x,p.y);R length(q)-t.y;}V oT(V p,F k){F c=c(k*p.y+k);F s=s(k*p.y+k);mat2 m=mat2(c,-s,s,c);R V(m*p.xz,p.y);}F oM(F a,F b,F k){R-log(exp(-k*a)+exp(-k*b))/k;}F oD(V p,F d,F k){R d+(s(k*p.x)*s(k*p.y)*s(k*p.z));}mat3 rm(V a,F g){a=n(a);F s=s(g);F c=c(g);F oc=1.-c;R mat3(oc*a.x*a.x+c,oc*a.x*a.y-a.z*s,oc*a.z*a.x+a.y*s,oc*a.x*a.y+a.z*s,oc*a.y*a.y+c,oc*a.y*a.z-a.x*s,oc*a.z*a.x-a.y*s,oc*a.y*a.z+a.x*s,oc*a.z*a.z+c);}V rt(V p,V a,F g){mat3 m=rm(a,g);R p*m;}F ma(V p){F r=0.;F x=s(X.x*X.y*(t*.000012)+O);F y=s(Y.x*Y.y*(t*.000012)+O);p=rt(p,V(1.,.2,-.2),x);p=rt(p,V(.2,1.2,-.2),y);if(M==4||M==5||M==6||M==7){p=V(p.x,p.y+Z,p.z);}F a=sT(oT(p.xyz+L,H*s(K)),D);F b=sT(oT(p.zxy-P.zyx,J*c(K)),W);r=oM(a,b,4.2);r=oM(r,oD(p,r,N),4.2);R r;}F uw(V o,V d){F r=0.;for(I i=0;i<6;++i){F d=ma(o+d*r);r+=d*Z;}R r;}V nr(V p){V2 e=V2(.1,0.);V r=V(ma(p+e.xyy)-ma(p-e.xyy),ma(p+e.yxy)-ma(p-e.yxy),ma(p+e.yyx)-ma(p-e.yyx));R n(r);}void main(){V z;V2 p=(2.*(gl_FragCoord.xy+V2(1.))-r.xy)/r.y;V2 q=(gl_FragCoord.xy+V2(1.))/r.xy;if(M==1){p=V2(-p.x,p.y);}else if(M==2){p=p.yx;}else if(M==3){p=V2(p.y,-p.x);}else if(M==4){p=p.yy*Q+(1.-Q)*p;}else if(M==5){p=p.yy*Q-(1.-Q)*p;}else if(M==6){p=V2(p.x*.5+p.y*.5)*Q+(1.-Q)*p;}else if(M==7){p=V2(-p.x*.5+p.y*.5)*Q+(1.-Q)*p;}V v=V(.05);V ro=V(0.,0.,4.);V rd=n(V(p.xy,-1.));V r=nr(ro+rd*uw(ro,rd));v=m(v,n(A),r.x);v=m(v,n(B),r.y);v=m(v,n(C),r.z);v=m(v-V(.22),n(r.x*A+r.y*B+r.z*C),.3);F ks=.5;F sk=.7+.3*r.y;F fr=clamp(1.+dot(r,rd),0.,1.);F sp=w(max(dot(-rd,r),0.),4.);v+=ks*o(0.,.6,reflect(rd,r).y)*w(fr,4.);v+=ks*w(sp,4.)*1.1;v+=ks*w(sp,.4)*1.6;v=v*(sk+fr)*T;z+=v;if(S){z=V(.21*z.r+.71*z.g+.07*z.b);z=m(z,o(0.,1.,z),1.4);}gl_FragColor=V4(z,1.);}",Fp=h+"pr mp F;varying V2 e;U sampler2D s;U F t;U V2 r;U F M;U V2 X;U V2 Y;U F O;U F Z;U V T;U V A;U V B;U V C;void main(){V2 uv=gl_FragCoord.xy/r.xy;V L=d(s,e).rgb;V4 b=V4(0.);V4 g=V4(0.);for(F i=-8.;i<=8.;i++){F z=abs(i);b+=d(s,e+i*(4./r))*(z==4.?.0162162162:z==3.?.0540540541:z==2.?.1216216210:z==1.?.1945945946:z==0.?.2270270270:0.);g+=d(s,e+i*(8./r))*(z==4.?.05:z==3.?.09:z==2.?.12:z==1.?.15:z==0.?.16:0.);}L=b.rgb;F cn=.4;L=m(L,o(0.,1.,L),cn);F st=1.05;V W=V(.2125,.7154,.0721);V tn=V(dot(L,W));L=m(tn,L,st);L=m(L,L+g.rgb,.1);F rd=.7;F d=o(rd,rd-.5,length(uv-V2(.5)));L=m(L,L*d,.4);L=m(L,max(L,T),.15);F lum=.21*L.r+.71*L.g+.07*L.b;L+=.1*w(lum,1.1);if(M<1.){L-=w(2.4,o(1.,0.,M))-1.;}gl_FragColor=V4(L,1.);}",S=Uint32Array.from([0,0,0,0]).map(e=>parseInt(tokenData.hash.substr(8*e+5,8),16)),R=(e=1)=>{let r=S[3];S[3]=S[2],S[2]=S[1];let a=S[1]=S[0];return r^=r<<11,S[0]^=r^r>>>8^a>>>19,e*S[0]/2**32},Ps="fdb699f83aa9fef823c8792fcc9a99126ac92c82d8acaf0899a599de69c13c090c6faac8afa2c53cadca088777ce4e89b8daba2b9ee6be9783166b99e39efba0f91984b22aa5512299f7e680f4f9e1f2fb841343c4f499c0abbbdba06efa4248f5b0999d81b70666910b67abf89aa77bbcd88cbbd346f6fda0a39c2a01301966c5b30c37a4b3995eabfafeee9db94771e7a9ab1b3d4efa90b578394399a399db437e703177c7b817aa999f2fd5952b9490b363f0e4f4994324c9ab29a5a31fc7e6c3e7df3c08616bc83ec0abd1d5d26878337f797ae9a512a79f9e9f39c5fe996ca43506a9de9f4755d79a56c1b343529f99bea547e6c690991d7d7a9fd5ace39fc24ee6fec79b6fa7f4b2eb918de2798f581dbff29ed97f2a3b5b4d8c2e409f99b9adce3414c4b90b622b6fa1edb3fe6c93e8915c576fd099c499fecc7aa6cda56b0388a2fbdc7fbdb040a68593051fe6d7bcfd82fedaa5408e3e8ac9b19bfc5a61687101a0174c999cf2f8ae1eeeba04662e11eac1cffed36be11af54a97e8e8a3a12d4c4901a2df6b5f7efca09a374cc9b2a2939a5326b59cdb1fac7a0ed4c9162023f79ddeacde4518f99bdb1f92cfae9d1c23b0bfd9fd761927e2b19a7c7037d040800c596599b6995f9054069bc4fe84429bd7afb85158fbdf50ea4518a3adf62546f8002657858cabfeb2ab446ee281bdd8cb713da699cb4bbafe39c8dce49700a99aad2c4ceed41c2e153a81a2a8fbe22979816afcf2dbabf2cfb2f68f28e4c348942c2a",cs=[["C1","C2","E2","G2","E3","G3"],["C#1","C#2","E2","G#2","E3","G#3"],["D1","D2","F#2","A3","F#3","A4"],["D#1","D#2","G2","A#3","G3","A#4"],["E1","E2","G#2","B3","G#3","B4"],["F1","F2","A3","C3","A4","C4"],["F#1","F#2","A#3","C#3","A#4","C#4"],["G1","G2","B3","D3","B4","D4"],["G#1","G#2","C3","D#3","C4","D#4"],["A1","A2","C#2","E2","C#3","E3"],["A#1","A#2","D2","F2","D3","F3"],["B1","B2","D#2","F#2","D#3","F#3"]],N=(new Date).getTime(),t=0,ts=N,tl=N,rx=0,ry=0,sx=72,vc=6,sy=48,d={},o=[],n=cs[R()*cs.length|0],p=Math.round(b(0,45)),md=parseInt(7*Math.pow(R(),1.2)),vA=[b(.8,1.2),b(.2,.3)],vB=[b(.8,1.2),b(.2,.3)],mX=[b(-.6,1.2),b(-.6,1.2),b(-.15,.15)],mY=[b(-1.2,.6),b(-1.2,.6),b(-.15,.15)],ns=1.4*Math.pow(R(),3.2),tA=b(.5,3),tB=b(.5,3),tO=b(0,Math.PI),zd=b(.3,.4),rt=b(.6,.9),of=b(-1,1),dr=[R()>.5?-1:1,R()>.5?-1:1],pr=[3+R(4)|0,3+R(4)|0],rm=1,rs=!1;pr[0]==pr[1]&&(pr[1]+=1);let AB,T2,SD,UB,TM,TS,TT,CE,FB,C0,ps=[3,4,6,8,9,12],PS=ps[Math.round(tA+tB)-1],P=[...Array(12)].map((e,r)=>q(parseInt(Ps.slice(24*p+2*r,24*p+2*r+2),16),0,255,0,1)),AL=(e,r)=>G.getAttribLocation(e,r),UL=(e,r)=>G.getUniformLocation(e,r),I1=(e,r,a)=>G.uniform1i(UL(e,r),a),F1=(e,r,a)=>G.uniform1f(UL(e,r),a),F2=(e,r,a)=>G.uniform2fv(UL(e,r),a),F3=(e,r,a)=>G.uniform3fv(UL(e,r),a);i();
function i(){px=W.devicePixelRatio||1,C=D.createElement("canvas"),B.appendChild(C),G=C.getContext("webgl",{preserveDrawingBuffer:!0}),AB=G.ARRAY_BUFFER,T2=G.TEXTURE_2D,SD=G.STATIC_DRAW,UB=G.UNSIGNED_BYTE,TM=G.TEXTURE_MIN_FILTER,TS=G.TEXTURE_WRAP_S,TT=G.TEXTURE_WRAP_T,CE=G.CLAMP_TO_EDGE,FB=G.FRAMEBUFFER,C0=G.COLOR_ATTACHMENT0,C.onclick=K,C.ontouchend=K;let e=W.innerWidth,a=W.innerHeight,t=1.5*a>=e?e:1.5*a,f=e/1.5>=a?a:e/1.5;C.width=rx=t*px,C.height=ry=f*px,C.style.width=t+"px",C.style.height=f+"px",G.viewport(0,0,rx,ry),Vpb=G.createBuffer(),G.bindBuffer(AB,Vpb),G.bufferData(AB,new Float32Array([-1,-1,1,-1,1,1,-1,1]),SD),Tpb=G.createBuffer(),G.bindBuffer(AB,Tpb),G.bufferData(AB,new Float32Array([1,0,0,0,0,1,1,1]),SD),Pr=M(Vq,Fr),Pp=M(Vq,Fp);let c=(e,r,a)=>G.texParameteri(e,r,a);Tr=G.createTexture(),G.bindTexture(T2,Tr),G.texImage2D(T2,0,G.RGBA,rx,ry,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Br=G.createFramebuffer(),G.bindFramebuffer(FB,Br),G.framebufferTexture2D(FB,C0,T2,Tr,0),Ts=G.createTexture(),G.bindTexture(T2,Ts),G.texImage2D(T2,0,G.RGBA,sx,sy,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Bs=G.createFramebuffer(),G.bindFramebuffer(FB,Bs),G.framebufferTexture2D(FB,C0,T2,Ts,0),Rp=AL(Pr,"p"),Rt=AL(Pr,"q"),Pt=AL(Pp,"q"),fwd=new Tone.StereoWidener(.3).toDestination(),fhi=new Tone.Filter({frequency:80,type:"highpass"}).connect(fwd),flw=new Tone.Filter({frequency:880,type:"lowpass"}).connect(fhi),frv=new Tone.Reverb(15).connect(flw);for(let e=0;e<n.length;e++){let r=new Tone.Oscillator({frequency:n[e],volume:-60}).connect(frv);r.partials=new Array(PS).fill(0),o.push(r)}Tone.Destination.volume.value=-60,r()}function l(e=0){r();let a=d.A;flw.frequency.value=q(a,0,1,80,1200),fhi.frequency.value=a>.6?c(q(a,.6,.8,80,880),80,880):80,o.forEach((e,r)=>{let a=d.P[r].reduce((e,r)=>e+r)/d.P[r].length,t=q(r,0,vc,-6,-18);e.set({partials:d.P[r],detune:q(a,0,1,-30,30),volume:q(a,1,0,t+4,t-4)})}),function(r){var a=Date.now(),t=Math.max(0,1e3/60-(a-e));self.setTimeout(function(){r(a+t)},t)}(l)}function r(){function e(e,r,a,f){let n="f"===e?Pp:Pr;G.bindFramebuffer(FB,r),G.bindTexture(T2,a),G.clear(G.COLOR_BUFFER_BIT|G.DEPTH_BUFFER_BIT),G.bindBuffer(AB,Vpb),G.vertexAttribPointer(Rp,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(Rp),G.bindBuffer(AB,Tpb),G.vertexAttribPointer("f"===e?Rt:Pt,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray("f"===e?Rt:Pt),G.useProgram(n),F1(n,"t",t),F2(n,"r",f),F2(n,"X",[pr[0],dr[0]]),F2(n,"Y",[pr[1],dr[1]]),F1(n,"O",of),F1(n,"Z",zd),F3(n,"T",[P[0],P[1],P[2]]),F3(n,"A",[P[3],P[4],P[5]]),F3(n,"B",[P[6],P[7],P[8]]),F3(n,"C",[P[9],P[10],P[11]]),"f"!==e?(I1(n,"S","d"===e),I1(n,"M",md),F2(n,"D",vA),F2(n,"W",vB),F3(n,"L",mX),F3(n,"P",mY),F1(n,"N",ns),F1(n,"H",tA),F1(n,"J",tB),F1(n,"K",tO),F1(n,"Q",rt)):F1(n,"M",rm),G.drawArrays(G.TRIANGLE_FAN,0,4)}if(!Pr||!Pp)return;t=(new Date).getTime()-ts,rm<1&&(rm+=2e-4*(t-tl)),tl=t,e("r",Br,Tr,[rx,ry]),e("d",Bs,Ts,[sx,sy]),e("f",null,Tr,[rx,ry]),d={};let r=new Uint8Array(sx*sy*4);G.bindFramebuffer(FB,Bs),G.readPixels(0,0,sx,sy,G.RGBA,UB,r);let a=function(e){let r,a=e.length,t=new Float32Array(e.length);for(r=0;r<a;r++)t[r]=e[r]/255;return t}(r=r.filter((e,r)=>r%4==0).reverse());d.A=a.reduce((e,r)=>e+r)/a.length;let f=function(e,r){let a,t,f=[];for(a=0,t=-1;a<e.length;a++)a%r==0&&(f[++t]=[]),f[t].push(e[a]);return f}(a,sx),n=[],b=sx/PS,o=sy/vc;for(let e=0;e<sy;e+=o){n.push([]);for(let r=0;r<sx;r+=b){let a=r/b,t=e/o,d=0;for(let a=0;a<o;a++)for(let t=0;t<b;t++)d+=f[e+a][r+t];n[t].push(c(Math.pow(d/(b*o),2)*q(t,0,vc-1,1.2,.6)*q(a,0,PS-1,1.2,.3),0,1))}}d.P=n}function M(e,r){let a=G.createProgram();return G.attachShader(a,L(e,G.VERTEX_SHADER)),G.attachShader(a,L(r,G.FRAGMENT_SHADER)),G.linkProgram(a),a}function L(e,r){let a=G.createShader(r);return G.shaderSource(a,e),G.compileShader(a),a}function K(){A||(A=!0,N=(new Date).getTime(),ts=N,rm=0,o.forEach(e=>e.start()),Tone.Destination.volume.rampTo(-8,3),l())}function b(e,r){return q(R(),0,1,e,r)}function q(e,r,a,t,f){return(e-r)/(a-r)*(f-t)+t}function c(e,r,a){return e<=r?r:e>=a?a:e}let W=window,D=document,B=D.body,s=D.createElement("style");s.innerHTML="body,html{overflow:hidden;background:#333}body{margin:0;display:flex;justify-content:center;align-items:center}C{display:block;background:#000}",B.appendChild(s);let C,G,Pr,Tr,Br,Bs,Ts,Pp,Rp,Rt,Pt,Vpb,Tpb,px,flw,fhi,frv,fwd,A=!1,h="#define F float\n#define I int\n#define V vec3\n#define V2 vec2\n#define V4 vec4\n#define U uniform\n#define R return\n#define s sin\n#define c cos\n#define m mix\n#define w pow\n#define d texture2D\n#define o smoothstep\n#define n normalize\n#define pr precision\n#define mp highp\n#define at attribute\n",Vq=h+"pr mp F;at V4 p;at V2 q;varying V2 e;void main(){gl_Position=p;e=q;}",Fr=h+"pr mp F;pr mp I;U F t;U V2 r;U V2 X;U V2 Y;U F O;U F Z;U I M;U bool S;U V T;U V A;U V B;U V C;U V2 D;U V2 W;U V L;U V P;U F N;U F H;U F J;U F K;U F Q;F sT(V p,V2 t){V2 q=V2(length(p.xz)-t.x,p.y);R length(q)-t.y;}V oT(V p,F k){F c=c(k*p.y+k);F s=s(k*p.y+k);mat2 m=mat2(c,-s,s,c);R V(m*p.xz,p.y);}F oM(F a,F b,F k){R-log(exp(-k*a)+exp(-k*b))/k;}F oD(V p,F d,F k){R d+(s(k*p.x)*s(k*p.y)*s(k*p.z));}mat3 rm(V a,F g){a=n(a);F s=s(g);F c=c(g);F oc=1.-c;R mat3(oc*a.x*a.x+c,oc*a.x*a.y-a.z*s,oc*a.z*a.x+a.y*s,oc*a.x*a.y+a.z*s,oc*a.y*a.y+c,oc*a.y*a.z-a.x*s,oc*a.z*a.x-a.y*s,oc*a.y*a.z+a.x*s,oc*a.z*a.z+c);}V rt(V p,V a,F g){mat3 m=rm(a,g);R p*m;}F ma(V p){F r=0.;F x=s(X.x*X.y*(t*.000012)+O);F y=s(Y.x*Y.y*(t*.000012)+O);p=rt(p,V(1.,.2,-.2),x);p=rt(p,V(.2,1.2,-.2),y);if(M==4||M==5||M==6||M==7){p=V(p.x,p.y+Z,p.z);}F a=sT(oT(p.xyz+L,H*s(K)),D);F b=sT(oT(p.zxy-P.zyx,J*c(K)),W);r=oM(a,b,4.2);r=oM(r,oD(p,r,N),4.2);R r;}F uw(V o,V d){F r=0.;for(I i=0;i<6;++i){F d=ma(o+d*r);r+=d*Z;}R r;}V nr(V p){V2 e=V2(.1,0.);V r=V(ma(p+e.xyy)-ma(p-e.xyy),ma(p+e.yxy)-ma(p-e.yxy),ma(p+e.yyx)-ma(p-e.yyx));R n(r);}void main(){V z;V2 p=(2.*(gl_FragCoord.xy+V2(1.))-r.xy)/r.y;V2 q=(gl_FragCoord.xy+V2(1.))/r.xy;if(M==1){p=V2(-p.x,p.y);}else if(M==2){p=p.yx;}else if(M==3){p=V2(p.y,-p.x);}else if(M==4){p=p.yy*Q+(1.-Q)*p;}else if(M==5){p=p.yy*Q-(1.-Q)*p;}else if(M==6){p=V2(p.x*.5+p.y*.5)*Q+(1.-Q)*p;}else if(M==7){p=V2(-p.x*.5+p.y*.5)*Q+(1.-Q)*p;}V v=V(.05);V ro=V(0.,0.,4.);V rd=n(V(p.xy,-1.));V r=nr(ro+rd*uw(ro,rd));v=m(v,n(A),r.x);v=m(v,n(B),r.y);v=m(v,n(C),r.z);v=m(v-V(.22),n(r.x*A+r.y*B+r.z*C),.3);F ks=.5;F sk=.7+.3*r.y;F fr=clamp(1.+dot(r,rd),0.,1.);F sp=w(max(dot(-rd,r),0.),4.);v+=ks*o(0.,.6,reflect(rd,r).y)*w(fr,4.);v+=ks*w(sp,4.)*1.1;v+=ks*w(sp,.4)*1.6;v=v*(sk+fr)*T;z+=v;if(S){z=V(.21*z.r+.71*z.g+.07*z.b);z=m(z,o(0.,1.,z),1.4);}gl_FragColor=V4(z,1.);}",Fp=h+"pr mp F;varying V2 e;U sampler2D s;U F t;U V2 r;U F M;U V2 X;U V2 Y;U F O;U F Z;U V T;U V A;U V B;U V C;void main(){V2 uv=gl_FragCoord.xy/r.xy;V L=d(s,e).rgb;V4 b=V4(0.);V4 g=V4(0.);for(F i=-8.;i<=8.;i++){F z=abs(i);b+=d(s,e+i*(4./r))*(z==4.?.0162162162:z==3.?.0540540541:z==2.?.1216216210:z==1.?.1945945946:z==0.?.2270270270:0.);g+=d(s,e+i*(8./r))*(z==4.?.05:z==3.?.09:z==2.?.12:z==1.?.15:z==0.?.16:0.);}L=b.rgb;F cn=.4;L=m(L,o(0.,1.,L),cn);F st=1.05;V W=V(.2125,.7154,.0721);V tn=V(dot(L,W));L=m(tn,L,st);L=m(L,L+g.rgb,.1);F rd=.7;F d=o(rd,rd-.5,length(uv-V2(.5)));L=m(L,L*d,.4);L=m(L,max(L,T),.15);F lum=.21*L.r+.71*L.g+.07*L.b;L+=.1*w(lum,1.1);if(M<1.){L-=w(2.4,o(1.,0.,M))-1.;}gl_FragColor=V4(L,1.);}",S=Uint32Array.from([0,0,0,0]).map(e=>parseInt(tokenData.hash.substr(8*e+5,8),16)),R=(e=1)=>{let r=S[3];S[3]=S[2],S[2]=S[1];let a=S[1]=S[0];return r^=r<<11,S[0]^=r^r>>>8^a>>>19,e*S[0]/2**32},Ps="fdb699f83aa9fef823c8792fcc9a99126ac92c82d8acaf0899a599de69c13c090c6faac8afa2c53cadca088777ce4e89b8daba2b9ee6be9783166b99e39efba0f91984b22aa5512299f7e680f4f9e1f2fb841343c4f499c0abbbdba06efa4248f5b0999d81b70666910b67abf89aa77bbcd88cbbd346f6fda0a39c2a01301966c5b30c37a4b3995eabfafeee9db94771e7a9ab1b3d4efa90b578394399a399db437e703177c7b817aa999f2fd5952b9490b363f0e4f4994324c9ab29a5a31fc7e6c3e7df3c08616bc83ec0abd1d5d26878337f797ae9a512a79f9e9f39c5fe996ca43506a9de9f4755d79a56c1b343529f99bea547e6c690991d7d7a9fd5ace39fc24ee6fec79b6fa7f4b2eb918de2798f581dbff29ed97f2a3b5b4d8c2e409f99b9adce3414c4b90b622b6fa1edb3fe6c93e8915c576fd099c499fecc7aa6cda56b0388a2fbdc7fbdb040a68593051fe6d7bcfd82fedaa5408e3e8ac9b19bfc5a61687101a0174c999cf2f8ae1eeeba04662e11eac1cffed36be11af54a97e8e8a3a12d4c4901a2df6b5f7efca09a374cc9b2a2939a5326b59cdb1fac7a0ed4c9162023f79ddeacde4518f99bdb1f92cfae9d1c23b0bfd9fd761927e2b19a7c7037d040800c596599b6995f9054069bc4fe84429bd7afb85158fbdf50ea4518a3adf62546f8002657858cabfeb2ab446ee281bdd8cb713da699cb4bbafe39c8dce49700a99aad2c4ceed41c2e153a81a2a8fbe22979816afcf2dbabf2cfb2f68f28e4c348942c2a",cs=[["C1","C2","E2","G2","E3","G3"],["C#1","C#2","E2","G#2","E3","G#3"],["D1","D2","F#2","A3","F#3","A4"],["D#1","D#2","G2","A#3","G3","A#4"],["E1","E2","G#2","B3","G#3","B4"],["F1","F2","A3","C3","A4","C4"],["F#1","F#2","A#3","C#3","A#4","C#4"],["G1","G2","B3","D3","B4","D4"],["G#1","G#2","C3","D#3","C4","D#4"],["A1","A2","C#2","E2","C#3","E3"],["A#1","A#2","D2","F2","D3","F3"],["B1","B2","D#2","F#2","D#3","F#3"]],N=(new Date).getTime(),t=0,ts=N,tl=N,rx=0,ry=0,sx=72,vc=6,sy=48,d={},o=[],n=cs[R()*cs.length|0],p=Math.round(b(0,45)),md=parseInt(7*Math.pow(R(),1.2)),vA=[b(.8,1.2),b(.2,.3)],vB=[b(.8,1.2),b(.2,.3)],mX=[b(-.6,1.2),b(-.6,1.2),b(-.15,.15)],mY=[b(-1.2,.6),b(-1.2,.6),b(-.15,.15)],ns=1.4*Math.pow(R(),3.2),tA=b(.5,3),tB=b(.5,3),tO=b(0,Math.PI),zd=b(.3,.4),rt=b(.6,.9),of=b(-1,1),dr=[R()>.5?-1:1,R()>.5?-1:1],pr=[3+R(4)|0,3+R(4)|0],rm=1;pr[0]==pr[1]&&(pr[1]+=1);let AB,T2,SD,UB,TM,TS,TT,CE,FB,C0,ps=[3,4,6,8,9,12],PS=ps[Math.round(tA+tB)-1],P=[...Array(12)].map((e,r)=>q(parseInt(Ps.slice(24*p+2*r,24*p+2*r+2),16),0,255,0,1)),AL=(e,r)=>G.getAttribLocation(e,r),UL=(e,r)=>G.getUniformLocation(e,r),I1=(e,r,a)=>G.uniform1i(UL(e,r),a),F1=(e,r,a)=>G.uniform1f(UL(e,r),a),F2=(e,r,a)=>G.uniform2fv(UL(e,r),a),F3=(e,r,a)=>G.uniform3fv(UL(e,r),a);i();
function i(){px=W.devicePixelRatio||1,C=D.createElement("canvas"),B.appendChild(C),G=C.getContext("webgl",{preserveDrawingBuffer:!0}),AB=G.ARRAY_BUFFER,T2=G.TEXTURE_2D,SD=G.STATIC_DRAW,UB=G.UNSIGNED_BYTE,TM=G.TEXTURE_MIN_FILTER,TS=G.TEXTURE_WRAP_S,TT=G.TEXTURE_WRAP_T,CE=G.CLAMP_TO_EDGE,FB=G.FRAMEBUFFER,C0=G.COLOR_ATTACHMENT0,C.onclick=K,C.ontouchend=K;let e=W.innerWidth,a=W.innerHeight,t=1.5*a>=e?e:1.5*a,f=e/1.5>=a?a:e/1.5;C.width=rx=t*px,C.height=ry=f*px,C.style.width=t+"px",C.style.height=f+"px",G.viewport(0,0,rx,ry),Vpb=G.createBuffer(),G.bindBuffer(AB,Vpb),G.bufferData(AB,new Float32Array([-1,-1,1,-1,1,1,-1,1]),SD),Tpb=G.createBuffer(),G.bindBuffer(AB,Tpb),G.bufferData(AB,new Float32Array([1,0,0,0,0,1,1,1]),SD),Pr=M(Vq,Fr),Pp=M(Vq,Fp);let c=(e,r,a)=>G.texParameteri(e,r,a);Tr=G.createTexture(),G.bindTexture(T2,Tr),G.texImage2D(T2,0,G.RGBA,rx,ry,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Br=G.createFramebuffer(),G.bindFramebuffer(FB,Br),G.framebufferTexture2D(FB,C0,T2,Tr,0),Ts=G.createTexture(),G.bindTexture(T2,Ts),G.texImage2D(T2,0,G.RGBA,sx,sy,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Bs=G.createFramebuffer(),G.bindFramebuffer(FB,Bs),G.framebufferTexture2D(FB,C0,T2,Ts,0),fwd=new Tone.StereoWidener(.3).toDestination(),fhi=new Tone.Filter({frequency:80,type:"highpass"}).connect(fwd),flw=new Tone.Filter({frequency:880,type:"lowpass"}).connect(fhi),frv=new Tone.Reverb(15).connect(flw);for(let e=0;e<n.length;e++){let r=new Tone.Oscillator({frequency:n[e],volume:-60}).connect(frv);r.partials=new Array(PS).fill(0),o.push(r)}Tone.Destination.volume.value=-60,r()}function l(e=0){r();let a=d.A;flw.frequency.value=q(a,0,1,80,1200),fhi.frequency.value=a>.6?c(q(a,.6,.8,80,880),80,880):80,o.forEach((e,r)=>{let a=d.P[r].reduce((e,r)=>e+r)/d.P[r].length,t=q(r,0,vc,-6,-18);e.set({partials:d.P[r],detune:q(a,0,1,-30,30),volume:q(a,1,0,t+4,t-4)})}),function(r){var a=Date.now(),t=Math.max(0,1e3/60-(a-e));self.setTimeout(function(){r(a+t)},t)}(l)}function r(){function e(e,r,a,f){let n="f"===e?Pp:Pr;G.bindFramebuffer(FB,r),G.bindTexture(T2,a),G.clear(G.COLOR_BUFFER_BIT|G.DEPTH_BUFFER_BIT);let c=AL(n,"p");G.bindBuffer(AB,Vpb),G.vertexAttribPointer(c,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(c);let d=AL(n,"q");G.bindBuffer(AB,Tpb),G.vertexAttribPointer(d,2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(d),G.useProgram(n),F1(n,"t",t),F2(n,"r",f),F2(n,"X",[pr[0],dr[0]]),F2(n,"Y",[pr[1],dr[1]]),F1(n,"O",of),F1(n,"Z",zd),F3(n,"T",[P[0],P[1],P[2]]),F3(n,"A",[P[3],P[4],P[5]]),F3(n,"B",[P[6],P[7],P[8]]),F3(n,"C",[P[9],P[10],P[11]]),"f"!==e?(I1(n,"S","d"===e),I1(n,"M",md),F2(n,"D",vA),F2(n,"W",vB),F3(n,"L",mX),F3(n,"P",mY),F1(n,"N",ns),F1(n,"H",tA),F1(n,"J",tB),F1(n,"K",tO),F1(n,"Q",rt)):F1(n,"M",rm),G.drawArrays(G.TRIANGLE_FAN,0,4)}if(!Pr||!Pp)return;t=(new Date).getTime()-ts,rm<1&&(rm+=2e-4*(t-tl)),tl=t,e("r",Br,Tr,[rx,ry]),e("d",Bs,Ts,[sx,sy]),e("f",null,Tr,[rx,ry]),d={};let r=new Uint8Array(sx*sy*4);G.bindFramebuffer(FB,Bs),G.readPixels(0,0,sx,sy,G.RGBA,UB,r);let a=function(e){let r,a=e.length,t=new Float32Array(e.length);for(r=0;r<a;r++)t[r]=e[r]/255;return t}(r=r.filter((e,r)=>r%4==0).reverse());d.A=a.reduce((e,r)=>e+r)/a.length;let f=function(e,r){let a,t,f=[];for(a=0,t=-1;a<e.length;a++)a%r==0&&(f[++t]=[]),f[t].push(e[a]);return f}(a,sx),n=[],b=sx/PS,o=sy/vc;for(let e=0;e<sy;e+=o){n.push([]);for(let r=0;r<sx;r+=b){let a=r/b,t=e/o,d=0;for(let a=0;a<o;a++)for(let t=0;t<b;t++)d+=f[e+a][r+t];n[t].push(c(Math.pow(d/(b*o),2)*q(t,0,vc-1,1.2,.6)*q(a,0,PS-1,1.2,.3),0,1))}}d.P=n}function M(e,r){let a=G.createProgram();return G.attachShader(a,L(e,G.VERTEX_SHADER)),G.attachShader(a,L(r,G.FRAGMENT_SHADER)),G.linkProgram(a),a}function L(e,r){let a=G.createShader(r);return G.shaderSource(a,e),G.compileShader(a),a}function K(){A||(A=!0,N=(new Date).getTime(),ts=N,rm=0,o.forEach(e=>e.start()),Tone.Destination.volume.rampTo(-8,3),l())}function b(e,r){return q(R(),0,1,e,r)}function q(e,r,a,t,f){return(e-r)/(a-r)*(f-t)+t}function c(e,r,a){return e<=r?r:e>=a?a:e}let W=window,D=document,B=D.body,s=D.createElement("style");s.innerHTML="body,html{overflow:hidden;background:#333}body{margin:0;display:flex;justify-content:center;align-items:center}C{display:block;background:#000}",B.appendChild(s);let C,G,Pr,Tr,Br,Bs,Ts,Pp,Vpb,Tpb,px,flw,fhi,frv,fwd,A=!1,h="#define F float\n#define I int\n#define V vec3\n#define V2 vec2\n#define V4 vec4\n#define U uniform\n#define R return\n#define s sin\n#define c cos\n#define m mix\n#define w pow\n#define d texture2D\n#define o smoothstep\n#define n normalize\n#define pr precision\n#define mp highp\n#define at attribute\n",Vq=h+"pr mp F;at V4 p;at V2 q;varying V2 e;void main(){gl_Position=p;e=q;}",Fr=h+"pr mp F;pr mp I;U F t;U V2 r;U V2 X;U V2 Y;U F O;U F Z;U I M;U bool S;U V T;U V A;U V B;U V C;U V2 D;U V2 W;U V L;U V P;U F N;U F H;U F J;U F K;U F Q;F sT(V p,V2 t){V2 q=V2(length(p.xz)-t.x,p.y);R length(q)-t.y;}V oT(V p,F k){F c=c(k*p.y+k);F s=s(k*p.y+k);mat2 m=mat2(c,-s,s,c);R V(m*p.xz,p.y);}F oM(F a,F b,F k){R-log(exp(-k*a)+exp(-k*b))/k;}F oD(V p,F d,F k){R d+(s(k*p.x)*s(k*p.y)*s(k*p.z));}mat3 rm(V a,F g){a=n(a);F s=s(g);F c=c(g);F oc=1.-c;R mat3(oc*a.x*a.x+c,oc*a.x*a.y-a.z*s,oc*a.z*a.x+a.y*s,oc*a.x*a.y+a.z*s,oc*a.y*a.y+c,oc*a.y*a.z-a.x*s,oc*a.z*a.x-a.y*s,oc*a.y*a.z+a.x*s,oc*a.z*a.z+c);}V rt(V p,V a,F g){mat3 m=rm(a,g);R p*m;}F ma(V p){F r=0.;F x=s(X.x*X.y*(t*.000012)+O);F y=s(Y.x*Y.y*(t*.000012)+O);p=rt(p,V(1.,.2,-.2),x);p=rt(p,V(.2,1.2,-.2),y);if(M==4||M==5||M==6||M==7){p=V(p.x,p.y+Z,p.z);}F a=sT(oT(p.xyz+L,H*s(K)),D);F b=sT(oT(p.zxy-P.zyx,J*c(K)),W);r=oM(a,b,4.2);r=oM(r,oD(p,r,N),4.2);R r;}F uw(V o,V d){F r=0.;for(I i=0;i<6;++i){F d=ma(o+d*r);r+=d*Z;}R r;}V nr(V p){V2 e=V2(.1,0.);V r=V(ma(p+e.xyy)-ma(p-e.xyy),ma(p+e.yxy)-ma(p-e.yxy),ma(p+e.yyx)-ma(p-e.yyx));R n(r);}void main(){V z;V2 p=(2.*(gl_FragCoord.xy+V2(1.))-r.xy)/r.y;V2 q=(gl_FragCoord.xy+V2(1.))/r.xy;if(M==1){p=V2(-p.x,p.y);}else if(M==2){p=p.yx;}else if(M==3){p=V2(p.y,-p.x);}else if(M==4){p=p.yy*Q+(1.-Q)*p;}else if(M==5){p=p.yy*Q-(1.-Q)*p;}else if(M==6){p=V2(p.x*.5+p.y*.5)*Q+(1.-Q)*p;}else if(M==7){p=V2(-p.x*.5+p.y*.5)*Q+(1.-Q)*p;}V v=V(.05);V ro=V(0.,0.,4.);V rd=n(V(p.xy,-1.));V r=nr(ro+rd*uw(ro,rd));v=m(v,n(A),r.x);v=m(v,n(B),r.y);v=m(v,n(C),r.z);v=m(v-V(.22),n(r.x*A+r.y*B+r.z*C),.3);F ks=.5;F sk=.7+.3*r.y;F fr=clamp(1.+dot(r,rd),0.,1.);F sp=w(max(dot(-rd,r),0.),4.);v+=ks*o(0.,.6,reflect(rd,r).y)*w(fr,4.);v+=ks*w(sp,4.)*1.1;v+=ks*w(sp,.4)*1.6;v=v*(sk+fr)*T;z+=v;if(S){z=V(.21*z.r+.71*z.g+.07*z.b);z=m(z,o(0.,1.,z),1.4);}gl_FragColor=V4(z,1.);}",Fp=h+"pr mp F;varying V2 e;U sampler2D s;U F t;U V2 r;U F M;U V2 X;U V2 Y;U F O;U F Z;U V T;U V A;U V B;U V C;void main(){V2 uv=gl_FragCoord.xy/r.xy;V L=d(s,e).rgb;V4 b=V4(0.);V4 g=V4(0.);for(F i=-8.;i<=8.;i++){F z=abs(i);b+=d(s,e+i*(4./r))*(z==4.?.0162162162:z==3.?.0540540541:z==2.?.1216216210:z==1.?.1945945946:z==0.?.2270270270:0.);g+=d(s,e+i*(8./r))*(z==4.?.05:z==3.?.09:z==2.?.12:z==1.?.15:z==0.?.16:0.);}L=b.rgb;F cn=.4;L=m(L,o(0.,1.,L),cn);F st=1.05;V W=V(.2125,.7154,.0721);V tn=V(dot(L,W));L=m(tn,L,st);L=m(L,L+g.rgb,.1);F rd=.7;F d=o(rd,rd-.5,length(uv-V2(.5)));L=m(L,L*d,.4);L=m(L,max(L,T),.15);F lum=.21*L.r+.71*L.g+.07*L.b;L+=.1*w(lum,1.1);if(M<1.){L-=w(2.4,o(1.,0.,M))-1.;}gl_FragColor=V4(L,1.);}",S=Uint32Array.from([0,0,0,0]).map(e=>parseInt(tokenData.hash.substr(8*e+5,8),16)),R=(e=1)=>{let r=S[3];S[3]=S[2],S[2]=S[1];let a=S[1]=S[0];return r^=r<<11,S[0]^=r^r>>>8^a>>>19,e*S[0]/2**32},Ps="fdb699f83aa9fef823c8792fcc9a99126ac92c82d8acaf0899a599de69c13c090c6faac8afa2c53cadca088777ce4e89b8daba2b9ee6be9783166b99e39efba0f91984b22aa5512299f7e680f4f9e1f2fb841343c4f499c0abbbdba06efa4248f5b0999d81b70666910b67abf89aa77bbcd88cbbd346f6fda0a39c2a01301966c5b30c37a4b3995eabfafeee9db94771e7a9ab1b3d4efa90b578394399a399db437e703177c7b817aa999f2fd5952b9490b363f0e4f4994324c9ab29a5a31fc7e6c3e7df3c08616bc83ec0abd1d5d26878337f797ae9a512a79f9e9f39c5fe996ca43506a9de9f4755d79a56c1b343529f99bea547e6c690991d7d7a9fd5ace39fc24ee6fec79b6fa7f4b2eb918de2798f581dbff29ed97f2a3b5b4d8c2e409f99b9adce3414c4b90b622b6fa1edb3fe6c93e8915c576fd099c499fecc7aa6cda56b0388a2fbdc7fbdb040a68593051fe6d7bcfd82fedaa5408e3e8ac9b19bfc5a61687101a0174c999cf2f8ae1eeeba04662e11eac1cffed36be11af54a97e8e8a3a12d4c4901a2df6b5f7efca09a374cc9b2a2939a5326b59cdb1fac7a0ed4c9162023f79ddeacde4518f99bdb1f92cfae9d1c23b0bfd9fd761927e2b19a7c7037d040800c596599b6995f9054069bc4fe84429bd7afb85158fbdf50ea4518a3adf62546f8002657858cabfeb2ab446ee281bdd8cb713da699cb4bbafe39c8dce49700a99aad2c4ceed41c2e153a81a2a8fbe22979816afcf2dbabf2cfb2f68f28e4c348942c2a",cs=[["C1","C2","E2","G2","E3","G3"],["C#1","C#2","E2","G#2","E3","G#3"],["D1","D2","F#2","A3","F#3","A4"],["D#1","D#2","G2","A#3","G3","A#4"],["E1","E2","G#2","B3","G#3","B4"],["F1","F2","A3","C3","A4","C4"],["F#1","F#2","A#3","C#3","A#4","C#4"],["G1","G2","B3","D3","B4","D4"],["G#1","G#2","C3","D#3","C4","D#4"],["A1","A2","C#2","E2","C#3","E3"],["A#1","A#2","D2","F2","D3","F3"],["B1","B2","D#2","F#2","D#3","F#3"]],N=(new Date).getTime(),t=0,ts=N,tl=N,rx=0,ry=0,sx=72,vc=6,sy=48,d={},o=[],n=cs[R()*cs.length|0],p=Math.round(b(0,45)),md=parseInt(7*Math.pow(R(),1.2)),vA=[b(.8,1.2),b(.2,.3)],vB=[b(.8,1.2),b(.2,.3)],mX=[b(-.6,1.2),b(-.6,1.2),b(-.15,.15)],mY=[b(-1.2,.6),b(-1.2,.6),b(-.15,.15)],ns=1.4*Math.pow(R(),3.2),tA=b(.5,3),tB=b(.5,3),tO=b(0,Math.PI),zd=b(.3,.4),rt=b(.6,.9),of=b(-1,1),dr=[R()>.5?-1:1,R()>.5?-1:1],pr=[3+R(4)|0,3+R(4)|0],rm=1;pr[0]==pr[1]&&(pr[1]+=1);let AB,T2,SD,UB,TM,TS,TT,CE,FB,C0,ps=[3,4,6,8,9,12],PS=ps[Math.round(tA+tB)-1],P=[...Array(12)].map((e,r)=>q(parseInt(Ps.slice(24*p+2*r,24*p+2*r+2),16),0,255,0,1)),AL=(e,r)=>G.getAttribLocation(e,r),UL=(e,r)=>G.getUniformLocation(e,r),I1=(e,r,a)=>G.uniform1i(UL(e,r),a),F1=(e,r,a)=>G.uniform1f(UL(e,r),a),F2=(e,r,a)=>G.uniform2fv(UL(e,r),a),F3=(e,r,a)=>G.uniform3fv(UL(e,r),a);i();
function i(){px=W.devicePixelRatio||1,C=D.createElement("canvas"),B.appendChild(C),G=C.getContext("webgl",{preserveDrawingBuffer:!0}),AB=G.ARRAY_BUFFER,T2=G.TEXTURE_2D,SD=G.STATIC_DRAW,UB=G.UNSIGNED_BYTE,TM=G.TEXTURE_MIN_FILTER,TS=G.TEXTURE_WRAP_S,TT=G.TEXTURE_WRAP_T,CE=G.CLAMP_TO_EDGE,FB=G.FRAMEBUFFER,C0=G.COLOR_ATTACHMENT0,C.onclick=K,C.ontouchend=K;let e=W.innerWidth,a=W.innerHeight,t=1.5*a>=e?e:1.5*a,f=e/1.5>=a?a:e/1.5;C.width=rx=t*px,C.height=ry=f*px,C.style.width=t+"px",C.style.height=f+"px",G.viewport(0,0,rx,ry),Vpb=G.createBuffer(),G.bindBuffer(AB,Vpb),G.bufferData(AB,new Float32Array([-1,-1,1,-1,1,1,-1,1]),SD),Tpb=G.createBuffer(),G.bindBuffer(AB,Tpb),G.bufferData(AB,new Float32Array([1,0,0,0,0,1,1,1]),SD),Pr=M(Vq,Fr),Pp=M(Vq,Fp);let c=(e,r,a)=>G.texParameteri(e,r,a);Tr=G.createTexture(),G.bindTexture(T2,Tr),G.texImage2D(T2,0,G.RGBA,rx,ry,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Br=G.createFramebuffer(),G.bindFramebuffer(FB,Br),G.framebufferTexture2D(FB,C0,T2,Tr,0),Ts=G.createTexture(),G.bindTexture(T2,Ts),G.texImage2D(T2,0,G.RGBA,sx,sy,0,G.RGBA,UB,null),c(T2,TM,G.LINEAR),c(T2,TS,CE),c(T2,TT,CE),Bs=G.createFramebuffer(),G.bindFramebuffer(FB,Bs),G.framebufferTexture2D(FB,C0,T2,Ts,0),G.bindBuffer(AB,Vpb),G.vertexAttribPointer(AL(Pr,"p"),2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(AL(Pr,"p")),G.bindBuffer(AB,Tpb),G.vertexAttribPointer(AL(Pr,"q"),2,G.FLOAT,!1,0,0),G.enableVertexAttribArray(AL(Pr,"q")),fwd=new Tone.StereoWidener(.3).toDestination(),fhi=new Tone.Filter({frequency:80,type:"highpass"}).connect(fwd),flw=new Tone.Filter({frequency:880,type:"lowpass"}).connect(fhi),frv=new Tone.Reverb(15).connect(flw);for(let e=0;e<n.length;e++){let r=new Tone.Oscillator({frequency:n[e],volume:-60}).connect(frv);r.partials=new Array(PS).fill(0),o.push(r)}Tone.Destination.volume.value=-60,r()}function l(e=0){r();let a=d.A;flw.frequency.value=q(a,0,1,80,1200),fhi.frequency.value=a>.6?c(q(a,.6,.8,80,880),80,880):80,o.forEach((e,r)=>{let a=d.P[r].reduce((e,r)=>e+r)/d.P[r].length,t=q(r,0,vc,-6,-18);e.set({partials:d.P[r],detune:q(a,0,1,-30,30),volume:q(a,1,0,t+4,t-4)})}),function(r){var a=Date.now(),t=Math.max(0,1e3/60-(a-e));self.setTimeout(function(){r(a+t)},t)}(l)}function r(){function e(e,r,a,f){let n="f"===e?Pp:Pr;G.bindFramebuffer(FB,r),G.bindTexture(T2,a),G.clear(G.COLOR_BUFFER_BIT|G.DEPTH_BUFFER_BIT),G.useProgram(n),F1(n,"t",t),F2(n,"r",f),F2(n,"X",[pr[0],dr[0]]),F2(n,"Y",[pr[1],dr[1]]),F1(n,"O",of),F1(n,"Z",zd),F3(n,"T",[P[0],P[1],P[2]]),F3(n,"A",[P[3],P[4],P[5]]),F3(n,"B",[P[6],P[7],P[8]]),F3(n,"C",[P[9],P[10],P[11]]),"f"!==e?(I1(n,"S","d"===e),I1(n,"M",md),F2(n,"D",vA),F2(n,"W",vB),F3(n,"L",mX),F3(n,"P",mY),F1(n,"N",ns),F1(n,"H",tA),F1(n,"J",tB),F1(n,"K",tO),F1(n,"Q",rt)):F1(n,"M",rm),G.drawArrays(G.TRIANGLE_FAN,0,4)}if(!Pr||!Pp)return;t=(new Date).getTime()-ts,rm<1&&(rm+=2e-4*(t-tl)),tl=t,e("r",Br,Tr,[rx,ry]),e("d",Bs,Ts,[sx,sy]),e("f",null,Tr,[rx,ry]),d={};let r=new Uint8Array(sx*sy*4);G.bindFramebuffer(FB,Bs),G.readPixels(0,0,sx,sy,G.RGBA,UB,r);let a=function(e){let r,a=e.length,t=new Float32Array(e.length);for(r=0;r<a;r++)t[r]=e[r]/255;return t}(r=r.filter((e,r)=>r%4==0).reverse());d.A=a.reduce((e,r)=>e+r)/a.length;let f=function(e,r){let a,t,f=[];for(a=0,t=-1;a<e.length;a++)a%r==0&&(f[++t]=[]),f[t].push(e[a]);return f}(a,sx),n=[],b=sx/PS,o=sy/vc;for(let e=0;e<sy;e+=o){n.push([]);for(let r=0;r<sx;r+=b){let a=r/b,t=e/o,d=0;for(let a=0;a<o;a++)for(let t=0;t<b;t++)d+=f[e+a][r+t];n[t].push(c(Math.pow(d/(b*o),2)*q(t,0,vc-1,1.2,.6)*q(a,0,PS-1,1.2,.3),0,1))}}d.P=n}function M(e,r){let a=G.createProgram();return G.attachShader(a,L(e,G.VERTEX_SHADER)),G.attachShader(a,L(r,G.FRAGMENT_SHADER)),G.linkProgram(a),a}function L(e,r){let a=G.createShader(r);return G.shaderSource(a,e),G.compileShader(a),a}function K(){A||(A=!0,N=(new Date).getTime(),ts=N,rm=0,o.forEach(e=>e.start()),Tone.Destination.volume.rampTo(-8,3),l())}function b(e,r){return q(R(),0,1,e,r)}function q(e,r,a,t,f){return(e-r)/(a-r)*(f-t)+t}function c(e,r,a){return e<=r?r:e>=a?a:e}let W=window,D=document,B=D.body,s=D.createElement("style");s.innerHTML="body,html{overflow:hidden;background:#333}body{margin:0;display:flex;justify-content:center;align-items:center}C{display:block;background:#000}",B.appendChild(s);let C,G,Pr,Tr,Br,Bs,Ts,Pp,Vpb,Tpb,px,flw,fhi,frv,fwd,A=!1,h="#define F float\n#define I int\n#define V vec3\n#define V2 vec2\n#define V4 vec4\n#define U uniform\n#define R return\n#define s sin\n#define c cos\n#define m mix\n#define w pow\n#define d texture2D\n#define o smoothstep\n#define n normalize\n#define pr precision\n#define mp mediump\n#define at attribute\n",Vq=h+"pr mp F;at V4 p;at V2 q;varying V2 e;void main(){gl_Position=p;e=q;}",Fr=h+"pr mp F;pr mp I;U F t;U V2 r;U V2 X;U V2 Y;U F O;U F Z;U I M;U bool S;U V T;U V A;U V B;U V C;U V2 D;U V2 W;U V L;U V P;U F N;U F H;U F J;U F K;U F Q;F sT(V p,V2 t){V2 q=V2(length(p.xz)-t.x,p.y);R length(q)-t.y;}V oT(V p,F k){F c=c(k*p.y+k);F s=s(k*p.y+k);mat2 m=mat2(c,-s,s,c);R V(m*p.xz,p.y);}F oM(F a,F b,F k){R-log(exp(-k*a)+exp(-k*b))/k;}F oD(V p,F d,F k){R d+(s(k*p.x)*s(k*p.y)*s(k*p.z));}mat3 rm(V a,F g){a=n(a);F s=s(g);F c=c(g);F oc=1.-c;R mat3(oc*a.x*a.x+c,oc*a.x*a.y-a.z*s,oc*a.z*a.x+a.y*s,oc*a.x*a.y+a.z*s,oc*a.y*a.y+c,oc*a.y*a.z-a.x*s,oc*a.z*a.x-a.y*s,oc*a.y*a.z+a.x*s,oc*a.z*a.z+c);}V rt(V p,V a,F g){mat3 m=rm(a,g);R p*m;}F ma(V p){F r=0.;F x=s(X.x*X.y*(t*.000012)+O);F y=s(Y.x*Y.y*(t*.000012)+O);p=rt(p,V(1.,.2,-.2),x);p=rt(p,V(.2,1.2,-.2),y);if(M==4||M==5||M==6||M==7){p=V(p.x,p.y+Z,p.z);}F a=sT(oT(p.xyz+L,H*s(K)),D);F b=sT(oT(p.zxy-P.zyx,J*c(K)),W);r=oM(a,b,4.2);r=oM(r,oD(p,r,N),4.2);R r;}F uw(V o,V d){F r=0.;for(I i=0;i<6;++i){F d=ma(o+d*r);r+=d*Z;}R r;}V nr(V p){V2 e=V2(.1,0.);V r=V(ma(p+e.xyy)-ma(p-e.xyy),ma(p+e.yxy)-ma(p-e.yxy),ma(p+e.yyx)-ma(p-e.yyx));R n(r);}void main(){V z;V2 p=(2.*(gl_FragCoord.xy+V2(1.))-r.xy)/r.y;V2 q=(gl_FragCoord.xy+V2(1.))/r.xy;if(M==1){p=V2(-p.x,p.y);}else if(M==2){p=p.yx;}else if(M==3){p=V2(p.y,-p.x);}else if(M==4){p=p.yy*Q+(1.-Q)*p;}else if(M==5){p=p.yy*Q-(1.-Q)*p;}else if(M==6){p=V2(p.x*.5+p.y*.5)*Q+(1.-Q)*p;}else if(M==7){p=V2(-p.x*.5+p.y*.5)*Q+(1.-Q)*p;}V v=V(.05);V ro=V(0.,0.,4.);V rd=n(V(p.xy,-1.));V r=nr(ro+rd*uw(ro,rd));v=m(v,n(A),r.x);v=m(v,n(B),r.y);v=m(v,n(C),r.z);v=m(v-V(.22),n(r.x*A+r.y*B+r.z*C),.3);F ks=.5;F sk=.7+.3*r.y;F fr=clamp(1.+dot(r,rd),0.,1.);F sp=w(max(dot(-rd,r),0.),4.);v+=ks*o(0.,.6,reflect(rd,r).y)*w(fr,4.);v+=ks*w(sp,4.)*1.1;v+=ks*w(sp,.4)*1.6;v=v*(sk+fr)*T;z+=v;if(S){z=V(.21*z.r+.71*z.g+.07*z.b);z=m(z,o(0.,1.,z),1.4);}gl_FragColor=V4(z,1.);}",Fp=h+"pr mp F;varying V2 e;U sampler2D s;U F t;U V2 r;U F M;U V2 X;U V2 Y;U F O;U F Z;U V T;U V A;U V B;U V C;void main(){V2 uv=gl_FragCoord.xy/r.xy;V L=d(s,e).rgb;V4 b=V4(0.);V4 g=V4(0.);for(F i=-8.;i<=8.;i++){F z=abs(i);b+=d(s,e+i*(4./r))*(z==4.?.0162162162:z==3.?.0540540541:z==2.?.1216216210:z==1.?.1945945946:z==0.?.2270270270:0.);g+=d(s,e+i*(8./r))*(z==4.?.05:z==3.?.09:z==2.?.12:z==1.?.15:z==0.?.16:0.);}L=b.rgb;F cn=.4;L=m(L,o(0.,1.,L),cn);F st=1.05;V W=V(.2125,.7154,.0721);V tn=V(dot(L,W));L=m(tn,L,st);L=m(L,L+g.rgb,.1);F rd=.7;F d=o(rd,rd-.5,length(uv-V2(.5)));L=m(L,L*d,.4);L=m(L,max(L,T),.15);F lum=.21*L.r+.71*L.g+.07*L.b;L+=.1*w(lum,1.1);if(M<1.){L-=w(2.4,o(1.,0.,M))-1.;}gl_FragColor=V4(L,1.);}",S=Uint32Array.from([0,0,0,0]).map(e=>parseInt(tokenData.hash.substr(8*e+5,8),16)),R=(e=1)=>{let r=S[3];S[3]=S[2],S[2]=S[1];let a=S[1]=S[0];return r^=r<<11,S[0]^=r^r>>>8^a>>>19,e*S[0]/2**32},Ps="fdb699f83aa9fef823c8792fcc9a99126ac92c82d8acaf0899a599de69c13c090c6faac8afa2c53cadca088777ce4e89b8daba2b9ee6be9783166b99e39efba0f91984b22aa5512299f7e680f4f9e1f2fb841343c4f499c0abbbdba06efa4248f5b0999d81b70666910b67abf89aa77bbcd88cbbd346f6fda0a39c2a01301966c5b30c37a4b3995eabfafeee9db94771e7a9ab1b3d4efa90b578394399a399db437e703177c7b817aa999f2fd5952b9490b363f0e4f4994324c9ab29a5a31fc7e6c3e7df3c08616bc83ec0abd1d5d26878337f797ae9a512a79f9e9f39c5fe996ca43506a9de9f4755d79a56c1b343529f99bea547e6c690991d7d7a9fd5ace39fc24ee6fec79b6fa7f4b2eb918de2798f581dbff29ed97f2a3b5b4d8c2e409f99b9adce3414c4b90b622b6fa1edb3fe6c93e8915c576fd099c499fecc7aa6cda56b0388a2fbdc7fbdb040a68593051fe6d7bcfd82fedaa5408e3e8ac9b19bfc5a61687101a0174c999cf2f8ae1eeeba04662e11eac1cffed36be11af54a97e8e8a3a12d4c4901a2df6b5f7efca09a374cc9b2a2939a5326b59cdb1fac7a0ed4c9162023f79ddeacde4518f99bdb1f92cfae9d1c23b0bfd9fd761927e2b19a7c7037d040800c596599b6995f9054069bc4fe84429bd7afb85158fbdf50ea4518a3adf62546f8002657858cabfeb2ab446ee281bdd8cb713da699cb4bbafe39c8dce49700a99aad2c4ceed41c2e153a81a2a8fbe22979816afcf2dbabf2cfb2f68f28e4c348942c2a",cs=[["C1","C2","E2","G2","E3","G3"],["C#1","C#2","E2","G#2","E3","G#3"],["D1","D2","F#2","A3","F#3","A4"],["D#1","D#2","G2","A#3","G3","A#4"],["E1","E2","G#2","B3","G#3","B4"],["F1","F2","A3","C3","A4","C4"],["F#1","F#2","A#3","C#3","A#4","C#4"],["G1","G2","B3","D3","B4","D4"],["G#1","G#2","C3","D#3","C4","D#4"],["A1","A2","C#2","E2","C#3","E3"],["A#1","A#2","D2","F2","D3","F3"],["B1","B2","D#2","F#2","D#3","F#3"]],N=(new Date).getTime(),t=0,ts=N,tl=N,rx=0,ry=0,sx=72,vc=6,sy=48,d={},o=[],n=cs[R()*cs.length|0],p=Math.round(b(0,45)),md=parseInt(7*Math.pow(R(),1.2)),vA=[b(.8,1.2),b(.2,.3)],vB=[b(.8,1.2),b(.2,.3)],mX=[b(-.6,1.2),b(-.6,1.2),b(-.15,.15)],mY=[b(-1.2,.6),b(-1.2,.6),b(-.15,.15)],ns=1.4*Math.pow(R(),3.2),tA=b(.5,3),tB=b(.5,3),tO=b(0,Math.PI),zd=b(.3,.4),rt=b(.6,.9),of=b(-1,1),dr=[R()>.5?-1:1,R()>.5?-1:1],pr=[3+R(4)|0,3+R(4)|0],rm=1;pr[0]==pr[1]&&(pr[1]+=1);let AB,T2,SD,UB,TM,TS,TT,CE,FB,C0,ps=[3,4,6,8,9,12],PS=ps[Math.round(tA+tB)-1],P=[...Array(12)].map((e,r)=>q(parseInt(Ps.slice(24*p+2*r,24*p+2*r+2),16),0,255,0,1)),AL=(e,r)=>G.getAttribLocation(e,r),UL=(e,r)=>G.getUniformLocation(e,r),I1=(e,r,a)=>G.uniform1i(UL(e,r),a),F1=(e,r,a)=>G.uniform1f(UL(e,r),a),F2=(e,r,a)=>G.uniform2fv(UL(e,r),a),F3=(e,r,a)=>G.uniform3fv(UL(e,r),a);i();
The universe in which we exist is an ever changing ebb and flow of energies that coalesce into observable patterns of repetition and harmony. By practicing mindfulness one can observe their part in this universal flux and achieve a powerful sense of connection to the whole. Click / Touch to begin the audio-visual experience.
function render(){setTimeout(()=>{r.render(s,o),c.style.filter=""},200)}function A(n,e,r,C,a){return(n-e)/(r-e)*(a-C)+C}function B(n,e,r){return A(n,0,255,e,r)}function C(n){return(n=B(n,1,100))<9?0:n>=9&&n<23?1:n>=23&&n<43?2:n>=43&&n<57?3:n>=57&&n<70?4:5}var hs=[];for(let n=0;n<32;n++)hs.push(tokenData.hash.slice(2+2*n,4+2*n));var W=window;var D=document;var H=D.body;var S=H.style;var rns=hs.map(n=>parseInt(n,16)),w=W.innerWidth,h=W.innerHeight,d=w<h?w:h,c=D.createElement("canvas");c.style.filter="blur(12px) brightness(60%) opacity(60%)",S.background="#222",S.margin=0,S.display="flex",S.justifyContent="center",H.appendChild(c);var u={uA:{value:1},uD:{value:{x:d,y:d}},uC:{value:C(rns[0])},uH:{value:A(rns[1]+rns[2],0,512,-.9,1.1)},uS:{value:B(rns[3],.4,.2)},uM:{value:B(rns[4],.12,.3)},uP:{value:Math.round(A(Math.pow(B(rns[5],0,1),1.5),0,1,2,10))},uR:{value:Math.round(B(rns[6],0,3))},uCa:{value:{r:B(rns[7],0,1),g:B(rns[8],0,1),b:B(rns[9],0,1)}},uCb:{value:{r:B(rns[10],0,1),g:B(rns[11],0,1),b:B(rns[12],0,1)}},uCc:{value:{r:B(rns[13],0,1),g:B(rns[14],0,1),b:B(rns[15],0,1)}}},s=new THREE.Scene,o=new THREE.OrthographicCamera(0,0,0,0,.2,10);s.add(o),s.add(new THREE.Mesh(new THREE.PlaneGeometry(2,2),new THREE.ShaderMaterial({vertexShader:"void main(){gl_Position=vec4(position,1.0);}",fragmentShader:"#define E 0.0001\n#define T 6.28318530717958\n#define V vec3\n#define V2 vec2\n#define F float\n#define I int\n#define U uniform\n#define X mix\n#define Mi min\n#define Ma max\n#define L length\n#define N normalize\n#define A clamp\n#define W pow\nprecision highp F;precision highp I;U I uA;U V2 uD;U I uC;U F uH;U F uS;U F uM;U F uP;U F uR;U V uCa;U V uCb;U V uCc;F sB(V p,V b){V q=abs(p)-b;return L(Ma(q,0.))+Mi(Ma(q.x,Ma(q.y,q.z)),0.);}V oT(V p,V t){return p+t;}F oS(F d1,F d2,F k){F h=A(.5-.5*(d2+d1)/k,0.,1.);return X(d2,-d1,h)+k*h*(1.-h);}mat3 rm(V x,F a){x=N(x);F s=sin(a);F c=cos(a);F o=1.-c;return mat3(o*x.x*x.x+c,o*x.x*x.y-x.z*s,o*x.z*x.x+x.y*s,o*x.x*x.y+x.z*s,o*x.y*x.y+c,o*x.y*x.z-x.x*s,o*x.z*x.x-x.y*s,o*x.y*x.z+x.x*s,o*x.z*x.z+c);}void oR(inout V p,V x,F a){p*=rm(x,a);}void oP(inout V2 p,F i){F g=T/i;F a=atan(p.y,p.x+E)+g/2.;F r=L(p);a=mod(a,g)-g/2.;p=V2(cos(a),sin(a))*r;}void oM(inout F p,F d){p=abs(p)-d;}F dD(V p,F z,F k){V q=V(sin(p.x/k),cos(p.y/k),tan(p.z)+.5);F s=L(q)+((sin(z)+.725)*1.4);F b=sB(oT(p,V(0.,0.,105.)),V(100.));return oS(b,s,1.25);}F dM(V p){F m=uM>=.2?uM:0.;F z=uH;if(uH<-.6){z=uH-.6;}else if(uH>.6){z=uH+.6;}else if(uH>.2 && uH <=.6){z=.35+(uH*.65);}oR(p,V(0.,0.,1.),T*(uR/(mod(uP,2.)==0.?uP*2.:4.)));oP(p.xy,uP);oM(p.x,m);oM(p.y,m);return dD(p,z,uS);}F dU(V a,V b){F x=0.;for (I i=0;i<12;++i){F d=dM(a+b*x);x+=d*.4;}return x;}V dN(V p){F d=dM(p);return N(V(d-dM(p-V(E,0,0)),d-dM(p-V(0,E,0)),d-dM(p-V(0,0,E))));}void main(){V C=V(0.);V cn=uA==1?V(1.2):V(.6);V to=V(1.2,.6,.7);V ti=V(1.,1.,1.4);V Ca=X(uCa,V(0.),.2);V Cb=X(uCb,V(0.),.2);V Cc=X(uCc,V(0.),.2);F lm=.2;if(uC==0){lm+=.2;cn=V(.8);to=V(1.);ti=V(1.);Ca=V((Ca.r+Ca.g+Ca.b)/3.);Cb=V((Cb.r+Cb.g+Cb.b)/3.);Cc=V((Cc.r+Cc.g+Cc.b)/3.);}else if(uC==1){lm+=.4;cn=V(.7,1.,1.2);to=X(to.xzy,V(1.),.2);ti=X(ti.xzy,V(1.),.2);Ca=V(Mi(Ca.r,.4),Ca.g*.8,Ca.b);Cb=V(Mi(Ca.r,.6),Cb.g*.8,Cb.b);Cc=V(Cc.r*.8,Cc.g*.8,Cc.b);}else if(uC==2){lm+=.1;cn=V(.7);to=X(to.yzx,V(1.,.5,.5),.2);ti=X(ti.yzx,V(1.,1.,.5),.2);Ca=V(Ca.r,Ca.g,Ca.b*.5);Cb=V(Cb.r,Cb.g,Cb.b*.5);Cc=V(Cc.r,Cc.g,Cc.b*.5);}else if(uC==3){lm+=.4;cn=V(.8,1.,.7);to=X(to.zxy,V(1.),.2);ti=X(ti.zxy,V(1.),.2);Ca=V(Ca.r,Ca.g*.6,Ca.b);Cb=V(Cb.r,Cb.g*.6,Cb.b);Cc=V(Cc.r,Cc.g*.6,Cc.b);}else if(uC==4){lm+=.4;cn=V(1.,.9,.9);to=X(to.zyx,V(1.),.3);ti=X(ti.zyx,V(1.),.3);Ca=X(V(Ca.r*.6,Ca.g,Ca.b*.5),V(.4),.2);Cb=X(V(Cb.r*.6,Cb.g,Cb.b*.5),V(.4),.2);Cc=X(V(Cc.r*.6,Cc.g,Cc.b*.5),V(.4),.2);}else if(uC==5){Ca=V(Mi(Ca.g,.7),Mi(Ca.g,.5),Ca.b);Cb=V(Mi(Cb.g,.7),Mi(Cb.g,.5),Cb.b);}lm=uA==1?lm-.4:lm;Ca=X(Ca,to,.15);Cb=X(Cb,to,.15);Cc=X(Cc,to,.15);for (I m=0;m<16;m++){for (I n=0;n<16;n++){V2 o=V2(F(m),F(n))/F(uA)-.5;V2 p=(2.*(gl_FragCoord.xy+o)-uD.xy)/uD.y;V2 q=(gl_FragCoord.xy+o)/uD.xy;V ro=V(0.,0.,2.);V rd=N(V(p.xy,-1.));V CL=X(.3*A(1.-L(q*1.2-.6),0.,1.)*N(Ca*1.8+Cb*.6+Cc*.6),to*.6,.15);F t=dU(ro,rd);if(t<30.){if(uH<-.6?A(1.-L(q-.5),0.,1.)>.525:true){V n=dN(ro+rd*t);F s=W(Ma(dot(-rd,n),0.),8.);CL+=N(n.x*Ca+n.y*Cb+n.z*Cc);CL+=.02*to*smoothstep(0.,1.,reflect(rd,n).y*.8+.2);CL+=1.2*s*CL.x;CL+=.4*W(s,8.)*CL.x;V LI=V(0.);LI+=to*(.5+.5*n.y);LI+=A(1.+dot(n,rd),0.,1.)*Cb;CL=CL*LI;}}CL=W(A(CL,0.,1.),cn*.9);CL=CL*.6+.4*CL*CL*(8.-4.*CL);CL=X(CL,V(dot(CL,V(.33))),-.1);CL*=lm+.6*W(32.*q.x*q.y*(1.-q.x)*(1.-q.y),.8);C+=CL;if(n==uA)break;}if(m==uA)break;}C/=F(uA*uA);C=W(C,ti)+N(Cc)*.1;gl_FragColor=vec4(C,1.);return;}",uniforms:u})));var r=new THREE.WebGLRenderer({canvas:c,preserveDrawingBuffer:!0});r.setPixelRatio(1),r.setSize(d,d),r.render(s,o),u.uA.value=16,W.requestAnimationFrame(render);
An unknown illness has struck the world and is spreading rapidly. Humanity enters quarantine while the world's greatest scientists get to work on finding a cure. As you look upon samples through the microscope glass, you can't help but wonder what horrors you're about to witness. What is it? Where did it come from? How far has it progressed? Do we even have a chance?