0xd10e…3beb

All memos sent from and to 0xd10e…3beb.

**An abstract piece born from whimsical engineering.** "Destructed City Plans", like its name, is a collection full of paradoxes. Stylistically, we pay homage to brutalism: harsh textures, minimal colors, visuals that won't be out of place in default MS paint settings. Each piece is a smattering of one geometry: rectangles, each placed in a way that barely implies a grand design. One would imagine, that with such limitation, artwork would feel "engineered", "planned", even "bureaucratic". Instead, with an embrace of unintended bugs in the design process, each piece appears to be a civil engineer gone crazy with the planning of a new suburbia. In minimalism, chaos still can thrive.
const ASPECT_RATIO=1;let hash=tokenData.hash??"0",projectNumber=Math.floor(parseInt(tokenData.tokenId)/1e6),mintNumber=parseInt(tokenData.tokenId)%1e6,isBannerOpened=!1;const ARTCODE_BANNER='<svg width="2030" height="432" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M0 0h2029.23v432H0V0Z" fill="#fff"/><path d="M1962.96 239.212V197.04h-81.15l81.15-100.292V54.576h-179.68v334.188h186.77v-42.526l-86.47-107.026h79.38ZM1495.88 54.576v334.188h85.4c92.14 0 166.21-75.13 166.21-166.917S1673.42 54.93 1581.28 54.93h-85.4v-.354Zm-36.15 166.917c0-94.268-75.13-170.461-166.92-170.461-92.49 0-167.63 76.193-167.63 170.461 0 94.267 75.14 170.815 167.63 170.815 91.79 0 166.92-76.548 166.92-170.815Zm-452.56 0L1113.14 89.66c-28.71-24.453-65.57-38.983-105.97-38.983-92.492 0-166.914 76.548-166.914 170.816 0 94.267 74.776 170.815 166.914 170.815 40.4 0 77.26-14.53 105.97-38.983l-105.97-131.832ZM592.893 54.576v42.172H658.1v292.016h112.696V96.748h64.853V54.576H592.893ZM480.906 240.63c51.741 0 93.559-41.464 93.559-92.85 0-51.386-41.818-93.559-93.559-93.559H356.87V388.41h242.756l-118.72-147.78ZM41.109 388.764h284.929L183.574 47.488 41.109 388.764Z" stroke="#1D1D1B" stroke-width="3.544" stroke-miterlimit="9.244"/><path d="m1273.32 273.942 35.44-43.235c20.2-24.807 24.1-36.502 24.1-48.197 0-23.744-18.43-40.046-44.66-40.046-17.01 0-33.66 8.86-40.04 24.453l40.4 52.449-43.95 54.576v19.137h85.41v-18.782h-56.7v-.355Z" fill="#1D1D1B"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h2029.23v432H0z"/></clipPath></defs></svg>',ARTCODE_BANNER_RATIO=121.9/572.6;let artCodeBannerImage;const getDimension=()=>2e3,getCanvasDimension=()=>Math.min(windowWidth,windowHeight),scaleValue=e=>e*getCanvasDimension()/2e3;class Random{constructor(e){this.useA=!1;let f=function(e){let f=parseInt(e.substr(0,8),16),a=parseInt(e.substr(8,8),16),n=parseInt(e.substr(16,8),16),d=parseInt(e.substr(24,8),16);return function(){f|=0,a|=0,n|=0,d|=0;let e=(f+a|0)+d|0;return d=d+1|0,f=a^a>>>9,a=n+(n<<3)|0,n=n<<21|n>>>11,n=n+e|0,(e>>>0)/4294967296}};this.prngA=new f(e.substr(2,32)),this.prngB=new f(e.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,f){return e+(f-e)*this.random_dec()}random_int(e,f){return Math.floor(this.random_num(e,f+1))}random_choice(e){return e[this.random_int(0,e.length-1)]}random_by_weight(e){var f,a,n=0;for(f=0;f<e.length;f++)n+=e[f];for(a=this.random_dec()*n,f=0;f<e.length;f++){if(a<e[f])return f;a-=e[f]}return-1}random_choice_by_weight(e,f){return e[this.random_by_weight(f)]}}const random=new Random(hash),PATTERN_WEIGHTS=[[0,.2,.4,.8,1],[0,.25,.5,.75,1],[0,.4,.8,.9,1],[0,.1,.4,.6,.9,1]],COLORS=[["#f5eee6","#f3d7ca","#e6a4b4","#c86b85"],["#7effdb","#b693fe","#8c82fc","#ff9de2"],["#dff4f3","#dde7f2","#b9bbdf","#878ecd"],["#303841","#3a4750","#d72323","#eeeeee"],["#ebfffa","#c6fce5","#6ef3d6","#0dceda"],["#99e1e5","#f3e8cb","#f2c6b4","#fbafaf"],["#0c056d","#590d82","#b61aae","#f25d9c"],["#155263","#ff6f3c","#ff9a3c","#ffc93c"],["#fafafa","#e8f1f5","#005691","#004a7c"],["#15b7b9","#10ddc2","#f5f5f5","#f57170"],["#f4eeff","#dcd6f7","#a6b1e1","#424874"],["#cefff1","#ace7ef","#a6acec","#a56cc1"],["#fb929e","#ffdfdf","#fff6f6","#aedefc"],["#a9eee6","#fefaec","#f9a1bc","#625772"],["#fbf0f0","#dfd3d3","#b8b0b0","#7c7575"],["#071a52","#086972","#17b978","#a7ff83"],["#283149","#404b69","#f73859","#dbedf3"],["#393232","#4d4545","#8d6262","#ed8d8d"],["#ff6464","#ff8264","#ffaa64","#fff5a5"],["#f8b595","#f67280","#c06c84","#6c5b7c"],["#303a52","#574b90","#9e579d","#fc85ae"],["#fef0ff","#d6c8ff","#c79ecf","#7e6bc4"],["#66bfbf","#eaf6f6","#fcfefe","#f76b8a"],["#f6f6f6","#d6e4f0","#1e56a0","#163172"],["#00204a","#005792","#00bbf0","#d9faff"],["#11cbd7","#c6f1e7","#f0fff3","#fa4659"],["#a9eee6","#fefaec","#f38181","#625772"],["#f9ecec","#f0d9da","#c8d9eb","#ecf2f9"],["#35477d","#6c5b7b","#c06c84","#f67280"],["#232931","#393e46","#4ecca3","#eeeeee"],["#142850","#27496d","#0c7b93","#00a8cc"],["#27296d","#5e63b6","#a393eb","#f5c7f7"],["#3a0088","#930077","#e61c5d","#ffbd39"],["#ffb6b6","#fde2e2","#aacfcf","#679b9b"],["#142850","#27496d","#00909e","#dae1e7"],["#ffe8df","#ffffff","#f0f0f0","#888888"],["#fcefee","#fccde2","#fc5c9c","#c5e3f6"],["#e0fcff","#90f2ff","#6eb6ff","#7098da"],["#a6e4e7","#f9f9f9","#ebcbae","#8f8787"],["#233142","#455d7a","#f95959","#e3e3e3"],["#c7f3ff","#fdc7ff","#ffdcf5","#f2f4c3"],["#ffb6b9","#fae3d9","#bbded6","#8ac6d1"],["#e7e6e1","#f7f6e7","#c1c0b9","#537791"],["#fffcca","#55e9bc","#11d3bc","#537780"],["#272343","#ffffff","#e3f6f5","#bae8e8"],["#ffa5a5","#ffffc2","#c8e7ed","#bfcfff"],["#253b6e","#1f5f8b","#1891ac","#d2ecf9"],["#f2f2f2","#ebd5d5","#ea8a8a","#685454"],["#eaafaf","#a2738c","#645c84","#427996"],["#fcf5ee","#fbe8e7","#f7ddde","#ffc4d0"],["#4d606e","#3fbac2","#d3d4d8","#f5f5f5"],["#ffbbcc","#ffcccc","#ffddcc","#ffeecc"],["#9ddcdc","#fff4e1","#ffebb7","#e67a7a"],["#7d5a5a","#f1d1d1","#f3e1e1","#faf2f2"],["#ffd9e8","#de95ba","#7f4a88","#4a266a"],["#f0ece2","#dfd3c3","#c7b198","#596e79"],["#f47c7c","#f7f48b","#a1de93","#70a1d7"],["#c8f4de","#a4e5d9","#66c6ba","#649dad"],["#0e3150","#6dc9c8","#ffc0c2","#f7e9e3"],["#c7f5fe","#fcc8f8","#eab4f8","#f3f798"],["#e3d9ca","#95a792","#596c68","#403f48"],["#2a363b","#e84a5f","#ff847b","#fecea8"],["#f4f7f7","#aacfd0","#79a8a9","#1f4e5f"],["#700961","#b80d57","#e03e36","#ff7c38"],["#e4eddb","#307672","#144d53","#1a3c40"],["#a7efe9","#7fdfd4","#fbe1b6","#fbac91"],["#f5efe3","#e6e7e5","#f7d3ba","#a6aa9c"],["#e1f2fb","#f1f9f9","#f3dfe3","#e9b2bc"],["#f8b195","#f67280","#c06c84","#355c7d"],["#ffd5e5","#ffffdd","#a0ffe6","#81f5ff"],["#fbfbfb","#b9e1dc","#f38181","#756c83"],["#adf7d1","#95e8d7","#7dace4","#8971d0"],["#dff5f2","#87dfd6","#46b7b9","#2f9296"],["#beebe9","#f4dada","#ffb6b9","#f6eec7"],["#222831","#393e46","#00adb5","#00fff5"],["#39065a","#6a0572","#9a0f98","#ea0599"],["#f4f9f4","#c4e3cb","#8aae92","#616161"],["#a1d9ff","#ca82f8","#ed93cb","#f2bbbb"],["#fa4659","#feffe4","#a3de83","#2eb872"],["#ffb400","#fffbe0","#2994b2","#474744"],["#6b0848","#a40a3c","#ec610a","#ffc300"],["#f12b6b","#ff467e","#fd94b4","#f6c7c7"],["#333333","#ffffff","#e1f4f3","#706c61"],["#363062","#4d4c7d","#827397","#d8b9c3"],["#f3f8ff","#deecff","#c6cfff","#e8d3ff"],["#be9fe1","#c9b6e4","#e1ccec","#f1f1f6"],["#e8e8e8","#5588a3","#145374","#00334e"],["#45eba5","#21aba5","#1d566e","#163a5f"],["#beebe9","#fffdf9","#ffe3ed","#8ac6d1"],["#f2e9d0","#eaceb4","#e79e85","#bb5a5a"],["#e4fffe","#a4f6f9","#ff99fe","#ba52ed"],["#fafaf6","#00fff0","#00d1ff","#3d6cb9"],["#fda403","#e8751a","#c51350","#8a1253"],["#f6f5f5","#e3e3e3","#3bb4c1","#048998"],["#f4f7f7","#aacfd0","#5da0a2","#34495e"],["#3498db","#ecf0f1","#34495e","#f1c40f"],["#dddddd","#fab7b7","#f5a8a8","#e19999"],["#0f1021","#d01257","#fb90b7","#ffcee4"],["#f69d9d","#ffeab6","#fdffba","#c0ffc2"],["#ffdede","#f7f3ce","#c5ecbe","#4797b1"],["#120136","#035aa6","#40bad5","#fcbf1e"]],COLORS_LENGTH=COLORS.length,PATTERNS={color:(e=1)=>(f,a,n,d)=>{strokeWeight(scaleValue(1)),fill(gene.pallete[e]),rect(f,a,n,d)},color_2:(e=1)=>(e,f,a,n)=>{PATTERNS.color(2)(e,f,a,n)},plain:()=>(e,f,a,n)=>{strokeWeight(scaleValue(1)),fill("white"),rect(e,f,a,n)},horzStripes:(e=random.random_int(3,16))=>(f,a,n,d)=>{stroke("black"),strokeWeight(scaleValue(1));const c=d>0?1:-1;for(let t=0;t<Math.abs(d);t+=scaleValue(e))line(f,a+c*t,f+n,a+c*t)},vertStripes:(e=random.random_int(3,16))=>(f,a,n,d)=>{stroke("black"),strokeWeight(scaleValue(1));const c=n>0?1:-1;for(let t=0;t<Math.abs(n);t+=scaleValue(e))line(f+c*t,a,f+c*t,a+d)},grid:(e=random.random_int(3,16))=>(f,a,n,d)=>{PATTERNS.horzStripes(e)(f,a,n,d),PATTERNS.vertStripes(e)(f,a,n,d)},diagonalUp:(e=random.random_int(3,16))=>(f,a,n,d)=>{push(),fill("rgba(0,0,0,0)"),rect(f,a,n,d),drawingContext.clip();const c=[n>0?f:f+n,d>0?a:a+d],t=[abs(n),abs(d)],r=Math.max(...t);stroke("black"),strokeWeight(scaleValue(1));for(let f=-t[0];f<t[0]+t[1];f+=scaleValue(e))line(c[0],c[1]+f,c[0]+r,c[1]+f+r);pop()},diagonalDown:(e=random.random_int(3,16))=>(f,a,n,d)=>{push(),fill("rgba(0,0,0,0)"),rect(f,a,n,d),drawingContext.clip();const c=[n>0?f:f+n,d>0?a:a+d],t=[abs(n),abs(d)],r=Math.max(...t);stroke("black"),strokeWeight(scaleValue(1));for(let f=-t[0];f<t[0]+t[1];f+=scaleValue(e))line(c[0],c[1]+f,c[0]+r,c[1]+f-r);pop()},diagonalGrid:(e=random.random_int(3,16))=>(f,a,n,d)=>{PATTERNS.diagonalUp(e)(f,a,n,d),PATTERNS.diagonalDown(e)(f,a,n,d)}},AVAILABLE_PATTERNS=["color","color_2","plain","horzStripes","vertStripes","grid","diagonalUp","diagonalDown","diagonalGrid"],generateGene=e=>{const f=random.random_choice(PATTERN_WEIGHTS),a=random.random_int(0,COLORS_LENGTH-1),n=f.map(((e,f)=>0===f?"color":random.random_choice(AVAILABLE_PATTERNS)));return{vertOrHorzRatio:random.random_dec(),seed:e,palleteIndex:a,patternWeights:f,patternNames:n,gridLinesToRects:{gitter:[random.random_choice_by_weight([-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]),random.random_choice_by_weight([-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1])]},gridPartitioning:{driftIndex:[random.random_choice([0,1]),random.random_choice([0,1])],driftCoefficient:[random.random_num(-.05,.05),random.random_num(-.05,.05)],margin:random.random_choice_by_weight([0,30,90,120,300],[.01,.4,.3,.2,.09]),gap:random.random_int(0,20),gridSizeInUnits:random.random_choice_by_weight([[20,20],[40,40],[60,60],[80,80],[100,100],[120,120],[200,200]],[.1,.1,.2,.28,.25,.05,.02])}}},getGeneForRendering=e=>{const f=e.patternNames,a=COLORS[e.palleteIndex],n=random.random_int(0,a.length-1),d=[...a.slice(n),...a.slice(0,n)];return{...e,pallete:d,patterns:f.map((e=>PATTERNS[e]()))}},generateGridPartitioningInGridUnits=(e,f,a=.5)=>{if(f[0]-e[0]==0&&f[1]-e[1]==0)return[[e,f]];let n=random.random_dec()>a;if(f[0]-e[0]==1&&f[1]-e[1]==0||f[0]-e[0]==0&&f[1]-e[1]==1)return[[e,e],[f,f]];if(f[0]-e[0]==1&&f[1]-e[1]==1)return n?[[e,[f[0]-1,f[1]]],[[e[0]+1,e[1]],f]]:[[e,[f[0],f[1]-1]],[[e[0],e[1]+1],f]];const d=[n?random.random_int(e[0]+1,f[0]-1):e[0],n?e[1]:random.random_int(e[1]+1,f[1]-1)],c=[n?d[0]:f[0],n?f[1]:d[1]],t=[d,c],r=[e,[c[0]-(n?1:0),c[1]-(n?0:1)]],i=[[d[0]+(n?1:0),d[1]+(n?0:1)],f],o=r[1][0]>=r[0][0]&&r[1][1]>=r[0][1],s=i[1][0]>=i[0][0]&&i[1][1]>=i[0][1],b=n?a+(1-a)/2:a/2;return[...o?generateGridPartitioningInGridUnits(r[0],r[1],b):[],t,...s?generateGridPartitioningInGridUnits(i[0],i[1],b):[]]},convertGridLinesToRects=e=>{const{gridSizeInUnits:f,gap:a,margin:n}=gene.gridPartitioning,{gitter:d}=gene.gridLinesToRects,c=[(2e3-2*n-(f[0]-1)*a)/f[0],(2e3-2*n-(f[1]-1)*a)/f[1]],t=[n,n];return e.map(((e,f)=>[[e[0][0]*(c[0]+a),e[0][1]*(c[1]+a)],[(e[1][0]+d[0])*(c[0]+a)-a,(e[1][1]+d[1])*(c[1]+a)-a]])).map((e=>[[t[0]+e[0][0],t[1]+e[0][1]],[t[0]+e[1][0],t[1]+e[1][1]]]))},gene=getGeneForRendering(generateGene(hash)),lines=generateGridPartitioningInGridUnits([0,0],[gene.gridPartitioning.gridSizeInUnits[0]-1,gene.gridPartitioning.gridSizeInUnits[1]-1],gene.vertOrHorzRatio);function setup(){const e=getCanvasDimension();createCanvas(e,e),artCodeBannerImage=loadImage(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(ARTCODE_BANNER)}`)}function windowResized(){const e=getCanvasDimension();resizeCanvas(e,e)}function draw(){const{pallete:e,patterns:f,patternWeights:a}=gene,{margin:n,driftCoefficient:d,driftIndex:c}=gene.gridPartitioning,t=2e3,r=convertGridLinesToRects(lines);background(e[0]);for(let e=0;e<r.length;++e){const n=r[e];resetMatrix();const t=[n[0][0]+(n[1][0]-n[0][0]/2),n[0][1]+(n[1][1]-n[0][1]/2)];push(),translate(scaleValue(t[0]+t[c[0]]*d[0]),scaleValue(t[1]+t[c[1]]*d[1]));const i=[-(n[1][0]-n[0][0]/2),-(n[1][1]-n[0][1]/2),n[1][0]-n[0][0],n[1][1]-n[0][1]].map(scaleValue),o=Math.abs(i[2]/i[3]),s=o>1?.5*(1-1/o)+.5:.5*o;let b=0;if(0!==i[2]||0!==i[3])for(;b<a.length&&!(s>=a[b]&&s<=(a[b+1]??1));++b);const l=f[b];PATTERNS.plain()(...i),l(...i),pop()}resetMatrix(),strokeWeight(scaleValue(2*n)),stroke(e[3]),fill("rgba(0,0,0,0)"),rect(0,0,scaleValue(t),scaleValue(t)),strokeWeight(scaleValue(1)),stroke("black"),rect(scaleValue(n),scaleValue(n),scaleValue(t-2*n),scaleValue(t-2*n)),isBannerOpened&&image(artCodeBannerImage,0,0,scaleValue(t)+2,.2128885784142508*scaleValue(t))}function keyPressed(){console.log("here"),isBannerOpened=!isBannerOpened}function doubleClicked(){isBannerOpened=!isBannerOpened}
S=Uint32Array.from([0,1,s=t=2,3].map(i=>parseInt(tokenData.hash.substr(i*8+2,8),16)));R=_=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=(t^t>>>8)^(s>>>19),S[0]/2**32);'tx piter, you rock :)';let acH = `<svg width="1024" height="224" viewBox="0 0 1024 224" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="1024" height="224" fill="white"/> <path d="M995.432 124.388V102.958H954.372L995.432 52.0077V30.5777H904.509V200.094H999V178.664L955.305 124.388H995.432ZM759.043 30.5777V200.094H802.254C824.46 199.77 845.647 190.697 861.236 174.837C876.824 158.977 885.563 137.604 885.563 115.336C885.563 93.0681 876.824 71.6945 861.236 55.8345C845.647 39.9745 824.46 30.9019 802.254 30.5777H759.043ZM740.862 115.327C740.862 67.4869 702.869 28.9057 656.34 28.9057C609.812 28.9057 571.567 67.4869 571.567 115.327C571.567 163.167 609.561 202 656.34 202C703.12 202 740.862 163.185 740.862 115.327ZM511.825 115.327L565.489 48.43C550.525 35.6333 531.492 28.6196 511.825 28.654C465.045 28.672 427.231 67.4869 427.231 115.327C427.231 163.167 464.884 202 511.753 202C531.421 202.034 550.453 195.021 565.417 182.224L511.825 115.327ZM302.259 30.5777V52.0077H335.268V200.094H392.25V52.0077H425.026V30.5777H302.259ZM245.618 125.089C251.885 125.212 258.113 124.08 263.938 121.76C269.763 119.44 275.068 115.979 279.543 111.579C284.018 107.179 287.572 101.928 289.999 96.1335C292.426 90.3392 293.676 84.1178 293.676 77.8334C293.676 71.5489 292.426 65.3276 289.999 59.5333C287.572 53.739 284.018 48.4881 279.543 44.0879C275.068 39.6876 269.763 36.2264 263.938 33.9066C258.113 31.5868 251.885 30.4551 245.618 30.5777H182.864V200.094H305.612L245.618 125.089ZM23 200.094H167.121L95.1861 27L23 200.094Z" stroke="black" stroke-width="2" stroke-miterlimit="9.24"/> <path d="M647 90V96.2438H651.896V140H659V90H647Z" fill="black"/> </svg> `;let svgd = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(acH)}` let bS=f=>beginShape(),inv=.5<R();var canvas,DS=1024,DIM=Math.min(window.innerWidth,window.innerHeight),M=DIM/DS;let cMn=Math.floor(14*R()),cMx=Math.floor(15*R())-cMn,stms=.2<R(),pdm=.5<R(),flt=.9<R(),uTB=.75<R(),uOvr=.7<R(),uOvrv=.5<R(),fTf=.75<R(),fct=.85<R(),cPat=R(),os=DIM/2,c=Math.pow(2,Math.floor(5*R())+4),r=Math.pow(2,Math.floor(4*R())+4),an=!1;var frameOffset=0;let gA=Math.floor(128*R())+2,gB=Math.floor(128*R())+2,gC=Math.floor(128*R())+2,agp,ahd,ahdV=!1,gm=R(),gmO=.7<R(),wFr=.8<R();fTf&&(wFr=!1);let fld=c<32&&r<128&&!fTf,fldT=R(),flOsc=stms&&!flt&&c<128;flOsc||(wFr=!1);let palettes=[["#740211","#d0a9a0","#8f3a60","#c35a66","#240004"],["#afd4cc","#85ba6a","#1a7749","#0b2e2f","#01121c"],["#001244","#005086","#318fb5","#b0cac7","#f7d6bf"],["#8c4219","#f39558","#eec8b0","#f1ece7","#f7d96d"],["#b3e7dc","#a6b401","#eff67b","#d50102","#6c0102"],["#007b00","#24e0b8","#ffcc51","#ff8b76","#ff3031"],["#a94300","#ffb000","#ffdf00","#5b9b37","#153d02"],["#a10532","#ff6fa9","#ffd0cc","#00b7cc","#005f81"],["#631a11","#bb602f","#efd883","#cb8214","#444065"],["#30043d","#8e1f51","#e54059","#de837f","#fdb36a"],["#fffbc4","#b6bef6","#351ebf","#10015d","#0a0030"],["#8c0714","#fc407c","#1b4e88","#05081e","#faf0e4"],["#082c44","#72eaf5","#fee6e2","#ffa94c","#fe2c89"],["#01638d","#abcecc","#fff2cd","#ff004c","#610d4b"],["#227dac","#443988","#9f0052","#ff3f20","#ffbe00"],["#81edf7","#00a4c0","#02748f","#f70110","#6e0516"],["#fffe01","#ff8606","#e83b36","#600538","#460a40"],["#333333","#cccccc","#303030","#dddddd","#000000"],["#000000","#ff55ff","#55ffff","#ff00ff","#ffffff"],["#dad2d8","#143642","#0f8b8d","#ec9a29","#a8201a"]],bgc,fxC=.8<R(),invC=.5<R(),pvO=.95<R(),pVOI=.5<R(),mno=.95<R(),bh;pvO&&(bh=Math.floor(360*R()),mno=!1),mno&&(pvO=!1);let pId=Math.floor(R()*palettes.length),palette=palettes[pId],wgl=!1;function m(f){return f*M}let objs=[];function setup(){if(ahd=loadImage(svgd),c<64||r<64&&256!=c&&32!=r&&256!=c&&128!=r?(os=0,canvas=createCanvas(DIM,DIM),agp=createGraphics(DIM,DIM)):(wgl=!0,canvas=createCanvas(DIM,DIM,WEBGL),agp=createGraphics(DIM,DIM,WEBGL),agp.setAttributes("antialias",!0)),agp.colorMode(HSB,360,100,100),agp.noStroke(),pvO){palette=[];for(let f=0;f<5;f++)0==f?pVOI?palette.push(agp.color(bh,100,100)):palette.push(agp.color(bh,100,10)):pVOI?palette.push(agp.color(bh,100,10+15*(f-1))):palette.push(agp.color(bh,100,100-15*(f-1)))}if(mno){palette=[];for(let f=0;f<5;f++)0==f?pVOI?palette.push(agp.color(0,0,10)):palette.push(agp.color(0,0,70)):pVOI?palette.push(agp.color(0,0,70)):palette.push(agp.color(0,0,10))}bgc=agp.color(palette[floor(R()*palette.length)]),(pvO||mno)&&(bgc=palette[0]);for(let f=0;f<palette.length;f++)palette[f]=agp.color(palette[f]);let e=createVector(floor(R()*(DS/c)),floor(R()*(DS/r))),t=createVector(floor(R()*(DS/c)),floor(R()*(DS/r))),o=[],a=[];for(let f=0;f<DS/c;f++)flOsc&&fct?(o.push(floor(R()*(DS/r/1.5-2))),a.push(floor(R()*(DS/r/1.5-2)))):(o.push(0),a.push(0));let D=0,u=!1;for(let d=0;d<DS/r;d++)if(d,!(stms&&!flt&&d<2))for(let h=0;h<DS/c;h++)if(u=!1,0!=d&&0!=h&&h+1!=DS/c&&d+1!=DS/r&&h%gA!=0&&h%gB!=0&&h%gC!=0&&!(d<=o[h])){if(uTB){if(d>=DS/r-a[d])continue}else if(d>=DS/r-a[h])continue;var S=createVector(h,d);R();var M,V=e.dist(S);let f=e.dist(S);f=128*R()-64,f=S.x%2*64;let O=0,v=!1;pdm&&S.x<DS/c/2&&(v=!0,f=t.dist(S),O=m(c)),f=f%r*c,f+=S.x/(S.y+1),R()>R()&&(f=S.y*S.x/(8*R())),.1<R()&&c<256&&(u=!0,f=R()*DS+DS/2),.7<R()&&S.x,flt&&(f=c);let i;fill(0,0,inv?70:20),i=cPat<.25?floor(V)%palette.length:cPat<.5?floor((S.x+S.y)/2)%palette.length:cPat<.75?floor(S.x*S.y/2)%palette.length:floor(abs(sin(S.x/4)*S.y))%palette.length;let g=stms?r-f:0;if(256==c&&(g=0),uOvr?g=uOvrv?r:0:.5<R()&&(g=r),!(g&&f==c&&m(S.y*r+g)<m(r))){let f=!1;m(S.y*r+g)<m(r)&&(f=!0);let e,t;if(e=u||flt?(t=v?m(S.x*c):m(S.x*c+c),m(S.y*r+g)):(t=m(S.x*c+c)-O,max(m(S.y*r+g),m(r))),f&&(t=m(S.x*c+c),M=R()*(S.y*r)-r+r,e=m(M)),32<c&&32<r&&fTf&&(e=m(r)),c<32&&r<128&&!fTf&&(e=m(R()*r*(DS/r))),fld)if(fldT<.3){if(S.y>DS/r/4)continue}else if(fldT<.6&&S.y>DS/r/2)continue;let o;o=flOsc&&wFr?(j=c,x=m(R()*j),x=m(V/(DS/r)*j%j),x=min(x,m(c/1.5)),v?createVector(t+x-os,m(DS)-e-os):createVector(t-x-os,m(DS)-e-os)):createVector(t-os,m(DS)-e-os);var j=createVector(m(S.x*c)+O-os,m(DS)-m(S.y*r)-os),x=createVector(m(S.x*c)+O-os,m(DS)-m(S.y*r+r)-os),S=abs(j.x-o.x);let a,l,b,s=0,p=!1,n=!1;gm<.15?(b=D%5*20,s=D%10*5+10,a=floor(100*R())+50,l=a):gm<.3?(a=256==c?floor(200*R())+100:floor(100*R())+50,b=floor(V)+1,l=a,p=!0,n=!0):gm<.5?(a=256==c?floor(200*R())+100:floor(100*R())+50,b=1,l=a,p=!0,n=!0):l=(gm<.7?(b=h*d%8+50,s=h*d%8+25,a=50*i+25):b=gm<.85?(a=i%4*50+50,i%4*50+50):(a=floor(50*R())+25,200),a),objs.push({v0:j,v1:o,v2:x,h:hue(palette[i]),s:saturation(palette[i]),b:brightness(palette[i]),w:S,viD:b,hiD:s,fiD:a,foD:l,aT:0,rvO:b,rvV:100,rvD:0,rvA:!1,rvOfs:0,rvSO:!1,rVV:p,rVH:n}),D++}}}let cOb,ltt;function draw(){agp.background(bgc);for(let f=0;f<objs.length;f++)cOb=objs[f],ltt=frameCount-cOb.rvOfs-1,an?(0==cOb.rvD&&(0==cOb.foD?agp.fill(cOb.h,cOb.s,cOb.b,0):agp.fill(cOb.h,cOb.s,cOb.b,lerp(1,0,ltt/cOb.foD)),ltt==cOb.foD&&(objs[f].rvD=1,objs[f].rvOfs=frameCount,ltt=frameCount-cOb.rvOfs)),1==cOb.rvD&&ltt==cOb.hiD&&(cOb.rVV&&(objs[f].rvVS=256==c?floor(200*R())+100:floor(100*R())+50,objs[f].rvHS=objs[f].rvVS),agp.fill(cOb.h,cOb.s,cOb.b,0),objs[f].rvD=2,objs[f].rvOfs=frameCount,ltt=frameCount-cOb.rvOfs),2==cOb.rvD&&(0==cOb.fiD?agp.fill(cOb.h,cOb.s,cOb.b,1):agp.fill(cOb.h,cOb.s,cOb.b,lerp(0,1,ltt/cOb.fiD)),ltt==cOb.fiD&&(objs[f].rvD=3,objs[f].rvOfs=frameCount,ltt=frameCount-cOb.rvOfs)),3==cOb.rvD&&(agp.fill(cOb.h,cOb.s,cOb.b,1),ltt==cOb.viD&&(cOb.rVH&&(objs[f].rvVS=256==c?floor(200*R())+100:floor(100*R())+50,objs[f].rvHS=objs[f].rvVS),objs[f].rvD=0,objs[f].rvOfs=frameCount,ltt=frameCount-cOb.rvOfs))):agp.fill(cOb.h,cOb.s,cOb.b),agp.beginShape(),agp.vertex(objs[f].v0.x,objs[f].v0.y),agp.vertex(objs[f].v1.x,objs[f].v1.y),agp.vertex(objs[f].v2.x,objs[f].v2.y),agp.endShape();image(agp,-os,-os),ahdV&&image(ahd,-os,-os,1024*M,224*M)}function perform(){if(an=!an,an)for(let f=0;f<objs.length;f++)objs[f].rvSO=!0,objs[f].rvD=0,objs[f].rvOfs=frameCount}function keyPressed(){ahdV=!ahdV}function doubleClicked(){ahdV=!ahdV}function mouseClicked(){perform()}
A visual abstraction of musical performances. Each "Ensemble" is solely composed of triangles, which represent the components of written music notes (stem, flag, notehead). The triangular notes animate in the rhythm of musical styles: Tremolo, Vivace, Rondo, Flourish, Call and Response, Capriccio. In the absence of sound, the animation highlights the exchange of ideas among a group of musicians during a performance. A written composition provides musicians with direction, expecting live performers to apply their own influences and flair. "Ensemble" draws a comparison between musical performance and on-chain generative art. The cryptographic hash provides a unique composition of letters and numbers, which is interpreted and performed by the artist’s code. Click to start the performance! Press any key or double click to show/hide the ARTCODE header. *Photosensitive seizure warning: These artworks contain flashing colors and moving patterns.