0x8a14…fa8a

All memos sent from and to 0x8a14…fa8a.

Is there a life force within art? Can we converse with creative energy? Artists throughout history have posed such questions. When I start creating new generative artwork, I often focus on discovering what’s new that I might unearth within the exploration of a simple algorithm. When the visual outputs start to move me, I love the idea that perhaps I’ve discovered some sort of personality hidden within the confines of the code, waiting for the most unlikely parameter to unlock its emergent beauty. Within that creative journey, I have a hidden agenda. I hope to commune with the voices hiding inside the code. *Speak To Me* experiments with layering and interrupting repetitions of basic geometric shapes, exploring their interplay and movement when placed in relation to one another. Drawing loose inspiration from historic art movements such as Suprematism and Constructivism, I’m seeking to investigate the potential of these simple forms to create dynamic and complex visual arrangements. The code generates compositions that are both structured and organic, imparting a movement and energy to the shapes, so they seem to grow and flow like living organisms. Some shapes speak boldly, with clear, directional vision. Some embrace the space between. Within this collection, the differences in those voices are celebrated with intention. One night I dreamed of my code in progress, which sometimes happens when I’m immersed in a project. I awoke in the middle of the night with a specific phrase running through my head, got up to groggily scribble it onto some paper, then fell back to sleep. In the morning, I woke up to see the words “Speak To Me”, and I realized that I now had the name of my collection, imparted in a dream. Throughout the creation of *Speak To Me*, I found myself wondering if there might be a secret life of shapes. Reflecting on the creative process, I firmly believe that there is a dynamic energy inherent in artistic creation that can be considered a life force. As an artist, I view my role as a conduit and facilitator for this energy to manifest in the physical realm. From this perspective, in the case of generative art, I open up the role of creator to share with both the generative randomness of the algorithm and the creative force that inspires its creation. By embracing this philosophy of artistic creation, I’m hoping to both experience and share a more profound and transformative creative journey. I hope this artwork speaks to you as it has to me.
let choosenMSW,mSWName,mSW,mSWn,palo,cg,ts;class Random{constructor(){this.useA=!1;let $=function($){let r=parseInt($.substr(0,8),16),e=parseInt($.substr(8,8),16),t=parseInt($.substr(16,8),16),c=parseInt($.substr(24,8),16);return function(){t|=0;let $=((r|=0)+(e|=0)|0)+(c|=0)|0;return c=c+1|0,r=e^e>>>9,e=t+(t<<3)|0,t=(t=t<<21|t>>>11)+$|0,($>>>0)/4294967296}};this.prngA=new $(tokenData.hash.substr(2,32)),this.prngB=new $(tokenData.hash.substr(34,32));for(let r=0;r<1e6;r+=2)this.prngA(),this.prngB()}r_d(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}r_n($,r){return $+(r-$)*this.r_d()}r_i($,r){return Math.floor(this.r_n($,r+1))}r_c($){return $[this.r_i(0,$.length-1)]}}let hash=tokenData.hash,R=new Random,seed=99999999*R.r_i(),W=1414,H=1e3,m=1e3,[dQ1,dQ2,dQ3,dQ4,dQ5,dQ6]=[R.r_n(m/2e3,m/5),R.r_n(m/2e3,m/5),R.r_n(m/2e3,m/5),R.r_n(m/2e3,m/5),R.r_n(m/2e3,m/5),R.r_n(m/2e3,m/5)];const P=[{colors:["#FF4106","#F0BB01","#996213","#3C362B","#FEF0D9","#12A9BD"],name:"Full Classic",bg:["#3C362B","#FEF0D9"],grain:["#000000","#FFFFFF","#996213"]},{colors:["#FF4106","#F0BB01","#3C362B","#FEF0D9","#12A9BD"],name:"Stitch Classic",bg:["#3C362B","#FEF0D9"],grain:["#000000","#FFFFFF","#996213"]},{colors:["#DFA728","#A01F01","#0B4866","#889446","#FCE9CB",],name:"AM/PM",bg:["#E7E1BD","#151D25"],grain:["#FFFFFF","#000000"]},{colors:["#FF4106","#F0BB01","#3C362B","#FEF0D9"],name:"Loom",bg:["#FEF0D9","#3C362B",],grain:["#FFFFFF","#000000","#666666","#999999"]},{colors:["#722C01","#a0001c","#D80328","#407ba7","#002962"],name:"RawSelvedge",bg:["#7A888A","#072146","#242547","#FEF0D9","#004e89"],grain:["#000000","#888888","lightblue","#FFFFFF",]},{colors:["#FFF7E3","#f40004","#ac090b","#d71114","#004b5b","#3BD6D1","#FDBF50"],name:"Reds",bg:["#33231A","#AD1013","#FFF3D8"],grain:["#000000","#969671","#ac090b","#FFFFFF"]},{colors:["#ff0303","#51c8be","#fafdd2","#FF8F00"],name:"707",bg:["#7C7C7C","#302E29"],grain:["#000000","#FFFFFF","#F7F7F7","#5A5959"]},],XXtraSW=[m/2,m/3,m/5,m/10,m/20,m/50,m/100];let part=R.r_i(15,30),ms=m/part;const _SR=[45,90,135,180,0],_SR2=[45,90,135,180,270];let[sR1,sR2,sR3,sR4]=[R.r_c(_SR),R.r_c(_SR2),R.r_c(_SR),R.r_c(_SR)],wP=R.r_n(0,100);wP>=86?palo=P[0]:wP<86&&wP>=72?palo=P[1]:wP<72&&wP>=58?palo=P[2]:wP<58&&wP>=44?palo=P[3]:wP<44&&wP>=30?palo=P[4]:wP<30&&wP>=16?palo=P[5]:wP<16&&(palo=P[6]);let[pickPalo,pickPalo2]=[R.r_c(palo.colors),R.r_c(palo.colors)],BG=R.r_c(palo.bg),pickGrain=R.r_c(palo.grain),[RorC,CorR,SsorLs,Bblanxx,XXtra]=[R.r_i(0,100),R.r_i(0,100),R.r_i(0,100),R.r_i(0,100),R.r_i(0,100)],Scale01=R.r_n(1,1.75),pixx2=R.r_n(15,20),jNum=R.r_n(-5,5),dim=.70721358,B_=0,D_S=1414;function setup(){randomSeed(seed),createCanvas(c_w,c_h),cg=createGraphics(W,H),mSWName=(choosenMSW=mSWSelect([{size:m/30,weight:6,name:"m/30"},{size:m/50,weight:8,name:"m/50"},{size:m/70,weight:7,name:"m/70"},].map($=>Object({value:$,weight:$.weight})))).value.name,mSW=choosenMSW.value.size,mSWn=choosenMSW.value.name,angleMode(DEGREES),rectMode(CENTER),ellipseMode(CENTER),strokeCap(SQUARE),cg.angleMode(DEGREES),cg.rectMode(CENTER),cg.ellipseMode(CENTER),cg.strokeCap(SQUARE)}function draw(){let $=millis();ts=c_w>600?c_w/80:c_w<301?c_w/40:c_w/50,background(BG),fill(pickPalo),"#FEF0D9"==BG||"#FFF3D8"==BG?fill(0):fill(255),textFont("Helvetica"),textSize(ts),textAlign(CENTER,CENTER),$<100?text(`S P E A K T O M E`,width/2,height/2+ts):(noLoop(),background(BG),cg.push(),cg.scale(Scale01),cg.rotate(sR3),_ST_(),_NB(),cg.pop(),frame(),uf(),cg.push(),cg.scale(R.r_n(1,2.1)),cg.rotate(sR3),_NB(),cg.pop(),bgR(),image(cg,0,0,c_w,c_h),gr(this))}function gr($){$.loadPixels();let r=4*($.width*$.pixelDensity())*($.height*$.pixelDensity()),e=$.pixels;for(let t=0;t<r;t+=4){let c=R.r_n(-20,20);e[t]+=c,e[t+1]+=c,e[t+2]+=c}$.updatePixels()}function uf(){var $=m/35,r=$,e=r/2;cg.noStroke();for(let t=0;t<=W;t+=1){let c=R.r_i(10,50);(rFalphaUF=color(BG)).setAlpha(c),cg.fill(rFalphaUF),cg.circle($-e+R.r_n(-2,2),$-2*e+t,r),cg.circle(W-$+e+R.r_n(-2,2),$-e+t,r),cg.circle($-e+t,$-e+R.r_n(-2,2),r),cg.circle($-e+t,H-$+e+R.r_n(-2,2),r)}}function frame(){cg.push(),cg.noFill(),cg.strokeWeight(m/25),cg.stroke(BG),cg.rect(W/2,H/2,W-m/80,H-m/80),cg.pop()}function _ST_(){for(let $=0;$<pixx2;$++)for(let r=jNum;r<part;r++){let e=$*ms+ms/2,t=r*ms+3*ms,c=19*R.r_n(.001,1)+5*ms*PI,o=9*R.r_n(.001,1)+-10*c*R.r_n(.001,1)*1.5+.25,s=o+part;cg.strokeWeight(R.r_n(m/5e3,m/2e3)),cg.rotate(sR2),cg.stroke(R.r_c(palo.colors)),dRect(e+o,t+s,c)}}function dRect($,r,e){cg.noFill(),cg.stroke(R.r_c(palo.colors));let t=~~(e*R.r_d()*.62+.12);for(let c=0;c<2*t;c++){let o=map(c,0,t,e,0);SsorLs<=80?cg.strokeWeight(R.r_n(m/5e3,m/2e3)):cg.strokeWeight(R.r_n(m/500,m/200)),cg.stroke(BG),RorC<=35?cg.rect(2*$,2*r,2*o):cg.circle(2*$,2*r,2*o),cg.push(),cg.stroke(R.r_c(palo.colors)),cg.drawingContext.setLineDash([dQ1,dQ2,dQ3,dQ4,dQ5,dQ6]);let s=R.r_n(m/100,m/5);XXtra<=90?cg.strokeWeight(R.r_n(m/5e3,mSW)):cg.strokeWeight(R.r_n(m/5e3,s)),CorR>=20?cg.circle(2*$,2*r,2*o):cg.rect(2*$,2*r,2*o),cg.pop()}}function _NB(){cg.rotate(sR3);for(let $=0;$<R.r_n(10,12);$++)for(let r=0;r<10*R.r_n(10,12);r++){let e=$*ms+ms/2,t=r*ms+3*ms,c=19*R.r_d()+5*ms*PI,o=9*R.r_d()+-10*c*R.r_d()*1.5+.25,s=o+part;cg.strokeWeight(R.r_n(m/500,m/20));let n=R.r_i(80,150),l=R.r_i(50,80);(rFalpha2=color(pickPalo)).setAlpha(n),(rFalpha3=color(pickPalo2)).setAlpha(l),cg.stroke(rFalpha2),cg.rotate(sR3),NBdRect(e+o,t+s,c),cg.stroke(rFalpha3),cg.strokeWeight(R.r_n(m/5e3,m/2e3)),cg.rotate(sR1),NBdRect(e+s,t+o,c)}}function NBdRect($,r,e){cg.noFill();let t=~~(e*R.r_d()*.625+.125),c=t/200;for(let o=0;o<c;o++){let s=map(o,0,t,e,0);cg.strokeWeight(R.r_n(m/5e3,m/2e3));let n=R.r_i(4,8);cg.rotate(sR4),cg.drawingContext.setLineDash([dQ1,dQ2,dQ3,dQ4,dQ5,dQ6]),Bblanxx<=50?cg.rect($*n,r*n,s*n):cg.circle($*n,r*n,s*n)}}function bgR(){[xm,xM,ym,yM]=[-300,1700,-300,1300];let $=20*D_S;for(let r=0;r<$;r++){let e=R.r_n(7,15);(rTalpha=color(R.r_c(palo.grain))).setAlpha(e),cg.stroke(rTalpha),[x,y]=[R.r_n(xm,xM),R.r_n(ym,yM)],cg.push(),cg.translate(x,y),cg.noFill(),cg.strokeWeight(R.r_n(2,4)),cg.point(0,0),cg.strokeWeight(.5),cg.rotate(R.r_n(0,6)),cg.rect(R.r_n(0,W),R.r_n(0,H),R.r_n(10,200)),cg.pop()}}function mSWSelect($,r){if(void 0!==r)return $[r];let e=[];for(var t of $)for(let c=0;c<t.weight;c++)e.push(t);return R.r_c(e)}function keyReleased(){("s"==key||"S"==key)&&save("Speak To Me-"+hash+".png")}w_W=window.innerWidth-2*B_,w_H=window.innerHeight-2*B_,HEIGHT=(WIDTH=D_S)*dim,i_dim=WIDTH/HEIGHT,v_dim=w_H/w_W,M=(c_w=(c_h=w_H)*i_dim)/WIDTH,v_dim>dim&&(M=(c_h=(c_w=w_W)*dim)/HEIGHT);
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(); } } r_d() { this.useA = !this.useA; return this.useA ? this.prngA() : this.prngB(); } r_n(a, b) { return a + (b - a) * this.r_d(); } r_i(a, b) { return Math.floor(this.r_n(a, b + 1)); } r_c(list) { return list[this.r_i(0, list.length - 1)]; } } let hash = tokenData.hash; let R = new Random() , seed = 99999999 * R.r_i() , wP = R.r_i(1,100) , W = 1e3 , H = 1333 , Xv = [] , Yv = [] , mg = 50 , lS = 40 , m = 1e3 , f = m/2e2; var cC,m1,m2,m4,m5,m6,m7,m8,m9,m0,palo,mar,cgx,cgc,cgf,ts; const P = [ { name: 'Solstice', b: [[0]], circ: [[0,10]], bov: [[60,5]], fE: [[254,240,217,50]], }, { name: 'Selvedge', b: ['#002962'], circ: [ [0,41,98,30] ], bov: ['#00214F', '#002F71'], fE: [ [196,225,247,50] , [206, 50], [254,240,217,50] ], }, { name: 'Gertrud', b: ['#B40707'], circ: [[180,7,7,50,10]], bov: ['#AA0707', '#AE0505'], fE: [[255,220,217,50] , [230, 50], [254,240,217,50]], }, { name: 'Harvest', b: ['#E0AB00'], circ: [[224,171,0,50]], bov: ['#D69C01'], fE: [[253,221,165,50], [230,50], [254,240,217,50]], }, ]; if (wP >= 71) { palo = P [0]; } else if (wP < 71 && wP >= 41) { palo = P [1]; } else if (wP < 41 && wP >= 11) { palo = P [2]; } else if (wP < 11) { palo = P [3]; } let B = R.r_c(palo.b) , fr = R.r_c(palo.fE) , cr = R.r_c(palo.circ) , Bov = R.r_c(palo.bov); let dim = 1.333, B_ = 0, D_S = 1e3, w_W = window.innerWidth - 2 * B_, w_H = window.innerHeight - 2 * B_, WIDTH = D_S, HEIGHT = WIDTH * dim, i_dim = WIDTH / HEIGHT, v_dim = w_H / w_W, c_h = w_H, c_w = c_h * i_dim, M = c_w / WIDTH; v_dim > dim && (c_w = w_W, c_h = c_w * dim, M = c_h / HEIGHT); const bBGc = `body {background: #262729;}` , BGc = document.createElement("style"); BGc.innerText = bBGc , document.head.appendChild(BGc); function setup() { randomSeed(seed); createCanvas(c_w,c_h); cg = createGraphics(W,H); cgx = createGraphics(W,H); cgc = createGraphics(W,H); cgf = createGraphics(W,H); angleMode(DEGREES); cg.angleMode(DEGREES); Mm = R.r_i(0,100) > 50 ? !0 : !1; Mm == !0 ? mar = R.r_i(m/8, m/6) : mar = mg; m1 = R.r_n(0.1, 100); m2 = R.r_n(0.1, 100); m4 = R.r_n(0.1, 100); m5 = R.r_n(0.1, 100); m6 = R.r_n(0.1, 100); m7 = R.r_n(0.1, 100); m8 = R.r_n(0.1, 100); m9 = R.r_n(0.1, 100); m0 = R.r_n(0.1, 100); LC = R.r_d(); WiW = R.r_i(0,101); cC = R.r_d(); RD = R.r_n(W/6.66, W/5); } function draw() { let ms = millis(); c_w > 600 ? ts = c_w/60 : c_w < 301 ? ts = c_w/40 : ts = c_w/50; background(B); fill(254,240,217); textFont('Futura','Helvetica','sans-serif'); textSize(ts); textAlign(CENTER, CENTER); if (ms < 1000) { text("L O A D I N G . . .", width/2, height/2 - ts); text(`A T E N D E R C O U N T ( I N G )`, width/2, height / 2 + ts*1.5); } else { noLoop(); background(B); push(); teX(); pop(); tD(); rD(mar/2, mar/2, W-mar, H-mar, f); if (WiW >= 92) { fMC(); } else if (WiW <=91 && WiW >= 58) { s_h(); } else if (WiW <= 57 && WiW >= 29) { sh_h(); } else if (WiW <= 28) { hvL(); } cC < 0.4 ? cgc.fill(254,240,217,50) : cgc.fill(cr) cgc.noStroke(); var [cx,cy] = [R.r_n(0,W),R.r_n(0,H)]; cgc.push(); for (let i = 0; i <= 100; i++) { cVc(RD+R.r_n(-2, 2), 20, cx+R.r_n(-2, 2), cy+R.r_n(-2, 2)); } push() cgc.filter(BLUR, 1); cgc.pop; pop(); image(cg, 0, 0, c_w, c_h); if (WiW < 2) { push(); blendMode(LIGHTEST); image(cgx, 0, 0, c_w, c_h); pop(); } image(cgc, 0, 0, c_w, c_h); fR(); uf(); pT(); image(cgf, 0, 0, c_w, c_h); gr(this, 1, 34); } } function teX() { let f1 = R.r_i(W/20, W/10), f2 = f1/0.75; for (let i = 0; i <= W*4; i += W/f1) { for (let j = 0; j <= H*4; j += H/f2) { B =='#B40707' ? cg.stroke(255, R.r_n(4,5)) : cg.stroke(255, 3); cg.strokeWeight(R.r_n(0.00125, 0.125)); cg.drawingContext.setLineDash([m7, m8]); cg.strokeWeight(R.r_n(0.00125, 0.125)); cg.line(i, 0, i, H); cg.drawingContext.setLineDash([m1, m2, m4, m4, m5, m6]); cg.line(0, j, W, j); cg.strokeWeight(5); cg.stroke(Bov); cg.drawingContext.setLineDash([m9,m9, m0]); cg.line(0, j, W, j); } } } function tD() { cg.ellipseMode(CENTER); let ca = R.r_i(15, 40); let cas = m/R.r_n(200, 300); for (let i = 0; i <= W-mg; i+= ca) { for (let j = 0; j <= H-100; j+= ca) { let cwi = R.r_n(-1.5, 1.5); let cwi2 = R.r_n(-1, 1); cg.noFill(); cg.stroke(255, 100); cg.strokeWeight(0.25); cg.ellipse(mg+i, mg+j, cas+cwi2); B =='#E0AB00' || B =='#B40707' ? cg.stroke(255, R.r_n(90,255)) : cg.stroke(255, 90); cg.ellipse(mg+i+cwi, mg+j+cwi, cas+cwi2); } } } function rD(a,b,c,d,A) { if (A<=0) { Rr(a,b,c,d); hl = R.r_d() > 0.5 ? !0 : !1; let [Wx, Hx] = [R.r_n(0,c), R.r_n(0,d)]; if (hl == !1) { for (let i = a; i < (c+a); i+=f) { bL(i, b, i, b + Hx, !1, 60); } } else { for (let i=b; i < (d+b); i+=f) { bL(a, i, a + Wx, i, !1, 60); } } } else { let [I, J] = [R.r_d(), R.r_d()]; J > 0.5 ? rD(a, b, c, d*I, A-1) + rD(a, b+(d*I), c, d*(1-I), A-1) : rD(a, b, c*I, d, A-1) + rD(a+(c*I), b, c*(1-I), d, A-1); } } function bL(x1, y1, x2, y2, C, div) { var [i,dC, d4, d3] = [1, [], m*0.04, 0.3]; for (var j = 0; j <= lS; j++) { var [x,y] = [dC * (x2-x1) + randomGaussian()*d3 + x1, dC * (y2-y1) + randomGaussian()*d3 + y1]; cg.strokeWeight(R.r_n(0.5, 8)); C == !0 ? (cg.stroke(254,240,217,50), cg.vertex(x, y)) : (cg.stroke(254,240,217,50),cg.line(x1, y1, x, y)); var [x1, y1, dC] = [x, y, i/d4--]; } } function Rr(x, y, w, h) { cg.beginShape(); cg.noFill(); bL(x, y, x+w, y, !0, 40); bL(x+w, y, x+w, y+h, !0, 40); bL(x+w, y+h, x, y+h, !0, 40); bL(x, y+h, x, y, !0, 40); cg.endShape(); } function fL(x1, y1, x2, y2, div) { var [i,dC, d6, d3] = [1, [], m*0.07, 0.3]; for (var j = 0; j <= 70; j++) { var [x,y] = [dC * (x2-x1) + randomGaussian()*d3 + x1, dC * (y2-y1) + randomGaussian()*d3 + y1]; cg.stroke (254,240,217,R.r_n(200, 255)); cg.line(x1, y1, x, y); var [x1, y1, dC] = [x, y, i/d6--]; } } function hvL() { let Ts = R.r_d(); Ts < 0.5 ? WW = W/2 : WW = H*0.7; for (let i = 0; i < WW; i+=R.r_n(0.125,14)) { cg.strokeWeight(R.r_n(0.125, 5)); Ts < 0.5 ? fL(W/4+i, R.r_n(200, 210), W/4+i, H-R.r_n(200, 210), 60) : fL(R.r_n(mg*5, mg*5+10), H*0.15+i, W-R.r_n(mg*5, mg*5+10), H*0.15+i, 60); } } function fL2(x1, y1, x2, y2, div) { var [i,dC, d6, d3] = [1, [], m*0.06, 0.3]; for (var j = 0; j <= 60; j++) { var [x,y] = [dC * (x2-x1) + randomGaussian()*d3 + x1, dC * (y2-y1) + randomGaussian()*d3 + y1]; LC < 0.3 ? cg.stroke (254,240,217,R.r_n(10, 55)) : cg.stroke (fr); cg.line(x1, y1, x, y); var [x1, y1, dC] = [x, y, i/d6--]; } } function fMC() { cg.push(); cg.scale(1.3); cg.translate(R.r_n(0, -200), R.r_n(-350, 50)); fC(); cg.filter(BLUR, 0.5); cg.pop(); } function fC() { cg.scale(0.5); cg.translate(W*0.1,230); pL(); cg.translate(W*0.79,0); pL(); cg.translate(0,H*0.67); pL(); cg.translate(-W*0.8,0); pL(); } function pL() { for (let i = 0; i <= W/6; i+=R.r_n(0.25,7)) { cg.strokeWeight(R.r_n(0.25, 7)); fL(W*0.415+i, 0+R.r_n(300, 330), W*0.415+i, H-R.r_n(300, 330), 60); fL(R.r_n(mg*3.75, mg*4+10), H*0.435+i, W-R.r_n(mg*3.75, mg*4+10), H*0.435+i, 60); } } function sh_h() { cg.push(); const Sh = [-1,0,5]; sx = R.r_c(Sh); if (sx == 5) { cg.shearX(sx); cg.translate(-sx*10, -sx*4.6); } else if (sx == -1) { cg.shearX(sx); cg.translate(22, -15); } else { cg.translate(10,-15); } for (let i = 0; i < W*0.7; i+=W/10) { for (let j = 0; j < H*0.7; j+=W/10 ) { sB(W/6+i,0+j,W/6+i,W/20+j); } } cg.pop(); } function s_h() { let x = R.r_i(10,50); let y = R.r_i(2,4); for (let i = 0; i < W; i+=x*y) { for (let j = 0; j < H; j+=x*y) { sB2(x+i,0+j,x+i,x+j,x, R.r_n(0.125,10)); } } } function sB2(a,b,c,d,e,f) { for (let i = 0; i <= e; i+=f) { cg.strokeWeight(R.r_n(0.25, 5)); fL2(a+i, b+R.r_n(0,10), c+i, d+R.r_n(0,10), 60); } } function sB(a,b,c,d) { for (let i = 0; i <= W/20; i+=R.r_n(0.125,10)) { cg.strokeWeight(R.r_n(0.25, 5)); fL(a+i, b+R.r_n(200, 210), c+i, d+R.r_n(200, 210), 60); } } function pT() { let L = 4.5; for (let i = 0; i <= W; i += L) { var [a,b] = [R.r_n(-2, 2),R.r_n(-0.75, 0.75)]; cgf.stroke(0, R.r_n(7,9)); cgf.strokeWeight(R.r_n(0.5, 1.75)); cgf.drawingContext.setLineDash([5+a,3+a,6+a,4+a]); cgf.line(L+i, 0, L+i, H); cgf.line(L+i+b, 0, L+i+b, H); } } function fR() { let pl = 10; let p0 = 0-pl; cgf.stroke(255); cgf.noFill(); cgf.strokeWeight(mg+pl*2); cgf.rect(p0,p0,W+pl,H+pl); } function uf() { var cS = mg; var cSh = cS/2; cgf.fill(fr); cgf.noStroke(); for (let i = 0; i <= H; i+= 1) { cgf.circle(mg-cSh + R.r_n(-2, 2), mg-cSh*2 + i, cS); cgf.circle(W-mg+cSh + R.r_n(-2, 2), mg-cSh + i, cS); cgf.circle(mg-cSh + i, mg-cSh + R.r_n(-2, 2), cS); cgf.circle(mg-cSh + i, H-mg+cSh + R.r_n(-2, 2), cS); } } function gr(img, sF, aM) { img.loadPixels(); let Tr = aM * sqrt(sF); let S = 4 * (img.width * img.pixelDensity()) * (img.height * img.pixelDensity()); let pix = img.pixels; for (let i = 0; i < S; i += 4) { var n = -Tr + R.r_d() * Tr * 2; pix[i] += n; pix[i + 1] += n; pix[i + 2] += n; } img.updatePixels(); } function cVc(RD, Nu, Xc, Yc) { for (let i = 0; i < Nu; i++) { Xv[i] = Xc + RD * Math.cos(TWO_PI * i/Nu); Yv[i] = Yc + RD * Math.sin(TWO_PI * i/Nu); } cgc.beginShape(); for(let i = 0; i < Nu; i++) { cgc.curveVertex(Xv[i] + R.r_n(-8, 8), Yv[i] + R.r_n(-8, 8)); } cgc.endShape(CLOSE); } function keyReleased() { if (key == 's' || key == 'S') { save('A Tender Count(ing)-' + hash + '.png'); } }
Darkness of winter months, pleas for softness. A tender counting until days grow longer. Released for the VerticalCrypto Art _Companions of Code_ exhibition: London / NYC, 2023. Press [s] in live view to save file as PNG. This original generative art was created with code utilizing the p5.js library. © 2023 Lisa Orth - All Rights Reserved lisaorth.xyz