The challenge isn't the UI. It's analyzing a complete DJ set (MP3, WAV, FLAC, up to 2 GB) directly in the user's browser, without sending it to any server, and without freezing the interface while it's processing.
The pipeline runs inside a Web Worker: the audio is decoded with AudioContext, downmixed to mono, and several analyses run in parallel. Essentia.js (compiled to WebAssembly) detects BPM and beat positions with multifeature ML. A custom FFT breaks the spectrum down into four bands. An onset detector computes the variance of IOI to identify trainwrecks (beats out of sync during a transition). An alert engine cross-references signals to detect bass clashes, dead silences, listener fatigue and abrupt transitions, with timestamps snapped to the nearest beat.
With all of that, a 0-100 score is computed from four weighted sub-metrics (technique, energy, flow, narrative) and medals are unlocked. Plus an automatic detection system to distinguish a real mix from a single track, so scores aren't shown to anyone uploading something that isn't a mix.
