<!DOCTYPE html><html><head><meta charset="utf-8"><title>YrXtls local test</title> <style>html,body{margin:0;height:100%;background:#111}canvas{display:block;width:100vw;height:100vh}</style> </head><body><canvas id="stage"></canvas><script type="module"> import { mount } from "./yr_crystals_web.js"; const c = document.getElementById("stage"); const dpr = devicePixelRatio || 1; const fit = () => { c.style.width = innerWidth + "px"; c.style.height = innerHeight + "px"; c.width = Math.floor(innerWidth * dpr); c.height = Math.floor(innerHeight * dpr); }; fit(); addEventListener("re
// visualizer embed for else-if.org/yr_xtals. (function () { const HOST = 'https://files.else-if.org/f/YrXtals/'; const VIS_MODULE = HOST + 'yr_crystals_web.js'; const ALBUM_FOLDER = HOST + 'Knives_For_Cutting_Corners/'; const ICON = { play: HOST + 'assets/Play.svg', pause: HOST + 'assets/Pause.svg', bskip: HOST + 'assets/BSkip.svg', fskip: HOST + 'assets/FSkip.svg', mute: HOST + 'assets/Mute.svg', unmute: HOST + 'assets/Unmute.svg', }; const ANCHOR_SELECTOR = 'yrxtals'; const TRACKS_HOST_SELECTOR = 'yrxtals-tr
/* @ts-self-types="./yr_crystals_web.d.ts" */ /** * stores a slice of per-bin dB values as the live frame source. * @param {Float32Array} bins_db */ export function push_bins_db(bins_db) { const ptr0 = passArrayF32ToWasm0(bins_db, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; wasm.push_bins_db(ptr0, len0); } /** * reconfigures the wgpu surface against new physical-pixel dimensions reported from JS on window resize. * @param {number} width * @param {number} height */ export function resize(width, height) { wasm.resize(width, height); } /** * attaches the visu