0x2171…d9f2

All memos sent from and to 0x2171…d9f2.

async function loadExternalAssets(){let e=window.tokenData&&Dependencies||[];0===e.length&&(yType:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2s j6f6i25i",d :""}]);const a=e[0];try{await`ToneLibrary(a)}catch(e){@2ole.warn("raga.fm: @. failed",e)}if(t IveDirUrls(e,ASSET_MANIFEST!.timeout(45e3)}`[(),n=document.createEle@ (workingIpfsGateway ,slice(0,a))}return.").pop()"k LowerCase()]||let n=0;n<t.keys\u2014 check CID/t TABLA_PATTERNS={TeenTa%{decay:4.5,wet:.4}Db Gain(r.dbTo` &l=tempoBpm<=110?.65:Math.max(.15_FALLBACK_GATES=["https:/Canvas,gridColsjFnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si4},TRANSIDS S_WITH_BEAT1 (VERT_SHADER,F$F? (SARGAM_FON UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>5'3L ||60,o=[t,t+7]!)zM o=1103515245*o(gener?x MoodPalett( iritual Awaken8
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E" /checkerbo@!42@GBA y .#`aU@Yb",UNICODE_SYLLABLES={0:"\u0938`FONT_DATA_URL="d#/woff2;base64,d09GMgABA`GkAbgngcg0AGYAB02toiAcBNgIkA0wLKAAEIAWEA "6FcbMTTVTRxBUV7jYeSjxEY/3ezOneV8MtQnSPLiGSCc0sFrH8Q0d0fXjc9n/uNhA3I+GJNQuxkDcVM4YRgR0vEl534K+ItC8xuG+/lk7m5hzTKtoojfoJmUhoe3s6qEooP9MojUfyJuopiFaWuTFoo5fm5zYEig2ALSgSBIWg83UxWATHCs2BAxpBQBdBoXEI6AmmR+/ak1MCp8st44RRbtglBqj/SxCoCxfH9cDm4u3xPZADJhryGstMcwbMALLuVuQIXrhFPhwHFL jEXBtebIbUse1mwI+fGm5pGOBLzqd6Cl9GESxSH9D7VxV+dpewQLOgGB5cxfDMJDoB2hnZi7eS2MnvwuJ/F4ODiTcOOEDVkUmBzLCVja+X1K0tOnCjxVIIJoiQgKuvX0/AQRsBf/NqH77QCeY1u0UAJRh/eXsRDdzI5D6AkmRyTzx9JLwADnng+ysL3AET/eZIIpy1vt/tDw5negK+GgNuUknGwBYdwAfdgxldESQpa7KilqDGMBuEGCAcEBIKwxGkOcCuyGdJRswwbHhZkmnHQzCYkOE0dttxYBGTiBNwRoZaV0Ju10ImNi5RtNUGRHg9JozjxIF0WQ+cpZXvTrdmDHLRYCYdJKVkGCeRDqgIcHN4ozhIiBbJPQjEShqIY4AEW17T3aL5IrhVFKWoY/2uH1q7U#"yOnvBElKQoAHG0Qi4MRo2Y4fGFEVRl8CiKdoSVRKLWIpqBaPxhwR54ef0/Vv2db3vTCTZd+uwBioR+zvVVgHOIZEL9BG/QDiGeT90ARKf1hzq79ZJTc1lLR5FdYMYzbwnjIHkx9k5WwxBp1n81HzrALTvmWXeQW3r/+urSeMu5jFzy5QUwHOY6 +YsuXX8RhrZ92qwmHHpJ4MubFlGWUK9hjEu7yAxzX0JxuvRe89yC/1K9 [YHy913g0iGYJJxEholkILrUmVl0CuZKCHozPuRiOk4svXDlixCw9cJeOmc0pR04gyhaeD7h4ExK2yM+hLfsMxlcl118bSKxCZNH+4EmuPm7XrZxnjtkXTtagsHrhXX/ClBe8+3adr+IaBmB1LbK4DTvOKq+UNX+u8mdTHXbhgDemsH8lGSQx4y5pv8q/0L9StBexr9UpxaPwQaLS+ZzcOeO5Lvjef4HdLsV4qopXLlYoO6rdFAe9Xa5NF5PFNr50DK/avOplpizF2Kqu4lSXsU3jhUwhKV9MT4tP0oSfO3nAXRvBd/j6NhYxTePusyzSl7l06FXJqjBNrt8WXYL4G3q3SesUeFrndlExplJHHc8zJrynipu4b0p19q80NDZfzRdF8fx3N5JqBFW67wb8Q/BU/3p3r0eOjut0XY4O+7yVn00Tm8Vz7372LiasXZ2X0T++dUaqXHHRRT4hYmaNWrGp93txn9g6GlFYW5/LL+vrhMdA1v7BxduO++t08okRO3K93Lb0PRdPGHRqmJ3upq60W/3ZE21T01nB0S1jzbujf8amfvfVOtQ+F++LuJDTJrbh0u2l6K3PPPWGiqLeTYujFhSHdA61poXtCfX0PN0jkv1uwekPPAom1rQa9uhnT9UUFoltx9rrckujde5Bx7rbjB95FkyqbGs+qJ8/VesildV2rt2Q/4d8sbG0bfCafuO0qILSkubRrsH86sgod+7aHbe2yPisbpV+6qvsPdMicyvLmr7pNpYYCvmczKui2rCFJQByvmEEARnzT/64t7XeNu6bjKa/AN7NTNwJMN//2eN/z/77XapWKmij&fNct6Cu1f7zLO/ouOY1mhLmig"U8r88wyGuEDILcCnkG4hGQbwFqNfxPDxpwb0NdjYAx08gMkCIguvFBt1XtdWtaAl4DJYBQ2xFAsfEggJbljQBGVHgHSCijavNS4TEsVZ9+Ew3q0KbdMJ5ASyCAteQotITM02dYn7WAunGfTi2ayuLJRgxr12fQEJ5aTvqw/iOdY4QK1aaDarkRjTSa9OkRqlfqdlr16TVsSKhmLcYx6GXQxmDX2AD9VIxNqPtYuUBDuwypE0uUnyuKlWfMg+cJQmBkbJiIL5llWq4LdZzlGN6qkbckkbaIqG4STACK='"RagaDev)?F)P Ready=!1;fݚASSET?i NIFEST={tone:"@3d-mono/A_029__F1_1.f?k @ers={},toneFx={};
async function loadSampleBanks(e{const a=Number(e.dependencyTypo={};for(let n=0;n<t.keys.length;if(2===a)o[r]=@za=await fetchAudioBlob(e,i);a&&(`>a)}}return o},[o,n,r,i,l Promise.all([t(ASSET_MANIFEST.rhdrums)]);0!==ObjecbuildToneEngine({ole.warn("raga.fm: no sbed \u2014 check CID/gateway")}@Ct TABLA_PATTERNS={TeenTaal:["DhaFx.reverb=new r.R`{decay:4.5,wet:.4}).toDestinaCe,release:4,volu!/l=tempoBpm<=110?.65:Math.max(.15IPFS_FALLBACK_GATES=["https:/kenD 7 .preferredAplace(/\/?$/,"/");"Y*X .timeout(8e3)}aCanvas,gridColsjFnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si/},TRANSIDS S_WITH_BEAT1 (VERT_SHADER,F$UNICODE_SYLLABLES[r!aFV ),toneEngin!64525*i+1013904223>>>5P||SEC]" _TEMPLATES.Z;A\:3L ||60,o=[t,t+7]!)zM o=1103515245*o(gener?x MoodPalett( iritual Awaken8
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E" /checkerbo@!42@GBA y .#`aU@Yb",UNICODE_SYLLABLES={0:"\u0938`"},KOMAL_PCS=new= NIFEST={tone:"@3d-mono/A_029__F1_1.f4yType:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2s j6f6i25i",d a.71 t(),n=docum7(work&W IpfsGateway ,
const TABLA_PATTERNS={TeenTaal:[blaPattern=null;async function buildToneEngine({rhodesUrls:e,strFx.reverb=new r.R`{decay:4.5,wet:.4}).toDestina@{frequency:2400,typ b); m"F i=(e,a=0)=> release:4,volu!/l=tempoBpm<=110?.65:Math.max(.15=!0,audioStarted&&` IPFS_FALLBACK_GATES=["https://gakenD 7 .preferredAplace(/\/?$/,"/");"Y#> .timeout(8e3)}aCanvas,gridColsjFnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si*},TRANSIDS S_WITH_BEAT1 (VERT_SHADER,F$om/css2?family=@UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>6ec 2===a?"tri2z&3L ||60,o=[t,t+7]!)zM o=1103515245*o(gener>- MoodPalett( iritual Awaken8
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E' /checkerbo@!42@GBC y .#caV@Yb",UNICODE_SYLLABLES={0:"स`"},KOMAL_PCS=new= NIFEST={tone:"@rh0? s:{keys:["F=3d-mono/A_029__F1_1.f4yType:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2s j6f6i25i",d a.7W t(),n=docum7(work&W IpfsGateway ,
async function loadSampleBanks(e{const a=Number(e.dependencyTypo={};for(let n=0;n<t.keys.length;if(2===a)o[r]=@za=await fetchAudioBlob(e,i);a&&(`>a)}}return o},[o,n,r,i,l Promise.all([t(ASSET_MANIFEST.rhdrums)]);0!==ObjecbuildToneEngine({ole.warn("raga.fm: no sbed ‚Äî check CID/gateway")}@Dt TABLA_PATTERNS={TeenTaal:["DhaFx.reverb=new r.R`{decay:4.5,wet:.4}).toDestinaCe,release:4,volu!2IPFS_FALLBACK_GATES=["https:/ǪkenD 7 .preferredAplace(/\/?$/,"/");"Y* .timeout(8e3)}aCanvas,gridColsjnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si.},TRANSIDS S_WITH_BEATSargamToMidi( %41 (VERT_SHADER,F$om/css2?family=@UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>6ec 2===a?"tri2z&yK o=1103515245*o(gener=+ MoodPalett( iritual Awaken7
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E' /checkerbo@!42@GBC y .#caV@Yb",UNICODE_SYLLABLES={0:"स`"},KOMAL_PCS=new= NIFEST={tone:"@rh0? s:{keys:["F=3d-mono/A_029__F1_1.f4yType:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2s j6f6i25i",d 2g olveDirUrls;&a.7h t(),n=docum7(work&h IpfsGateway ,
async function fetchAudioBlob(e,a){const t={wav:"a@"}[a.split(".").pop().toLowerCaso=resolveDirUrls` - {signal:AbortS`.timeout(15e3)});if(!a.ok) Sa.arrayBuffer();return URL.creat[o],{type:t}))}ca!Wole.warn("raga.fm: let n=0;n<t.keys.length;n++AG 2===a)o[r]=@zPromise.all([t(ASSET_MANIFEST.rhbuildToneEngine({ed ‚Äî check CID/g"TABLA_PATTERNS={TeenTa#/{decay:4.5,wet:.4}DIPFS_FALLBACK_GATES=["https:/ǪCanvas,gridColsjnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si.},TRANSIDS S_WITH_BEATSargamToMidi( %41 (VERT_SHADER,F$UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>5P||SEC\P _TEMPLATES.YiHy"x/ ||a.vilambi3P?u!*`<@E ityLabel?t? yK o=1103515245*o(gener>v MoodPalett( iritual Awaken7
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E' /checkerbo@!42@GBC y .#caV@Yb",UNICODE_SYLLABLES={0:"स`"},KOMAL_PCS=new= NIFEST={tone:"@rh0g s:{keys:["F=3d-mono/A_029__F1_1.f4t=13 olveDirUrls9(Fg Blob([o],{t!rc: url("${a}") )6V U, "Noto Sans Dev>a:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2sj6f6i
-1!==a&&(workingIpfsGateway=t.slice(0,a))}return}catch(e){console.warn("raga.fm: g failed",t,e.message)}throw new for Tone.js")}}async function f"}[a.split(".").pop().toLowerCas - {signal:AbortS`.timeout(15e3)});if(!a.ok) Sa.arrayBuffer();let n=0;n<t.keys.length;n++Promise.all([t(ASSET_MANIFEST.rh‚Äî check CID/t TABLA_PATTERNS={TeenTa#/;t%; Fx.reverb=C{decay:4.5,wet:.4}Db Gain(r.dbTo` &_FALLBACK_GATES=["https:/ǪCanvas,gridColsjnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si.},TRANSIDS S_WITH_BEATSargamToMidi( %41 (VERT_SHADER,F$UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>5P||SEC\P _TEMPLATES.YiHy"x/ ||a.vilambi3P?u!*`<@E ityLabel?t? yK o=1103515245*o(gener>v MoodPalett( iritual Awaken7
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E' /checkerbo@!42@GBC y .#caV@Yb",UNICODE_SYLLABLES={0:"स`"},KOMAL_PCS=new= NIFEST={tone:"@rh0g s:{keys:["F=3d-mono/A_029__F1_1.f4t=1/ olveDirUrls9(Fc Blob([o],{t!rc: url("${a}") )6R U, "Noto Sans Dev>]:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2sj6f6i
for(let n=0;n<t.keys.length;n++);if(2===a)o[r]=(e.data||"")+i;ela=await fetchAudioBlob(e,i);a&&(`>a)}}return o},[o,n,r,i,l Promise.all([t(ASSET_MANIFEST.rhdrums)]);0!==ObjecbuildToneEngine({ole.warn("raga.fm: no samp! loaded ‚Äî check CID/gatewat TABLA_PATTERNS={TeenTaal:["DhaPattern=null;async functionFx.reverb=new r.R`{decay:4.5,wet:.4}).toDestina@{frequency:2400,typ be,release:4,volu!2IPFS_FALLBACK_GATES=["https:/ǪkenD 7 .preferredAplace(/\/?$/,"/");"Y* .timeout(8e3)}aCanvas,gridColsjnsityLabel="Spars+ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si.},TRANSIDS S_WITH_BEATSargamToMidi( %41 (VERT_SHADER,F$om/css2?family=@UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>6yK o=1103515245*o(gener=+ MoodPalett( iritual Awaken7
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u E' /checkerbo@!42@GBC y .#caV@Yb",UNICODE_SYLLABLES={0:"स`"},KOMAL_PCS=new= NIFEST={tone:"@rh0? s:{keys:["F=3d-mono/A_029__F1_1.f4yType:0,cid:"bafybeihvs3kjjnqnom3wohbb3y52zj7kvggutjku5lbuk6yy2s j6f6i25i",d a.7W t(),n=docum7(work&W IpfsGateway ,
Time has a sound. For centuries, Indian classical musicians have known this — that certain melodies belong to dawn, others to the blue hour before midnight, others to the still heat of afternoon. A raga is not performed so much as it is released: the right notes, at the right hour, in the right sequence, opening something that was always already there. Each token holds one raga. Its hash is a seed cast into 46 possible worlds — each with its own hour, its own emotional truth, its own colour. The canvas breathes in tempo. Fluid light moves in the raga's palette. Across it, in Devanagari, the sargam is written: the ascending phrase, the descending phrase, the pakad — the few notes by which the raga announces itself, unmistakably, the way a voice is known before a word is spoken. Tap to wake the sound. Rhodes and tabla, strings and cello, assembled in the moment, never quite the same twice. The piece knows what time it is. It has always known.
t IPFS_FALLBACK_GATES=["https://gateway.pinata.cloud/ipfs/",];function resolveDirUrls(e,a){if(!e||!a)return[];const t=Number(e.dependencyType); 3(tokenD 7 .preferredA.replace(/\/?$/,"/");fetchWithFallbackA(t,{signal:AbortS` .timeout(8e3)}a(e){}throw new Err null}let R,chosenRaga,bgShader,@Canvas,gridCols,cellSize,mas"-nsityLabel="Sparse"`=0,cu#^ ntAmplitud@ SECTION_TEMPLAEC{alap:{barRange:[4,8],rhythm:"si},TRANSIDS S_WITH_BEAT1 (VERT_SHADER,F$t/P@@( ),i=n+(t-r*UNICODE_SYLLABLES[r!destinaFV ),toneEngin!64525*i+1013904223>>>6yK o=1103515245*o(gener=+ MoodPalett( iritual Awaken7
class Random{constructor() e=tokenData.hash.slice(2);this._state=[parseInt(e n=(e+a|0)+o|0;return o=o+1|0,e=a^a>>>9,a=t+(t<<3) 0)/4294967296}dec(){;t++)if(o-=a[t],o<0)RAGAS=[{name:"Bhairav",aroha:"S r G M P d N S' te:{primary:"#283618 WB6AD90",backgroun vFFD60%d background:@9],SARGAM_MAP={S:0,r:1,R:2,g:3,G:":6,P:7,d:8,D:9,n:10,N:11};funcS-gamToMidi(e,a=!1){if(!e)return[] ;const t=e.$((/,/g,"").trim().split(/\s+/).fi n=4;t[0].includes("'")?n=5:.push(i+12*(n+1)),r=i)}VERT_SHADER="\nprecis5 highp float;\nat!bute vec3 aPosiBtrols (set once from token trait2=drift 3=radial 4=sc")))*43758.545''@Vu=u*u*(3.0-2.0*u42@GB; y .#WaR@Yb",UNICODE_SYLLABLES={0:"सा","},KOMAL_PCS=new=4ASSET4G NIFEST={tone:"@3d-mono/A_029__F1_1.f4I @(work"m IpfsGateway ,{decay:4.5,wet:.4}D
With whom does the unpeopled landscape speak? With the final desolation etched on the soul. The mark of the wipe behind an eternal, eternally methodical wiping. Its finality ensures its continuity—a generative continuity—always new, always terminal. We must perhaps understand the apocalypse in similar terms. A generative continuity that is final and new. And perhaps even beautiful. Here, unmanned boats suggest the men who made them. Birds aim to be dinosaurs. Scant vegetation knows nothing of lush vegetation. But whatever happened is still happening, and shall continue to happen. Time doesn’t have Fate’s bad habit, you see: it doesn’t affix itself to any subject; it doesn’t stand still. If reason tells you that your time on this little ball will soon be over, it's lying. It was never your time to begin with. You may refer to you here, or to the whole of humanity.
function setup(){switch(DIM=Math.min(WIDTH,HEIGHT),createCanvas),rectMode(CENTER),background(250@0 Stroke(),M= s /1e3,hohi=/R.random_choice([1.5,2,3] ;r=[[61,80,79],[48,78,85 101,169,193 ;for(let t=0;t<,,print("sc : "+sc i r=r+1|0,i=e^e>>>9 0)/4294967296}};a"DEFAULT_SIZE=1e3)}else this.done=!0}}
function generateScale(e,n){const t={major:[2,2,1 4 ;@' };let a=[e],o=A.Frequency(e).toMidi();return t[n].forEach(e=>{o+=e,a.push("@E Note())}),a}fua=0;a<n;a++)if(R.random_num(0,1)Canvas(WIDTH,HEIGHT,WEBGL),noStrruct!o ){this.useA=!1k0)/4294967296}};a"DEFAULT_SIZE=1e3=window.innerHeF
With whom does the unpeopled landscape speak? With the final desolation etched on the soul. The mark of the wipe behind an eternal, eternally methodical wiping. Its finality ensures its continuity—a generative continuity—always new, always terminal. We must perhaps understand the apocalypse in similar terms. A generative continuity that is final and new. And perhaps even beautiful. Here, unmanned boats suggest the men who made them. Birds aim to be dinosaurs. Scant vegetation knows nothing of lush vegetation. But whatever happened is still happening, and shall continue to happen. Time doesn’t have Fate’s bad habit, you see: it doesn’t affix itself to any subject; it doesn’t stand still. If reason tells you that your time on this little ball will soon be over, it's lying. It was never your time to begin with. You may refer to you here, or to the whole of humanity.
Karma, the original algorithm of Indian thought. Action, inaction, randomness, will -- all are ground in its maw to determine the manifest shape of the next moment. The past makes the present, and shall do so in the future. But what one sees is the eternal present, and from there, the past is only the fading imprint on memory, an imprint that leaves us with the perception of pattern, as gratifying as it is mystical. The past's fading, thus, is a necessity. Interaction: Click/Hold anywhere to start drawing. Press the 'down arrow' to clear the canvas.
function setup(){DIM=Math.min(WIDTH,HEIGHT),createCanvas(WIDTH,HEIGHT,WEBGL),noiseSeed(seed),M=DIM/1e3,V=R.random_int(0,90),comp=R.random_num(0,1),orig=R.random_num(0,1),rectMode(CENTER);let t=R.random_int(0,9);V<20&&(age=R.random_int(2,5),sf=R.random_int(15,40),bs=R.random_int(15,40),cpr=R.random_int(35,500),spr=25,apr=R.random_int(35,100),av=2,cv=.1,sv=.1,mf=.2),V>=20&&V<30&&(age=R.random_int(1,2),sf=R.random_int(20,100),bs=R.random_int(15,20),cpr=25,spr=25,apr=30,av=R.random_num(0,1),cv=.1,sv=.1,mf=.2),V>=30&&V<40&&(age=R.random_int(1,2),sf=R.random_int(20,80),bs=R.random_int(25,80),cpr=0,spr=0,apr=0,av=.1,cv=.1,sv=.4,mf=.2),V>=40&&V<60&&(age=R.random_int(2,3),sf=R.random_int(20,100),bs=R.random_int(25,40),cpr=24,spr=25,apr=R.random_int(10,400),av=.1,cv=.1,sv=.1,mf=.2),V>=60&&V<=70&&(age=R.random_int(1,3),sf=R.random_int(20,80),bs=R.random_int(15,100),cpr=90,spr=25,apr=50,av=.1,cv=.8,sv=.1,mf=.2),V>=70&&V<80&&(age=R.random_int(1,2),sf=R.random_int(20,40),bs=R.random_int(15,20),cpr=2,spr=100,apr=100,av=.1,cv=.1,sv=.8,mf=.2),V>=80&&V<=90&&(age=R.random_int(1,2),sf=R.random_int(20,50),bs=R.random_int(15,100),cpr=1e3,spr=0,apr=10,av=.1,cv=.1,sv=10,mf=.2);for(let t=0;t<=sf;t++)rans[t]=t%2==0?R.random_int(1,bs):R.random_int(10,bs);for(let t=0;t<sf;t++){let i=rans[t];flock.push(new Boid(i,mx,my))}0==t?whichClr=clr0:1==t?whichClr=clr1:2==t?whichClr=clr2:3==t?whichClr=clr3:4==t?whichClr=clr4:5==t?whichClr=clr5:6==t?whichClr=clr6:7==t?whichClr=clr7:8==t?whichClr=clr8:9==t?whichClr=clr9:10==t?whichClr=clr10:11==t?whichClr=clr11:12==t&&(whichClr=clr12),setColorTables(),console.log("V ",V),console.log("Age ",age);let i=clrA[0];background(i)}function draw(){if(ambientLight(100),directionalLight(255,255,255,0,0,2*-DIM*M),smooth(),scale(.8),comp>.8&&V>=20&&V<40)for(let t of flock)t.edgesC(flock),t.flock(flock),t.update(),t.show(flock);else for(let t of flock)t.edges(),t.flock(flock),t.update(),t.show(flock);if(frameCount>=380*age){if(mouseIsPressed)for(let t of kflock)t.edges(),t.flock(kflock),t.update(),t.showK(kflock);print("done")}}function keyPressed(){55===keyCode&&saveCanvas(c,"myCanvas","jpg")}function setColorTables(){clrLen=whichClr.length,clr1Blk=floor(clr1Num/clrLen);for(let t=0;t<clr1Num;++t){t%clr1Blk==0&&(clr1Cnt=(clr1Cnt+1)%clrLen);let i=color(whichClr[clr1Cnt][0],whichClr[clr1Cnt][1],whichClr[clr1Cnt][2]),o=color(whichClr[(clr1Cnt+1)%clrLen][0],whichClr[(clr1Cnt+1)%clrLen][1],whichClr[(clr1Cnt+1)%clrLen][2]);clrA.push(lerpColor(i,o,map(t,clr1Cnt*clr1Blk,(clr1Cnt+1)*clr1Blk,0,1)))}}function keyPressed(){keyCode===DOWN_ARROW&&frameCount>380*age&&(fill(clrA[0]),rect(0,0,2*WIDTH,2*HEIGHT))}function mousePressed(){let t=R.random_int(1,10);for(let i=0;i<=t;i++)rans[i]=i%2==0?R.random_int(1,bs):R.random_int(10,bs);for(let i=0;i<t;i++)br=rans[i],kflock.push(new KBoid(br,screenX-width/2,screenY-height/2))}let hash=tokenData.hash,seed=parseInt(tokenData.hash.slice(0,16),16);class Random{constructor(){this.useA=!1;let t=function(t){let i=parseInt(t.substr(0,8,16)),o=parseInt(t.substr(8,8,16)),s=parseInt(t.substr(16,8,16)),e=parseInt(t.substr(24,8,16));return function(){i|=0,o|=0,s|=0,e|=0;let t=(i+o|0)+e|0;return e=e+1|0,i=o^o>>>9,o=s+(s<<3)|0,s=s<<21|s>>>11,s=s+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 t=0;t<1e6;t+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(t,i){return t+(i-t)*this.random_dec()}random_int(t,i){return Math.floor(this.random_num(t,i+1))}random_bool(t){return this.random_dec()<t}random_choice(t){return t[this.random_int(0,t.length-1)]}}let R=new Random(seed),rans=[];var res=360;let mX,mY,ry,rx,rz,sf,atp,rr,mx,my,dk,karma,bcol,stp=1,f=0,rd=200,n=0;const flock=[];let alignSlider,cohesionSlider,separationSlider,clrLen,whichClr,clr1Blk,whichColor,kflock=[],clr0=[[225,77,42],[253,132,31],[62,109,156],[0,18,83]],clr1=[[0,0,0],[207,10,10],[220,95,0],[238,238,238]],clr2=[[255,247,233],[255,115,29],[95,157,247],[23,70,162]],clr3=[[0,0,0],[255,255,255]],clr4=[[49,225,247],[64,13,81],[216,0,166],[255,119,119]],clr5=[[239,239,239],[210,0,26],[255,222,0],[255,250,231]],clr6=[[252,226,219],[255,143,177],[178,112,162],[122,68,149]],clr7=[[245,237,220],[207,210,207],[162,181,187],[235,29,54]],clr8=[[245,245,245],[240,84,84],[48,71,94],[18,18,18]],clr9=[[255,255,255],[0,0,0]],clr1Num=200,clr1Cnt=-1,clrA=[];var DEFAULT_SIZE=1e3,HEIGHT=window.innerHeight,WIDTH=.707*HEIGHT,DIM=Math.min(WIDTH,HEIGHT),M=DIM/DEFAULT_SIZE;let c,V,age;class Boid{constructor(t,i,o){orig>.9&&V<40&&V>=20?this.position=createVector():this.position=createVector(map(R.random_num(0,1),0,1,-WIDTH/2,WIDTH/2),map(R.random_num(0,1),0,1,-HEIGHT/2,HEIGHT/2)),1==dk&&(this.position=createVector(i,o)),this.velocity=createVector();let s=R.random_num(0,1)*TWO_PI,e=1;this.cf=R.random_int(0,199),this.ff=R.random_int(1,50),this.velocity.x=e*Math.cos(s),this.velocity.y=e*Math.sin(s),this.velocity.z=e*Math.sin(s),this.velocity.setMag(R.random_num(2,4)*M),this.acceleration=createVector(),this.maxForce=mf*M,this.maxSpeed=5*M,this.size=t*M}edges(){this.position.x>WIDTH/2?this.position.x=-WIDTH/2:this.position.x<-WIDTH/2&&(this.position.x=WIDTH/2),this.position.y>HEIGHT/2?this.position.y=-HEIGHT/2:this.position.y<-HEIGHT/2&&(this.position.y=HEIGHT/2)}edgesC(t){for(let i of t){let t=dist(this.position.x,this.position.y,0,0);t>500*M&&this.position.limit(500*M)}}align(t){let i=apr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.velocity),s++)}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}separation(t){let i=spr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);if(e!=this&&t<i&&t>0){let i=p5.Vector.sub(this.position,e.position);i.div(t*t),o.add(i),s++}}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}cohesion(t){let i=cpr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.position),s++)}return s>0&&(o.div(s),o.sub(this.position),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}flock(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t);i.mult(av),o.mult(cv),s.mult(sv),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s)}flockK(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t);i.mult(av),o.mult(cv),s.mult(sv),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s)}update(){this.position.add(this.velocity),this.velocity.add(this.acceleration),this.velocity.limit(this.maxSpeed),this.acceleration.mult(0)}show(t){let i=map(frameCount,0,380*age,0,PI),o=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),s=frameCount;apr;if(s<380*age){let e=createVector();e=this.position;for(let o of t){let t=dist(this.position.x,this.position.y,o.position.x,o.position.y);o!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+s/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(i)),line(e.x,e.y,o.position.x,o.position.y),e.dot(o.position))}push(),noStroke(),fill(clrA[floor((int(o)+s/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(s/120),rotateY(s/120),rotateZ(s/120),box(sin(i)*this.size),pop()}}showK(t){let i=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),o=frameCount%(380*age),s=map(frameCount,0,380*age,0,PI),e=(apr,createVector());e=this.position;for(let i of t){let t=dist(this.position.x,this.position.y,i.position.x,i.position.y);i!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+o/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(s)),line(e.x,e.y,i.position.x,i.position.y),e.dot(i.position))}push(),noStroke(),fill(clrA[floor((int(i)+o/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(o/120),rotateY(o/120),rotateZ(o/120),box(sin(s)*this.size),pop()}}class KBoid{constructor(t,i,o){this.position=createVector(map(R.random_num(0,1),0,1,-WIDTH/2,WIDTH/2),map(R.random_num(0,1),0,1,-HEIGHT/2,HEIGHT/2)),console.log(this.position),this.velocity=createVector();let s=R.random_num(0,1)*TWO_PI,e=1;this.cf=R.random_int(0,199),this.ff=R.random_int(1,50),this.velocity.x=e*Math.cos(s),this.velocity.y=e*Math.sin(s),this.velocity.z=e*Math.sin(s),this.velocity.setMag(R.random_num(2,4)*M),this.acceleration=createVector(),this.maxForce=mf*M,this.maxSpeed=5*M,this.size=t*M}edges(){this.position.x>WIDTH/2?this.position.x=-WIDTH/2:this.position.x<-WIDTH/2&&(this.position.x=WIDTH/2),this.position.y>HEIGHT/2?this.position.y=-HEIGHT/2:this.position.y<-HEIGHT/2&&(this.position.y=HEIGHT/2)}edgesC(t){for(let i of t){let t=dist(this.position.x,this.position.y,0,0);t>500*M&&this.position.limit(500*M)}}align(t){let i=apr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.velocity),s++)}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}separation(t){let i=spr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);if(e!=this&&t<i&&t>0){let i=p5.Vector.sub(this.position,e.position);i.div(t*t),o.add(i),s++}}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}cohesion(t){let i=cpr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.position),s++)}return s>0&&(o.div(s),o.sub(this.position),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}attract(t,i,o){let s=createVector();var e=createVector(i,o);let r=0;for(let i of t){let t=p5.Vector.sub(e,this.position);i!=this&&(s.add(t),r++)}return r>0&&(s.div(r),s.setMag(this.maxSpeed),s.sub(this.velocity),s.limit(this.maxForce)),s}flock(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t),e=this.attract(t,mouseX-width/2,mouseY-height/2);i.mult(av),o.mult(cv),s.mult(sv),e.mult(1),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s),this.acceleration.add(e)}update(){this.position.add(this.velocity),this.velocity.add(this.acceleration),this.velocity.limit(this.maxSpeed),this.acceleration.mult(0)}show(t){let i=map(frameCount,0,380*age,0,PI),o=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),s=frameCount;apr;if(s<380*age){let e=createVector();e=this.position;for(let o of t){let t=dist(this.position.x,this.position.y,o.position.x,o.position.y);o!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+s/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(i)),line(e.x,e.y,o.position.x,o.position.y),e.dot(o.position))}push(),noStroke(),fill(clrA[floor((int(o)+s/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(s/120),rotateY(s/120),rotateZ(s/120),box(sin(i)*this.size),pop()}}showK(t){let i=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),o=frameCount%(380*age),s=map(frameCount,0,380*age,0,PI),e=(apr,createVector());e=this.position;for(let i of t){let t=dist(this.position.x,this.position.y,i.position.x,i.position.y);i!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+o/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(s)),line(e.x,e.y,i.position.x,i.position.y),e.dot(i.position))}push(),noStroke(),fill(clrA[floor((int(i)+o/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(o/120),rotateY(o/120),rotateZ(o/120),box(sin(s)*this.size),pop()}}
Karma, the original algorithm of Indian thought. Action, inaction, randomness, will -- all are ground in its maw to determine the manifest shape of the next moment. The past makes the present, and shall do so in the future. But what one sees is the eternal present, and from there, the past is only the fading imprint on memory, an imprint that leaves us with the perception of pattern, as gratifying as it is mystical. The past's fading, thus, is a necessity.
Inspired by the inherent multiplicity that goes with the tradition of the dish, Pizza 1o1 is a generative script that is capable of producing over a million unique combinations of a Pizza. Prepared and served differently across different countries and communities, Pizza 101 celebrates the generative nature of this Italian delicacy by offering a feature rich project that comes in various different shapes, sizes, sauces, loads of different toppings, a variety of cheeses and almost always some seasoning. Just like a card game, where you can pit one pizza against the other for its unique composition. Have fun minting.
jalepeno(){let tto=circlePack(70*M,90*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);fill(86,43,45,100);strokeWeight(1*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=radians(1*M)){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r-50*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.05} endShape(CLOSE);fill(86,13,100,30);beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-50*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-50*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);pop()}} corn(){let tha=circlePack(20*M,30*M);for(var i=0;i<tha.length;i++){push();translate(tha[i].x,tha[i].y);rotate(RA.random_num(0,TWO_PI));fill(49,78,100,100);rect(0,0,15*M,25*M,RA.random_num(5,10));pop()}} sundriedtomato(){let tsdt=circlePack(60*M,70*M);for(var i=0;i<tsdt.length;i++){push();translate(tsdt[i].x,tsdt[i].y);rotate(RA.random_num(0,TWO_PI));scale(0.4);scale(2.5/D);for(let x=0*M;x<50*M;x+=1*M){let xoff=0;for(let y=-(x+30*M)*2;y<(x+30*M)*2;y+=1*M){stroke(0,90,map(noise(xoff),0,1,40,80));strokeWeight(4*M);point(noise(xoff)*10+x,y);xoff+=0.03}} pop()}} cherrytomato(){let ton=circlePack(80*M,80*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=TWO_PI;for(let ro=ton[i].r-50*M;ro>0;ro-=1){beginShape();for(let a=0;a<co;a+=0.01){noStroke();fill(0,0,map(ro,0,ton[i].r,10,20),5);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,5*M)+ro;let x=r*cos(a);let y=r*sin(a);vertex(x+10*M,y+5*M);zoff2+=0.001} endShape()} for(let ro=ton[i].r-50*M;ro>0;ro-=1){beginShape();for(let a=0;a<co;a+=0.01){noStroke();fill(0,100,map(ro,0,ton[i].r,100,70),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,5*M)+ro;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.001} endShape()} pop()}} cucumber(){let tto=circlePack(60*M,70*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);rotate(RA.random_num(0,TWO_PI));fill(95,30,47,100);noStroke();beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff1),0,1,0*M,10*M)+tto[i].r-17*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff1+=0.01} endShape(CLOSE);fill(95,15,80,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r-20*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.01} endShape(CLOSE);fill(95,0,100,90);noStroke();beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-20*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-20*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);pop()}} cheddar(){push();let roff=0;for(let i=0;i<floor(R*5);i+=1*M){push();rotate(noise(roff));fill(0,0,random(90,100));let x=RS.random_num(-R,R);let y=RS.random_num(-R,R);if(dist(x,y,0,0)<R-10*M){rect(x,y,3*M,30*M)} roff+=0.01;pop()} pop()} cheddarsquare(){push();let roff=0;for(let i=0;i<floor(R*5);i+=1*M){push();fill(0,0,RS.random_num(90,100));let x=RS.random_num(-R,R);let y=RS.random_num(-R,R);translate(x,y);rotate(noise(roff));rect(0,0,3*M,30*M);roff+=0.01;pop()} pop()} mayo(){push();let coff=0;let ro=RA.random_num(0,TWO_PI);rotate(ro);for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(0,0,0,10);strokeWeight(5*M*noise(coff));point(x+15*M,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} rotate(PI/2);for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-10*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(0,0,0,10);strokeWeight(5*M*noise(coff));point(x+15*M,(R-10*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} pop()} mayosquare(){push();let coff=0;for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(0,0,90);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} rotate(PI/2);for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(0,0,90);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} pop()} goatcheese(){let tcd=circlePack(60*M,90*M);for(var i=0;i<tcd.length;i++){push();translate(tcd[i].x,tcd[i].y);rotate(RA.random_num(0,TWO_PI));fill(0,0,100,100);noStroke();beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tcd[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(0,0,96,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tcd[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(0,0,93,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tcd[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()}} basil(){const size=70*M;const bulge=1.2;const n=4;let tto=circlePack(50*M,70*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);rotate(RA.random_num(0,TWO_PI));fill(86,43,55,100);beginShape();for(let t=0;t<360/n;t++){let A=(n/PI)*radians(t);let md=floor(A)%2;let r=pow(-1,md)*(A-floor(A))+md;let R=r;let x=size*R*cos(bulge*radians(t));let y=size*R*sin(radians(t));curveVertex(x,y)} endShape(CLOSE);pop()}} oregano(){push();for(let i=0;i<R*20;i+=1*M){fill(124,93,RD.random_num(0,37));let x=RD.random_num(-R,R);let y=RD.random_num(-R,R);if(dist(x,y,0,0)<R){ellipse(x,y,2*M,2*M)}} pop()} oreganosquare(csb){push();noStroke();rotate(csb);for(let i=0;i<R*20;i+=1*M){fill(124,93,RD.random_num(0,37));let x=RD.random_num(-R,R);let y=RD.random_num(-R,R);ellipse(x,y,2*M,2*M)} pop()} chilli(){push();for(let i=0;i<R*2;i+=1*M){push();noStroke();rotate(RD.random_num(0,TWO_PI));fill(0,93,RD.random_int(0,100));let x=RD.random_num(-R,R);let y=RD.random_num(-R,R);if(dist(x,y,0,0)<R){rect(x,y,5*M,5*M)} pop()} pop()} chillisquare(csb){push();for(let i=0;i<R*2;i+=1*M){push();fill(0,93,RD.random_int(0,100));let x=RD.random_num(-R,R);let y=RD.random_num(-R,R);translate(x,y);rotate(RD.random_num(0,TWO_PI));rect(0,0,5*M,5*M);pop()} pop()} sliced1(cut,Rad){push();rotate(RA.random_num(0,TWO_PI));push();for(let a=0;a<PI;a+=PI/2){rotate(a);let zoff2=0;for(let y=-Rad+25*M;y<Rad-25*M;y+=1*M){stroke(37,85,91,100);strokeWeight(4*M);point(noise(zoff2)*5*M+5*M,y);point(noise(zoff2)*5*M-5*M,y);zoff2+=0.1} let zoff3=0;for(let y=-Rad+5*M;y<Rad-5*M;y+=1*M){stroke(16,87,67,100);strokeWeight(6*M);point(noise(zoff3)*5*M+3*M,y);point(noise(zoff3)*5*M-3*M,y);zoff3+=0.1}} pop();push();for(let a=0;a<PI;a+=PI/2){rotate(a);let zoff=0;for(let y=-Rad-10*M;y<Rad+10*M;y+=1*M){stroke(0,0,10);strokeWeight(8*M);point(noise(zoff)*5*M,y);zoff+=0.1}} pop();fill(0,0,10);arc(0,0,2*Rad+20*M,2*Rad+20*M,0,cut);push();for(let i=0;i<Rad*10;i+=1){fill(37,85,RS.random_int(50,91),100);let x=RS.random_num(-Rad,Rad);let y=RS.random_num(-Rad,Rad);if(dist(x,y,0,0)<Rad+20*M&&dist(x,y,0,0)>Rad){ellipse(x,y,2*M,2*M)}} pop()} plate(Rad,sqs){for(let x=-500*M;x<=500*M+sqs*M;x+=sqs*M){let nclo=0;for(let y=-500*M;y<=500*M+sqs*M;y+=(sqs/2)*M){fill(0,0,100,40);square(x,y,(sqs/2)*M)}} push();rotate(PI/2);for(let x=-500*M;x<=500*M+sqs*M;x+=sqs*M){let nclo=0;for(let y=-500*M;y<=500*M+sqs*M;y+=(sqs/2)*M){fill(0,0,100,40);square(x,y,(sqs/2)*M)}} pop();let ri=2.2*Rad+20*M;for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,0,10),5);noStroke();circle(0+10*M,0+5*M,ri-20*M);ri-=2*M} for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,30,0));noStroke();arc(0,0,ri,ri,0,TWO_PI);ri-=2*M} for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,0,10));noStroke();circle(0+10*M,0+10*M,ri);ri-=2*M} noStroke();fill(0,0,10);circle(0+5*M,0+5*M,2*Rad)} psy(){fill(0,0,0,100);rect(0,0,DIM,DIM);noFill();push();for(let a=0;a<TWO_PI;a+=0.05){let y=0;push();beginShape();rotate(a);strokeWeight(RA.random_int(1,RA.random_int(2,4)*M));stroke(RA.random_int(0,360),100,100,100);for(let x=R;x<1000;x+=1*M){vertex(x,50*M*sin(y));y+=0.06} endShape();pop()} noStroke();pop()} psyronni(){let tpe=circlePack(10*M,90*M);push();for(var i=0;i<tpe.length;i++){push();translate(tpe[i].x,tpe[i].y);fill(0);ellipse(0,0,2*tpe[i].r,2*tpe[i].r);for(let r0=tpe[i].r;r0>0;r0-=5*M){let chue=RS.random_int(0,360);let bri=RS.random_choice([0,100]);stroke(chue,100,bri,100);noFill();strokeWeight(RS.random_int(1*M,RS.random_int(2,4)*M));ellipse(0,0,2*r0,2*r0)} pop()} pop()}} function circlePack(r1,r2){var circles=[];var protection=0;push();while(circles.length<1000){let x0=RE.random_num(-R,R);let y0=RE.random_num(-R,R);let r0=RE.random_num(r1,r2);let dist0=dist(x0,y0,0,0);if(dist0<R-r0){var circle={x:x0,y:y0,r:r0};var overlapping=!1;for(var j=0;j<circles.length;j++){var other=circles[j];var d=dist(circle.x,circle.y,other.x,other.y);if(d<circle.r+other.r){overlapping=!0}} if(!overlapping){circles.push(circle)} protection++;if(protection>10000){break}}} pop();return circles}
let hash=tokenData.hash;let seed=parseInt(tokenData.hash.slice(0,16),16);class Random{constructor(){this.useA=!1;let sfc32=function(uint128Hex){let a=parseInt(uint128Hex.substr(0,8),16);let b=parseInt(uint128Hex.substr(8,8),16);let c=parseInt(uint128Hex.substr(16,8),16);let d=parseInt(uint128Hex.substr(24,8),16);return function(){a|=0;b|=0;c|=0;d|=0;let t=(((a+b)|0)+d)|0;d=(d+1)|0;a=b^(b>>>9);b=(c+(c<<3))|0;c=(c<<21)|(c>>>11);c=(c+t)|0;return(t>>>0)/4294967296}};this.prngA=new sfc32(tokenData.hash.substr(2,32));this.prngB=new sfc32(tokenData.hash.substr(34,32));for(let i=0;i<1e6;i+=2){this.prngA();this.prngB()}} random_dec(){this.useA=!this.useA;return this.useA?this.prngA():this.prngB()} random_num(a,b){return a+(b-a)*this.random_dec()} random_int(a,b){return floor(this.random_num(a,b+1))} random_bool(p){return this.random_dec()<p} random_choice(list){return list[this.random_int(0,list.length-1)]}} let RF=new Random(seed);let RA=new Random(seed);let RC=new Random(seed);let RD=new Random(seed);let RE=new Random(seed);let RS=new Random(seed);var DEFAULT_SIZE=1000;var WIDTH=window.innerWidth;var HEIGHT=window.innerHeight;var DIM=Math.min(WIDTH,HEIGHT);var M=DIM/DEFAULT_SIZE;let toppings=[];let toppingsAvailable=[];let temp=[];var D;var R;var ccol=["red","green","yellow"];function setup(){createCanvas(DIM,DIM);noiseSeed(seed);colorMode(HSB,360,100,100,100);rectMode(CENTER);translate(DIM/2,DIM/2);smooth();let cd=RF.random_dec();if(cd<0.5)D=2.6;else if(cd>=0.5&&cd<0.8)D=3.8;else D=5;let csls=RF.random_dec();let sls;if(csls<0.5){sls=PI}else if(csls>=0.5&&csls<0.8){sls=PI/2}else{sls=(3*PI)/2} R=DIM/D;let pizza=new Pizza(R);let cb=RF.random_dec();let cbt=RF.random_dec();for(let i=0;i<=8;i++){toppings[i]=RF.random_bool(0.5);if(toppings[i])toppingsAvailable.push(i)} let topcou=RF.random_int(0,4);let cc=RF.random_dec();let cs=RF.random_dec();let csl=RF.random_dec();let ce=RF.random_dec();let capcol=RF.random_choice(ccol);if(ce<0.01){pizza.psy();pizza.psyronni()}else{if((cbt>=0.8||cbt<0.4)&&cs>0.6&&(cc<=0.3||cc>0.9)){pizza.back("yellow");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("yellow")}}else if(cbt>=0.8||cbt<0.4){pizza.back("green");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("green")}}else if(cbt<0.8&&cbt>0.4){if(cbt<0.6&&cbt>=0.5){pizza.back("black");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("black")}}else pizza.back("red");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("red")}}} if(ce<0.01){}else{if(cb<=0.6&&csl<0.2){pizza.plate(DIM/2.3,RA.random_choice([10,25,50,100]))}else if(cb>0.6&&cb<=0.8&&csl<0.2){pizza.plate(DIM/2.3,RA.random_choice([10,25,50,100]))} if(cb<=0.6){pizza.thinbase();if(cs<=0.6){pizza.sauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.sauce("tomato",0)}else{pizza.sauce("pesto",0)}}else if(cb>0.6&&cb<=0.8){pizza.thickbase();if(cs<=0.6){pizza.sauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.sauce("tomato",0)}else{pizza.sauce("pesto",0)}}else{pizza.squarebase(0);if(cs<=0.6){pizza.squaresauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.squaresauce("tomato",0)}else{pizza.squaresauce("pesto",0)}}} if(ce<0.01){}else{if(cbt>=0.8)pizza.tomato();else if(cbt<0.8&&cbt>=0.7)pizza.pepperoni();else if(cbt<0.7&&cbt>=0.6)pizza.ham();else if(cbt<0.6&&cbt>=0.5)pizza.anchovie();else if(cbt<0.5&&cbt>=0.4)pizza.chicken();let c=0;for(let i=0;i<topcou;i++){let sel=RF.random_int(0,toppingsAvailable.length);temp.push(toppingsAvailable[sel])} let uniqueTop=getUnique(temp);for(let i=0;i<uniqueTop.length;i++){if(uniqueTop[i]==0)pizza.onion();if(uniqueTop[i]==1)pizza.capsicum(capcol);if(uniqueTop[i]==2)pizza.mushroom();if(uniqueTop[i]==3)pizza.olive();if(uniqueTop[i]==4)pizza.jalepeno();if(uniqueTop[i]==5)pizza.corn();if(uniqueTop[i]==6)pizza.sundriedtomato();if(uniqueTop[i]==7)pizza.cherrytomato();if(uniqueTop[i]==8)pizza.cucumber()}} function getUnique(array){var uniqueArray=[];for(var value of array){if(uniqueArray.indexOf(value)===-1){uniqueArray.push(value)}} return uniqueArray} if(ce<0.01){}else{if(RF.random_dec()<0.3)pizza.basil();if(cb<=0.6){if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.6)pizza.cheddar();else if(cc>0.6&&cc<0.9)pizza.mayo();pizza.oregano();pizza.chilli()}else if(cb>0.6&&cb<=0.8){if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.6)pizza.cheddar();else if(cc>0.6&&cc<0.9)pizza.mayo();pizza.oregano();pizza.chilli()}else{if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.8)pizza.cheddarsquare();else if(cc>0.6&&cc<0.9)pizza.mayosquare();pizza.oreganosquare(0);pizza.chillisquare(0)}} if(ce<0.01){}else{if(cb<=0.6&&csl<0.2){pizza.sliced1(sls,R)}else if(cb>0.6&&cb<=0.8&&csl<0.2){pizza.sliced1(sls,R+25*M)}} noLoop()} class Pizza{constructor(size){this.r=size} back(clr){this.st=clr;if(this.st=="green"){this.setClr=color(86,48,63,100)}else if(this.st=="red"){this.setClr=color(0,80,80,100)}else if(this.st=="yellow"){this.setClr=color(58,89,81,100)}else if(this.st=="black"){this.setClr=color(0,0,10,100)} let ri=DIM+200*M;fill(this.setClr);rect(0,0,DIM,DIM);for(let i=0;i<=40*M;i+=1*M){fill(hue(this.setClr),saturation(this.setClr),map(i,0,20,brightness(this.setClr),brightness(this.setClr)+2),100);noStroke();circle(0,0,ri);ri-=5*M} let zoff1=0;for(let r0=700*M;r0>R;r0-=15*M){fill(0,0,100,map(r0,0,700*M,1,1));strokeWeight(map(r0,0,700*M,1*M,1*M));beginShape();for(let a=0;a<TWO_PI;a+=0.1){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,30*M)+r0;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.01} endShape(CLOSE)}} electric(clr){this.st=clr;if(this.st=="green"){this.setClr=color(86,48,63,100)}else if(this.st=="red"){this.setClr=color(0,80,80,100)}else if(this.st=="yellow"){this.setClr=color(58,89,81,100)}else if(this.st=="black"){this.setClr=color(0,0,10,100)} fill(0);rect(0,0,DIM,DIM);noFill();push();for(let a=0;a<TWO_PI;a+=0.05){let y=0;push();beginShape();rotate(a);strokeWeight(RC.random_int(1*M,40*M));stroke(RC.random_int(hue(this.setClr),hue(this.setClr)+15),saturation(this.setClr),RC.random_int(0,100),RC.random_int(10,100));for(let x=0;x<=1000*M;x+=1*M){vertex(x,20*M*sin(y));y+=0.03} endShape();pop()} for(let a=0;a<TWO_PI;a+=0.05){let y2=0;push();beginShape();rotate(a);strokeWeight(RC.random_int(1*M,4*M));stroke(0,0,100,RC.random_int(0,100));for(let x=0;x<=1000*M;x+=1*M){vertex(x,20*M*sin(y2));y2+=0.03} endShape();pop()} pop();noStroke();strokeWeight(0)} thinbase(){noStroke();for(let r=R+50*M;r>R;r-=1*M){fill(0,0,0,map(r,R+50*M,R,0,1));ellipse(0,0,2*r,2*r)} fill(16,87,67,100);beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,10*M)+this.r;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.1} endShape(CLOSE);fill(37,85,91,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,20*M)+this.r-10*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.1} endShape(CLOSE)} thickbase(){noStroke();for(let r=R+75*M;r>R+25*M;r-=1*M){fill(0,0,0,map(r,R+75*M,R+25*M,0,1));ellipse(0,0,2*r,2*r)} fill(16,87,47,100);beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,10*M)+this.r+25*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.1} endShape(CLOSE);fill(16,87,67,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,0*M,10*M)+this.r+20*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.1} endShape(CLOSE);fill(37,85,91,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,20*M)+this.r+10*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.1} endShape(CLOSE)} squarebase(csb){noStroke();for(let r=R+50*M;r>R+25*M;r-=1*M){fill(0,0,0,map(r,R+50*M,R+25*M,0,1));rect(0,0,2*r,2*r,20*M)} push();rotate(csb);fill(16,87,47,100);let zoff=0;for(let y=-R;y<R;y+=5*M){for(let x=-R;x<R;x+=5*M){fill(16,87,map(noise(x,y,zoff),0,1,30,47),100);ellipse(x,y,50*M*noise(x,y,zoff),50*M*noise(x,y,zoff));zoff+=0.01}} fill(37,85,91,100);let zoff2=0;for(let y=-R+5*M;y<R-5*M;y+=5*M){for(let x=-R+5*M;x<R-5*M;x+=5*M){fill(37,87,map(noise(x,y,zoff2),0,1,80,91),100);ellipse(x,y,50*M*noise(x,y,zoff),50*M*noise(x,y,zoff));zoff2+=0.01}} pop()} squaresauce(clr,csb){this.st=clr;if(this.st=="tomato"){this.setClr=color(360,70,80,100)}else if(this.st=="cheese"){this.setClr=color(40,19,100,100)}else if(this.st=="pesto"){this.setClr=color(113,32,45,100)} noStroke();push();rotate(csb);fill(37,85,91,100);let zoff2=0;for(let y=-R+10*M;y<R-10*M;y+=5*M){for(let x=-R+10*M;x<R-10*M;x+=5*M){fill(hue(this.setClr),saturation(this.setClr)+10,map(noise(x,y,zoff2),0,1,brightness(this.setClr),brightness(this.setClr)+10),100);ellipse(x,y,50*M*noise(x,y,zoff2));zoff2+=0.01}} pop();let tch=circlePack(30*M,60*M);for(var i=0;i<tch.length;i++){push();translate(tch[i].x,tch[i].y);fill(hue(this.setClr),saturation(this.setClr)+10,brightness(this.setClr),100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tch[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+20,brightness(this.setClr),100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tch[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+30,brightness(this.setClr),100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tch[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()} push();rotate(csb);for(let i=0;i<(R*20);i+=1){fill(hue(this.setClr),saturation(this.setClr),brightness(this.setClr)-40,100);let x=RS.random_int(-R-10*M,R+10*M);let y=RS.random_int(-R-10*M,R+10*M);ellipse(x,y,2*M,2*M)} pop()} sauce(clr){this.st=clr;if(this.st=="tomato"){this.setClr=color(360,70,80,100)}else if(this.st=="cheese"){this.setClr=color(40,19,100,100)}else if(this.st=="pesto"){this.setClr=color(113,32,45,100)} noStroke();fill(this.setClr);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,0*M,30*M)+(R-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.2} endShape(CLOSE);let tch=circlePack(30*M,60*M);for(var i=0;i<tch.length;i++){push();translate(tch[i].x,tch[i].y);fill(hue(this.setClr),saturation(this.setClr)+10,brightness(this.setClr),100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tch[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+20,brightness(this.setClr),100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tch[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+30,brightness(this.setClr),100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tch[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()} push();for(let i=0;i<(20*R);i+=1){fill(hue(this.setClr),saturation(this.setClr)-30,brightness(this.setClr),100);let x=RS.random_int(-R,R);let y=RS.random_int(-R,R);if(dist(x,y,0,0)<R){ellipse(x,y,2*M,2*M)}} pop()} tomato(){let tto=circlePack(60*M,90*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);fill(360,100,100,100);strokeWeight(1*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.05} endShape(CLOSE);fill(360,35,100,100);beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);for(let j=0;j<floor(80*M);j+=1){fill(51,35,RS.random_int(80,100),RS.random_int(60,100));let x=RS.random_num(-tto[i].r,tto[i].r);let y=RS.random_num(-tto[i].r,tto[i].r);if(dist(x,y,0,0)<tto[i].r){push();rotate(RS.random_num(0,TWO_PI));ellipse(x,y,4*M,7*M);pop()}} pop()}} pepperoni(){let tpe=circlePack(60*M,90*M);for(var i=0;i<tpe.length;i++){push();translate(tpe[i].x,tpe[i].y);fill(360,100,RA.random_int(70,80),100);strokeWeight(2*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tpe[i].r;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.005} endShape(CLOSE);pop()}} ham(){let tha=circlePack(50*M,80*M);for(var i=0;i<tha.length;i++){push();translate(tha[i].x,tha[i].y);rotate(RA.random_num(0,TWO_PI));let zoff=0;for(let y=0;y<tha[i].r-10*M;y+=1*M){for(let x=0;x<tha[i].r-10*M;x+=1*M){fill(360,25,map(noise(x,y,zoff),0,1,60,100),100);square(x,y,5*M*noise(x,y,zoff));zoff+=0.01}} pop()}} chicken(){let tcd=circlePack(50*M,70*M);for(var i=0;i<tcd.length;i++){push();translate(tcd[i].x,tcd[i].y);rotate(RA.random_num(0,TWO_PI));fill(14,90,60,100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tcd[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(14,90,70,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tcd[i].r-5*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(14,90,80,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tcd[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()}} anchovie(){push();scale(2.5/D);for(let a=0;a<TWO_PI;a+=PI/4){rotate(a);for(let x=0*M;x<20*M;x+=1*M){let xoff=0;for(let y=350*M-x*(5*M);y>100*M+x*(5*M);y-=1*M){stroke(0,0,map(noise(xoff),0,1,0,80));strokeWeight(8*M);point(noise(xoff)*10*M+x,y);xoff+=0.05}} for(let x=-20*M;x<0*M;x+=1*M){let xoff=0;for(let y=100*M+x*(2*M);y<350*M-x*(2*M);y+=1*M){stroke(0,0,map(noise(xoff),0,1,0,80));strokeWeight(8*M);point(noise(xoff)*10*M+x,y);xoff+=0.05}}} pop()} onion(){let ton=circlePack(60*M,90*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=RA.random_num(PI,TWO_PI);for(let ro=0;ro<10;ro+=1){for(let a=0;a<co;a+=radians(1)){stroke(261,20,map(ro,0,10,50,95),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,0*M,20*M)+ton[i].r-20*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.01}} pop()}} capsicum(col){this.capcol=col;if(this.capcol=="red"){this.ccl=color(0,80,80)}else if(this.capcol=="green"){this.ccl=color(117,60,40)}else if(this.capcol=="yellow"){this.ccl=color(41,80,80)} let tca=circlePack(80*M,100*M);for(var i=0;i<tca.length;i++){push();translate(tca[i].x,tca[i].y);rotate(RA.random_num(0,TWO_PI));noFill();strokeWeight(4*M);let zoff2=0;for(let ma=0;ma<TWO_PI;ma+=PI/2){push();translate((tca[i].r-40*M)*cos(ma),(tca[i].r-40*M)*sin(ma));rotate(ma-PI/2);for(let ro=0;ro<10;ro+=1){for(let a=radians(-15);a<radians(195);a+=radians(1*M)){stroke(hue(this.ccl),saturation(this.ccl),map(ro,0,10,brightness(this.ccl),brightness(this.ccl)+20),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tca[i].r-60*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.001}} pop()} pop()}} mushroom(){let tmu=circlePack(30*M,60*M);for(var i=0;i<tmu.length;i++){push();translate(tmu[i].x,tmu[i].y);rotate(RA.random_num(0,TWO_PI));let coff=0;for(let rad=tmu[i].r;rad>0;rad-=5*M){let zoff=0;fill(25,55,map(noise(coff),0,1,30,100));beginShape();for(let a=0;a<TWO_PI;a+=0.01){let r=map(sin(zoff),0,1,0,rad)+noise(zoff)*5*M;vertex(r*cos(a),r*sin(a));zoff+=0.005;coff+=0.2} endShape()} pop()}} olive(){let ton=circlePack(50*M,50*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=TWO_PI;for(let ro=3;ro<10;ro+=1){for(let a=0;a<co;a+=radians(1*M)){stroke(253,27,map(ro,0,10,80,20),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,10*M)+ton[i].r-50*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.001}} pop()}}
jalepeno(){let tto=circlePack(70*M,90*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);fill(86,43,45,100);strokeWeight(1*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=radians(1*M)){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r-50*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.05} endShape(CLOSE);fill(86,13,100,30);beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-50*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-50*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);pop()}} corn(){let tha=circlePack(20*M,30*M);for(var i=0;i<tha.length;i++){push();translate(tha[i].x,tha[i].y);rotate(RA.random_num(0,TWO_PI));fill(49,78,100,100);rect(0,0,15*M,25*M,RA.random_num(5,10));pop()}} sundriedtomato(){let tsdt=circlePack(60*M,70*M);for(var i=0;i<tsdt.length;i++){push();translate(tsdt[i].x,tsdt[i].y);rotate(RA.random_num(0,TWO_PI));scale(0.4);scale(2.5/D);for(let x=0*M;x<50*M;x+=1*M){let xoff=0;for(let y=-(x+30*M)*2;y<(x+30*M)*2;y+=1*M){stroke(0,90,map(noise(xoff),0,1,40,80));strokeWeight(4*M);point(noise(xoff)*10+x,y);xoff+=0.03}} pop()}} cherrytomato(){let ton=circlePack(80*M,80*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=TWO_PI;for(let ro=ton[i].r-50*M;ro>0;ro-=1){beginShape();for(let a=0;a<co;a+=0.01){noStroke();fill(0,0,map(ro,0,ton[i].r,10,20),5);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,5*M)+ro;let x=r*cos(a);let y=r*sin(a);vertex(x+10*M,y+5*M);zoff2+=0.001} endShape()} for(let ro=ton[i].r-50*M;ro>0;ro-=1){beginShape();for(let a=0;a<co;a+=0.01){noStroke();fill(0,100,map(ro,0,ton[i].r,100,70),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,5*M)+ro;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.001} endShape()} pop()}} cucumber(){let tto=circlePack(60*M,70*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);rotate(RA.random_num(0,TWO_PI));fill(95,30,47,100);noStroke();beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff1),0,1,0*M,10*M)+tto[i].r-17*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff1+=0.01} endShape(CLOSE);fill(95,15,80,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r-20*M;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.01} endShape(CLOSE);fill(95,0,100,90);noStroke();beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-20*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r-20*M);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);pop()}} cheddar(){push();let roff=0;for(let i=0;i<R*5;i+=1*M){push();rotate(noise(roff));fill(0,0,random(90,100));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);if(dist(x,y,0,0)<R-10*M){rect(x,y,3*M,30*M)} roff+=0.01;pop()} pop()} cheddarsquare(){push();let roff=0;for(let i=0;i<R*5;i+=1*M){push();fill(0,0,RA.random_num(90,100));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);translate(x,y);rotate(noise(roff));rect(0,0,3*M,30*M);roff+=0.01;pop()} pop()} mayo(){push();let coff=0;let ro=RA.random_num(0,TWO_PI);rotate(ro);for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(0,0,0,10);strokeWeight(5*M*noise(coff));point(x+15*M,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} rotate(PI/2);for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-10*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(0,0,0,10);strokeWeight(5*M*noise(coff));point(x+15*M,(R-10*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} for(let a=PI/2+PI/10;a<=PI/2+PI/10+PI-PI/5;a+=(PI-PI/5)/10){for(let x=(R-20*M)*cos(a);x<(R-20*M)*cos(PI/2-(a-PI/2));x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,(R-20*M)*sin(a)+noise(coff)*10*M);coff+=0.05}} pop()} mayosquare(){push();let coff=0;for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(0,0,90);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} rotate(PI/2);for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(0,0,90);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} for(let y=-R+R/5;y<=R-R/5;y+=R/5){for(let x=-R;x<R;x+=1*M){stroke(255);strokeWeight(15*M*noise(coff));point(x,y);coff+=0.05}} pop()} goatcheese(){let tcd=circlePack(60*M,90*M);for(var i=0;i<tcd.length;i++){push();translate(tcd[i].x,tcd[i].y);rotate(RA.random_num(0,TWO_PI));fill(0,0,100,100);noStroke();beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tcd[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(0,0,96,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tcd[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(0,0,93,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tcd[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()}} basil(){const size=70*M;const bulge=1.2;const n=4;let tto=circlePack(50*M,70*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);rotate(RA.random_num(0,TWO_PI));fill(86,43,55,100);beginShape();for(let t=0;t<360/n;t++){let A=(n/PI)*radians(t);let md=floor(A)%2;let r=pow(-1,md)*(A-floor(A))+md;let R=r;let x=size*R*cos(bulge*radians(t));let y=size*R*sin(radians(t));curveVertex(x,y)} endShape(CLOSE);pop()}} oregano(){push();for(let i=0;i<R*20;i+=1*M){fill(124,93,random(37));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);if(dist(x,y,0,0)<R){ellipse(x,y,2*M,2*M)}} pop()} oreganosquare(csb){push();noStroke();rotate(csb);for(let i=0;i<R*20;i+=1*M){fill(124,93,random(37));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);ellipse(x,y,2*M,2*M)} pop()} chilli(){push();for(let i=0;i<R*2;i+=1*M){push();noStroke();rotate(RA.random_num(0,TWO_PI));fill(0,93,RA.random_int(0,100));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);if(dist(x,y,0,0)<R){rect(x,y,5*M,5*M)} pop()} pop()} chillisquare(csb){push();for(let i=0;i<R*2;i+=1*M){push();fill(0,93,RA.random_int(0,100));let x=RA.random_num(-R,R);let y=RA.random_num(-R,R);translate(x,y);rotate(RA.random_num(0,TWO_PI));rect(0,0,5*M,5*M);pop()} pop()} sliced1(cut,Rad){push();rotate(RA.random_num(0,TWO_PI));push();for(let a=0;a<PI;a+=PI/2){rotate(a);let zoff2=0;for(let y=-Rad+25*M;y<Rad-25*M;y+=1*M){stroke(37,85,91,100);strokeWeight(4*M);point(noise(zoff2)*5*M+5*M,y);point(noise(zoff2)*5*M-5*M,y);zoff2+=0.1} let zoff3=0;for(let y=-Rad+5*M;y<Rad-5*M;y+=1*M){stroke(16,87,67,100);strokeWeight(6*M);point(noise(zoff3)*5*M+3*M,y);point(noise(zoff3)*5*M-3*M,y);zoff3+=0.1}} pop();push();for(let a=0;a<PI;a+=PI/2){rotate(a);let zoff=0;for(let y=-Rad-10*M;y<Rad+10*M;y+=1*M){stroke(0,0,10);strokeWeight(8*M);point(noise(zoff)*5*M,y);zoff+=0.1}} pop();fill(0,0,10);arc(0,0,2*Rad+20*M,2*Rad+20*M,0,cut);push();for(let i=0;i<Rad*10;i+=1*M){fill(37,85,RA.random_int(50,91),100);let x=RA.random_num(-Rad,Rad);let y=RA.random_num(-Rad,Rad);if(dist(x,y,0,0)<Rad+20*M&&dist(x,y,0,0)>Rad){ellipse(x,y,2*M,2*M)}} pop()} plate(Rad,sqs){for(let x=-500*M;x<=500*M+sqs*M;x+=sqs*M){let nclo=0;for(let y=-500*M;y<=500*M+sqs*M;y+=(sqs/2)*M){fill(0,0,100,40);square(x,y,(sqs/2)*M)}} push();rotate(PI/2);for(let x=-500*M;x<=500*M+sqs*M;x+=sqs*M){let nclo=0;for(let y=-500*M;y<=500*M+sqs*M;y+=(sqs/2)*M){fill(0,0,100,40);square(x,y,(sqs/2)*M)}} pop();let ri=2.2*Rad+20*M;for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,0,10),5);noStroke();circle(0+10*M,0+5*M,ri-20*M);ri-=2*M} for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,30,0));noStroke();arc(0,0,ri,ri,0,TWO_PI);ri-=2*M} for(let i=0;i<=20;i+=1){fill(0,0,map(i,0,20,0,10));noStroke();circle(0+10*M,0+10*M,ri);ri-=2*M} noStroke();fill(0,0,10);circle(0+5*M,0+5*M,2*Rad)} psy(){fill(0,0,0,100);rect(0,0,DIM,DIM);noFill();push();for(let a=0;a<TWO_PI;a+=0.05){let y=0;push();beginShape();rotate(a);strokeWeight(RA.random_int(1,RA.random_int(2,4)*M));stroke(RA.random_int(0,360),100,100,100);for(let x=R;x<1000;x+=1*M){vertex(x,50*M*sin(y));y+=0.06} endShape();pop()} noStroke();pop()} psyronni(){let tpe=circlePack(10*M,90*M);push();for(var i=0;i<tpe.length;i++){push();translate(tpe[i].x,tpe[i].y);fill(0);ellipse(0,0,2*tpe[i].r,2*tpe[i].r);for(let r0=tpe[i].r;r0>0;r0-=5*M){let chue=RA.random_int(0,360);let bri=RA.random_choice([0,100]);stroke(chue,100,bri,100);noFill();strokeWeight(RA.random_int(1*M,RA.random_int(2,4)*M));ellipse(0,0,2*r0,2*r0)} pop()} pop()}} function circlePack(r1,r2){var circles=[];var protection=0;push();while(circles.length<1000){let x0=RA.random_num(-R,R);let y0=RA.random_num(-R,R);let r0=RA.random_num(r1,r2);let dist0=dist(x0,y0,0,0);if(dist0<R-r0){var circle={x:x0,y:y0,r:r0,};var overlapping=!1;for(var j=0;j<circles.length;j++){var other=circles[j];var d=dist(circle.x,circle.y,other.x,other.y);if(d<circle.r+other.r){overlapping=!0}} if(!overlapping){circles.push(circle)} protection++;if(protection>10000){break}}} pop();return circles}
let hash=tokenData.hash;let seed=parseInt(tokenData.hash.slice(0,16),16);class Random{constructor(){this.useA=!1;let sfc32=function(uint128Hex){let a=parseInt(uint128Hex.substr(0,8),16);let b=parseInt(uint128Hex.substr(8,8),16);let c=parseInt(uint128Hex.substr(16,8),16);let d=parseInt(uint128Hex.substr(24,8),16);return function(){a|=0;b|=0;c|=0;d|=0;let t=(((a+b)|0)+d)|0;d=(d+1)|0;a=b^(b>>>9);b=(c+(c<<3))|0;c=(c<<21)|(c>>>11);c=(c+t)|0;return(t>>>0)/4294967296}};this.prngA=new sfc32(tokenData.hash.substr(2,32));this.prngB=new sfc32(tokenData.hash.substr(34,32));for(let i=0;i<1e6;i+=2){this.prngA();this.prngB()}} random_dec(){this.useA=!this.useA;return this.useA?this.prngA():this.prngB()} random_num(a,b){return a+(b-a)*this.random_dec()} random_int(a,b){return Math.floor(this.random_num(a,b+1))} random_bool(p){return this.random_dec()<p} random_choice(list){return list[this.random_int(0,list.length-1)]}} let RF=new Random(seed);let RA=new Random(seed);let RC=new Random(seed);var DEFAULT_SIZE=1000;var WIDTH=window.innerWidth;var HEIGHT=window.innerHeight;var DIM=Math.min(WIDTH,HEIGHT);var M=DIM/DEFAULT_SIZE;let toppings=[];let toppingsAvailable=[];let temp=[];var D;var R;var ccol=["red","green","yellow"];function setup(){createCanvas(DIM,DIM);noiseSeed(seed);colorMode(HSB,360,100,100,100);rectMode(CENTER);translate(DIM/2,DIM/2);smooth();let cd=RF.random_dec();if(cd<0.5)D=2.6;else if(cd>=0.5&&cd<0.8)D=3.8;else D=5;let csls=RF.random_dec();let sls;if(csls<0.5){sls=PI}else if(csls>=0.5&&csls<0.8){sls=PI/2}else{sls=(3*PI)/2} R=DIM/D;let pizza=new Pizza(R);let cb=RF.random_dec();let cbt=RF.random_dec();for(let i=0;i<=8;i++){toppings[i]=RF.random_bool(0.5);if(toppings[i])toppingsAvailable.push(i)} let topcou=RF.random_int(0,4);let cc=RF.random_dec();let cs=RF.random_dec();let csl=RF.random_dec();let ce=RF.random_dec();let capcol=RF.random_choice(ccol);if(ce<0.01){pizza.psy();pizza.psyronni()}else{if((cbt>=0.8||cbt<0.4)&&cs>0.6&&(cc<=0.3||cc>0.9)){pizza.back("yellow");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("yellow")}}else if(cbt>=0.8||cbt<0.4){pizza.back("green");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("green")}}else if(cbt<0.8&&cbt>0.4){if(cbt<0.6&&cbt>=0.5){pizza.back("black");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("black")}}else pizza.back("red");if(csl>=0.2&&ce>0.3&&(D==5||D==3.8)){pizza.electric("red")}}} if(ce<0.01){}else{if(cb<=0.6&&csl<0.2){pizza.plate(DIM/2.3,RA.random_choice([10,25,50,100]))}else if(cb>0.6&&cb<=0.8&&csl<0.2){pizza.plate(DIM/2.3,RA.random_choice([10,25,50,100]))} if(cb<=0.6){pizza.thinbase();if(cs<=0.6){pizza.sauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.sauce("tomato",0)}else{pizza.sauce("pesto",0)}}else if(cb>0.6&&cb<=0.8){pizza.thickbase();if(cs<=0.6){pizza.sauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.sauce("tomato",0)}else{pizza.sauce("pesto",0)}}else{pizza.squarebase(0);if(cs<=0.6){pizza.squaresauce("cheese",0)}else if(cs>0.6&&cs<=0.9){pizza.squaresauce("tomato",0)}else{pizza.squaresauce("pesto",0)}}} if(ce<0.01){}else{if(cbt>=0.8)pizza.tomato();else if(cbt<0.8&&cbt>=0.7)pizza.pepperoni();else if(cbt<0.7&&cbt>=0.6)pizza.ham();else if(cbt<0.6&&cbt>=0.5)pizza.anchovie();else if(cbt<0.5&&cbt>=0.4)pizza.chicken();let c=0;for(let i=0;i<topcou;i++){let sel=RF.random_int(0,toppingsAvailable.length);temp.push(toppingsAvailable[sel])} let uniqueTop=getUnique(temp);for(let i=0;i<uniqueTop.length;i++){if(uniqueTop[i]==0)pizza.onion();if(uniqueTop[i]==1)pizza.capsicum(capcol);if(uniqueTop[i]==2)pizza.mushroom();if(uniqueTop[i]==3)pizza.olive();if(uniqueTop[i]==4)pizza.jalepeno();if(uniqueTop[i]==5)pizza.corn();if(uniqueTop[i]==6)pizza.sundriedtomato();if(uniqueTop[i]==7)pizza.cherrytomato();if(uniqueTop[i]==8)pizza.cucumber()}} function getUnique(array){var uniqueArray=[];for(var value of array){if(uniqueArray.indexOf(value)===-1){uniqueArray.push(value)}} return uniqueArray} if(ce<0.01){}else{if(RF.random_dec()<0.3)pizza.basil();if(cb<=0.6){if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.6)pizza.cheddar();else if(cc>0.6&&cc<0.9)pizza.mayo();pizza.oregano();pizza.chilli()}else if(cb>0.6&&cb<=0.8){if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.6)pizza.cheddar();else if(cc>0.6&&cc<0.9)pizza.mayo();pizza.oregano();pizza.chilli()}else{if(cc>0.3&&cc<=0.5)pizza.goatcheese();else if(cc>0.5&&cc<=0.8)pizza.cheddarsquare();else if(cc>0.6&&cc<0.9)pizza.mayosquare();pizza.oreganosquare(0);pizza.chillisquare(0)}} if(ce<0.01){}else{if(cb<=0.6&&csl<0.2){pizza.sliced1(sls,R)}else if(cb>0.6&&cb<=0.8&&csl<0.2){pizza.sliced1(sls,R+25*M)}} noLoop()} class Pizza{constructor(size){this.r=size} back(clr){this.st=clr;if(this.st=="green"){this.setClr=color(86,48,63,100)}else if(this.st=="red"){this.setClr=color(0,80,80,100)}else if(this.st=="yellow"){this.setClr=color(58,89,81,100)}else if(this.st=="black"){this.setClr=color(0,0,10,100)} let ri=DIM+200*M;fill(this.setClr);rect(0,0,DIM,DIM);for(let i=0;i<=40*M;i+=1*M){fill(hue(this.setClr),saturation(this.setClr),map(i,0,20,brightness(this.setClr),brightness(this.setClr)+2),100);noStroke();circle(0,0,ri);ri-=5*M} let zoff1=0;for(let r0=700*M;r0>R;r0-=15*M){fill(0,0,100,map(r0,0,700*M,1,1));strokeWeight(map(r0,0,700*M,1*M,1*M));beginShape();for(let a=0;a<TWO_PI;a+=0.1){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,30*M)+r0;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.01} endShape(CLOSE)}} electric(clr){this.st=clr;if(this.st=="green"){this.setClr=color(86,48,63,100)}else if(this.st=="red"){this.setClr=color(0,80,80,100)}else if(this.st=="yellow"){this.setClr=color(58,89,81,100)}else if(this.st=="black"){this.setClr=color(0,0,10,100)} fill(0);rect(0,0,DIM,DIM);noFill();push();for(let a=0;a<TWO_PI;a+=0.05){let y=0;push();beginShape();rotate(a);strokeWeight(RC.random_int(1*M,40*M));stroke(RC.random_int(hue(this.setClr),hue(this.setClr)+15),saturation(this.setClr),RC.random_int(0,100),RC.random_int(10,100));for(let x=0;x<=1000*M;x+=1*M){vertex(x,20*M*sin(y));y+=0.03} endShape();pop()} for(let a=0;a<TWO_PI;a+=0.05){let y2=0;push();beginShape();rotate(a);strokeWeight(RC.random_int(1*M,4*M));stroke(0,0,100,RC.random_int(0,100));for(let x=0;x<=1000*M;x+=1*M){vertex(x,20*M*sin(y2));y2+=0.03} endShape();pop()} pop();noStroke();strokeWeight(0)} thinbase(){noStroke();for(let r=R+50*M;r>R;r-=1*M){fill(0,0,0,map(r,R+50*M,R,0,1));ellipse(0,0,2*r,2*r)} fill(16,87,67,100);beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,10*M)+this.r;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.1} endShape(CLOSE);fill(37,85,91,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,20*M)+this.r-10*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.1} endShape(CLOSE)} thickbase(){noStroke();for(let r=R+75*M;r>R+25*M;r-=1*M){fill(0,0,0,map(r,R+75*M,R+25*M,0,1));ellipse(0,0,2*r,2*r)} fill(16,87,47,100);beginShape();let zoff1=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff1),0,1,0*M,10*M)+this.r+25*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff1+=0.1} endShape(CLOSE);fill(16,87,67,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,0*M,10*M)+this.r+20*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.1} endShape(CLOSE);fill(37,85,91,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,20*M)+this.r+10*M;let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.1} endShape(CLOSE)} squarebase(csb){noStroke();for(let r=R+50*M;r>R+25*M;r-=1*M){fill(0,0,0,map(r,R+50*M,R+25*M,0,1));rect(0,0,2*r,2*r,20*M)} push();rotate(csb);fill(16,87,47,100);let zoff=0;for(let y=-R;y<R;y+=5*M){for(let x=-R;x<R;x+=5*M){fill(16,87,map(noise(x,y,zoff),0,1,30,47),100);ellipse(x,y,50*M*noise(x,y,zoff),50*M*noise(x,y,zoff));zoff+=0.01}} fill(37,85,91,100);let zoff2=0;for(let y=-R+5*M;y<R-5*M;y+=5*M){for(let x=-R+5*M;x<R-5*M;x+=5*M){fill(37,87,map(noise(x,y,zoff2),0,1,80,91),100);ellipse(x,y,50*M*noise(x,y,zoff),50*M*noise(x,y,zoff));zoff2+=0.01}} pop()} squaresauce(clr,csb){this.st=clr;if(this.st=="tomato"){this.setClr=color(360,70,80,100)}else if(this.st=="cheese"){this.setClr=color(40,19,100,100)}else if(this.st=="pesto"){this.setClr=color(113,32,45,100)} noStroke();push();rotate(csb);fill(37,85,91,100);let zoff2=0;for(let y=-R+10*M;y<R-10*M;y+=5*M){for(let x=-R+10*M;x<R-10*M;x+=5*M){fill(hue(this.setClr),saturation(this.setClr)+10,map(noise(x,y,zoff2),0,1,brightness(this.setClr),brightness(this.setClr)+10),100);ellipse(x,y,50*M*noise(x,y,zoff2));zoff2+=0.01}} pop();let tch=circlePack(30*M,60*M);for(var i=0;i<tch.length;i++){push();translate(tch[i].x,tch[i].y);fill(hue(this.setClr),saturation(this.setClr)+10,brightness(this.setClr),100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tch[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+20,brightness(this.setClr),100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tch[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+30,brightness(this.setClr),100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tch[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()} push();rotate(csb);for(let i=0;i<R*20;i+=1*M){fill(hue(this.setClr),saturation(this.setClr),brightness(this.setClr)-40,100);let x=RA.random_int(-R-10*M,R+10*M);let y=RA.random_int(-R-10*M,R+10*M);ellipse(x,y,2*M,2*M)} pop()} sauce(clr){this.st=clr;if(this.st=="tomato"){this.setClr=color(360,70,80,100)}else if(this.st=="cheese"){this.setClr=color(40,19,100,100)}else if(this.st=="pesto"){this.setClr=color(113,32,45,100)} noStroke();fill(this.setClr);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,0*M,30*M)+(R-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.2} endShape(CLOSE);let tch=circlePack(30*M,60*M);for(var i=0;i<tch.length;i++){push();translate(tch[i].x,tch[i].y);fill(hue(this.setClr),saturation(this.setClr)+10,brightness(this.setClr),100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tch[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+20,brightness(this.setClr),100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tch[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(hue(this.setClr),saturation(this.setClr)+30,brightness(this.setClr),100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tch[i].r-30*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()} push();for(let i=0;i<20*R;i+=1*M){fill(hue(this.setClr),saturation(this.setClr)-30,brightness(this.setClr),100);let x=RA.random_int(-R,R);let y=RA.random_int(-R,R);if(dist(x,y,0,0)<R){ellipse(x,y,2*M,2*M)}} pop()} tomato(){let tto=circlePack(60*M,90*M);noStroke();for(var i=0;i<tto.length;i++){push();translate(tto[i].x,tto[i].y);fill(360,100,100,100);strokeWeight(1*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tto[i].r;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.05} endShape(CLOSE);fill(360,35,100,100);beginShape();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} beginContour();for(let a=0;a<TWO_PI;a+=0.2){const r=RA.random_num(0,tto[i].r);let x=r*cos(a);let y=r*sin(a);curveVertex(x,y)} endShape(CLOSE);for(let j=0;j<80*M;j+=1*M){fill(51,35,RA.random_int(80,100),RA.random_int(60,100));let x=RA.random_num(-tto[i].r,tto[i].r);let y=RA.random_num(-tto[i].r,tto[i].r);if(dist(x,y,0,0)<tto[i].r){push();rotate(RA.random_num(0,TWO_PI));ellipse(x,y,4*M,7*M);pop()}} pop()}} pepperoni(){let tpe=circlePack(60*M,90*M);for(var i=0;i<tpe.length;i++){push();translate(tpe[i].x,tpe[i].y);fill(360,100,RA.random_int(70,80),100);strokeWeight(2*M);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.01){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tpe[i].r;let x=r*cos(a);let y=r*sin(a);curveVertex(x,y);zoff2+=0.005} endShape(CLOSE);pop()}} ham(){let tha=circlePack(50*M,80*M);for(var i=0;i<tha.length;i++){push();translate(tha[i].x,tha[i].y);rotate(RA.random_num(0,TWO_PI));let zoff=0;for(let y=0;y<tha[i].r-10*M;y+=1*M){for(let x=0;x<tha[i].r-10*M;x+=1*M){fill(360,25,map(noise(x,y,zoff),0,1,60,100),100);square(x,y,5*M*noise(x,y,zoff));zoff+=0.01}} pop()}} chicken(){let tcd=circlePack(50*M,70*M);for(var i=0;i<tcd.length;i++){push();translate(tcd[i].x,tcd[i].y);rotate(RA.random_num(0,TWO_PI));fill(14,90,60,100);beginShape();let zoff=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff),0,1,30*M,tcd[i].r);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff+=0.02} endShape(CLOSE);fill(14,90,70,100);beginShape();let zoff2=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,20*M,tcd[i].r-5*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff2+=0.002} endShape(CLOSE);fill(14,90,80,100);beginShape();let zoff3=0;for(let a=0;a<TWO_PI;a+=0.02){let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff3),0,1,10*M,tcd[i].r-10*M);let x=r*cos(a);let y=r*sin(a);vertex(x,y);zoff3+=0.002} endShape(CLOSE);pop()}} anchovie(){push();scale(2.5/D);for(let a=0;a<TWO_PI;a+=PI/4){rotate(a);for(let x=0*M;x<20*M;x+=1*M){let xoff=0;for(let y=350*M-x*(5*M);y>100*M+x*(5*M);y-=1*M){stroke(0,0,map(noise(xoff),0,1,0,80));strokeWeight(8*M);point(noise(xoff)*10*M+x,y);xoff+=0.05}} for(let x=-20*M;x<0*M;x+=1*M){let xoff=0;for(let y=100*M+x*(2*M);y<350*M-x*(2*M);y+=1*M){stroke(0,0,map(noise(xoff),0,1,0,80));strokeWeight(8*M);point(noise(xoff)*10*M+x,y);xoff+=0.05}}} pop()} onion(){let ton=circlePack(60*M,90*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=RA.random_num(PI,TWO_PI);for(let ro=0;ro<10;ro+=1){for(let a=0;a<co;a+=radians(1*M)){stroke(261,20,map(ro,0,10,50,95),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff,yoff,zoff2),0,1,0*M,20*M)+ton[i].r-20*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.01}} pop()}} capsicum(col){this.capcol=col;if(this.capcol=="red"){this.ccl=color(0,80,80)}else if(this.capcol=="green"){this.ccl=color(117,60,40)}else if(this.capcol=="yellow"){this.ccl=color(41,80,80)} let tca=circlePack(80*M,100*M);for(var i=0;i<tca.length;i++){push();translate(tca[i].x,tca[i].y);rotate(RA.random_num(0,TWO_PI));noFill();strokeWeight(4*M);let zoff2=0;for(let ma=0;ma<TWO_PI;ma+=PI/2){push();translate((tca[i].r-40*M)*cos(ma),(tca[i].r-40*M)*sin(ma));rotate(ma-PI/2);for(let ro=0;ro<10;ro+=1){for(let a=radians(-15);a<radians(195);a+=radians(1*M)){stroke(hue(this.ccl),saturation(this.ccl),map(ro,0,10,brightness(this.ccl),brightness(this.ccl)+20),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(xoff+0.01,yoff+0.01,zoff2),0,1,0*M,10*M)+tca[i].r-60*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.001}} pop()} pop()}} mushroom(){let tmu=circlePack(30*M,60*M);for(var i=0;i<tmu.length;i++){push();translate(tmu[i].x,tmu[i].y);rotate(RA.random_num(0,TWO_PI));let coff=0;for(let rad=tmu[i].r;rad>0;rad-=5*M){let zoff=0;fill(25,55,map(noise(coff),0,1,30,100));beginShape();for(let a=0;a<TWO_PI;a+=0.01){let r=map(sin(zoff),0,1,0,rad)+noise(zoff)*5*M;vertex(r*cos(a),r*sin(a));zoff+=0.005;coff+=0.2} endShape()} pop()}} olive(){let ton=circlePack(50*M,50*M);for(var i=0;i<ton.length;i++){push();translate(ton[i].x,ton[i].y);noFill();strokeWeight(8*M);let zoff2=0;let co=TWO_PI;for(let ro=3;ro<10;ro+=1){for(let a=0;a<co;a+=radians(1*M)){stroke(253,27,map(ro,0,10,80,20),100);let xoff=map(cos(a),-1,1,0,1);let yoff=map(sin(a),-1,1,0,1);const r=map(noise(zoff2),0,1,0*M,10*M)+ton[i].r-50*M+ro*M;let x=r*cos(a);let y=r*sin(a);point(x,y);zoff2+=0.001}} pop()}}
let hash = tokenData.hash; let seed = parseInt(tokenData.hash.slice(0, 16), 16); class Random { constructor() { this.useA = false; let sfc32 = function (uint128Hex) { let a = parseInt(uint128Hex.substr(0, 8), 16); let b = parseInt(uint128Hex.substr(8, 8), 16); let c = parseInt(uint128Hex.substr(16, 8), 16); let d = parseInt(uint128Hex.substr(24, 8), 16); return function () { a |= 0; b |= 0; c |= 0; d |= 0; let t = (((a + b) | 0) + d) | 0; d = (d + 1) | 0; a = b ^ (b >>> 9); b = (c + (c << 3)) | 0; c = (c << 21) | (c >>> 11); c = (c + t) | 0; return (t >>> 0) / 4294967296; }; }; this.prngA = new sfc32(tokenData.hash.substr(2, 32)); this.prngB = new sfc32(tokenData.hash.substr(34, 32)); for (let i = 0; i < 1e6; i += 2) { this.prngA(); this.prngB(); } } random_dec() { this.useA = !this.useA; return this.useA ? this.prngA() : this.prngB(); } random_num(a, b) { return a + (b - a) * this.random_dec(); } random_int(a, b) { return Math.floor(this.random_num(a, b + 1)); } random_bool(p) { return this.random_dec() < p; } random_choice(list) { return list[this.random_int(0, list.length - 1)]; } } let R = new Random(seed); var DEFAULT_SIZE = 1000; var WIDTH = window.innerWidth; var HEIGHT = window.innerHeight; var DIM = Math.min(WIDTH, HEIGHT); var M = DIM / DEFAULT_SIZE; let clrLen; let whichClr; let clr0 = [[38, 0, 27],[255, 0, 92],[255, 246, 0],[129, 0, 52]]; let clr1 = [[30, 49, 99],[240, 55, 165],[45, 70, 185],[248, 248, 248]]; let clr2 = [[59, 0, 0],[255, 0, 0],[255, 246, 205],[255, 149, 197]]; let clr3 = [[0, 0, 0],[255, 255, 255]]; let clr4 = [[12, 236, 221],[255, 243, 56],[255, 103, 231],[196, 0, 255]]; let clr5 = [[230, 204, 169],[83, 53, 53],[174, 76, 207],[255, 109, 109]]; let clr6 = [[73, 255, 0],[251, 255, 0],[255, 147, 0],[255, 0, 0]]; let clr7 = [[240, 228, 215],[245, 192, 192],[255, 113, 113],[159, 216, 223]]; let clr8 = [[75, 119, 141],[40, 181, 181],[143, 217, 168],[210, 230, 156]]; let clr9 = [[243, 145, 137],[4, 101, 130]]; let clr10 = [[198, 213, 126],[213, 126, 126],[162, 205, 205],[255, 225, 175]]; let clr11 = [[75, 119, 141],[40, 181, 181],[143, 217, 168],[210, 230, 156]]; let clr12 = [[209, 232, 228],[195, 123, 137],[188, 204, 154],[234, 231, 198]]; let clr13 = [[46, 76, 109],[245, 238, 220],[218, 221, 252],[252, 153, 124]]; let clr14 = [[20, 47, 67],[255, 171, 76],[255, 95, 126],[176, 0, 185]]; let clr1Num; let clr1Cnt = -1; let clr1Blk; let clrA = []; let clr2Num = 100; let clr2Cnt = -1; let clr2Blk; let clrB = []; let bgCount = R.random_int(20,80); let whichColor; let whichSet; let whichSet_mov; let whichSet_age; let whichSet_mul; let whichSet_ss; let whichSet_as; let set_mov; //movement intensity let set_age; //num of lines let set_mul; //z-noise let set_ss; //stroke size let set_as; //animation speed let zoff = 0; function setup() { createCanvas(WIDTH, HEIGHT, WEBGL); noiseSeed(seed); whichColor = R.random_int(0, 14); if (whichColor == 0) whichClr = clr0; else if (whichColor == 1) whichClr = clr1; else if (whichColor == 2) whichClr = clr2; else if (whichColor == 3) whichClr = clr3; else if (whichColor == 4) whichClr = clr4; else if (whichColor == 5) whichClr = clr5; else if (whichColor == 6) whichClr = clr6; else if (whichColor == 7) whichClr = clr7; else if (whichColor == 8) whichClr = clr8; else if (whichColor == 9) whichClr = clr9; else if (whichColor == 10) whichClr = clr10; else if (whichColor == 11) whichClr = clr11; else if (whichColor == 12) whichClr = clr12; else if (whichColor == 13) whichClr = clr13; else whichClr = clr14; whichSet = R.random_int(1, 90); whichSet_mov = R.random_int(1, 100); whichSet_age = R.random_int(1, 100); whichSet_mul = R.random_int(1, 100); whichSet_ss = R.random_int(1, 100); whichSet_as = R.random_int(1, 100); if (whichSet >= 1 && whichSet <= 5) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 4.0); set_ss = map(whichSet_ss, 1, 100, 1, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 12; } else if (whichSet >= 6 && whichSet <= 10) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 0.5, 1); clr1Num = 12; } else if (whichSet >= 11 && whichSet <= 15) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.4); clr1Num = 12; } else if (whichSet >= 16 && whichSet <= 20) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 4.0); set_ss = map(whichSet_ss, 1, 100, 1, 10); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 21 && whichSet <= 25) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 26 && whichSet <= 30) { set_mov = map(whichSet_mov, 1, 100, 0, 0.1); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.4); clr1Num = 100; } else if (whichSet >= 31 && whichSet <= 35) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 2.0); set_ss = map(whichSet_ss, 1, 100, 2, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 12; } else if (whichSet >= 36 && whichSet <= 40) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 12; } else if (whichSet >= 41 && whichSet <= 45) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.4); clr1Num = 12; } else if (whichSet >= 46 && whichSet <= 50) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 2.0); set_ss = map(whichSet_ss, 1, 100, 2, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 51 && whichSet <= 55) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 56 && whichSet <= 60) { set_mov = map(whichSet_mov, 1, 100, 0.5, 1.2); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.3); clr1Num = 100; } else if (whichSet >= 61 && whichSet <= 65) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 2.0); set_ss = map(whichSet_ss, 1, 100, 2, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 12; } else if (whichSet >= 66 && whichSet <= 70) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 12; } else if (whichSet >= 71 && whichSet <= 75) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.3); clr1Num = 12; } else if (whichSet >= 76 && whichSet <= 80) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 80, 100); set_mul = map(whichSet_mul, 1, 100, 1.0, 2.0); set_ss = map(whichSet_ss, 1, 100, 2, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 81 && whichSet <= 85) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 40, 70); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 3, 5); set_as = map(whichSet_ss, 1, 100, 1, 2); clr1Num = 100; } else if (whichSet >= 86 && whichSet <= 90) { set_mov = map(whichSet_mov, 1, 100, 1.3, 2); set_age = map(whichSet_age, 1, 100, 10, 30); set_mul = map(whichSet_mul, 1, 100, 1.0, 1.0); set_ss = map(whichSet_ss, 1, 100, 10, 15); set_as = map(whichSet_ss, 1, 100, 0.1, 0.3); clr1Num = 100; } setColorTables(); } function draw() { let _bg = clrB[floor((frameCount * 0.5 + clrB.length + bgCount) % clrB.length)]; background(_bg); scale(0.9); let co = 0; let sw = 10; let sn = int(set_age / 10); let ri = (1000 / 22) * M; for (let gr = 0; gr < (1000 / 2) * M; gr += (1000 / (set_age * 2)) * M) { strokeWeight((co / 30) * M * set_ss); stroke(clrA[floor((int(sn) + frameCount * set_as/4) % clrA.length)]); push(); rotate(PI / 2); translate((1000 / 20) * M, (-1000 / 20) * M); beginShape(); for (let a = 0; a < PI; a += radians(2)) { let xoff = map(cos(a), -1, 1, 0, set_mov); let yoff = map(sin(a), -1, 1, 0, set_mov); const r = map(1 / sin(a), -1, 1, 0, ri * 2) + map(noise(xoff, yoff, zoff), 0, 1, 0, gr * set_mul); let x = r * cos(a); let y = r * sin(a); vertex(x, y); } endShape(); push(); rotate(PI); translate(0, (-1000 / 10) * M); beginShape(); for (let a = 0; a < PI; a += radians(2)) { let xoff = map(sin(a), -1, 1, 0, set_mov); let yoff = map(sin(a), -1, 1, 0, set_mov); const r = map(1 / sin(a), -1, 1, 0, ri * 2) + map(noise(xoff, yoff, zoff), 0, 1, 0, gr * set_mul); let x = r * cos(a); let y = r * sin(a); vertex(x, y); } endShape(); pop(); pop(); zoff += 0.0002; ri += 0.1; co++; if (sn == clr1Num - 1) sn = 0; else sn++; } } function setColorTables() { clrLen = whichClr.length; clr1Blk = floor(clr1Num / clrLen); clr2Blk = floor(clr2Num / clrLen); for (let i = 0; i < clr1Num; ++i) { if (i % clr1Blk == 0) clr1Cnt = (clr1Cnt + 1) % clrLen; let _c1 = color(whichClr[clr1Cnt][0],whichClr[clr1Cnt][1],whichClr[clr1Cnt][2]); let _c2 = color(whichClr[(clr1Cnt + 1) % clrLen][0],whichClr[(clr1Cnt + 1) % clrLen][1],whichClr[(clr1Cnt + 1) % clrLen][2]); clrA.push(lerpColor(_c1,_c2,map(i, clr1Cnt * clr1Blk, (clr1Cnt + 1) * clr1Blk, 0.0, 1.0))); } for (let i = 0; i < clr2Num; ++i) { if (i % clr2Blk == 0) clr2Cnt = (clr2Cnt + 1) % clrLen; let _c1 = color(whichClr[clr2Cnt][0],whichClr[clr2Cnt][1],whichClr[clr2Cnt][2]); let _c2 = color(whichClr[(clr2Cnt + 1) % clrLen][0],whichClr[(clr2Cnt + 1) % clrLen][1],whichClr[(clr2Cnt + 1) % clrLen][2]); clrB.push(lerpColor(_c1,_c2,map(i, clr2Cnt * clr2Blk, (clr2Cnt + 1) * clr2Blk, 0.0, 1.0))); } }
'Yoni' is the Sanskrit word for 'source' or 'vulva'. The yoni project is an ode to vulvas of all different sizes, shapes and colours. It's about celebrating womanhood. It's about embracing diversity. It's also about body positivity. And most of all it's about appreciating the generative nature of our existence.