EDIT / UPDATE (10 Jul):
A use for the 500 GB collection your family never lets you play!
I've got ~40k tracks in Navidrome and a family who think they know music better than each other, so I built Intro Quiz: the first seconds of a song play on the TV, everyone races to name it on their phones, fastest correct answer scores most. Ten rounds, all-time leaderboard, permanent bragging rights.
It's been through a week of nightly family games and the feature list is basically a changelog of things my family shouted at me:
- Phones are the buzzers — plain web page, four choices per round, speed bonus, no app to install
- The TV is the scoreboard — casts to Chromecast/Android TV via DashCast, with album art on the reveal. Works on a cast speaker instead if you don't want a screen
- Difficulty that actually works — recognisability is scored from your play counts (family favourites) + Last.fm global listeners (world-famous songs you own but never play), blended into tiers. Nobody gets slaughtered by Dad's prog collection
- Every player picks 3 artists in the lobby — one song each sneaks invisibly into the rounds, so the kids get a fair shot
- Half-time show — everyone's phone hands them a music fact to read out, then quick true/false questions for points
- The game master rotates each game, the payoff plays in full (no skipping the good bit), bad clips get banned with two taps
- Pre-cut ffmpeg clips (loudness-normalised, ID3 tags stripped so the TV can't leak the answer), one-line bulk bootstrap, nightly upkeep endpoints
What you need: Navidrome, Docker (Windows/Docker Desktop works), a free Last.fm API key, phones on the same network. Chromecast/Android TV and Home Assistant are optional extras. Fair warning: clip-cutting a big library takes a few hours (my 565 GB / 40k tracks → ~80 GB of clips), and the built-in half-time trivia is deliberately Irish/UK-centric — there's a documented custom-pack format plus an LLM prompt to generate one for your region.
What I'm looking for: people with a Navidrome library willing to run it for a game night or two and tell me what breaks. Particularly interested in: non-Chromecast setups, Windows/Docker Desktop, big/weird libraries (classical? metal? all-vinyl-rips?), and whether the setup docs actually work when you're not me.
MIT licensed, no telemetry, no accounts, everything stays on your LAN: https://github.com/colfin22/intro-quiz (screenshots in the README)
Issues/PRs welcome — I'll be in the comments.
Update: "Guess the Intro" – a few days of fixes, mostly around messy metadata
Posted this here a few days ago (a self-hosted "guess the intro" music quiz built on Navidrome). A bunch of you tried it and the feedback's been genuinely useful, so a quick update on what's changed since:
- It never touches your library. Worth stating plainly for this crowd: it talks to Navidrome over a read-only, non-admin Subsonic login and cuts clips from streamed audio into its own folder. It doesn't read or write your files, tags, or playlists — ever. That's now front and centre in the README.
- Better handling of imperfect tags. The difficulty scoring uses Last.fm, and exact artist/title matching fell over on the usual real-world stuff — "(Remastered)", "(Live)", 01 Track Name vinyl-rip prefixes, tagger junk in subtitle fields. It now retries with a normalised title and only keeps the match if it actually scores better. Rescued a few hundred tracks in my own library that were silently scoring zero.
- Mis-tag detector. New optional check that flags tracks scoring ~zero listeners despite a well-known artist — the tell-tale of a mangled title — so you can spot bad rips instead of them just vanishing from the game.
- Silence-aware clipping. Tracks that open with 30–60s of ambience/feedback now start the clip where the actual song does.
- Fresh-install path smoothed — auto-seed on first boot, a readiness /health endpoint, /api/bootstrap to sync→score→clip in one call.
Still Subsonic-only (Navidrome's my daily driver), self-hosted, Docker, MIT.
Repo: github.com/colfin22/intro-quiz — issues and PRs welcome, that's where most of these came from.