import { drawCover, hash32, prng } from "./covers.js"; import { $, asDataUrl, mmss, ids, state, toast } from "./core.js"; import { wavBlob } from "./render.js"; import { drawTicks, drawTrail, keepLabel, nowPlaying, setPlayIcon, showLyrics, showTags } from "./ui/player.js"; import { db, logEvent, remember, saveStation, tapeById } from "./store.js"; import { cookNext, makeJob } from "./app.js"; import { playTape } from "./ui/library.js"; import { askDJ } from "./dj.js"; /* ---------- the visualizer: an analyser on the player, driving the cover while music plays ---------- */ /* the first tap unlocks the player: a silent clip played inside the gesture makes the