AI summary
Synced-lyrics fetcher for local music with broken or missing tags. Uses multi-strategy matching with confidence scoring to find correct .lrc files for messy rips, includes a Samsung-Music-style lyrics player with adjustable timing, and auto-fixes SnapTube _private.lrc files. v1.6.3 fixes wrong-lyrics bugs for short titles and improves smooth scrolling in the lyrics player.
Generated by AI. May contain inaccuracies.
About this app
Smart synced-lyrics fetcher for Android — built for music with bad or missing metadata.
MusicResync scans a folder of local music (even messy SnapTube/YouTube rips with broken tags) and finds time-synced .lrc lyrics for every song, using a confidence-scored multi-strategy matching engine. It's a heavily reworked fork of the excellent SongSync with a smarter matching brain, a cleaner UI, and a built-in Samsung-Music-style lyrics player.
✨ What makes it different
🧠 Smart matching for bad metadata
Most lyric apps just send your (often wrong) tags to a provider and accept the first result. MusicResync doesn't:
- Multi-strategy candidate ladder — tries tags, then Artist - Title / Title - Artist filename parsing, primary-artist extraction (Coby X Teodora → Coby), remix/version loosening, and a title-only fallback. - Noise stripping — removes (MP3_320K), (Official Video), [HD], ft. …, track numbers, underscores, and other junk before searching. - Confidence scoring (title 40% · artist 30% · duration 20% · album 10%) with a duration tiebreak — the track length from your file is matched against each candidate, so the right song wins and a wrong "first result" (e.g. a random remix) is rejected. - Tiers: ≥85% auto-accept · 60–84% verify · <60% manual.
On a real corpus of messy SnapTube rips this lifts the auto-match rate from ~50% to 75–80% — including non-English tracks — before any manual work.
📥 _private.lrc auto-fix (SnapTube)
SnapTube saves lyrics as Song(MP3_320K)_private.lrc, which players like Samsung Music ignore because the name doesn't match the audio. MusicResync detects these on load and strips the _private suffix automatically — no network needed. Songs that already have correct .lrc files land straight in Has Lyrics.
🎤 Built-in synced lyrics player
Tap any song with lyrics to open a Samsung-Music-style player: your audio plays while the current lyric line highlights and auto-scrolls. An offset slider lets you fine-tune timing — adjusting it seeks the track ~2.5s back so you immediately hear and see whether the new offset lines up.
🗂️ Organised + one-tap
- Tabs: All / Has Lyrics / No Lyrics with live counts and green/red note indicators per song. - A centered Batch download lyrics button: one tap fetches lyrics for everything that needs them. - Pre-batch dialog keeps the two choices that matter up top (skip songs that already have lyrics, save .lrc next to the song); everything else (embed into the file, correct the metadata, auto-try other providers) lives under a single More options section.
🛡️ Robust providers
Every request uses exponential backoff + jitter (1→2→4→…→30s) with retries and a hard timeout, plus graceful fallback: if your selected provider errors or times out (e.g. a Spotify API change), MusicResync quietly falls through the others instead of throwing an error at you. Providers: LRCLib (default, no auth, returns duration + lyrics in one request), Netease, Apple Music, Spotify, QQ Music. Spotify's rotating security keys are fetched from several independent mirrors and cached locally, so a single source going down doesn't break it — and none of this blocks app launch.
📄 License
GNU General Public License v3.0
What's new
- Fixed: wrong lyrics saved for songs with short, generic titles
- v1.6.2's looser matching (which judges hits against the parsed filename, not just the raw tags) opened a precision hole: a song whose title matches some unrelated track exactly — "PETROV - RARI" getting the German "Rari" by lil doggo, "Numero - BMW" getting "BMW" by Cecilio G., "UKIC X PETROV - A TI?" getting "A Ti" by Dyango, "QuESt - Automatic" getting a Japanese "Automatic (Live)" — could ride in on the title alone, because the artist-less view of the track had nothing left to object to the wrong singer.
- New wrong-singer veto: whenever your file gives the matcher any artist guess (from the tags or the parsed filename) and a provider's result names an artist that agrees with none of those guesses, the result is rejected — across the normal search, the plain-lyrics fallback, and the last-resort rescue. An exact runtime match still overrides a disagreeing artist (that trust is what makes junk-tagged rips matchable at all), and a result with no artist at all is unaffected. A provider artist written in a different script (e.g. CJK vs. a Latin filename) now counts as disagreeing too.
- Fixed: lyrics player not following the song / janky scrolling
- The synced-lyrics player (the adjust-timing screen) only scrolled once the highlighted line left a visibility window, which looked like the list wasn't following the song at all — and then it lurched a whole screen at a time. It now glides continuously: each new line smoothly eases the list so the active line settles just above centre, Samsung-Music style. Seeks and taps on the progress bar still jump straight to the right spot.
- Renamed leftovers
- All user-facing "SongSync" texts now say MusicResync — including the [by:] tag written into generated .lrc files, the settings/about texts, and the welcome screen (all languages). The credit to the original SongSync project by Lambada10 remains, as it should.
- Install over your existing app — it's signed with the same key, so it upgrades in place.
About this version
- Version
- 1.6.3 (163)
- Size
- 5.09 MB
- Requires Android
- 5.0
- Target SDK
- 21
- Architecture
- arm64-v8a, armeabi-v7a, x86, x86_64
- Downloads
- 23
- Updated
- Jul 20, 2026
- Package
- com.dynamycsound.musicresync
Ratings & reviews
- 50
- 40
- 30
- 20
- 10