0x71da…0c28

All memos sent from and to 0x71da…0c28.

Ethereal Phasestyle.immutables.artbody { color: #606060; background-color: #d9d9d9; } .bg-light { background-color: #d9d9d9!important; } .btn-outline-secondary:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-outline-secondary:focus { box-shadow: none; } .btn:focus { outline: 0; box-shadow: none; } .btn-success { background-color: #323232; border-color: #323232; } .btn-secondary { color: #d9d9d9; background-color: #323232; border-color: #323232; } .btn-secondary:hover { color: #fff; background-color: #323232; border-color: #323232; } .btn-secondary:not(:disabled):not(.disabled):active { color: #fff; background-color: #323232; border-color: #323232; } .btn-outline-warning { color: #ff0000; border-color: #ff0000; } .btn-outline-warning:hover { color: #ff0000; background-color: #d9d9d9; border-color: #ff0000; } .btn-outline-warning:not(:disabled):not(.disabled):active { color: #ff0000; background-color: #d9d9d9; border-color: #ff0000; } .btn-outline-warning:focus { box-shadow: none; } .btn-outline-success { color: #fff; background-color: #28a745; border-color: #28a745; } .row { margin-right: -15px; margin-left: -15px; margin-bottom: -20px; } .center { margin: auto; text-align: center; } .btn-success:focus { color: #fff; background-color: #323232; border-color: #323232; } .btn-secondary:focus { color: #fff; background-color: #323232; border-color: #323232; } .btn-outline-secondary:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn:not(:disabled):not(.disabled) { font-weight: bold; } .modal-header { border-bottom: 0; } .modal-footer { align-items: center; justify-content: center; border-top: 0; } .modal-content { background-color: #222222f7; } .d-flex { color: #b1b1b1; } .table td { border-top: 1px solid #404040; } .table { width: 100%; margin-bottom: 0; color: #a8a8a8; } .btn-warning { color: #606060; background-color: #0000; border-color: #0000; } .btn-warning:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-warning:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-warning:focus { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .form-control { display: block; color: #909090; background-color: #32323200; border: 1px solid #606060; } .form-control:focus { color: #707070; background-color: #32323200; border-color: #808080; outline: 0; box-shadow: none; } .form-group { padding-left: 7.5%; padding-right: 7.5%; } .nav-tabs .nav-link.active { color: #d9d9d9; background-color: #0000; border-color: #d9d9d9 #d9d9d9 #d9d9d9; } a { color: #959595; background-color: transparent; } a:hover { color: #d9d9d9; } b, strong { font-weight: bolder; } p { margin-top: 20px; } .input-group-text { align-items: center; color: #a9a9a9; text-align: center; background-color: #0000; border: 0; } .input-group>.form-control:not(:first-child) { background-color: #0000; } .form-check { color: #606060; } .form-check-input:disabled~.form-check-label, .form-check-input[disabled]~.form-check-label { color: #606060; } .table-bordered td { border: 1px solid #404040; } .table-bordered th { border: 1px solid #404040; } .nav-tabs .nav-link.active { color: #d9d9d9; background-color: #0000; border-color: #d9d9d9 #d9d9d9 #d9d9d9; } .h4 { color: #d9d9d9; } .close { color: #d9d9d9; } .close:hover { color: #fff; } .nav-tabs { border-bottom: 1px solid #666; } .wmde-markdown { color: #606060; } .wmde-markdown a { color: #17a2b8; } .btn-outline-secondary { border-color: #0000; color: #606060 } .btn-info { color: #606060; background-color: #0000; border-color: #0000; } .btn-info:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-info:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-info:focus { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .modal-title { position: absolute; left: 50%; transform: translate(-50%, -50%); margin-top: 2.5%; margin-right: -30%; } .gridTable { margin: 3vh auto 0; } @keyframes grid { from {margin: -197px;} to {margin: 0px;} } @keyframes detail { from {opacity: 0;} to {opacity: 1;} } .cell {padding: 3vmin; animation-name: grid; animation-duration: 1s;} .cell.selected {animation-name: detail; animation-duration: 2s;}
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; } ```
Ethereal Phasestyle.immutables.artbody { color: #606060; background-color: #d9d9d9; } .bg-light { background-color: #d9d9d9!important; } .btn-outline-secondary:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-outline-secondary:focus { box-shadow: none; } .btn:focus { outline: 0; box-shadow: none; } .btn-success { background-color: #323232; border-color: #323232; } .btn-secondary { color: #d9d9d9; background-color: #323232; border-color: #323232; } .btn-secondary:hover { color: #fff; background-color: #323232; border-color: #323232; } .btn-secondary:not(:disabled):not(.disabled):active { color: #fff; background-color: #323232; border-color: #323232; } .btn-outline-warning { color: #ff0000; border-color: #ff0000; } .btn-outline-warning:hover { color: #ff0000; background-color: #d9d9d9; border-color: #ff0000; } .btn-outline-warning:not(:disabled):not(.disabled):active { color: #ff0000; background-color: #d9d9d9; border-color: #ff0000; } .btn-outline-warning:focus { box-shadow: none; } .btn-outline-success { color: #fff; background-color: #28a745; border-color: #28a745; } .row { margin-right: -15px; margin-left: -15px; margin-bottom: -20px; } .center { margin: auto; text-align: center; transform: scale(0.9) translateY(-40px); } .btn-success:focus { color: #fff; background-color: #323232; border-color: #323232; } .btn-secondary:focus { color: #fff; background-color: #323232; border-color: #323232; } .btn-outline-secondary:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn:not(:disabled):not(.disabled) { font-weight: bold; } .modal-header { border-bottom: 0; } .modal-footer { align-items: center; justify-content: center; border-top: 0; } .modal-content { background-color: #222222f7; } .d-flex { color: #b1b1b1; } .table td { border-top: 1px solid #404040; } .table { width: 100%; margin-bottom: 0; color: #a8a8a8; } .btn-warning { color: #606060; background-color: #0000; border-color: #0000; } .btn-warning:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-warning:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-warning:focus { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .form-control { display: block; color: #909090; background-color: #32323200; border: 1px solid #606060; } .form-control:focus { color: #707070; background-color: #32323200; border-color: #808080; outline: 0; box-shadow: none; } .form-group { padding-left: 7.5%; padding-right: 7.5%; } .nav-tabs .nav-link.active { color: #d9d9d9; background-color: #0000; border-color: #d9d9d9 #d9d9d9 #d9d9d9; } a { color: #959595; background-color: transparent; } a:hover { color: #d9d9d9; } b, strong { font-weight: bolder; } p { margin-top: 20px; } .input-group-text { align-items: center; color: #a9a9a9; text-align: center; background-color: #0000; border: 0; } .input-group>.form-control:not(:first-child) { background-color: #0000; } .form-check { color: #606060; } .form-check-input:disabled~.form-check-label, .form-check-input[disabled]~.form-check-label { color: #606060; } .table-bordered td { border: 1px solid #404040; } .table-bordered th { border: 1px solid #404040; } .nav-tabs .nav-link.active { color: #d9d9d9; background-color: #0000; border-color: #d9d9d9 #d9d9d9 #d9d9d9; } .h4 { color: #d9d9d9; } .close { color: #d9d9d9; } .close:hover { color: #fff; } .nav-tabs { border-bottom: 1px solid #666; } .wmde-markdown { color: #606060; } .wmde-markdown a { color: #17a2b8; } .btn-outline-secondary { border-color: #0000; color: #606060 } .btn-info { color: #606060; background-color: #0000; border-color: #0000; } .btn-info:hover { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-info:not(:disabled):not(.disabled):active { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .btn-info:focus { color: #17a2b8; background-color: #0000; border-color: #17a2b8; } .modal-title { position: absolute; left: 50%; transform: translate(-50%, -50%); margin-top: 2.5%; margin-right: -30%; }
Ethereal Phase# 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://bafkreihnyjputow7ckglqig7nytlupvb6zpq7b7h3fkgdkezwa22gq7mym.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, Glitch, Spectral | | 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 | Dwell Before Bang | Time delay based on transaction hash | | Compression | 0% to 100% / Max amplitude and wave border dimension | ## Extra Features | Input | Action | |:------------|:-----------| | Press key [ **s** ] | Save high resolution 4000x4000 pixels file | ## Source Code ``` let decPairs, TX, TXN, EID, DIM, inDIM, WIDTH, HEIGHT, render, seed, palette, clr; let pal1, pal2, pal3, pal4, pal5, pal6, pal7, pal8; 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 if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { metadataObj.Style = "Glitch"; } else { metadataObj.Style = "Spectral"; } 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, 100, 1)) + "%"; 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("transaction: ", metadataObj.transactionHash); console.log("metadata: ", metadataObj); } p.keyTyped = () => { if (p.keyCode === 83) { render.save("Ethereal Phase #" + EID + ".tif"); } } p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; 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); p.pixelDensity(2); render = p.createGraphics(inDIM, inDIM, p.WEBGL); render.setAttributes("alpha", false); render.setAttributes("antialias", true); render.pixelDensity(4); render.smooth(); render.rectMode(p.CENTER); let crest = p.map(decPairs[9], 0, 255, 1.0, 5.0); let frequency = p.map(decPairs[15], 0, 255, 2.0, 5.0); let flux = p.map(decPairs[4], 0, 255, 1.3, 1.5); let asymmetry = p.map(decPairs[6], 0, 255, 1.0, 1.2); let compression = p.map(decPairs[7], 0, 255, 0.3, 0.6); if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { pal2 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal1 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal4 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal8 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; } else if (decPairs[29] <= 170) { pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal2 = ["Smart", "#FFF9F0", "#00ADB5", "#FFF9F0", "#030303"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Spritz", "#FF7869", "#FFC57E", "#FFF9F0", "#FFC57E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Villain", "#28FFBF", "#030303", "#28FFBF", "#28FFBF"]; pal8 = ["Monochrome", "#FFF9F0", "#101010", "#FFF9F0", "#FFF9F0"]; } else { pal2 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal8 = ["Monochrome", "#FFF9F0", "#FFF9F0", "#FFF9F0", "#030303"]; } let PLT = [ pal1, pal1, pal1, pal1, pal2, pal2, pal2, pal2, pal3, pal3, pal3, pal3, pal4, pal4, pal4, pal4, pal5, pal5, pal5, pal5, pal6, pal6, pal6, pal6, pal7, pal7, pal7, pal7, pal8, pal8, pal8, pal8, ]; palette = p.round(p.map(decPairs[20], 1, 255, 0, 31)); clr = PLT[palette]; printMetadata(); console.log("noise_seed: ", seed); render.background(clr[1]); p.noiseDetail(crest); render.noFill(); render.strokeWeight(inDIM / 70); render.rectMode(p.CENTER); render.rect(0, 0, inDIM, inDIM); render.translate(-inDIM * 0.35, -inDIM * 0.35, -inDIM / 2); render.push(); render.translate(-inDIM * 0.7, 0, 0); render.beginShape(); for (let x = inDIM/5.5; x < inDIM*2.5; x++) { 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); render.strokeWeight(inDIM * 0.06); render.stroke(0, 20); render.fill(clr[2]); render.vertex(x, y, 0); if (decPairs[29] <= 170) { render.background(clr[1]); render.strokeWeight(4); render.stroke(clr[1]+"20"); render.vertex(x * flux / 2, y / 3, -1000); render.vertex(x, y * 0.09, 0.0001); render.vertex(x / asymmetry, y * compression * 2, 0.0001); } else if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { render.background(clr[1]); render.vertex(x * flux, z / 3, 0.2); render.fill(p.random(clr)); render.strokeWeight(2); render.vertex(x, y * 0.3, 0.0001); render.vertex(x, y * compression / 1.5, 0.0001); } else { render.noFill(); render.stroke(clr[4] + "30") render.strokeWeight(2); render.vertex(x * flux, z / 3, 0); render.vertex(x, y * 0.4, 0); render.vertex(x / asymmetry, y * compression, 0); } } render.endShape(); render.pop(); render.fill(clr[3]); render.noStroke(); if( decPairs[29] <= 170){ render.translate(0, inDIM*0.3, -200); render.rect(inDIM / 3, inDIM * 1.75, inDIM * 2, inDIM * 4); } else { render.translate(0, -2, -200); render.rect(inDIM / 3, inDIM * 0.833, inDIM * 2, inDIM); } } p.redraw(); } p.draw = () => { p.image(render, 0, 0, DIM, DIM); p.noLoop(); } ```
Ethereal Phase# 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://bafkreihnyjputow7ckglqig7nytlupvb6zpq7b7h3fkgdkezwa22gq7mym.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, Glitch, Spectral | | 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 | Dwell Before Bang | Time delay based on transaction hash | | Compression | 0% to 100% / Max amplitude and wave border dimension | ## Extra Features | Input | Action | |:------------|:-----------| | Press key [ **s** ] | Save high resolution 4000x4000 pixels file | ## Source Code ``` let decPairs, TX, TXN, EID, DIM, inDIM, WIDTH, HEIGHT, render, seed, palette, clr; let pal1, pal2, pal3, pal4, pal5, pal6, pal7, pal8; 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 if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { metadataObj.Style = "Glitch"; } else { metadataObj.Style = "Spectral"; } 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, 100, 1)) + "%"; 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("transaction: ", metadataObj.transactionHash); console.log("metadata: ", metadataObj); } p.keyTyped = () => { if (p.keyCode === 83) { render.save("Ethereal Phase #" + EID + ".tif"); } } p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); inDIM = 1000; getHashData(1); p.randomSeed(+props.transactionHash.substr(0, 10)); seed = p.random(0, 256); p.noiseSeed(seed); p.createCanvas(DIM, DIM); p.pixelDensity(2); render = p.createGraphics(inDIM, inDIM, p.WEBGL); render.setAttributes("alpha", false); render.setAttributes("antialias", true); render.pixelDensity(4); render.smooth(); render.rectMode(p.CENTER); let crest = p.map(decPairs[9], 0, 255, 1.0, 5.0); let frequency = p.map(decPairs[15], 0, 255, 2.0, 5.0); let flux = p.map(decPairs[4], 0, 255, 1.3, 1.5); let asymmetry = p.map(decPairs[6], 0, 255, 1.0, 1.2); let compression = p.map(decPairs[7], 0, 255, 0.3, 0.6); if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { pal2 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal1 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal4 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal8 = ["Decca", "#FFF9F0", "#FF4D6E", "#7F616D", "#FF4D6E"]; } else if (decPairs[29] <= 170) { pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal2 = ["Smart", "#FFF9F0", "#00ADB5", "#FFF9F0", "#030303"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Spritz", "#FF7869", "#FFC57E", "#FFF9F0", "#FFC57E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Villain", "#28FFBF", "#030303", "#28FFBF", "#28FFBF"]; pal8 = ["Monochrome", "#FFF9F0", "#101010", "#FFF9F0", "#FFF9F0"]; } else { pal2 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal8 = ["Monochrome", "#FFF9F0", "#FFF9F0", "#FFF9F0", "#030303"]; } let PLT = [ pal1, pal1, pal1, pal1, pal2, pal2, pal2, pal2, pal3, pal3, pal3, pal3, pal4, pal4, pal4, pal4, pal5, pal5, pal5, pal5, pal6, pal6, pal6, pal6, pal7, pal7, pal7, pal7, pal8, pal8, pal8, pal8, ]; palette = p.round(p.map(decPairs[20], 1, 255, 0, 31)); clr = PLT[palette]; printMetadata(); console.log("noise_seed: ", seed); render.background(clr[1]); p.noiseDetail(crest); render.noFill(); render.strokeWeight(inDIM / 70); render.rectMode(p.CENTER); render.rect(0, 0, inDIM, inDIM); render.translate(-inDIM * 0.35, -inDIM * 0.35, -inDIM / 2); render.push(); render.translate(-inDIM * 0.7, 0, 0); render.beginShape(); for (let x = inDIM/5.5; x < inDIM*2.5; x++) { 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); render.strokeWeight(inDIM * 0.06); render.stroke(0, 20); render.fill(clr[2]); render.vertex(x, y, 0); if (decPairs[29] <= 170) { if (metadataObj.Palette === "Villain") { render.background(clr[3]); } else { render.background(clr[1]); } render.strokeWeight(4); render.stroke(clr[1]+"20"); render.vertex(x * flux / 2, y / 3, -1000); render.vertex(x, y * 0.09, 0.0001); render.vertex(x / asymmetry, y * compression * 2, 0.0001); } else if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { render.background(clr[1]); render.vertex(x * flux, z / 3, 0.2); render.fill(p.random(clr)); render.strokeWeight(2); render.vertex(x, y * 0.3, 0.0001); render.vertex(x, y * compression / 1.5, 0.0001); } else { render.noFill(); render.stroke(clr[4] + "30") render.strokeWeight(2); render.vertex(x * flux, z / 3, 0); render.vertex(x, y * 0.4, 0); render.vertex(x / asymmetry, y * compression, 0); } } render.endShape(); render.pop(); render.fill(clr[3]); render.noStroke(); if( decPairs[29] <= 170){ render.translate(0, inDIM*0.3, -200); render.rect(inDIM / 3, inDIM * 1.75, inDIM * 2, inDIM * 4); } else { render.translate(0, -2, -200); render.rect(inDIM / 3, inDIM * 0.833, inDIM * 2, inDIM); } } p.redraw(); } p.draw = () => { p.image(render, 0, 0, DIM, DIM); p.noLoop(); } ```
Ethereal PhaseAudivitAn exploration between contrasting polarities and equilibrium inspired by electromagnetic waves. Each 'Ethereal Phase' is unique to the transaction that generated it. Created by Audivit.0x73c91dc6f8a8f5a825eafbb2dfbf33f83dda6500af610c55caa15e8bab12c72dp5js
Ethereal Phase# 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://bafkreihnyjputow7ckglqig7nytlupvb6zpq7b7h3fkgdkezwa22gq7mym.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, Glitch, Spectral | | 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 | Dwell Before Bang | Time delay based on transaction hash | | Compression | 0% to 100% / Max amplitude and wave border dimension | ## Extra Features | Input | Action | |:------------|:-----------| | Press key [ **s** ] | Save high resolution 4000x4000 pixels file | ## Source Code ``` let decPairs, TX, TXN, EID, DIM, inDIM, WIDTH, HEIGHT, render, seed, palette, clr; let pal1, pal2, pal3, pal4, pal5, pal6, pal7, pal8; 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] <= 150) { metadataObj.Style = "Ethereal"; } else if (decPairs[29] > 200 && decPairs[5] <= 150 && decPairs[10] >= 100) { metadataObj.Style = "Glitch"; } else { metadataObj.Style = "Spectral"; } 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, 100, 1)) + "%"; 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("transaction: ", metadataObj.transactionHash); console.log("metadata: ", metadataObj); } p.keyTyped = () => { if (p.keyCode === 83) { render.save("Ethereal Phase #" + EID + ".tif"); } } p.myCustomRedrawAccordingToNewPropsHandler = (props) => { if (props.transactionHash && props.square) { TX = props.transactionHash; TXN = props.tokenId; EID = props.editionId; WIDTH = window.innerWidth / props.square * 0.8; HEIGHT = window.innerHeight / props.square * 0.8; DIM = Math.min(WIDTH, HEIGHT); inDIM = 1000; getHashData(1); p.randomSeed(+props.transactionHash.substr(0, 10)); seed = p.random(0, 256); p.noiseSeed(seed); p.createCanvas(DIM, DIM); p.pixelDensity(2); render = p.createGraphics(inDIM, inDIM, p.WEBGL); render.setAttributes("alpha", false); render.setAttributes("antialias", true); render.pixelDensity(4); render.smooth(); render.rectMode(p.CENTER); let crest = p.map(decPairs[9], 0, 255, 1.0, 5.0); let frequency = p.map(decPairs[15], 0, 255, 2.0, 5.0); let flux = p.map(decPairs[4], 0, 255, 1.3, 1.5); let asymmetry = p.map(decPairs[6], 0, 255, 1.0, 1.2); let compression = p.map(decPairs[7], 0, 255, 0.3, 0.6); if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { pal2 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal1 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal4 = ["Villain", "#FFF9F0", "#28FFBF", "#28FFBF", "#030303"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Hero", "#03506F", "#FF2442", "#FFF9F0", "#03506F"]; pal8 = ["Decca", "#FFF9F0", "#FF4D6E", "#7F616D", "#FF4D6E"]; } else if (decPairs[29] <= 170) { pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal2 = ["Smart", "#FFF9F0", "#00ADB5", "#FFF9F0", "#030303"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Spritz", "#FF7869", "#FFC57E", "#FFF9F0", "#FFC57E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Villain", "#28FFBF", "#030303", "#28FFBF", "#28FFBF"]; pal8 = ["Monochrome", "#FFF9F0", "#101010", "#FFF9F0", "#FFF9F0"]; } else { pal2 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal1 = ["Hero", "#FF2442", "#03506F", "#FFF9F0", "#03506F"]; pal4 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal5 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal6 = ["Decca", "#7F616D", "#FF4D6E", "#FFF9F0", "#FF4D6E"]; pal3 = ["Dupont", "#6D9598", "#FF2442", "#FFF9F0", "#FF2442"]; pal7 = ["Funken", "#4E3D53", "#FFB200", "#FFF9F0", "#FFB200"]; pal8 = ["Monochrome", "#FFF9F0", "#FFF9F0", "#FFF9F0", "#030303"]; } let PLT = [ pal1, pal1, pal1, pal1, pal2, pal2, pal2, pal2, pal3, pal3, pal3, pal3, pal4, pal4, pal4, pal4, pal5, pal5, pal5, pal5, pal6, pal6, pal6, pal6, pal7, pal7, pal7, pal7, pal8, pal8, pal8, pal8, ]; palette = p.round(p.map(decPairs[20], 1, 255, 0, 31)); clr = PLT[palette]; printMetadata(); console.log("noise_seed: ", seed); render.background(clr[1]); p.noiseDetail(crest); render.noFill(); render.strokeWeight(inDIM / 70); render.rectMode(p.CENTER); render.rect(0, 0, inDIM, inDIM); render.translate(-inDIM * 0.35, -inDIM * 0.35, -inDIM / 2); render.push(); render.translate(-inDIM * 0.7, 0, 0); render.beginShape(); for (let x = inDIM/5.5; x < inDIM*2.5; x++) { 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); render.strokeWeight(inDIM * 0.06); render.stroke(0, 20); render.fill(clr[2]); render.vertex(x, y, 0); if (decPairs[29] <= 170) { if (metadataObj.Palette === "Villain") { render.background(clr[3]); } else { render.background(clr[1]); } render.strokeWeight(4); render.stroke(clr[1]+"20"); render.vertex(x * flux / 2, y / 3, -1000); render.vertex(x, y * 0.09, 0.0001); render.vertex(x / asymmetry, y * compression * 2, 0.0001); } else if (decPairs[29] > 220 && decPairs[5] <= 150 && decPairs[10] >= 100) { render.background(clr[1]); render.vertex(x * flux, z / 3, 0.2); render.fill(p.random(clr)); render.strokeWeight(2); render.vertex(x, y * 0.3, 0.0001); render.vertex(x, y * compression / 1.5, 0.0001); } else { render.noFill(); render.stroke(clr[4] + "30") render.strokeWeight(2); render.vertex(x * flux, z / 3, 0); render.vertex(x, y * 0.4, 0); render.vertex(x / asymmetry, y * compression, 0); } } render.endShape(); render.pop(); render.fill(clr[3]); render.noStroke(); if( decPairs[29] <= 170){ render.translate(0, inDIM*0.3, -200); render.rect(inDIM / 3, inDIM * 1.75, inDIM * 2, inDIM * 4); } else { render.translate(0, -2, -200); render.rect(inDIM / 3, inDIM * 0.833, inDIM * 2, inDIM); } } p.redraw(); } p.draw = () => { p.image(render, 0, 0, DIM, DIM); p.noLoop(); } ```