0x92fb2498…1600sent to0xa7d8d9ef…d270·#13,286,132·view on Etherscan
function hti(e){let n=[];for(let e=0;e<32;e++)n.push(tokenData.hash.slice(2+2*e,4+2*e));return n.map(e=>parseInt(e,16))}function get_seed(e){return parseInt(tokenData.hash.slice(0,16),16)}function map_v(e,n=0,a=1){return map_r(hash_ints[e],0,255,n,a)}function map_v_str(e,n=0,a=1){return map_v(e,n,a).toFixed(6).toString()}function map_r(e,n,a,t,i){return(e-n)/(a-n)*(i-t)+t}function rr(){return Math.random()}function rd(){return seed^=seed<<13,seed^=seed>>17,seed^=seed<<5,((seed<0?1+~seed:seed)%1e3/1e3).toFixed(5)}function rb(e,n){return(e+(n-e)*rd()).toFixed(5)}function rc(e){return e[Math.floor(rb(0,.99*e.length))]}function rco(e){return a=[],e.forEach((e,n)=>{for(i=0;i<e.w;i++)a.push(e)}),rc(a)}function shn(e){return e.toFixed(5)}function lerp_hex(e,n,a){var t=+e.replace("#","0x"),i=t>>16,e=t>>8&255,t=255&t,n=+n.replace("#","0x");return"#"+((1<<24)+(i+a*((n>>16)-i)<<16)+(e+a*((n>>8&255)-e)<<8)+(t+a*((255&n)-t))|0).toString(16).slice(1)}function get_obj(e,n,a=!1){let t=e.filter(({n:e})=>e==n);return a?(t=t.map(({v:e})=>e),[...t]):t[0]}function shuffle(n){for(let e=n.length-1;0<e;e--){var a=Math.floor(rd()*(e+1));[n[e],n[a]]=[n[a],n[e]]}}cv=document.querySelector("canvas"),document.body.style.backgroundColor="#111",gl=cv.getContext("webgl"),st=(new Date).getTime(),tok_id=parseInt(tokenData.tokenId.slice(-4)).toFixed(5),MEQLOW=FC=fc=0,NDO=["32n","16n","8n","4n","2n","1n"],synth_flaga=0,synth_flagb=0,synth_list=[];let seed=get_seed(tokenData.hash),hash_ints=hti(tokenData.hash),hns=hash_ints.map((e,n)=>map_v_str(n,.1,1)),hnss=hash_ints.map((e,n)=>map_v_str(n,1,10));function expandClusterScale(a,e){let t=[];for(let n=0;n<e;n++)t=[...t,...a.map(e=>e<a[0]&&"C"<=e?`${e}${n+1}`:`${e}${n}`)];return t=[...t,`${a[0]}${e}`],t}function generateCluster(n,a,e,t,i,l,p,s=null){let r=[];var o=NDO.indexOf(e),c=Math.max(o,NDO.indexOf(t));let u=Math.floor(rb(0,n.length)),F=0;var x=Math.round(rb(i,l));for(let e=0;e<x;e++){var v=NDO[Math.round(rb(o,c))];if(r.push({t:F,note:n[u],duration:Tone.getTransport().toSeconds(v)}),s&&e===x-2){let e=a.indexOf(s.replace(/\d+/,""))-a.indexOf(n[u].replace(/\d+/,""));e<-a.length/2&&(e+=a.length),e>a.length/2&&(e-=a.length),u+e>=n.length&&(e-=a.length),u+e<0&&(e+=a.length),u+=e}else{var m=Math.ceil(rr()*p);let e=Math.sign(rr()-.5);0===u&&e<0&&(e=1),u===n.length-1&&0<e&&(e=-1),u=Math.max(0,Math.min(n.length-1,u+m*e))}F+=Tone.getTransport().toSeconds(v)}return r}function shiftClusterNote(e,n){let a=n.indexOf(e);return rr()<.5&&0<a?a--:a<n.length-1&&a++,n[a]}function n2f(n,a){if("just"!==a.tuning?.type)return new Tone.Frequency(n).toFrequency();{var[,t,n]=/([^\d]+)(\d+)/.exec(n),a=a.scale.indexOf(t);let e=n-4;return t<"E"&&"C"<=t&&--e,329.628*[1,1.125,1.265625,1.5,1.6875][a]*Math.pow(2,e)}}pho=90;let ae={init:(s,e="interactive")=>{ae.SScale=expandClusterScale(s.scale,1),Tone.setContext(new Tone.Context({latencyHint:e})),Tone.getTransport().bpm.value=60,ae.M=new Tone.Gain(0).toDestination(),ae.MEQ=new Tone.EQ3(s.M.eq).connect(ae.M),ae.MEnv=new Tone.Gain(0).connect(ae.MEQ),ae.MEnvLFO=new Tone.LFO({frequency:s.M.envelope.baseFrequency,partials:s.M.envelope.partials,phase:s.M.envelope.phase,min:s.M.envelope.minGain,max:s.M.envelope.maxGain,amplitude:1}).connect(ae.MEnv.gain),ae.comp=new Tone.Compressor(s.M.compressor).connect(ae.MEnv),ae.reverb=new Tone.Reverb({decay:10,preDelay:s.returns.reverb.pre/1e3}).connect(ae.MEnv),ae.reverb.generate(),ae.BDirectOut=new Tone.Gain(s.binauralSends.direct).connect(ae.MEQ),ae.BReverbOut=new Tone.Gain(s.binauralSends.reverb).connect(ae.reverb),ae.BEQ=new Tone.EQ3(s.binauralEq).connect(ae.BDirectOut).connect(ae.BReverbOut),ae.B1Volume=new Tone.Gain(0).connect(ae.BEQ),ae.B1VolLFO=new Tone.LFO({min:s.B1.volMin,max:s.B1.volMax,frequency:s.B1.volLFORate,amplitude:1}).connect(ae.B1Volume.gain),ae.B1Filter=new Tone.Filter({frequency:s.B1.filterFrequency,Q:s.B1.filterResonance,type:"lowpass",rolloff:"-24"}).connect(ae.B1Volume);e=(new Tone.Merge).connect(ae.B1Filter);ae.B1OscLeft=new Tone.Oscillator({frequency:new Tone.Frequency(s.B1.note).toFrequency(),volume:-15,channelCount:1}).connect(e,0,0),ae.B1OscRight=new Tone.Oscillator({frequency:new Tone.Frequency(s.B1.note).toFrequency()+s.B1.difference,volume:-15,channelCount:1}).connect(e,0,1),ae.B2Volume=new Tone.Gain(0).connect(ae.BEQ),ae.B2VolLFO=new Tone.LFO({min:s.B2.volMin,max:s.B2.volMax,frequency:s.B2.volLFORate,amplitude:1}).connect(ae.B2Volume.gain),ae.B2Filter=new Tone.Filter({frequency:s.B2.filterFrequency,Q:s.B2.filterResonance,type:"lowpass",rolloff:"-24"}).connect(ae.B2Volume);e=(new Tone.Merge).connect(ae.B2Filter);ae.B2OscLeft=new Tone.Oscillator({frequency:new Tone.Frequency(s.B2.note).toFrequency(),volume:-15,channelCount:1}).connect(e,0,0),ae.B2OscRight=new Tone.Oscillator({frequency:new Tone.Frequency(s.B2.note).toFrequency()+s.B2.difference,volume:-15,channelCount:1}).connect(e,0,1),ae.DDirectOut=new Tone.Gain(s.D.sends.direct).connect(ae.comp),ae.DReverbOut=new Tone.Gain(s.D.sends.reverb).connect(ae.reverb),ae.DGain=new Tone.Gain(0).connect(ae.DReverbOut).connect(ae.DDirectOut),ae.DGainLFO=new Tone.LFO({min:s.D.gainLFOMin??1,max:s.D.gainLFOMax??1,frequency:s.D.gainLFORate,amplitude:1}).connect(ae.DGain.gain),ae.DVolume=new Tone.Volume(s.D.vol).connect(ae.DGain),ae.DEQ=new Tone.EQ3(s.D.eq).connect(ae.DVolume),ae.DAP=new Tone.AutoPanner(s.D.autoPan).connect(ae.DEQ),ae.DF=new Tone.AutoFilter({frequency:s.D.filterRate,octaves:s.D.filterDepth,baseFrequency:s.D.filterFrequency,filter:{type:"lowpass",rolloff:"-12",Q:s.D.filterResonance}}).connect(ae.DAP),ae.DSynths=Array.from({length:3},(e,p)=>s.D.oscillators.map(({coarse:e,fine:n,vol:a})=>{n=1200*Math.log2(e)+n;let t=new Tone.Oscillator({type:"sawtooth",frequency:n2f(s.D.chord[p]??"E2",s),detune:n,volume:a}).connect(ae.DF),i=!1,l;return{triggerAttack:()=>{clearTimeout(l),i||(t.start(),i=!0)},triggerRelease:()=>{i&&(i=!1,l=setTimeout(()=>{t.stop()},1e3*s.M.fadeIn))},setFrequency:e=>{e?(t.frequency.value=e,i&&t.start()):i&&t.stop()},osc:t}})),ae.SDirectOut=new Tone.Gain(s.S.sends.direct).connect(ae.comp),ae.SReverbOut=new Tone.Gain(s.S.sends.reverb).connect(ae.reverb),ae.SVolume=new Tone.Volume(s.S.vol).connect(ae.SReverbOut).connect(ae.SDirectOut),ae.SEQ=new Tone.EQ3(s.S.eq).connect(ae.SVolume),ae.SAP=new Tone.AutoPanner(s.S.autoPan).connect(ae.SEQ),ae.SChorus=new Tone.Chorus(s.S.chorus).connect(ae.SAP),ae.SF=new Tone.Filter({type:"lowpass",rolloff:s.S.filterRolloff??"-24",Q:s.S.filterResonance}).connect(ae.SChorus),ae.SFEnv=new Tone.FrequencyEnvelope({baseFrequency:s.S.filterFrequency,...s.S.filterEnvelope}).connect(ae.SF.frequency),ae.SSynth=new Tone.Synth({oscillator:{type:s.S.oscillatorType},envelope:s.S.amplitudeEnvelope}).connect(ae.SF),ae.PDirectOut=new Tone.Gain(s.padSends.direct).connect(ae.comp),ae.PReverbOut=new Tone.Gain(s.padSends.reverb).connect(ae.reverb),ae.PVolume=new Tone.Volume(s.padVol).connect(ae.PDirectOut).connect(ae.PReverbOut),ae.PEQ=new Tone.EQ3(s.padEq).connect(ae.PVolume),ae.PChorus=new Tone.Chorus(s.padChorus).connect(ae.PEQ),ae.Ps=Array.from({length:2},(e,n)=>{let a=s[`P${n+1}`],t={};return t.gain=new Tone.Gain(0).connect(ae.PChorus),t.gainLFO=new Tone.LFO({min:a.gainLFOMin??1,max:a.gainLFOMax??1,frequency:a.gainLFORate,amplitude:1}).connect(t.gain.gain),t.autoPan=new Tone.AutoPanner(a.autoPan).connect(t.gain),t.pan=new Tone.Panner(a.pan).connect(t.autoPan),t.filter=new Tone.Filter({type:"lowpass",rolloff:a.filterRolloff??"-12",Q:a.filterResonance}).connect(t.pan),t.filterEnv=new Tone.FrequencyEnvelope({baseFrequency:a.filterFrequency,...a.filterEnvelope}).connect(t.filter.frequency),t.synths=Array.from({length:a.polyphony},()=>new Tone.Synth({oscillator:{type:a.oscillatorType,detune:a.detune},envelope:a.amplitudeEnvelope}).connect(t.filter)),t})},started:!(pz={B1:[rd()*pho,rr()*pho],B2:[rd()*pho,rr()*pho],Dp:[rd()*pho,rr()*pho],Df:[rd()*pho,rr()*pho],D:[rd()*pho,rr()*pho],M:[rd()*pho,rr()*pho],P1p:[rd()*pho,rr()*pho],P1:[rd()*pho,rr()*pho],P2p:[rd()*pho,rr()*pho],P2:[rd()*p