0xb773…9fc9

All memos sent from and to 0xb773…9fc9.

dw5e4a4XazQEzzgA51X_9D7iXGAwYJAVW18dPQozDIkInspired by the automatic writing extract above, the artists were asked to imagine a portrait which inspires passion.\n\nThis artwork was created using the 'mind-to-image' technique, a process developed by Obvious. This approach uses AI to generate images directly from human imagination. The algorithms are trained on a pairing of images and MRI scans of subjects memorizing these images.\n\nThe NFT holds within it the original academic research paper, as well as an on-chain version of the visual, hardcoded into its metadata.\n\nThis series, referred to as neuro-surrealism, marks a new age for surrealism. It uses technology to fulfill the dream of its originators: the depiction of the subconscious in its purest form.\n\nThis series wrestles with the paradox of technology - its boundless potential to empower, and its latent ability to erode the purity of the soul. A work that is at once a mirror and a window, it dares to question whether the path of humanity, in all its glory, can remain untainted.'A dilemma, swayed left and right, the still nature and the city bursting with life, and at the border, a budding passion whose fruits we dread.'
0xb7734b5c…9fc9·#21,172,079·0x16d42a81…bef3f5
Contract is locked and cannot be`DContract is locked and cannot be`DContract is locked and cannot be`Dthere is nothing hereContract is locked and cannot be`DABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_","paper_backup":"","description":"data:application/json;base64,{"trait_type":"type","value":"{"trait_type":"emotion","value":
function stretchPalette(f,e,a){let n=[],t=e.length-1,o=e.map((e=>{let a=f.color(e);return rgbToHsb(f,f.red(a),f.green(a),f.blue(a))}));for(let e=0;e<a;e++){let i=e/(a-1)*t,r=f.floor(i),l=(r+1)%o.length,d=i-r,c=o[r],s=o[l],m=hsbToRgb((c[0]+d*(s[0]-c[0]))%360,f.lerp(c[1],s[1],d),f.lerp(c[2],s[2],d)),g="#"+f.hex(m[0],2)+f.hex(m[1],2)+f.hex(m[2],2);n.push(g)}return n}function drawInfos(f){console.log("Draw infos...",f.config),drawSeed(f),drawPaletteSquares(f)}function drawSeed(f){const e=10*f.config.scale,a=14*f.config.scale;f.textSize(a);const n=f.textWidth("# "+f.config.seed),t=a,o=f.config.height-e-t-e,i=n+2*e,r=t+2*e;f.fill(255),f.noStroke(),f.rect(0,o,i,r),f.fill(55),f.noStroke(),f.text("# "+f.config.seed,e,f.config.height-e)}function drawPaletteSquares(f){const e=5*f.config.scale,a=25*f.config.scale,n=0*f.config.scale;let t=f.config.palette.length*(a+n)+2*e,o=a+2*e,i=f.config.width-t-0,r=f.config.height-o-0;f.fill(255),f.noStroke(),f.rect(i,r,t,o);let l=f.config.width-t+e,d=f.config.height-o+e;f.config.palette.forEach(((e,t)=>{f.fill(e),f.noStroke(),f.rect(l,d,a,a),l+=a+n}))}function rgbToHsb(f,e,a,n){let t,o,i,r=[],l=f.max(e,a,n),d=f.min(e,a,n),c=l-d;return t=l===d?0:l===e?(a-n)/c%6*60:l===a?60*((n-e)/c+2):60*((e-a)/c+4),o=0===l?0:c/l*255,i=l,r[0]=t,r[1]=o,r[2]=i,r}function hsbToRgb(f,e,a){let n,t,o,i=[],r=a/255*(e/255),l=r*(1-Math.abs(f/60%2-1)),d=a/255-r;f>=0&&f<60?(n=r,t=l,o=0):f>=60&&f<120?(n=l,t=r,o=0):f>=120&&f<180?(n=0,t=r,o=l):f>=180&&f<240?(n=0,t=l,o=r):f>=240&&f<300?(n=l,t=0,o=r):(n=r,t=0,o=l);let c=Math.round(255*(n+d)),s=Math.round(255*(t+d)),m=Math.round(255*(o+d));return i[0]=c,i[1]=s,i[2]=m,i}function opacifyLayer(f){f.loadPixels();for(let e=0;e<f.pixels.length;e+=4)f.pixels[e+3]=255;f.updatePixels()}function hexToBinary(f){try{let e="";for(let a=0;a<f.length;a++){const n=f[a];e+=parseInt(n,16).toString(2).padStart(4,"0")}return e}catch(f){return console.error("Erreur : La chaîne hexadécimale fournie est invalide."),null}}function drawBorder(f,e,a,n){e.noFill(),e.stroke(255),e.strokeWeight(f.config.externalStrokeSize),e.rect(0,0,a-1,n-1)}function drawSanskritLayer(f){const e=hexToBinary(f.config.letterData);console.log("Binary sanskrit letter : ",e);const a=f.createGraphics(f.config.width,f.config.height,{willReadFrequently:!0});f.config.hasStrokeOnBorders&&drawBorder(f,a,f.config.width,f.config.height),a.loadPixels();const n=f.color(f.config.letterFill);let t=f.config.width,o=0,i=f.config.height,r=0;for(let a=0;a<f.config.letterResolution;a++)for(let n=0;n<f.config.letterResolution;n++){"1"===e[n*f.config.letterResolution+a]||(t=Math.min(t,a*f.config.blockSize),o=Math.max(o,(a+1)*f.config.blockSize),i=Math.min(i,n*f.config.blockSize),r=Math.max(r,(n+1)*f.config.blockSize))}const l=(t+o)/2,d=(i+r)/2,c=f.config.width/2,s=f.config.height/2;console.log("minX : ",t),console.log("maxX : ",o),console.log("minY : ",i),console.log("maxY : ",r);let m=0,g=0;if(f.config.isLetterCentered)console.log("Letter is centered"),m=c-l-f.config.letterOffsetX,g=s-d-f.config.letterOffsetY;else{console.log("Letter is not centered");const e=f.random()>.5?f.random()>.5?0:1:f.random()>.5?2:3,a=f.config.externalStrokeSize;switch(e){case 0:console.log("Stick to left border"),m=-(f.config.width/2-a/2)+(o-t)/2,g=s-d-f.config.letterOffsetY;break;case 1:console.log("Stick to right border"),m=+(f.config.width/2-a/2)-(o-t)/2,g=s-d-f.config.letterOffsetY;break;case 2:console.log("Stick to top border"),g=-(f.config.height/2-a/2)+(r-i)/2,m=c-l-f.config.letterOffsetX;break;case 3:console.log("Stick to bot border"),g=+(f.config.height/2-a/2)-(r-i)/2,m=c-l-f.config.letterOffsetX}}for(let t=0;t<f.config.letterResolution;t++)for(let o=0;o<f.config.letterResolution;o++){if(!("1"===e[o*f.config.letterResolution+t])){const e=t*f.config.blockSize+m,i=o*f.config.blockSize+g;for(let t=e;t<e+f.config.blockSize;t++)for(let e=i;e<i+f.config.blockSize;e++)t>=0&&t<f.config.width&&e>=0&&e<f.config.height&&a.set(t,e,n)}}return a.updatePixels(),a.filter(f.BLUR,f.config.letterBlur),f.config.currentStep++,a.get()}function drawOutlinesLayer(f){const e=f.createGraphics(f.config.width,f.config.height,{willReadFrequently:!0});e.image(f.sanskritImage,0,0,f.config.width,f.config.height),e.filter(f.BLUR,f.config.letterRoundBlur),e.filter(f.THRESHOLD,.5),e.loadPixels();for(let f=0;f<e.pixels.length;f+=4)e.pixels[f+3]>128?e.pixels[f+3]=255:e.pixels[f+3]=0;return e.updatePixels(),f.config.letterOutlines.forEach((a=>{drawOutline(f,e,a)})),f.config.isOutlineBlurred&&e.filter(f.BLUR,f.config.letterBlur),f.config.currentStep++,e}function drawOutline(f,e,a){let n=new Set;e.loadPixels();for(let t=0;t<e.height;t++)for(let o=0;o<e.width;o++){let i=4*(o+t*e.width);0===e.pixels[i+3]&&hasNonTransparentNeighbour(f,e,o,t,a.thickness,n)&&(e.pixels[i]=a.color[0],e.pixels[i+1]=a.color[1],e.pixels[i+2]=a.color[2],e.pixels[i+3]=a.opacity,n.add(i))}e.updatePixels()}function hasNonTransparentNeighbour(f,e,a,n,t,o){for(let i=-t;i<=t;i++)for(let r=-t;r<=t;r++)if(0!==r||0!==i){let t=a+r,l=n+i;if(t>=0&&t<f.config.width&&l>=0&&l<f.config.height){let a=4*(t+l*f.config.width);if(0!==e.pixels[a+3]&&!o.has(a))return!0}}return!1}function stretchValues(f,e){e.loadPixels();let a=255,n=0;for(let f=0;f<e.pixels.length;f+=4){let t=e.pixels[f];t<a&&(a=t),t>n&&(n=t)}console.log("minValue : ",a),console.log("maxValue : ",n);for(let t=0;t<e.pixels.length;t+=4)e.pixels[t]=f.map(e.pixels[t],a,n,0,255),e.pixels[t+1]=e.pixels[t],e.pixels[t+2]=e.pixels[t];e.updatePixels()}function drawChladniLayer(f){let e=f.config.chladniParams.a,a=f.config.chladniParams.b,n=f.config.chladniParams.n,t=f.config.chladniParams.m,o=f.createGraphics(f.config.width,f.config.height,{willReadFrequently:!0}),i=f.createGraphics(f.config.width,f.config.height,{willReadFrequently:!0}),r=n*n+t*t;o.loadPixels();for(let i=0;i<f.config.width;i++)for(let l=0;l<f.config.height;l++){let d=f.map(i,0,f.config.width,-1,1),c=f.map(l,0,f.config.height,-1,1),s=e*f.sin(f.PI*n*d)*f.sin(f.PI*t*c)+a*f.sin(f.PI*t*d)*f.sin(f.PI*n*c),m=f.map(f.abs(s),0,f.sqrt(r),0,f.config.maxLevel),g=4*(i+l*o.width);o.pixels[g]=m,o.pixels[g+1]=m,o.pixels[g+2]=m,o.pixels[g+3]=255}if(o.updatePixels(),o.image(f.outlinesImage,0,0,f.config.width,f.config.height),f.config.isChladniColorsReversed&&reverseLayerColors(f,o),f.config.debug)o.image(o,0,0);else for(let e=0;e<f.config.width;e++)for(let a=0;a<f.config.height;a++){drawSandGrainColor2(f,i,e,a,o.get(e,a)[0])}return opacifyLayer(i),console.log("Sanskrit layer done"),i}function reverseLayerColors(f,e){e.loadPixels();for(let f=0;f<e.pixels.length;f+=4)e.pixels[f]=255-e.pixels[f],e.pixels[f+1]=255-e.pixels[f+1],e.pixels[f+2]=255-e.pixels[f+2];e.updatePixels()}function drawSandGrainColor2(f,e,a,n,t){f.colorMode(f.HSB);for(let o=0;o<f.config.numberOfLayers;o++)if(t>=f.config.layerStep*o&&t<=f.config.layerStep*(o+1)){let i,r,l=f.config.palette[o],d=f.hue(l),c=f.saturation(l),s=f.brightness(l);f.config.hasGradientInsideLayers?(r=f.map(t,0,255,1.2,.8),i=f.map(t,0,255,1,1.5)):(r=1,i=1);const m=.2;r+=f.random(-m,m),i+=f.random(-m,m);let g=f.color(d,c*i,s*r);e.stroke(g),e.point(a,n)}f.colorMode(f.RGB)}const hexData=[{name:"Shraay-ghu",data:"ffffffc6bfeff0feefeefeeffeffefffffff"},{name:"Vree-ka-ndu",data:"fffe07f7ff4ff6ff7ff0ff7ff7ff7fffffff"},{name:"Dhree-van",data:"fffffff1ff8ff1ff4ff2ff1ff7ffffffffff"},{name:"Graa-lim",data:"ffffffe0ff7ff3ff57f57f57f4ffffffffff"},{name:"Nee-yar",data:"fffffff5ff0ff5ff8ff1ffdffdffdfffffff"},{name:"Chu-veen",data:"fffffffcffeffaff7ff4ffa7faff9fffffff"},{name:"Chraa-veen",data:"fffffff7ff5ff4ff2ff6ff7ff7ffffffffff"},{name:"Bhraa-nim",data:"ffffffe07dbff83c27fbffd7f87fffffffff"},{name:"Dhroo-vaa",data:"fffffffeff8ffdff9ff4ff8ff1fedfffffff"},{name:"Kraa-vish",data:"ffffffc03ffffd7e87f77f97f6ff8fffffff"},{name:"Dhyaa-luk",data:"fffffff9fffff87f8ff3ff87f7ff9fffffff"},{name:"Thraa-zim",data:"ffffffffff9ff9ff1ff2ff9ff9ffbfffffff"},{name:"Praa-khin",data:"fffffff7ff0ff5ff5ff4ff67f3fe9fffffff"},{name:"Vlaa-nuur",data:"ffffffc03eefeefeefe8fedfebffffffffff"},{name:"Shaa-zeer",data:"ffffffe07f8ff07e3ffcffe7fbff9fffffff"},{name:"Glaa-rip",data:"ffffffffffc7cd7ec7ffbfcbffbfffffffff"},{name:"Bhaa-viz",data:"fffffff07f57e57f47e57e97ed7f57ffffff"},{name:"Chraa-lum",data:"ffffffe07ffff8ff7ff7ff6ff1ffefffffff"},{name:"Draa-vin",data:"ffffffc07eefedff2ffaff6ffeffdfffffff"},{name:"Elaa-rum",data:"fffffff6ff0ff9ff4ff2ff97fdffffffffff"},{name:"Fyaa-lin",data:"fffffffeff8fecfe8ffaff0ffcffffffffff"},{name:"Ghaa-vun",data:"fffffff7ff1ff0ff4ff4ff0ff5ffffffffff"},{name:"Hraa-zim",data:"ffffffe07f4ff4ff6ff2ff1ff7ff7fffffff"},{name:"Ilaa-van",data:"fffffff7ff0ff2ff2fe2ff0ffaffffffffff"},{name:"Jraa-zum",data:"ffffffe8ff2ffeff2ffeffeffeffefffffff"},{name:"Klaa-rin",data:"fffffff7ff07f4ff67f67f0fffffffffffff"},{name:"Laa-vish",data:"ffffffc03df7d07d77d07f77f77f8fffffff"},{name:"Mraa-vun",data:"fffffffcffdff47f67f8ff6ff6ff5fffffff"},{name:"Nlaa-zeem",data:"fffffff8fffff87ebfecff6ff6ff9fffffff"},{name:"Olaa-rim",data:"fffffff0ffbfe2ff6ff0ff2ffcffcfffffff"},{name:"Plaa-vun",data:"ffffffc03df7fc3f7ff47f1bfdbfc7ffffff"},{name:"Quaa-vin",data:"ffffffe07f6fe2ffcff6feafe2feffffffff"},{name:"Rlaa-zem",data:"fffffff3ff0ff9ff4ff4ffdffdffdfffffff"},{name:"Slaa-vun",data:"fffffff7ff0ff9ff0ff2ff1ff3ffbfffffff"},{name:"Tlaa-rin",data:"ffffffe03fa7fb7f57f17f57f57f3fffffff"},{name:"Uvaa-lum",data:"ffffffc03ff7f43fe7f5ff27fdbfc7ffffff"},{name:"Vlaa-zim",data:"ffffffcbfebfe07ebfebfca7e7feffffffff"},{name:"Wraa-vun",data:"fffffffeff0ff9ff2ff4ff2ff8ffefffffff"},{name:"Xlaa-rim",data:"fffffffaff0ffaff4ff7ff7ff7ffffffffff"},{name:"Ylaa-van",data:"ffffffffff8ff8ff2fe6ff4ff8ffffffffff"},{name:"Zlaa-vum",data:"fffffffc7f8feaff2ff0ff6ff8ffefffffff"},{name:"Aabaa-rin",data:"fffffff7ff7ff4ff6ff2ff5ff7ff7fffffff"},{name:"Braa-van",data:"fffffff7febfebfe8ff5ffb7f8ffffffffff"},{name:"Caa-lum",data:"fffffff7ff0ffaffaff0fe2ff2ffffffffff"},{name:"Draa-zin",data:"fffffff3ff1ff1ff4ff4ff7ff7ff7fffffff"},{name:"Elaa-vish",data:"ffffffe6ffcff0ff6ffeff6ffcffefffffff"},{name:"Fraa-vun",data:"ffffcffbffafe2ffaff0ff6ffeffefffffff"},{name:"Hraa-lim",data:"fffffffeff0ff8ff2ff2ff0ffaffefffffff"},{name:"Ilaa-rin",data:"ffffffe0ffeff8ffaff2fe4ff4ffefffffff"},{name:"Jraa-zun",data:"ffffffe27f67f67f3ff5ff7ff7ff7fffffff"},{name:"Klaa-var",data:"ffffffffffbff5ff5ff1fe5ff9ffdfffffff"},{name:"Lraa-vum",data:"fffe0fffff7fe3ff7fe1fe5ffdffffffffff"},{name:"Mlaa-ran",data:"ffffffe07f7ff0ff67f77f3ff1ff7fffffff"},{name:"Nraa-kal",data:"fffffff87cc3d57ec3fd7fdffdffffffffff"},{name:"Olaa-vin",data:"fffffffdffdfc57edffc7fdffdffffffffff"},{name:"Praa-thin",data:"fffffff1fc07ca7e83f8ffaffbffbfffffff"},{name:"Qlaa-vor",data:"ffffffe07f6ff6ff1ff7ff6ff6ffffffffff"},{name:"Rraa-zim",data:"fffffff07feff8fe7fe9fedfefffffffffff"},{name:"Sraa-lin",data:"ffffffe2ff6ff4ff6ff6ff0ff7ff7fffffff"},{name:"Traa-zun",data:"ffffffff7c07ef7ef7ee7ec7eb7effffffff"},{name:"Vlaa-ran",data:"fffffffcff8ff9ff8ff0ff5ffdffbfffffff"},{name:"Graa-vish",data:"ffffffffffeffc7fb7f5fe4ffcffafffffff"},{name:"Draa-lum",data:"fffffff0ffaff6ff4ffaffeffeffefffffff"},{name:"Kraa-van",data:"fffc07f6ff0ff6fe67e8beabe2ffefffffff"},{name:"Nlaa-rim",data:"fffffff4ff4ff6ff6ff6ff2ff5ff7fffffff"},{name:"Praa-vish",data:"ffffffff3ff7ff7f77f47f37f5feffffffff"},{name:"Rlaa-van",data:"ffffffffff1ff8ff8ff0ff9ff7ffffffffff"},{name:"Slaa-rum",data:"fffffff4ff8ff9ff4ff47f1ff5ffdfffffff"},{name:"Tlaa-vish",data:"ffffffe0ff4ff5ff5ff4ff5ff7ff7fffffff"},{name:"Ulaa-rin",data:"fffffffefe0ff1ff2ff4ff5ff8ffffffffff"},{name:"Vraa-lum",data:"fffffffbff07f13edbe9bf37fc7f9fffffff"},{name:"Wlaa-rin",data:"fffffff7ff0ff0ffaffaff0ff2ffffffffff"},{name:"Xraa-vish",data:"fffffffeff2fedfeffecff67f6ff3fffffff"},{name:"Ylaa-zun",data:"ffffffc23feff6ffaff8ffeff6ff6fffffff"},{name:"Zraa-lum",data:"ffffffffff1ffbff2ff0ff2ffeffffffffff"},{name:"Araa-van",data:"fffffffffe07feff8ff6fe8ffaffffffffff"},{name:"Blaa-rim",data:"ffffffffff7ff0ff7ff4ffb7f1ffffffffff"},{name:"Craa-vun",data:"ffffffe07fffe1ff7ff0ff6ff6ff8fffffff"},{name:"Dlaa-zem",data:"ffffffffff1ff4ff5ff4ff0ff5ffffffffff"},{name:"Eraa-lin",data:"fffffff7ff0ff4ff4ff07f5ff7ff7fffffff"},{name:"Fraa-zum",data:"ffffffffff8ff9ff9ff3ff0ffbffffffffff"},{name:"Glaa-zun",data:"ffffffe07f07f7ffdff2ff6ff5ffffffffff"},{name:"Hraa-vish",data:"ffffffe4ff4ff6ff6ff6ff7ff7ff7fffffff"},{name:"Ilaa-zem",data:"fffffff0ffeff8ffaff1ff6ff6ffafffffff"},{name:"Jlaa-ran",data:"ffffffe0fe8fedff5ff4ffa7fbffdfffffff"},{name:"Kraa-lum",data:"fffffff4ff8ffdff4ff47f5ff5ffdfffffff"},{name:"Lraa-vish",data:"fffffff7ff0ff4ffcff8ff2ffeffffffffff"},{name:"Mlaa-vun",data:"fffffff7ff1ff5ff4ff47f67f3ff1fffffff"},{name:"Nraa-lim",data:"fffffff7ff0ff0ff4ff47f5ff5feffffffff"},{name:"Olaa-vish",data:"fffffff7ff1ff4ff4ff27f1ff5ff7fffffff"},{name:"Plaa-ran",data:"ffffffe07f6ff4ff3ff5ff5ff7ff7fffffff"},{name:"Qraa-lum",data:"fffffffffcc3d67c47fc3fc7feffefffffff"},{name:"Rraa-vish",data:"ffffffe07feff0ffeff8ff6ffcffefffffff"},{name:"Sraa-zem",data:"fffffffc7cc7ecff0ffa7fd3fcffffffffff"},{name:"Tlaa-zun",data:"ffffffe07f7ff4ff7ff4ff1ff7ffffffffff"},{name:"Uraa-vish",data:"fffffff7ff0ff8ff8ffeffbffbff7fffffff"},{name:"Vraa-lim",data:"ffffffe07f7ff0ff77f77f0ffefff7ffffff"},{name:"Wraa-van",data:"ffffffc03effecfeffedfeefe1feffffffff"},{name:"Xlaa-rin",data:"fffffff07faff87e5ff2ff97fbff9fffffff"},{name:"Yraa-zem",data:"fffffff3ff0ff1ff4ff67f3ff1ff7fffffff"},{name:"Nraa-rim",data:"fffffff5ff4ff4ff0ff4ff5ffdffdfffffff"},{name:"Praa-vun",data:"fffffffeff0ff9ff8ff2ff5ff3ffffffffff"},{name:"Rraa-van",data:"ffffffe0fffff0ffbff4ff77fbff9fffffff"}];let palettes=[["#131313","#B39069","#B57F4A","#513319"],["#131313","#B39069","#AC6C5A","#672424"],["#131313","#B39069","#B66B4E","#441F19"]];function generateVariationsForPalette(f,e,a){return e.map((e=>{let n=f.color(e),t=rgbToHsl(f.red(n),f.green(n),f.blue(n)),o=hslToRgb((t[0]+f.random(-a,a))%360,t[1],f.constrain(t[2]+f.random(-a,a),0,100));return rgbToHex(o[0],o[1],o[2])}))}function rgbToHsl(f,e,a){f/=255,e/=255,a/=255;let n,t,o=Math.max(f,e,a),i=Math.min(f,e,a),r=(o+i)/2;if(o==i)n=t=0;else{var l=o-i;switch(t=r>.5?l/(2-o-i):l/(o+i),o){case f:n=(e-a)/l+(e<a?6:0);break;case e:n=(a-f)/l+2;break;case a:n=(f-e)/l+4}n/=6}return[360*n,100*t,100*r]}function hslToRgb(f,e,a){let n,t,o;if(0==e)n=t=o=a;else{function i(f,e,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?f+6*(e-f)*a:a<.5?e:a<2/3?f+(e-f)*(2/3-a)*6:f}let r=a<.5?a*(1+e):a+e-a*e,l=2*a-r;e/=100,a/=100,n=i(l,r,(f/=360)+1/3),t=i(l,r,f),o=i(l,r,f-1/3)}return[Math.round(255*n),Math.round(255*t),Math.round(255*o)]}function rgbToHex(f,e,a){return"#"+((1<<24)+(f<<16)+(e<<8)+a).toString(16).slice(1)}function swapLastTwoElements(f){if(f.length>=2){const e=f.length-1,a=f.length-2;[f[e],f[a]]=[f[a],f[e]]}}const getRandomNumber=()=>Math.floor(1e4*Math.random()),genTokenData=f=>{let e={},a="0x";for(var n=0;n<64;n++)a+=Math.floor(16*Math.random()).toString(16);return e.hash=a,e.tokenId=(1e6*f+Math.floor(1e3*Math.random())).toString(),e},getRandomTokenData=()=>(console.log("TokenData is not defined, generating fake one..."),genTokenData(getRandomNumber())),getSeedFromToken=tokenData=>parseInt(tokenData.hash.slice(0,16),16);let TOTAL_IMAGES=100,SEED=123456789;function mulberry32(f){let e=f;return function(){e|=0,e=e+1831565813|0;let f=Math.imul(e^e>>>15,1|e);return f^=f+Math.imul(f^f>>>7,61|f),((f^f>>>14)>>>0)/4294967296}}function fisherYatesShuffle(f,e){let a,n,t=e.length;const o=mulberry32(f);for(;0!==t;)n=Math.floor(o()*t),t-=1,a=e[t],e[t]=e[n],e[n]=a;return e}function generateIndices(f,e){return fisherYatesShuffle(f,Array.from({length:e},((f,e)=>e)))}function selectImage(f,e){return generateIndices(SEED,e)[f%e]}void 0===window.tokenData&&(window.tokenData=getRandomTokenData());const sketch=function(f){f.keyPressed=function(){if(13===f.keyCode){let e=`bright-moments-sanskrit--${f.config.seed}.png`;f.saveCanvas(e,"png")}},f.setup=function(){let e=getSeedFromToken(tokenData);console.log("Seed : "+e),f.randomSeed(e),f.noiseSeed(e);let a=window.innerWidth,n=window.innerHeight;a=2*Math.floor(a/2),n=2*Math.floor(n/2);let t=Math.min(a,n),o=Math.min(t,800),i=o/750,r=o/800;f.realDimensions=t,f.finalScaleModifier=r,console.log("realDimensions",f.realDimensions),console.log("finalScaleModifier",f.finalScaleModifier),console.log("modifier",i),f.dimensions=o,f.modifier=i,console.log("modifier",f.modifier,"dimensions",f.dimensions),f.resizeCanvas(o,o);const l=f.dimensions,d=f.dimensions,c=f.random(-30,30)*f.modifier,s=f.random(-30,30)*f.modifier,m=6*f.modifier,g=6*f.modifier,h=100*f.modifier,u=f.random()>.8;let b=palettes[f.floor(f.random(0,palettes.length))];f.random()>.8&&swapLastTwoElements(b),generateVariationsForPalette(f,b,10),console.log(b),b=stretchPalette(f,b,4);const p=selectImage(tokenData.tokenId,100);console.log("chosenLetterIndex",p),f.config={seed:e,isLoading:!0,currentStep:0,debug:!1,width:l,height:d,modifier:i,isWebGL:!1,showInfos:!1,pixelDensity:1,hasStrokeOnBorders:!0,letterResolution:12,letterOffsetX:c,letterOffsetY:s,externalStrokeSize:h,isChladniColorsReversed:!0,hasGradientInsideLayers:!0,isLetterCentered:u,backgroundColor:{r:255,g:255,b:255},letterRoundBlur:g,letterBlur:m,letterFill:255,hasToErodeEdges:!1,isOutlineBlurred:!0,blockSize:l>d?d/12:l/12,chladniParams:{a:f.random(-8,-10),b:f.random(-8,-10),n:f.random(-10,10),m:f.random(-10,10)},maxLevel:255,numberOfLayers:4,layerStep:63.75,hasSandGrain:!0,letterOutlines:[{thickness:f.floor(10*f.modifier),color:[0,0,0],opacity:220},{thickness:f.floor(8*f.modifier),color:[0,0,0],opacity:180},{thickness:f.floor(6*f.modifier),color:[0,0,0],opacity:120},{thickness:f.floor(4*f.modifier),color:[0,0,0],opacity:80},{thickness:f.floor(4*f.modifier),color:[0,0,0],opacity:60}],letterData:hexData[p].data,letterName:hexData[p].name,palette:b},console.log("chladniParams",f.config.chladniParams),f.pixelDensity(1),f.createCanvas(f.config.width,f.config.height,f.config.isWebGL?f.WEBGL:f.P2D)},f.draw=function(){console.log("Draw start..."),f.background(255),f.sanskritImage=drawSanskritLayer(f),f.outlinesImage=drawOutlinesLayer(f),f.chladniImage=drawChladniLayer(f),f.config.isLoading=!1,f.resizeCanvas(f.realDimensions,f.realDimensions),f.image(f.chladniImage,0,0,f.realDimensions,f.realDimensions),f.config.showInfos&&drawInfos(f),console.log("Draw end."),f.noLoop()}},sketchInstance=new p5(sketch,document.getElementById("sketch"));
Whispering Sands is a series of 100 on-chain AI generated artworks. They embody an ode to machine language and to the intricate relationship between artificial intelligence, sanskrit, and binary. The artworks are composed of two elements: a downscaled AI generated letter, created using Generative Adversarial Networks, and a pattern created using a code created with Large Language Models, based on the Chladni formula. While the generated letters are inspired from the Sanskrit alphabet, the Chladni formula depicts the behavior of sand on a plate when the plate is subjected to a certain vibration, resulting in a visual representation of the sound associated with the frequency that caused the vibration. As a result, the letter and its sound are both AI generated, and represented visually in the artwork, and the final artwork is small enough to live on-chain.