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={};
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 ,
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 ,
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 ,
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
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
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.
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}}
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.
'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.