10 curated outputs
390
long-form outputs
Fold #1 - Grailers
Fold #2 - rudxane community
Fold #4 - Flamingo DAO
Fold #3 - Bright Opps
Fold #5 - Fingerprints DAO
Fold #6 - Haven
Fold #7 - Tender
Fold #8 - Proof
Fold #9 - Dbochman
Fold #10 - Matto
Fold
Fold is a series of 400 unique outputs that explore the diverse concepts of folding, merging them into an abstract, generative long-form work. From the natural undulations of sediment in the earth's crust to the human act of origami, folds wield significant structural and organizational power. Yet, they can also dramatically distort and redefine the shape and direction of the structures they form on the canvas.
Main palettes
Fold is a long-form generative series written in Javascript without any additional libraries and stored on the ethereum blockchain.
License: CC BY-NC 4.0 Contract: 0xAf40b66072Fe00CAcF5A25Cd1b7F1688Cde20f2F Token IDs: 1000000 - 1000399
by rudxane in collaboration with Grailers DAO
The hashes for the first 10 outputs (Fold #1-#10) are community curated.
8 different communities where invited to participate in this curation process, each community selecting a single favorite output after collectively exploring the random output space of the Fold algorithm. Fold #9 and #10 where auctioned through Grailers DAO and gave the winners the option to curate their favorite output.
The final 10 hashes that where selected are stored in the final script and hosted on the ethereum blockchain.
Fold contains 13 main palettes to be selected by the algorithm.
Palettes are build from a variety of inspiration, from manually curated sets to specific palettes inspired by an artists oeuvre or a select work.
Each palette tries to evoke their own emotion, some are vibrant and colourful while others are subdued or monotone palettes.
Acid
Empire of Flora
FBASQ
Gradation Green
0x180cb0e9a32327c1b3f875df06e3ecb4b57519fd29f5eb300f8f8269700a38e5 0x7b449353190f08f20a219098e9c9ccba6feeb7f81e3481d9484fcf78fe5b424f 0x30bae4cd36bc1719b28f895207f1c50af8ccd82df78f325c6bce99ac0efdab9e 0x62b7b04803d3bdb84955a5a889f8701b088367b1636e3e881f042408c8cfc452 0x02ebc284e1e4da6b04f21a926cc67bbd3ad255272bd1c7d50138afd94cbcb37c 0x78209f733d7e9ea44d95ca77c8a9305d5bb0f4aab52380d5665fe093235a9cc7 0xc338c40a0728c53c9240e2a7a19b85c82009d99e0706561ed5c128c6fd43f1e5 0x3c111c59cc2157263d87a08eabf9947b96ae68e4492badb3aeb43db1bf4eaffe 0x73bc3262af5a2824a58ab560a22c6a36d1d135dda850c907841df9967438ecfd 0x37b2a01c75b8603a6cf48919b924c58a70eedc522d9f7885ce1ba44edb066a09
Hero and Leandro
Harmonie
Kaido-Maru
Mono
Nouns
Pop
Richter
Two Little Birds
Untitled Blue
class Random{constructor(){this.useA=!1;let t=function(t){let e=parseInt(t.substr(0,8),16),n=parseInt(t.substr(8,8),16),i=parseInt(t.substr(16,8),16),$=parseInt(t.substr(24,8),16);return function(){i|=0;let t=((e|=0)+(n|=0)|0)+($|=0)|0;return $=$+1|0,e=n^n>>>9,n=i+(i<<3)|0,i=(i=i<<21|i>>>11)+t|0,(t>>>0)/4294967296}};this.prngA=new t(tokenData.hash.substr(2,32)),this.prngB=new t(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}g(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}}switch(tokenNumber=tokenData.tokenId.substr(-3,3)){case"001":tokenData.hash="0x180cb0e9a32327c1b3f875df06e3ecb4b57519fd29f5eb300f8f8269700a38e5";break;case"002":tokenData.hash="0x7b449353190f08f20a219098e9c9ccba6feeb7f81e3481d9484fcf78fe5b424f";break;case"003":tokenData.hash="0x30bae4cd36bc1719b28f895207f1c50af8ccd82df78f325c6bce99ac0efdab9e";break;case"004":tokenData.hash="0x62b7b04803d3bdb84955a5a889f8701b088367b1636e3e881f042408c8cfc452";break;case"005":tokenData.hash="0x02ebc284e1e4da6b04f21a926cc67bbd3ad255272bd1c7d50138afd94cbcb37c";break;case"006":tokenData.hash="0x78209f733d7e9ea44d95ca77c8a9305d5bb0f4aab52380d5665fe093235a9cc7";break;case"007":tokenData.hash="0xc338c40a0728c53c9240e2a7a19b85c82009d99e0706561ed5c128c6fd43f1e5";break;case"008":tokenData.hash="0x3c111c59cc2157263d87a08eabf9947b96ae68e4492badb3aeb43db1bf4eaffe";break;case"009":tokenData.hash="0x73bc3262af5a2824a58ab560a22c6a36d1d135dda850c907841df9967438ecfd";break;case"010":tokenData.hash="0x37b2a01c75b8603a6cf48919b924c58a70eedc522d9f7885ce1ba44edb066a09";break;default:tokenData.hash=tokenData.hash}OUTLINE=!1;const R=new Random,f=Math.floor;let conf={};function init(){amp=amplitudeamp-amp,y3=coords[2].yamp-amp,y4=coords[3].y=conf.height/lines,g2*=conf.height/lines,g3*=conf.height/lines,g4*=conf.height/lines,conf.grid=[...Array(f(2conf.width,y:conf.height/linese-conf.pr},{x:coords[0].xe+y1+g1conf.width,y:conf.height/linese-conf.pr},{x:coords[2].xe+y3+g3conf.width,y:conf.height/linese-conf.pr},{x:coords[3].xe+y4+g4h||t[1].y<1.5h||t[3].y<1.5(R.g()/2+.5)),[{x:coords[3].x(e+tshadowSize)+y4+g4*(e+1)-2conf.width,y:conf.height/lines*(e+tshadowSize)+y4+g4*(e+1)-2conf.width,y:conf.height/lines*(e+tshadowSize)+y3+g3*(e+1)-2conf.width,y:conf.height/lines*(e+tshadowSize)+y2+g2*(e+1)-2conf.width,y:conf.height/lines*(e+tshadowSize)+y1+g1*(e+1)-2conf.width,y:conf.height/lines*(e+tshadowSize)+y1+g1*(e+1)-2h||t[1].y<1.5h||t[3].y<1.5Math.PI/180))+Math.abs(Math.sin(th))R.g()-2),e.strokeStyle=dark(colorPalette[n%colorCount],-outlineStrength),colorStructure||(e.fillStyle=dark(colorPalette[f(colran[n]border,0,conf.widthborder),e.fillRect(0,conf.height-conf.widthborder)}function chaikin(t,e){if(0===e)return t;let n=t.length,i=t.map((e,i)=>i===t.length-1?[{x:e.x,y:e.y}]:[{x:.75t[(i+1)%n].x,y:.75t[(i+1)%n].y},{x:.25t[(i+1)%n].x,y:.25t[(i+1)%n].y}]).flat();return 1===e?i:chaikin(i,e-1)}function dark(t,e){let n=parseInt(t.substr(1,6),16),i=Math.round(2.55R.g()),e=t%xval/xval,n=t%yval/yval);let i=R.g()i:cscaleR.g())+4)].map((t,e)=>(0===e&&mixSet1[f(R.g()R.g())+4),3),highlightBalance=[.15,.5,.9,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95,.95][f(40R.g())],colorStructure=overstep&&R.g()>.5||R.g()>.9,circlePacking=R.g()>.4,circlePackingMultiplier=[.75R.g())],circleCount=f(([f(150R.g()),f(400R.g())]+90)/scale),circleVariable=R.g()>0,maxCircleRadius=(.08R.g(),shadowSizeVariable=R.g()>.5,shadowSize=.5R.g(),10),coords=[{x:0,y:R.g()R.g()},{x:.15+R.g()/4,y:R.g()R.g()},{x:.62+R.g()/4,y:R.g()R.g()},{x:1,y:R.g()R.g()}],highlightIndex=[...Array(f(2R.g())],blockMidGrowth=R.g()>.2,colran=[...Array(2lines)].map(t=>4*R.g()-2),straight||!blockMidGrowth?(g1=0,g2=0,g3=0,g4=0):(g1=R.g()/4+.25,g2=R.g()/4+.25,g3=R.g()/4+.25,g4=R.g()/4+.25),(g2>g1&&g2>g4&&g3>g1&&g3>g4||g2<g1&&g2<g4&&g3<g1&&g3<g4)&&(gx=g3,g3=g4,g4=gx),window.onload=()=>{var t;document.getElementsByTagName("canvas")[0].id="c",updateResolution(!1),generateCircles(),init()},window.addEventListener("keypress",t=>{if(115===t.keyCode){var e=document.getElementById("c"),n=document.createElement("a");n.id="download-link",n.setAttribute("download",tokenData.hash+".png"),n.setAttribute("href",e.toDataURL("image/png").replace("image/png","image/octet-stream")),n.click()}111===t.keyCode&&(OUTLINE=!OUTLINE,draw())});
A scaled Fold in the Empire of Flora palette with an almost brutalist energy.
A Fold with a high percentage of highlight, resulting in an output with a large percentage of the lines in black.
Pop ƒ
Empire of Flora ƒ
The other 390 tokens where minted through Art Blocks and generated their hash upon minting, creating a final collection of 400 outputs combining both curation and long-form together.
The anatomy
Each Fold starts by plotting four control points on the canvas, two placed around the central area on the x axis and one on each end of the canvas, assigning each control point a value on the y axis to create the underlying main structure for the Fold.
We then apply the chaikin curve algorithm to these points to create a curved line with 3 to 5 iterations. At this stage we’re adding the hotspots on the canvas, each with their own radius, to move each vertex created through the Chaikin algorithm to the center of it’s hotspot when the vertex is within the hotspot radius.