0x8c7c…6387

All memos sent from and to 0x8c7c…6387.

",DEFAULT_MP3="";(()=>{const b="#BFB93F",f="#364a37",k="awsedftgyhujk",n=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];let o=4,l=0,x,a,c=document.getElementById("w"),g=c.getContext("2d"),s=document.getElementById("s"),p=document.getElementById("p"),m=document.getElementById("m"),A=new Map,H=new Map;function r(){let d=Math.max(1,devicePixelRatio||1);c.width=innerWidth*d;c.height=innerHeight*d;g.setTransform(d,0,0,d,0,0)}function q(e){let i=k.indexOf(e);return i<0?0:n[i%12]+(o+(i>11))}function z(){s.textContent=l?"":"add MP3_BASE64"}async function t(){Tone.context.state!="running"&&await Tone.start()}function v(){x&&x.dispose();a&&a.dispose();x=a=0;A.clear();H.clear()}function u(e){v();l=0;s.textContent="loading...";a=new Tone.Analyser("waveform",2048);x=new Tone.Sampler({urls:{C4:e},release:.8,onload:()=>{l=1;z()},onerror:e=>{s.textContent="could not load mp3";console.error(e)}});x.connect(a);x.toDestination()}async function y(e,d=.9){l&&!A.has(e)&&(await t(),x.triggerAttack(e,Tone.now(),d),A.set(e,1))}function h(e){l&&A.has(e)&&(x.triggerRelease(e,Tone.now()),A.delete(e))}function j(e){return n[e%12]+(Math.floor(e/12)-1)}addEventListener("resize",r,{passive:!0});r();p.onpointerdown=e=>{e.preventDefault();l&&t().then(()=>x.triggerAttack("C4",Tone.now(),.95))};addEventListener("keydown",e=>{let d=e.key.toLowerCase();if(/^[0-8]$/.test(d))return e.preventDefault(),o=+d,z();if(!e.repeat&&!H.has(d)){let i=q(d);i&&(e.preventDefault(),H.set(d,i),y(i))}});addEventListener("keyup",e=>{let d=e.key.toLowerCase(),i=H.get(d);i&&(e.preventDefault(),h(i),H.delete(d))});m.onclick=async()=>{if(!navigator.requestMIDIAccess)return s.textContent="midi unavailable";await t();let e=await navigator.requestMIDIAccess(),d=()=>e.inputs.forEach(i=>i.onmidimessage=({data:e})=>{let[d,r,o]=e,w=d&240,D=j(r);144==w&&o>0&&y(D,o/127),(128==w||144==w&&0==o)&&h(D)});d();e.onstatechange=d;s.textContent=l?"":""};(function d(){requestAnimationFrame(d);let e=innerWidth,r=innerHeight,o=r/2.5;g.fillStyle=b;g.fillRect(0,0,e,r);g.strokeStyle=f;g.lineWidth=Math.max(1.25,.004*Math.min(e,r));g.beginPath();let i=a&&l?a.getValue():0;if(i){let d=.38*r;for(let r=0;r<i.length;r++){let pad=e*.1,l=pad+r/(i.length-1)*(e-pad*2),x=o+i[r]*d;r * 0.8?g.lineTo(l,x):g.moveTo(l,x)}}else g.moveTo(0,o),g.lineTo(e,o);g.stroke();g.strokeRect(.5,.5,e-1,r-1)})();let d=MP3_BASE64.trim(),i;if(d)d=d.replace(/^data:audio\/[^,]+,/,"").replace(/\s/g,""),i="data:audio/mpeg;base64,"+d;else i=new URLSearchParams(location.search).get("src")||DEFAULT_MP3;i?u(i):z()})();</script></body></html>
<style>:root{--b:#BFB93F;--f:#364a37}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--b);color:var(--f);font-family:monospace}body{position:fixed;inset:0;touch-action:none}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;background:var(--b)}#s{position:absolute;top:1rem;left:1rem;right:1rem;text-align:center;font-size:12px;letter-spacing:.04em;color:var(--f);z-index:2;pointer-events:none}#u{position:absolute;left:3%;bottom:3%;z-index:3}#m{padding:clamp(.35rem,1.1vw,.8rem) clamp(.55rem,1.8vw,1.15rem);font-size:clamp(10px,1.8vw,22px);border-width:clamp(1px,.16vw,2px)}button{border:1px solid var(--f);background:var(--b);color:var(--f);border-radius:20%;padding:.45rem .7rem;font:inherit;line-height:1;cursor:pointer;user-select:none}#p{position:absolute;left:50%;top:80%;transform:translate(-50%,-50%);width:clamp(58px,12vw,110px);height:clamp(58px,12vw,110px);border-radius:50%;border:0;background:var(--f);color:var(--b);z-index:2;display:grid;place-items:center;padding:0}#p:before{content:"";width:0;height:0;border-top:clamp(12px,2.6vw,24px) solid transparent;border-bottom:clamp(12px,2.6vw,24px) solid transparent;border-left:clamp(18px,3.8vw,34px) solid var(--b);margin-left:clamp(4px,.9vw,9px)}#p:active{transform:translate(-50%,-50%) scale(.96)}</style></head><body><canvas id=w></canvas><div id=s>add MP3_BASE64</div><button id=p aria-label=play></button><div id=u><button id=m>midi</button></div><script>const MP3_BASE64="
<style>:root{--b:#b12b2b;--f:#222a35}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--b);color:var(--f);font-family:monospace}body{position:fixed;inset:0;touch-action:none}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;background:var(--b)}#s{position:absolute;top:1rem;left:1rem;right:1rem;text-align:center;font-size:12px;letter-spacing:.04em;color:var(--f);z-index:2;pointer-events:none}#u{position:absolute;left:3%;bottom:3%;z-index:3}#m{padding:clamp(.35rem,1.1vw,.8rem) clamp(.55rem,1.8vw,1.15rem);font-size:clamp(10px,1.8vw,22px);border-width:clamp(1px,.16vw,2px)}button{border:1px solid var(--f);background:var(--b);color:var(--f);border-radius:20%;padding:.45rem .7rem;font:inherit;line-height:1;cursor:pointer;user-select:none}#p{position:absolute;left:50%;top:80%;transform:translate(-50%,-50%);width:clamp(58px,12vw,110px);height:clamp(58px,12vw,110px);border-radius:50%;border:0;background:var(--f);color:var(--b);z-index:2;display:grid;place-items:center;padding:0}#p:before{content:"";width:0;height:0;border-top:clamp(12px,2.6vw,24px) solid transparent;border-bottom:clamp(12px,2.6vw,24px) solid transparent;border-left:clamp(18px,3.8vw,34px) solid var(--b);margin-left:clamp(4px,.9vw,9px)}#p:active{transform:translate(-50%,-50%) scale(.96)}</style></head><body><canvas id=w></canvas><div id=s>add MP3_BASE64</div><button id=p aria-label=play></button><div id=u><button id=m>midi</button></div><script>const MP3_BASE64="
",DEFAULT_MP3="";(()=>{const b="#b12b2b",f="#222a35",k="awsedftgyhujk",n=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"];let o=4,l=0,x,a,c=document.getElementById("w"),g=c.getContext("2d"),s=document.getElementById("s"),p=document.getElementById("p"),m=document.getElementById("m"),A=new Map,H=new Map;function r(){let d=Math.max(1,devicePixelRatio||1);c.width=innerWidth*d;c.height=innerHeight*d;g.setTransform(d,0,0,d,0,0)}function q(e){let i=k.indexOf(e);return i<0?0:n[i%12]+(o+(i>11))}function z(){s.textContent=l?"":"add MP3_BASE64"}async function t(){Tone.context.state!="running"&&await Tone.start()}function v(){x&&x.dispose();a&&a.dispose();x=a=0;A.clear();H.clear()}function u(e){v();l=0;s.textContent="loading...";a=new Tone.Analyser("waveform",2048);x=new Tone.Sampler({urls:{C4:e},release:.8,onload:()=>{l=1;z()},onerror:e=>{s.textContent="could not load mp3";console.error(e)}});x.connect(a);x.toDestination()}async function y(e,d=.9){l&&!A.has(e)&&(await t(),x.triggerAttack(e,Tone.now(),d),A.set(e,1))}function h(e){l&&A.has(e)&&(x.triggerRelease(e,Tone.now()),A.delete(e))}function j(e){return n[e%12]+(Math.floor(e/12)-1)}addEventListener("resize",r,{passive:!0});r();p.onpointerdown=e=>{e.preventDefault();l&&t().then(()=>x.triggerAttack("C4",Tone.now(),.95))};addEventListener("keydown",e=>{let d=e.key.toLowerCase();if(/^[0-8]$/.test(d))return e.preventDefault(),o=+d,z();if(!e.repeat&&!H.has(d)){let i=q(d);i&&(e.preventDefault(),H.set(d,i),y(i))}});addEventListener("keyup",e=>{let d=e.key.toLowerCase(),i=H.get(d);i&&(e.preventDefault(),h(i),H.delete(d))});m.onclick=async()=>{if(!navigator.requestMIDIAccess)return s.textContent="midi unavailable";await t();let e=await navigator.requestMIDIAccess(),d=()=>e.inputs.forEach(i=>i.onmidimessage=({data:e})=>{let[d,r,o]=e,w=d&240,D=j(r);144==w&&o>0&&y(D,o/127),(128==w||144==w&&0==o)&&h(D)});d();e.onstatechange=d;s.textContent=l?"":""};(function d(){requestAnimationFrame(d);let e=innerWidth,r=innerHeight,o=r/2.5;g.fillStyle=b;g.fillRect(0,0,e,r);g.strokeStyle=f;g.lineWidth=Math.max(1.25,.004*Math.min(e,r));g.beginPath();let i=a&&l?a.getValue():0;if(i){let d=.38*r;for(let r=0;r<i.length;r++){let pad=e*.1,l=pad+r/(i.length-1)*(e-pad*2),x=o+i[r]*d;r * 0.8?g.lineTo(l,x):g.moveTo(l,x)}}else g.moveTo(0,o),g.lineTo(e,o);g.stroke();g.strokeRect(.5,.5,e-1,r-1)})();let d=MP3_BASE64.trim(),i;if(d)d=d.replace(/^data:audio/[^,]+,/,"").replace(/s/g,""),i="data:audio/mpeg;base64,"+d;else i=new URLSearchParams(location.search).get("src")||DEFAULT_MP3;i?u(i):z()})();</script></body></html>