← Dev Projects

Open Source

Cadence

A YouTube Music desktop app that stays up — and sings along. Time-synced lyrics no other wrapper ships, on top of a resilient Electron client whose whole design center is a crash supervisor that auto-recovers from the failures that brick everything else.

Free · Windows · no admin required. Unsigned build — SmartScreen may warn on first run.

What sets it apart

Lyrics, in time with the music

Every other YouTube Music desktop wrapper gives you the same things: a window, a tray icon, media keys. Cadence gives you the words. Hit the Lyrics button at the bottom-right and a karaoke panel opens — the current line lit up, the next one queued, the rest dimmed, scrolling itself as the song moves. Click any line to jump straight to that moment in the track.

Open source lyrics

Pulled from LRCLIB, a community-maintained database — no account, no API key, no telemetry. YouTube Music’s own lyrics pane is deliberately not scraped: it carries no timing data, which is the entire point.

Finds the right version

Matching escalates four ways — title, artist, album and duration, then progressively looser — ranking results by how close their runtime is to what’s actually playing, so a live cut or a cover can’t be mistaken for the studio version.

Frame-accurate timing

The player reports its position about once a second — far too coarse to sing to. Cadence extrapolates the playhead every animation frame, so lines land smoothly instead of stepping. Nudge the offset ±250 ms if a track runs ahead.

What it does

Cadence loads YouTube Music in a hardened desktop shell and adds the things a good music client should have — time-synced sing-along lyrics, a system tray, global media keys, taskbar controls, a mini-player, desktop notifications, Discord Rich Presence, Last.fm scrobbling, automatic ad-skipping, and automatic updates that install on quit rather than interrupting a song.

But the point isn’t the features — it’s that it doesn’t fall over. Most desktop wrappers die quietly: the audio process crashes and the music goes silent, a frontend update detaches their player hook and the media keys stop working, or a failed load leaves a blank window. Cadence is built around a supervisor that detects every one of those and brings the music back on its own.

Built to be resilient

Audio-service crash → no sound

When Chromium’s audio process dies, music shows as “playing” but goes silent. Cadence catches it at the app level and re-syncs playback automatically.

Detached player hook → dead controls

Other wrappers hook YouTube Music’s private player object; a frontend change silently breaks media keys, now-playing, and scrobbling. Cadence reads the <video> element + MediaSession instead — stable APIs that survive redesigns.

Blank window → friendly recovery

A failed or aborted load can leave a black window with no way back. Cadence shows a “Reconnecting…” overlay and reloads with backoff, restoring your track and position.

Features

Sing-Along Lyrics

Time-synced, karaoke-style lyrics for whatever is playing — the current line lit, the next queued, scrolling itself as the song moves. Click any line to jump straight to it. No other YouTube Music desktop wrapper ships this.

Automatic Updates

Cadence checks its own releases, downloads in the background, and installs when you quit — never mid-song. You stay current without hunting for an installer.

Crash Supervisor

A watchdog auto-recovers from renderer crashes, the Chromium audio-service heap-crash, hung/blank pages, and failed loads — with exponential backoff and a manual-retry fallback. It restores your track and position and shows a "Reconnecting…" overlay instead of a dead window.

Survives YTM Updates

The player bridge reads the <video> element and navigator.mediaSession — stable browser APIs — instead of hooking YouTube Music’s private player object. When Google reshuffles their frontend, controls keep working where other wrappers silently break.

Real Desktop Controls

System tray with now-playing and transport, global media keys, and Windows taskbar thumbnail buttons. The native now-playing card on the volume overlay works out of the box.

Mini-Player

A compact, always-on-top mini-player with album art, a scrubbable progress bar, like, and transport — drag it anywhere and keep it in the corner while you work.

Discord & Last.fm

Opt-in Discord Rich Presence shows what you’re listening to with a live progress bar, and Last.fm scrobbling tracks your plays. Both implemented on Node built-ins for a tiny, resilient dependency surface.

Ad-Skip & Resume

Automatically skips or fast-forwards video ads and hides promo banners, restores your last track after a restart or crash, and grants the storage permissions YouTube Music needs so sign-in and playback just work.

Stack

Electron 39Chromium 142Node.js 20electron-storeelectron-updaterLRCLIBYouTube Music

Get it

One-click installer (Windows)

Download for Windows

No admin required. The build is unsigned, so Windows SmartScreen may warn on first run — click “More info” then “Run anyway”.

Or build from source

git clone https://github.com/toyuvalo/cadencenpm install && npm start
Cadence — DVLCE Dev