An in-browser radio for the synthwave faithful. Cassette-shell interface, chunky VU meters and a waveform visualizer driven by the Web Audio API.
Stack
- TypeScript for the player engine and queue management
- The Web Audio API for the analyser and visualizer - no canvas library, no plugins
- CSS only for the UI chrome, gradients and glow
What’s inside
const analyser = context.createAnalyser();
analyser.fftSize = 512;
const bins = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(bins);
The frequency bins map straight onto a canvas bar chart - which is the whole trick. The rest is tasteful glow.
Roadmap
- Station presets with hand-picked channels
- Sleep timer mode
- Keyboard shortcuts for play, pause and skip