0.20.0 - the tempo fix real audio found, a preset browser, and a second lyric source
Installer: LyricOverlay-Setup-0.20.0.exe (114 MB). If you are on 0.19.0, auto-update should now offer this to you - see below for why it would not have before.
The first release verified against a real song playing in the real app, start to finish. That immediately found a bug five releases of harness testing had not.
The tempo was drifting, and the visuals ran on it
The offline analysis measures a track in ~100ms and gets it right. The live estimator then re-derived a tempo from a rolling 12-second window every second and overwrote it. On a 138 BPM track it reported 60, 64, 86, 147, 172 and 179 across a single play - confident and wrong - dragging the beat clock and the BPM chip from 138 to 174. The platter and the dancers run on that number.
The whole-song measurement is now a prior the live window cannot casually overrule, and once the tempo is known only the phase is tracked - the part that genuinely has to follow the music. The chip reads 138 for the whole song now. The raw live estimate still bounces between 62 and 177 in the same run, which is rather the point: the noise is real, and the clock is insulated from it.
Auto-update was doing nothing
0.19.0 shipped auto-update and was published with only the installer attached. electron-updater reads latest.yml, not the .exe, so every update check found nothing - silently, with no error anywhere to notice. The manifest is published now, and the release script uploads both artifacts together so it cannot happen again.
A way into the 395 MilkDrop presets
0.19.0 shipped the catalogue and no way to use it: two named entry points, and everything else reachable only by waiting for a drop on a 42-second cooldown. Now there is a browser - search it, click to switch instantly, roll the dice, or pin one to a song so it comes back next play. A pin beats both the preset's own starting point and the beat-synced cycle, because a pin overridden by a drop four bars later would be worse than not offering pinning at all.
MilkDrop mode also gets a legibility scrim behind the lyric. The swirl field is soft and low-contrast by design; MilkDrop presets are neither, and white text over a bright fractal was unreadable in a way this app's own visuals never were.
NetEase, as a second synced lyric source
Coverage was the weakest thing about the app. A second synced source is worth more than a second plain one: a plain source still has to be aligned by Whisper - minutes of CPU, and only from the next play - where this scrolls immediately and offline. NetEase is strongest exactly where LRCLIB is weakest: Mandarin, Cantonese, K-pop and the Asian long tail. It runs only when LRCLIB comes up empty.
Everyone gets a face
The artist registry has six hand-authored entries. Everyone else got the same figure recoloured, which at forty pixels tall reads as one dancer in a dozen shirts. There are now seven head styles, glasses and hair tones, all derived from the artist's name - so nothing is stored, and an artist looks the same on every machine and every replay.
Also
- Eight bands, spectral centroid, spectral flux. The centroid steers the global hue, because it is the one measure that tells a filtered breakdown from a full-range drop when both are equally loud.
- The wormhole has its background back, and the field behind it is thinned far harder so the tunnel is actually visible.
- Compact modes are usable - the floating bar now carries the translation and the sync controls.
Honest notes
- Frame rate dips to 30-44fps several times per song in fullscreen MilkDrop before recovering. The governor only intervenes below 24, so it never steps in. Undiagnosed.
- Per-line artist attribution is not done. On a multi-artist track the dancer on the mic is still picked by line number rather than by who is actually singing.
- Two features were built and then reverted after being seen or measured: the wormhole's transparent background, and NetEase's translation track - which turned out to translate into Chinese and would have captioned English lyrics with Mandarin under a chip labelled EN.