memoscan
← all memos

Memo 0xcc17c670…f16323 on Ethereum

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>timetunnel_v2</title><script>window.__loadP5Fallback=async function(){var t=document.createElement("div");t.id="__p5fallback_status",t.style.cssText="position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#000;color:rgba(0,255,65,0.6);font-family:monospace;font-size:12px;z-index:99999;text-align:center;line-height:1.6;padding:24px;",t.textContent="cdn p5.js failed. trying on-chain fallback...",(document.body||document.documentElement).appendChild(t);try{var e=["https://ethereum-rpc.publicnode.com","https://eth.drpc.org","https://eth.llamarpc.com"];function n(t){return t.toString(16).padStart(64,"0")}async function r(t){var r=await async function(t,n){var r=[{to:t,data:n},"latest"];if(window.ethereum)try{if(i=await window.ethereum.request({method:"eth_call",params:r}))return i}catch(t){}for(var a=0;a<e.length;a++)try{var i=await fetch(e[a],{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",method:"eth_call",params:r,id:1})}),c=await i.json();if(c.result&&"0x"!==c.result)return c.result}catch(t){}return null}("0xFe1411d6864592549AdE050215482e4385dFa0FB","0x60f9bb11"+function(t){for(var e=(new TextEncoder).encode(t),r="",a=0;a<e.length;a++)r+=e[a].toString(16).padStart(2,"0");for(;r.length%64;)r+="0";return n(32)+n(e.length)+r}(t));if(!r||"0x"===r||r.length<130)return null;var a=parseInt(r.slice(66,130),16);return a?function(t){t.startsWith("0x")&&(t=t.slice(2));for(var e=new Uint8Array(t.length/2),n=0;n<t.length;n+=2)e[n/2]=parseInt(t.substr(n,2),16);return(new TextDecoder).decode(e)}(r.slice(130,130+2*a)):null}var a=await r("gunzipScripts-0.0.1.js"),i=await r("p5-v1.5.0.min.js.gz");if(!a||!i)throw new Error("ethfs read returned empty");var c=document.createElement("script");c.id="__gunzip",c.textContent=a,document.head.appendChild(c);var o=document.createElement("script");o.type="text/javascript+gzip",o.src="data:text/javascript;base64,"+i,document.head.appendChild(o),window.gunzipScripts(),t.remove()}catch(s){t.innerHTML='the tunnel exists between two mirrors<br>but both mirrors are dark<br><br>nothing to reflect<br><br><span style="opacity:0.3;font-size:10px">[p5.js cdn + on-chain ethfs fallback both unreachable]</span>'}}</script><script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.0/p5.min.js" onerror="window.__loadP5Fallback()"></script><style>*{margin:0;padding:0;box-sizing:border-box}body,html{width:100%;height:100%;overflow:hidden;background:#000;display:flex;justify-content:center;align-items:center}canvas{display:block}#loading-overlay{position:fixed;bottom:20px;left:20px;z-index:9999;transition:opacity .8s ease-out;pointer-events:none}#loading-overlay.hidden{opacity:0}#loading-content{font-family:'Courier New',monospace;color:rgba(255,255,255,.4);text-align:left;font-size:11px;line-height:1.4}.load-line{opacity:0;animation:fadeIn .2s ease-out forwards}.load-status{color:rgba(100,255,100,.5)}.load-status.pending{color:rgba(255,255,150,.5)}.load-status.error{color:rgba(255,100,100,.5)}.cursor-blink{animation:blink .8s step-end infinite}@keyframes fadeIn{to{opacity:1}}@keyframes blink{50%{opacity:0}}#tap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3);font:11px "Courier New",monospace;letter-spacing:.2em;cursor:pointer;pointer-events:all;z-index:100000;background:0 0;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}#tap.live{align-items:flex-end;justify-content:flex-end;padding:14px 16px;color:rgba(0,255,65,.35);transition:color .2s}#tap.live:hover{color:rgba(0,255,65,.7)}</style></head><body><div id="loading-overlay"><div id="loading-content"><div class="load-line" style="animation-delay:0s"><span id="status-audio" class="load-status pending">[....]</span> audio</div><div class="load-line" style="animation-delay:.1s"><span id="status-images" class="load-status pending">[....]</span> assets</div><div class="load-line" style="animation-delay:.2s"><span id="status-ready" class="load-status pending">[....]</span> layers</div><div class="load-line" style="animation-delay:.3s"><span id="status-message">> init</span><span class="cursor-blink">_</span></div></div></div><div id="tap">[ tap to begin ]</div><script>const STATE={version:"1.0.0",timestamp:1777725609045,canvasSize:{width:1077,height:698},backgroundColor:"#000000",audio:{isUsingMic:!1,fftSmoothing:.8,beatThreshold:.15,directionalEnabled:!0,sourceUrl:null,tracks:[{id:1,name:"Track 1",url:"https://arweave.net/UQEqwBe9vQzYSbce7nzuawOVa_JoTztTzD_gqW-2QvA",volume:1,isMuted:!1,solo:!1}]},globalFilters:{scope:"layer",activeMainFilter:null,processingFilters:[],postFilters:[],shaderFilters:[]},baseLayer:{type:null,sourceUrl:null,visible:!0,opacity:1,blendMode:"source-over",fitMode:"cover",filters:{mainFilter:null,mainFilterParams:{},processingFilters:[],postFilters:[],shaderFilters:[]}},layers:[{id:1,name:"Directional Playback",componentType:"DirectionalPlayback",componentParams:{controlAudio:!0,controlVideo:!0,showIndicator:!1,indicatorStyle:"arrows",indicatorOpacity:.5,indicatorColor:"#ffffff",splitPosition:.5,smoothTransition:!0,transitionSpeed:.1,arrowCount:3,arrowSize:30,arrowSpeed:.05},visible:!0,opacity:1,blendMode:"source-over",transparencyMode:"none",transparencyThreshold:30,transform:{x:0,y:0,scaleX:1,scaleY:1,rotation:0,anchorX:.5,anchorY:.5},outputEffects:{invertColors:!1,flipX:!1,flipY:!1},filters:{mainFilter:null,mainFilterParams:{},processingFilters:[],postFilters:[],shaderFilters:[]}},{id:2,name:"Temporal Tunnel",componentType:"TemporalTunnel",componentParams:{ringCount:60,segmentCount:48,tunnelRadius:1,focal:400,ringSpacing:1,maxDepth:50,baseSpeed:.6,cursorReverseHalf:!0,audioSpeedMult:1.5,minForwardMotion:.15,cursorFollowStrength:.7,cursorFollowLag:.08,horizonRange:.08,audioRingDeform:.5,ringWobbleAmount:.02,phaseSpeed:.005,phaseColorMode:"spatial",phaseDepthInfluence:.5,redColorPercent:100,greenColorPercent:100,blueColorPercent:100,enableLakeMode:!0,lakeThresholdSpeed:8e-4,lakeShellZ:1.7,lakeBasinSpread:.9,showLakeMarker:!1,torpedoSpeed:1.2,torpedoSize:6,distortionDuration:800,distortionAmount:.35,enableChromaticAberration:!0,enableScanlineNoise:!0,artifactSensitivity:1,ringStrokeWeight:1.5,backgroundFade:.18,overallBrightness:1},visible:!0,opacity:1,blendMode:"source-over",transparencyMode:"none",transparencyThreshold:30,transform:{x:0,y:0,scaleX:1,scaleY:1,rotation:0,anchorX:.5,anchorY:.5},outputEffects:{invertColors:!1,flipX:!1,flipY:!1},filters:{mainFilter:null,mainFilterParams:{},processingFilters:[],postFilters:[],shaderFilters:[]}}],selectedLayerId:null},loadingState={audio:!1,images:!1,ready:!1,imageCount:0,imagesLoaded:0};function updateLoadStatus(e,t,i){const a=document.getElementById("status-"+e),s=document.getElementById("status-message");a&&(a.className="load-status"+("ok"===t?"":"error"===t?" error":" pending"),a.textContent="ok"===t?"[ OK ]":"error"===t?"[FAIL]":"[....]"),i&&s&&(s.textContent="> "+i),checkAllLoaded()}function checkAllLoaded(){if(loadingState.audio&&loadingState.images&&loadingState.ready){const e=document.getElementById("status-message");e&&(e.textContent="> ready"),setTimeout(()=>{const e=document.getElementById("loading-overlay");e&&e.classList.add("hidden")},500)}}class BaseComponent{constructor(e,t,i={}){this.width=e,this.height=t,this.params={...this.getDefaultParams(),...i}}getDefaultParams(){return{}}setParameter(e,t){this.params[e]=t}update(e,t){}draw(e){}resize(e,t){this.width=e,this.height=t}dispose(){}}class DirectionalPlayback extends BaseComponent{static category="timing";static isAudioReactive=!1;static displayName="Directional Playback";static description="Cursor-controlled forward/reverse for audio, video, and animations";constructor(e,t,i={}){super(e,t,i),this.direction=1,this.transitionProgress=1,this.arrowPhase=0,this._lastDirection=1,this._audioInitialized=!1}getDefaultParams(){return{controlAudio:!0,controlVideo:!0,showIndicator:!1,indicatorStyle:"arrows",indicatorOpacity:.5,indicatorColor:"#ffffff",splitPosition:.5,smoothTransition:!0,transitionSpeed:.1,arrowCount:3,arrowSize:30,arrowSpeed:.05}}getParameters(){return[{name:"controlAudio",type:"boolean",label:"Control Audio Direction"},{name:"controlVideo",type:"boolean",label:"Control Video Direction"},{name:"showIndicator",type:"boolean",label:"Show Direction Indicator"},{name:"indicatorStyle",type:"select",label:"Indicator Style",options:[{value:"arrows",label:"Arrows"},{value:"gradient",label:"Gradient"},{value:"line",label:"Center Line"},{value:"minimal",label:"Minimal"}]},{name:"indicatorOpacity",type:"range",min:.1,max:1,step:.1,label:"Indicator Opacity"},{name:"indicatorColor",type:"color",label:"Indicator Color"},{name:"splitPosition",type:"range",min:.2,max:.8,step:.05,label:"Split Position"},{name:"smoothTransition",type:"boolean",label:"Smooth Transition"},{name:"transitionSpeed",type:"range",min:.02,max:.3,step:.02,label:"Transition Speed"},{name:"arrowCount",type:"range",min:1,max:5,step:1,label:"Arrow Count"},{name:"arrowSize",type:"range",min:15,max:60,step:5,label:"Arrow Size"},{name:"arrowSpeed",type:"range",min:.01,max:.15,step:.01,label:"Arrow Animation Speed"}]}update(e,t){const i=this.params;this._metrics=e;const a=(e?.mouseXNorm||.5)>i.splitPosition?1:-1;if(i.smoothTransition?(this.transitionProgress+=(a-this.transitionProgress)*i.transitionSpeed,this.direction=this.transitionProgress>0?1:-1):(this.direction=a,this.transitionProgress=a),window._playbackDirection=this.direction,window._playbackProgress=this.transitionProgress,i.controlAudio){const e=this.direction!==this._lastDirection,t=!this._audioInitialized&&void 0!==audioEngine&&(audioEngine.hasAudio?audioEngine.hasAudio():audioEngine.isLoaded);(e||t)&&this._updateAudioDirection()}i.controlVideo&&this.direction!==this._lastDirection&&this._updateVideoD