Generative Alchemy is a versatile utility NFT collection that provides a toolset for divination, spell-casting, meditation, sacrifice, spirit worship (benign or otherwise), hedonism, pacifism, inter-dimensional travel, cryptozoological investigation, seance, prayer, banishing, chaos magic, clairvoyance, chromotherapy, evocation, dowsing, exorcism, fortune-telling, literomancy, necromancy, shapeshifting, and other esoteric (or mainstream) ritual (including entertainment).
Collectors, devotees, rationalists, pirates, and all others alike are encouraged to leverage the designs pursuant to their own subjective belief system (whether sincere or imaginary) to address any and all desires (emotional or material).
Generative Alchemy is provided as-is without explicit documentation, but here are some hypotheticals to get you started:
Suffering from unrequited love? Plot it on a photo of your crush.
Desire riches behind your wildest dreams? Plot it on your paystub.
Want fame? Plot it on a magazine cover.
Want to change your past? Plot it on a childhood picture.
In too much of a hurry to plot? Click to activate the sequence.
Generative Alchemy is a versatile utility NFT collection that provides a toolset for divination, spell-casting, meditation, sacrifice, spirit worship (benign or otherwise), hedonism, prayer, pacifism, inter-dimensional travel, cryptozoological investigation, seance, prayer, banishing, chaos magic, clairvoyance, chromotherapy, evocation, dowsing, exorcism, fortune-telling, literomancy, necromancy, shapeshifting, and other esoteric (or mainstream) ritual (including entertainment).
Collectors, devotees, rationalists, pirates, and others alike are encouraged to leverage the designs pursuant to their own subjective belief system (whether sincere or imaginary) to address any and all desires (emotional or material).
Generative Alchemy is provided as-is without explicit documentation, but here are some hypotheticals to get you started:
Suffering from unrequited love? Plot it on a photo of your crush.
Desire riches behind your wildest dreams? Plot it on your paystub.
Want fame? Plot it on a magazine cover.
Want to change your past? Plot it on a childhood picture.
In too much of a hurry to plot? Click to activate the sequence.
SS=tokenData.hash,S=Uint32Array.from([0,1,s=t=2,3].map($=>parseInt(SS.substr(8*$+2,8),16))),R=$=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=t^t>>>8^s>>>19,S[0]/4294967296),setAttributes(Svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),{viewBox:"0 0 80 100",fill:"black"}),WW=80,HH=100,pAL=["wOL","rOL","gOL","rGL","rNW","bOL","bRD","all"][Math.floor(7*R())];let mnSK;for("bOL"==pAL||"bRD"==pAL||"all"==pAL?mnSK="black"&&dReC(0,0,WW,HH,f="white",c="black"):(dReC(0,0,WW,HH,f="black"),mnSK=["red","gold","white"][Math.floor(3*R())]),sFUl=R()>.9,sPlF=R()>.8,icons={dGGr:"M 0 -42 C 0 -33 -1 -28 -5 -21 C -1 -24 -3 12 -2 23 L -11 23 L -11 26 L -2 26 L -2 48 L 2 48 L 2 26 L 12 26 L 12 23 L 2 23 C 2 8 13 -36 0 -42 M 2 26 L -2 26 L 2 31 L -2 29 L 2 33 L -2 31 L -2 31 L 2 35 L -2 33 L 2 38 L -2 36 L 2 40 L -2 39 L 2 44 L -1 42 L -2 42 L 2 46 L -2 45 L 2 48",dGG2:"M 0 -42 L -5 -12 L -2 25 L -9 25 L -9 28 L -2 28 L -3 46 L 3 46 L 2 28 L 9 28 L 9 25 L 2 25 L 5 -11 L 0 -42",tDNt:"M 0 -39.2 L -4.8 -34.4 L -0.8 -34.4 L -0.8 -6.4 C -14.4 -4.8 -15.2 -17.6 -14.4 -34.4 L -12 -34.4 L -16 -39.2 L -18.4 -34.4 L -16 -34.4 C -16 -16.8 -16 -4 -0.8 -4.8 L -1.6 35.2 L 1.6 35.2 L 0.8 -4.8 C 13.6 -7.2 17.6 -20 16 -34.4 L 19.2 -34.4 L 14.4 -39.2 L 12 -34.4 L 14.4 -34.4 C 16.8 -23.2 12.8 -7.2 0.8 -7.2 L 0.8 -34.4 L 4.8 -34.4 L 0 -39.2 Z",cube:"M -18 -26 L 21 -25 L 21 14 M 21 14 L -18 14 L -18 -26 M -4 -8 L 33 -8 L 33 29 L -3 29 L -4 -8 M -18 -26 L -4 -8 M 21 -25 L 33 -8 M -18 14 L -3 29 M 21 14 L 33 29",kITT:"M -5.6 -14.4 C -20 -4 -24 11.2 -18.4 28 L 18.4 28 C 31.2 16 19.2 -12.8 30.4 -26.4 C 30.4 -30.4 28 -25.6 25.6 -24.8 C 23.2 -24.8 24 8.8 20 21.6 C 19.2 4 20.8 -20 7.2 -13.6 C 12.8 -20 15.2 -28 7.2 -32.8 L 6.4 -37.6 L 4 -33.6 C 0 -34.4 -3.2 -34.4 -7.2 -32.8 L -11.2 -38.4 L -9.6 -30.4 C -13.6 -24 -17.6 -18.4 -5.6 -14.4",yrMi:"M -3 -29 L -31 26 L 17 32 L -3 -29 L 38 16 L 17 32",eye:"M 0 -31.2 C -23.2 -12 -25.6 16.8 0 37.6 C 28 24.8 26.4 -12 0 -31.2 C -16 -11.2 -20 11.2 0 37.6 C 22.4 13.6 18.4 -6.4 0 -31.2 M 0 -10.4 A 0.8 0.8 90 0 0 0 13.6 A 0.8 0.8 90 0 0 0 -10.4 M 0 -1.6 A 0.8 0.8 90 0 0 0 4 A 0.8 0.8 90 0 0 0 -1.6",tHma:"M 0.6949 -29.8125 l 27.9491 47.9734 L -27.2546 -10.2863 L 0.6949 37.6875 l 27.9491 -47.9734 L -27.2546 18.1613 L 0.6949 -29.8125 z",yyNg:"M 0 30.4 a 30.4 30.4 90 0 1 0 -60.8 a 15.2 15.2 90 0 1 0 30.4 a 15.2 15.2 90 0 0 0 30.4 M 0 30.4 A 0.8 0.8 90 0 0 0 -30.4",pTcL:"m -0.75 -32 l 18.5 57 l -48.5 -35.25 h 60 l -48.5 35.25 z m 0 -1.75 a 33.25 33.25 90 1 1 -0.025 0",sxPn:"M 0 -32.8487 L -14.995 32.8487 L 27.0201 -19.8365 L -33.6935 9.4016 L 33.6935 9.4016 L -27.0201 -19.8366 L 14.995 32.8487 L 0 -32.8487 z",ankh:"M 8 -4 L 0 -4 C 16 -16 10 -35 0 -38 C -12 -35 -13 -17 0 -4 L -3 -4 C -14 -10 -26 -37 0 -40 C 24 -35 17 -8 3 -4 L -25 -4 L -25 1 L -2 0 L -4 46 L 4 46 L 2 0 L 29 2 L 29 -5 L 8 -4",moon:"M 0 -34 A 1 1 0 0 0 0 28 C -26 11 -25 -18 0 -34",male:"M 13.0108 -13.0108 A 0.8 0.8 135 0 0 -13.0108 13.0108 A 0.8 0.8 135 0 0 13.0108 -13.0108 L 30.547 -30.547 M 29.9813 -20.9304 L 30.547 -30.547 M 20.9304 -29.9813 L 30.547 -30.547",fMLe:"M 0 -18.4 A 0.8 0.8 90 0 0 0 18.4 A 0.8 0.8 90 0 0 0 -18.4 M 0 18.4 L 0 45.6 M -14.4 32 L 13.6 32",es1:"M 0 -29.6 L -7.2 -23.2 L -2.4 -23.2 L -2.4 -4 L -16.8 -4 L -16.8 -8 L -24 -2.4 L -16.8 3.2 L -16.8 0 L -2.4 0 L -2.4 16 L -14.4 16 C -17.6 28.8 3.2 8 17.6 37.6 C 12.8 29.6 12.8 12 3.2 13.6 L 3.2 0 L 20.8 0 L 20.8 4.8 L 27.2 -3.2 L 20.8 -8.8 L 20.8 -4 L 3.2 -4 L 3.2 -23.2 L 8 -23.2 L 0 -29.6 M 11.2 -20 A 0.8 0.8 90 0 0 11.2 -11.2 A 0.8 0.8 90 0 0 11.2 -20 M -5.6 26.4 A 0.8 0.8 90 0 0 -5.6 34.4 A 0.8 0.8 90 0 0 -5.6 26.4",es2:"M -15.2 -16.8 A 0.8 0.8 90 0 0 -15.2 -5.6 L -15.2 -11.2 L 3.2 -11.2 L -19.2 27.2 L -23.2 24 L -24.8 26.4 L -16 34.4 L -12 28.8 L -15.2 26.4 L -3.2 6.4 C 8.8 3.2 4.8 32.8 16.8 35.2 C 10.4 24.8 25.6 7.2 3.2 0.8 L 30.4 2.4 A 0.8 0.8 90 0 0 29.6 -5.6 C 14.4 -3.2 -4 -16 0 -32 L -15.2 -16.8 M 15.2 -25.6 A 0.8 0.8 90 0 0 27.2 -18.4 L 25.6 -29.6 L 15.2 -25.6 M -4.8 19.2 L -0.8 35.2 L 4 19.2 L -4.8 19.2",yEOp:"M 0 -29 A 1 1 0 0 0 0 35 A 1 1 0 0 0 0 -29 M 0 -21 L -23 18 L 24 18 L 0 -21 M -11 6 C -2 18 4 7 12 4 C 2 -7 -3 2 -11 6 M 0 3 A 1 1 0 0 0 0 7 A 1 1 0 0 0 0 3 M 0 -14 L 0 -5 M 9 9 L 16 14 M -11 11 L -17 16 M 0 13 L 0 15 M 4 -5 L 6 -7 M -4 -5 L -6 -7",atom:"M 0 -33 C -11 -33 -9 38 0 36 C 10 35 9 -34 0 -33 M -30 0 C -30 10 32 9 31 0 C 33 -9 -29 -10 -30 0 M -21 25 C -16 32 30 -19 23 -26 C 17 -32 -27 19 -21 25 M 0 -3 A 1 1 0 0 0 0 3 A 1 1 0 0 0 0 -3",cross:"M 0 -27 L -6.3 -27 L -6.3 -11.7 L -25.2 -11.7 L -25.2 -3.6 L -6.3 -3.6 L -5.4 40.5 L 5.4 40.5 L 5.4 -3.6 L 26.1 -3.6 L 26.1 -11.7 L 5.4 -11.7 L 5.4 -27 L 0 -27 Z",pi:"M -11.664 -11.664 C -14.904 -12.312 -18.144 -13.608 -20.088 -9.72 C -20.736 -22.032 3.24 -14.904 20.088 -17.496 C 21.384 -15.552 20.736 -12.96 19.44 -11.016 L 12.96 -11.664 C 13.176 3.24 9.72 30.456 18.144 30.456 C 1.296 33.048 11.232 2.376 7.776 -11.664 L -7.128 -11.664 L -7.128 29.16 C -8.424 30.456 -10.584 29.16 -12.312 29.16 C -12.096 15.552 -9.72 -1.296 -11.664 -11.664 Z",oro:"M -18.75 -2.25 A 0.75 0.75 90 0 0 23 -9 C 19 -23 1 -28 -7 -20 L -5 -13 L -18 -7.5 L -20.25 -9 L -20 -15 L -20 -25 L -12 -24 C 0 -40 31 -27 30 -3 C 25 28 -24 28.5 -19.5 -8.25 C -19.5 -6 -18.75 -7.5 -19 -3 Z",worm : "M9.68-13.93a14.25 14.25 0 0 1 5.34-1.13C23.81-15.06 31-8.3 31 .05c0 8.32-7.05 15.01-15.84 15.01-5.62 0-10.02-3.05-13.2-6.26 1.08-1.47 3.49-4.95 4.45-6.34 2.22 2.55 5.37 4.93 8.7 4.99 4.58.08 8.22-3.46 8.29-7.38.08-4.39-4.8-8.47-9.95-7.18.59-3.11-1.9-6.23-3.77-6.82Zm-.16 8.66C5.6-2.55 2.96 2.59-.77 7.5c-1.19 1.57-7.04 7.54-14.3 7.54-8.81.01-15.93-6.67-15.93-15s7.1-15 15.89-15c5.66 0 10 3.07 13.19 6.3-.9 1.25-3.3 4.77-4.44 6.35-2.21-2.56-5.46-5.03-8.8-5.03-4.45 0-8.23 3.47-8.23 7.38 0 3.92 3.78 7.42 8.23 7.4 2.37 0 5.77-1 10.21-6.73C-.2-5.41.2-7.72 4.65-11.1c1.74-1.32 4.38-.55 5.57 1.59.63 1.13.4 3-.7 4.24 Z"},bSQc=rColor(),brSM=R()>.9,icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],x=WW/10;x<WW;x+=WW/10)for(y=HH/10;y<HH;y+=HH/10)(x>=WW/10&&y==HH/10||x==WW-WW/10&&y>=HH/10||x>=WW/10&&y==HH-HH/10||x==WW/10&&y<=HH-HH/10||sFUl||sPlF&&R()>.5)&&(brSM||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),R()>.1&&dICo(icons[icon],x,y,.1,f="none",r=!1,c=rColor()),R()>.9&&dReC(x-(R()>.5?0:WW/10),y-(R()>.5?0:HH/10),WW/10,HH/10,f="none",c=bSQc),R()>.5&&dCIC(x,y,WW/10/2,c=rColor()),R()>.3&&dReC(x-WW/10/2,y-HH/10/2,WW/10,HH/10,f="none",c=bSQc),R()>.8&&dCIC(x,y,WW/10,c=rColor()));if(lAYt=["grNi","cRCs","thGY"][Math.floor(3*R())],cnRs=R()>.9,icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],"thGY"!=lAYt||sFUl||sPlF){if("cRCs"!=lAYt||sFUl||sPlF){if("grNi"==lAYt&&!sFUl&&!sPlF)for(x=WW/10+WW/10+WW/10;x<WW-WW/10-WW/10;x+=WW/10)for(y=HH/10+HH/10+HH/10;y<HH-HH/10-HH/10;y+=HH/10)cnRs||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),dICo(icons[icon],x,y,.1,f="none",r=!0,c=rColor()),dReC(x-WW/10/2,y-HH/10/2,WW/10,HH/10,f="none",c=bSQc)}else n=[2,4,6,8,12,16,20,30][Math.floor(8*R())],cPnT(WW/2,HH/2,WW/10,n+=4,o=R()+.5).forEach($=>{dCIC($[0],$[1],10,c=rColor())})}else cPnT(40,50,17,n=10).forEach($=>{dCIC($[0],$[1],5,c=rColor()),cnRs||(icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())]),dICo(icons[icon],$[0],$[1],.1,f=rColor(),!0,c=rColor())}),icon=Object.keys(icons)[Math.floor(Object.keys(icons).length*R())],dICo(icons[icon],40,50,.2,f=rColor,r=!0,c=rColor());function rColor(){if("bOL"==pAL)return"black";if("wOL"==pAL)return"white";if("rOL"==pAL)return"red";if("gOL"==pAL)return"gold";if("rGL"==pAL)return["gold","red"][Math.floor(2*R())];else if("rNW"==pAL)return["white","red"][Math.floor(2*R())];else if("bRD"==pAL)return["black","red"][Math.floor(2*R())];else return["white","red","gold"][Math.floor(3*R())]}function cPnT($,_,e,L=5,t=1){let l=[];for(i=0;i<L;i++)l.push([$+e*Math.cos(2*Math.PI*i/L)*t,_+e*Math.sin(2*Math.PI*i/L)*t]);return l}function dICo($,_,e,L,t=!1,l=!0,C="gold"){let a="";Object.getOwnPropertyNames(icons).forEach(_=>{$==icons[_]&&(a=_)}),["yrMi","cube","kITT","eye","tHma","yyNg","pTcL","sxPn","tHma","fMLe","male","yEOp","atom"].includes(a)&&(t="none"),["yrMi","kITT","tHma"].includes(a)&&(l=!1);let s=document.createElementNS("http://www.w3.org/2000/svg","path");setAttributes(s,{d:$,fill:t||"none",stroke:C,transform:`translate(${_}, ${e}) scale(${L}) rotate(${l?360*R():0})`,"stroke-width":2}),Svg.appendChild(s)}function dReC($,_,e,L,t="none",l="gold",C=.1){let a=document.createElementNS("http://www.w3.org/2000/svg","rect");setAttributes(a,{x:$,y:_,width:e,height:L,fill:t,stroke:l,"stroke-width":C}),Svg.appendChild(a)}function dCIC($,_,e,L="gold"){setAttributes(_circle=document.createElementNS("http://www.w3.org/2000/svg","circle"),{cx:$,cy:_,r:e,"fill-opacity":"0",stroke:L,"stroke-width":.1}),Svg.appendChild(_circle)}function setAttributes($,_){for(key in _)$.setAttribute(key,_[key])}document.body.appendChild(Svg);let _nINg=!1,iRVL,mxRe=5*R(),rOLY=R()>.8;function ANLO(){function $($,_,e){return setAttributes(_anim=document.createElementNS("http://www.w3.org/2000/svg","animate"),{attributeType:"xml",attributeName:$,values:_,dur:e,additive:"sum",repeatCount:"indefinite"}),_anim}(_paths=document.querySelectorAll("path")).forEach($=>{setAttributes(_anim=document.createElementNS("http://www.w3.org/2000/svg","animateTransform"),{attributeType:"xml",attributeName:"transform",type:"rotate",from:"360 0 0",to:"0 0 0",dur:"5s",additive:"sum",repeatCount:"indefinite"}),R()>.95&&$.appendChild(_anim),Svg.appendChild($)}),(_rects=document.querySelectorAll("rect")).forEach(_=>{targColor=["gold","red","white","black"][Math.floor(4*R())],_anim=$("fill",`${targColor};none;${targColor}`,`${5*R()+1}s`),R()>.95&&_.appendChild(_anim),_anim2=$("x",`${-(WW*R())};${WW};${-(WW*R())}`,`${10*R()+3}s`),R()>.95&&!rOLY&&_.appendChild(_anim2),_anim3=$("y",`${-(HH*R())};${HH};${-(HH*R())}`,`${10*R()+3}s`),R()>.95&&!rOLY&&_.appendChild(_anim3)}),(_cRCs=document.querySelectorAll("circle")).forEach(_=>{_anim=$("stroke-width",`0;${2*R()};0`,`${5*R()+1}s`),R()>.95&&_.appendChild(_anim)}),(MATI=document.querySelectorAll("animate, animateTransform")).forEach($=>{R()>.85&&$.remove()})}!0!=tokenData.plot&&document.body.addEventListener("click",()=>{(_nINg=!_nINg)?(ANLO(),iRVL=setInterval(ANLO,8e3*R()+2e3)):(clearInterval(iRVL),(MATI=document.querySelectorAll("animate, animateTransform")).forEach($=>{$.remove()}))});document.getElementsByTagName('svg')[0].style="height:"+window.innerHeight;Svg.setAttribute('width', '100vw');Svg.setAttribute('height', '100vh');
Abstract oscilloscope. Mystic barometer. Best viewed on GPU enabled desktop devices. Renderings for each mint may have variation across browsers, devices, or resolutions. Embrace the chaos. Observe the End of Days.
Liquid Ruminations is an algorithm inspired by the contemplative effect of moving water.
Unique invocations of this algorithm consist of any number of several core components including waves that rise and fall, a flow field powered mist, and droplet shapes arranged in a dancing field that are distorted in a rhythmic, sometimes stormy animation.
These effects are combined and brought to life with mathematical wave functions in order to create movement that is ideally conducive to a meditative state. Viewers are encouraged to take the opportunity to reflect on precious things that we tend to take for granted, primarily easy access to clean water.
The outputs of this algorithm are interactive:
You may toggle a "Liquify" mode on and off by double-clicking the invocations.
Spacebar pauses the animation.
's' key saves a local screenshot.
'r' key reloads the piece.
Please note: This project is very CPU intensive and performs best at moderate resolutions on modern desktop devices. Chrome will provide the best experience. Full screen recommended.
Primary and secondary sales proceeds from this project will be donated to Water.org - an important organization with the critical mission of providing affordable access to safe water to people around the globe.
Prismatic explores color, refraction, and interaction. Every invocation is presented as a still image, but responds to keystrokes with transformations. Start with the arrow keys. Please note: This project is not presented with any features or traits. While features were used in the algorithm in order to introduce variation, each invocation of Prismatic is intended to be experienced as a piece of a whole. The project itself is the prism, each mint is a moment captured as we pass through it.
A labyrinth of geometric specters. Shapes are painted between layers of fog and sometimes presented encased in bold frames. Shadows are cast to create depth and entice the viewer to step inside. Each invocation represents an imaginary room in an abstract maze-like building.
{"type":"p5js","version":"1.3.0","aspectRatio":"1","instructions":"Don't forget to click and hold - you *might* find an additional effect.","animationLengthInSeconds":"15","interactive":"true"}
Gravity Grid is heavily inspired by Go, a 2,500 year old board game. The game of Go is played on a 19x19 grid, which is how every Gravity Grid invocation begins. A psychedelic "gameboard" is drawn and pulled apart by gravity, as if slowly orbiting a black hole in space. Each Gravity Grid starts at a different stage of this process. Don't forget to click and hold - you *might* find an additional effect.