memoscan
← all memos

Memo 0xadb5fb20…84fbe0 on Ethereum

Ethereal PhaseH0x92c23775f6559d3392562c6bfd4e74c27d098f36b8584553f3716fdf1aa9b5a6# Ethereal Phase An exploration between contrasting polarities and equilibrium inspired by electromagnetic waves. Each 'Ethereal Phase' is unique to the transaction that generated it. ## ![](https://bafkreibmkflzrvjutwgw3tmtqchqpz7foelezjrcwaurw4uuhvxpscqmyi.ipfs.dweb.link/) | Artist | [Audivit](https://audivit.xyz/) | |:------------|:-----------| | **Editions** | 500 | | **Editions License** | [NIFTY](https://www.nftlicense.org/) | | **Code License** | [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) | ## Metadata | Attribute | Possible Values | |:------------|:-----------| | Style | Ethereal, Spectral | | Context | Frame, Marble, Turbine | | Palette | Hero, Smart, Dupont, Funken, Spritz, Decca, Villain, Monochrome | | Crest | 0% to 100% - Amplitude detail | | Frequency | 0% to 100% - Wave cycles | | Flux | 0% to 100% - Wave flow force | | Asymmetry | 0% to 100% - Skew of shadow wave | | Compression | 0% to 100% - Max amplitude and wave border dimension | ## Extra Features | Input | Action | |:------------|:-----------| | Press key [ **s** ] | Save high resolution 5000x5000 pixels file | ## Source Code ``` let decPairs, TX, TXN, EID, DIM, inDIM, WIDTH, HEIGHT, frame, seed, palette, clr, ctx, turble, save; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } } printMetadata = () => { if (decPairs[29] <= 170) { metadataObj.Style = "Ethereal"; } else { metadataObj.Style = "Spectral"; } if (decPairs[20] >= 180 && decPairs[20] < 245 && metadataObj.Style != "Spectral") { metadataObj.Context = "Marble"; } else if (decPairs[20] >= 245) { metadataObj.Context = "Turbine"; } else { metadataObj.Context = "Frame"; } metadataObj.Palette = clr[0]; metadataObj.Crest = p.round(p.map(decPairs[9], 0, 255, 1, 100)) + "%"; metadataObj.Frequency = p.round(p.map(decPairs[15], 0, 255, 1, 100)) + "%"; metadataObj.Flux = p.round(p.map(decPairs[4], 0, 255, 1, 100)) + "%"; metadataObj.Asymmetry = p.round(p.map(decPairs[6], 0, 255, 1, 100)) + "%"; metadataObj.Compression = p.round(p.map(decPairs[7], 0, 255, 1, 100)) + "%"; metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } p.myCustomRedrawAccordingToNewPropsHandler = (props) => { p.keyTyped = () => { if (p.keyCode === 83 && props.square == 1) { save.save("Ethereal Phase #" + EID + ".tif"); } } if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; if (props.square > 1) { WIDTH = p.windowWidth / props.square * 0.7; HEIGHT = p.windowHeight / props.square * 0.7; } else { WIDTH = p.windowWidth / props.square * 0.9; HEIGHT = p.windowHeight / props.square * 0.9; } DIM = Math.min(WIDTH, HEIGHT); inDIM = 1000; getHashData(1); p.randomSeed(+props.transactionHash.substr(0, 10)); seed = p.random(0, 255); p.noiseSeed(seed); p.createCanvas(DIM, DIM); turble = p.createGraphics(inDIM, inDIM, p.WEBGL) turble.smooth(); turble.setAttributes("alpha", true); turble.setAttributes("antialias", true); render = p.createGraphics(inDIM, inDIM); frame = p.createGraphics(inDIM, inDIM, p.WEBGL); frame.setAttributes("alpha", false); frame.setAttributes("antialias", true); frame.smooth(); frame.rectMode(p.CENTER); let crest = p.map(decPairs[9], 0, 255, 1.0, 4.0); let frequency = p.map(decPairs[15], 0, 255, 3.0, 5.0); let flux = p.map(decPairs[4], 0, 255, 1.3, 1.4); let asymmetry = p.map(decPairs[6], 0, 255, 1.0, 1.1); let compression = p.map(decPairs[7], 0, 255, 0.3, 0.6); if (decPairs[29] <= 170) { pal5 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"]; pal2 = ["Smart", "#FAF9EF", "#00ADB5", "#FAF9EF", "#7DD3D3"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FAF9EF", "#03506F"]; pal4 = ["Spritz", "#FF7869", "#FFC57E", "#FAF9EF", "#FFC57E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal7 = ["Villain", "#28FFBF", "#101010", "#28FFBF", "#28FFBF"]; pal8 = ["Monochrome", "#FAF9EF", "#101010", "#FAF9EF", "#FAF9EF"]; } else { pal2 = ["Hero", "#03506F", "#03506F", "#FAF9EF", "#FF2442"]; pal1 = ["Hero", "#03506F", "#03506F", "#FAF9EF", "#FF2442"]; pal4 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal7 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal8 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"];; } let PLT = []; for (let clrArr = 0; clrArr <= 512; clrArr++) { let count = "pal" + p.round(p.random(1, 8)); PLT.push(count); } palette = p.round(p.random(512)); clr = eval(PLT[palette]); printMetadata(); if (props.square > 1) { turble.pixelDensity(0.5); render.pixelDensity(0.5); frame.pixelDensity(0.5); } else if (props.square == 1 && p.displayWidth < p.displayHeight) { turble.pixelDensity(1); render.pixelDensity(1); frame.pixelDensity(1); } else { p.pixelDensity(p.displayDensity() + 1); turble.pixelDensity(5); render.pixelDensity(5); frame.pixelDensity(5); } frame.background(clr[1]); p.noiseDetail(crest); frame.noFill(); frame.strokeWeight(inDIM / 70); frame.rectMode(p.CENTER); if (decPairs[20] < 245 && metadataObj.Context != "Marble") { frame.rect(0, 0, inDIM, inDIM); } frame.translate(-inDIM * 0.35, -inDIM * 0.35, -inDIM / 2); frame.push(); frame.translate(-inDIM * 1.5, 0, 0); frame.beginShape(p.TRIANGLE_STRIP); for (let x = inDIM / 5.5; x < inDIM * 3.5; x += 0.5) { let nx = p.map(x, 100, -inDIM, frequency, 0); let y = inDIM * 0.95 * p.noise(nx / 2); let z = inDIM + p.noise(nx / 2); frame.strokeWeight(inDIM * 0.06); frame.stroke(0, 20); frame.fill(clr[2]); frame.vertex(x, y, 0); if (decPairs[29] <= 170) { if (decPairs[20] >= 245 && metadataObj.Palette == "Monochrome" || metadataObj.Palette == "Smart") { frame.background(clr[2]); } else { frame.background(clr[1]); } frame.stroke(clr[1] + "20"); if (decPairs[20] >= 245) { frame.strokeWeight(1); frame.vertex(x, y * 0.03, 0); frame.vertex(x / (asymmetry * 1.1), y * compression * 3, 0); } else { frame.strokeWeight(1); frame.vertex(x, y * 0.03, 0); frame.vertex(x / (asymmetry * 1.1), y * compression * 2, 0); } } else { frame.noFill(); frame.stroke(clr[4] + "30") frame.strokeWeight(0.5); frame.vertex(x * flux, z / 3, 0); if (decPairs[20] >= 245) { frame.vertex(x, y * 1.5, 0); } else { frame.vertex(x, y * 0.4, 0); } frame.vertex(x / asymmetry, y * compression, 0); } } frame.endShape(); frame.pop(); if (decPairs[20] >= 245 && metadataObj.Palette == "Villain") { frame.fill(clr[2]); } else { frame.fill(clr[3]); } frame.noStroke(); if (decPairs[29] <= 170) { frame.translate(0, inDIM * 0.3, -(inDIM * 0.2)); frame.rect(inDIM / 3, inDIM * 1.75, inDIM * 2, inDIM * 4); frame.fill(clr[2]); frame.rect(inDIM / 3, inDIM * 0.05, inDIM * 2, inDIM * 0.75); } else { frame.translate(0, -2, -(inDIM * 0.2)); frame.rect(inDIM / 3, inDIM * 0.833, inDIM * 2, inDIM); frame.fill(clr[1]); frame.rect(inDIM / 3, inDIM * 0.83, inDIM * 2, inDIM); frame.fill(0, 80); frame.rect(inDIM / 3, inDIM * 0.83, inDIM * 2, inDIM); } } ctx = frame; turble.ortho(-(DIM / 2), DIM / 2, DIM / 2, -(DIM / 2), -(DIM * 6), DIM * 6); turble.camera(DIM, DIM, (DIM / 2) / p.tan(p.PI / 6.8), 0, 0, 0, 0, 1, 0); if (decPairs[20] >= 180 && decPairs[20] < 245 && metadataObj.Style != "Spectral") { ctx = turble; if (metadataObj.Palette == "Hero" && metadataObj.Style == "Spectral") { turble.background(clr[4] + "99"); } else if (metadataObj.Palette == "Smart") { turble.background(clr[4]); } else if (metadataObj.Palette == "Funken" || metadataObj.Palette == "Dupont" || metadataObj.Palette == "Spritz") { turble.background(clr[1] + "99"); } else if (metadataObj.Palette == "Monochrome" || metadataObj.Palette == "Villain") { turble.background(clr[3] + "99"); } else { turble.background(clr[2] + "99"); } turble.noStroke(); turble.texture(frame); turble.rotateX(40); turble.rotateZ(p.random(1, 3)); turble.sphere(DIM / 3, 500, 500); } else if (decPairs[20] >= 245) { ctx = turble; if (metadataObj.Palette == "Smart" || metadataObj.Palette == "Monochrome") { turble.background(clr[2]); turble.stroke(clr[2]); } else { turble.background(clr[1]); turble.stroke(clr[1]); } turble.strokeWeight(10 * turble.pixelDensity()); turble.texture(frame); turble.box(DIM / 2, DIM / 2, DIM / 2); } render.image(ctx, 0, 0, inDIM, inDIM); render.blendMode(p.SOFT_LIGHT); render.background(60); save = render; p.redraw(); } p.draw = () => { p.image(render, 0, 0, DIM, DIM); p.noLoop(); render.remove(); turble.remove(); frame.remove(); ctx.remove(); render = null; turble = null; frame = null; ctx = null; } ```
unknown sendersent to0x499f4943…3001·#13,964,643·view on Etherscan
H0x92c23775f6559d3392562c6bfd4e74c27d098f36b8584553f3716fdf1aa9b5a6# Ethereal Phase An exploration between contrasting polarities and equilibrium inspired by electromagnetic waves. Each 'Ethereal Phase' is unique to the transaction that generated it. ## ![](https://bafkreibmkflzrvjutwgw3tmtqchqpz7foelezjrcwaurw4uuhvxpscqmyi.ipfs.dweb.link/) | Artist | [Audivit](https://audivit.xyz/) | |:------------|:-----------| | **Editions** | 500 | | **Editions License** | [NIFTY](https://www.nftlicense.org/) | | **Code License** | [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) | ## Metadata | Attribute | Possible Values | |:------------|:-----------| | Style | Ethereal, Spectral | | Context | Frame, Marble, Turbine | | Palette | Hero, Smart, Dupont, Funken, Spritz, Decca, Villain, Monochrome | | Crest | 0% to 100% - Amplitude detail | | Frequency | 0% to 100% - Wave cycles | | Flux | 0% to 100% - Wave flow force | | Asymmetry | 0% to 100% - Skew of shadow wave | | Compression | 0% to 100% - Max amplitude and wave border dimension | ## Extra Features | Input | Action | |:------------|:-----------| | Press key [ **s** ] | Save high resolution 5000x5000 pixels file | ## Source Code ``` let decPairs, TX, TXN, EID, DIM, inDIM, WIDTH, HEIGHT, frame, seed, palette, clr, ctx, turble, save; let metadataObj = {}; getHashData = (transactionID) => { let transactions = [TX]; let transactionForTokenId = transactionID - 1; let tokenData = { hash: transactions[transactionForTokenId] }; decPairs = []; for (let i = 0; i < 32; i++) { decPairs.push(parseInt(tokenData.hash.substr(2 * i + 2, 2), 16)); } } printMetadata = () => { if (decPairs[29] <= 170) { metadataObj.Style = "Ethereal"; } else { metadataObj.Style = "Spectral"; } if (decPairs[20] >= 180 && decPairs[20] < 245 && metadataObj.Style != "Spectral") { metadataObj.Context = "Marble"; } else if (decPairs[20] >= 245) { metadataObj.Context = "Turbine"; } else { metadataObj.Context = "Frame"; } metadataObj.Palette = clr[0]; metadataObj.Crest = p.round(p.map(decPairs[9], 0, 255, 1, 100)) + "%"; metadataObj.Frequency = p.round(p.map(decPairs[15], 0, 255, 1, 100)) + "%"; metadataObj.Flux = p.round(p.map(decPairs[4], 0, 255, 1, 100)) + "%"; metadataObj.Asymmetry = p.round(p.map(decPairs[6], 0, 255, 1, 100)) + "%"; metadataObj.Compression = p.round(p.map(decPairs[7], 0, 255, 1, 100)) + "%"; metadataObj.transactionHash = TX; console.log("metadata: ", metadataObj); } p.myCustomRedrawAccordingToNewPropsHandler = (props) => { p.keyTyped = () => { if (p.keyCode === 83 && props.square == 1) { save.save("Ethereal Phase #" + EID + ".tif"); } } if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; if (props.square > 1) { WIDTH = p.windowWidth / props.square * 0.7; HEIGHT = p.windowHeight / props.square * 0.7; } else { WIDTH = p.windowWidth / props.square * 0.9; HEIGHT = p.windowHeight / props.square * 0.9; } DIM = Math.min(WIDTH, HEIGHT); inDIM = 1000; getHashData(1); p.randomSeed(+props.transactionHash.substr(0, 10)); seed = p.random(0, 255); p.noiseSeed(seed); p.createCanvas(DIM, DIM); turble = p.createGraphics(inDIM, inDIM, p.WEBGL) turble.smooth(); turble.setAttributes("alpha", true); turble.setAttributes("antialias", true); render = p.createGraphics(inDIM, inDIM); frame = p.createGraphics(inDIM, inDIM, p.WEBGL); frame.setAttributes("alpha", false); frame.setAttributes("antialias", true); frame.smooth(); frame.rectMode(p.CENTER); let crest = p.map(decPairs[9], 0, 255, 1.0, 4.0); let frequency = p.map(decPairs[15], 0, 255, 3.0, 5.0); let flux = p.map(decPairs[4], 0, 255, 1.3, 1.4); let asymmetry = p.map(decPairs[6], 0, 255, 1.0, 1.1); let compression = p.map(decPairs[7], 0, 255, 0.3, 0.6); if (decPairs[29] <= 170) { pal5 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"]; pal2 = ["Smart", "#FAF9EF", "#00ADB5", "#FAF9EF", "#7DD3D3"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FAF9EF", "#03506F"]; pal4 = ["Spritz", "#FF7869", "#FFC57E", "#FAF9EF", "#FFC57E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal7 = ["Villain", "#28FFBF", "#101010", "#28FFBF", "#28FFBF"]; pal8 = ["Monochrome", "#FAF9EF", "#101010", "#FAF9EF", "#FAF9EF"]; } else { pal2 = ["Hero", "#03506F", "#03506F", "#FAF9EF", "#FF2442"]; pal1 = ["Hero", "#03506F", "#03506F", "#FAF9EF", "#FF2442"]; pal4 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FAF9EF", "#FF2442"]; pal7 = ["Funken", "#4E3D53", "#FFB200", "#FAF9EF", "#FFB200"]; pal8 = ["Decca", "#7F616D", "#FF4D6E", "#FAF9EF", "#FF4D6E"];; } let PLT = []; for (let clrArr = 0; clrArr <= 512; clrArr++) { let count = "pal" + p.round(p.random(1, 8)); PLT.push(count); } palette = p.round(p.random(512)); clr = eval(PLT[palette]); printMetadata(); if (props.square > 1) { turble.pixelDensity(0.5); render.pixelDensity(0.5); frame.pixelDensity(0.5); } else if (props.square == 1 && p.displayWidth < p.displayHeight) { turble.pixelDensity(1); render.pixelDensity(1); frame.pixelDensity(1); } else { p.pixelDensity(p.displayDensity() + 1); turble.pixelDensity(5); render.pixelDensity(5); frame.pixelDensity(5); } frame.background(clr[1]); p.noiseDetail(crest); frame.noFill(); frame.strokeWeight(inDIM / 70); frame.rectMode(p.CENTER); if (decPairs[20] < 245 && metadataObj.Context != "Marble") { frame.rect(0, 0, inDIM, inDIM); } frame.translate(-inDIM * 0.35, -inDIM * 0.35, -inDIM / 2); frame.push(); frame.translate(-inDIM * 1.5, 0, 0); frame.beginShape(p.TRIANGLE_STRIP); for (let x = inDIM / 5.5; x < inDIM * 3.5; x += 0.5) { let nx = p.map(x, 100, -inDIM, frequency, 0); let y = inDIM * 0.95 * p.noise(nx / 2); let z = inDIM + p.noise(nx / 2); frame.strokeWeight(inDIM * 0.06); frame.stroke(0, 20); frame.fill(clr[2]); frame.vertex(x, y, 0); if (decPairs[29] <= 170) { if (decPairs[20] >= 245 && metadataObj.Palette == "Monochrome" || metadataObj.Palette == "Smart") { frame.background(clr[2]); } else { frame.background(clr[1]); } frame.stroke(clr[1] + "20"); if (decPairs[20] >= 245) { frame.strokeWeight(1); frame.vertex(x, y * 0.03, 0); frame.vertex(x / (asymmetry * 1.1), y * compression * 3, 0); } else { frame.strokeWeight(1); frame.vertex(x, y * 0.03, 0); frame.vertex(x / (asymmetry * 1.1), y * compression * 2, 0); } } else { frame.noFill(); frame.stroke(clr[4] + "30") frame.strokeWeight(0.5); frame.vertex(x * flux, z / 3, 0); if (decPairs[20] >= 245) { frame.vertex(x, y * 1.5, 0); } else { frame.vertex(x, y * 0.4, 0); } frame.vertex(x / asymmetry, y * compression, 0); } } frame.endShape(); frame.pop(); if (decPairs[20] >= 245 && metadataObj.Palette == "Villain") { frame.fill(clr[2]); } else { frame.fill(clr[3]); } frame.noStroke(); if (decPairs[29] <= 170) { frame.translate(0, inDIM * 0.3, -(inDIM * 0.2)); frame.rect(inDIM / 3, inDIM * 1.75, inDIM * 2, inDIM * 4); frame.fill(clr[2]); frame.rect(inDIM / 3, inDIM * 0.05, inDIM * 2, inDIM * 0.75); } else { frame.translate(0, -2, -(inDIM * 0.2)); frame.rect(inDIM / 3, inDIM * 0.833, inDIM * 2, inDIM); frame.fill(clr[1]); frame.rect(inDIM / 3, inDIM * 0.83, inDIM * 2, inDIM); frame.fill(0, 80); frame.rect(inDIM / 3, inDIM * 0.83, inDIM * 2, inDIM); } } ctx = frame; turble.ortho(-(DIM / 2), DIM / 2, DIM / 2, -(DIM / 2), -(DIM * 6), DIM * 6); turble.camera(DIM, DIM, (DIM / 2) / p.tan(p.PI / 6.8), 0, 0, 0, 0, 1, 0); if (decPairs[20] >= 180 && decPairs[20] < 245 && metadataObj.Style != "Spectral") { ctx = turble; if (metadataObj.Palette == "Hero" && metadataObj.Style == "Spectral") { turble.background(clr[4] + "99"); } else if (metadataObj.Palette == "Smart") { turble.background(clr[4]); } else if (metadataObj.Palette == "Funken" || metadataObj.Palette == "Dupont" || metadataObj.Palette == "Spritz") { turble.background(clr[1] + "99"); } else if (metadataObj.Palette == "Monochrome" || metadataObj.Palette == "Villain") { turble.background(clr[3] + "99"); } else { turble.background(clr[2] + "99"); } turble.noStroke(); turble.texture(frame); turble.rotateX(40); turble.rotateZ(p.random(1, 3)); turble.sphere(DIM / 3, 500, 500); } else if (decPairs[20] >= 245) { ctx = turble; if (metadataObj.Palette == "Smart" || metadataObj.Palette == "Monochrome") { turble.background(clr[2]); turble.stroke(clr[2]); } else { turble.background(clr[1]); turble.stroke(clr[1]); } turble.strokeWeight(10 * turble.pixelDensity()); turble.texture(frame); turble.box(DIM / 2, DIM / 2, DIM / 2); } render.image(ctx, 0, 0, inDIM, inDIM); render.blendMode(p.SOFT_LIGHT); render.background(60); save = render; p.redraw(); } p.draw = () => { p.image(render, 0, 0, DIM, DIM); p.noLoop(); render.remove(); turble.remove(); frame.remove(); ctx.remove(); render = null; turble = null; frame = null; ctx = null; } ```