AIMP Forum

AIMP for Android => Предложения / Suggestions => Topic started by: nicc on May 24, 2026, 23:24:34

Title: Display synchronized lyrics below Cover art (SYLT section)
Post by: nicc on May 24, 2026, 23:24:34
Hey everyone,

First off thanks for the great app! I love that AIMP Android supports displaying plaintext lyrics!
Maybe we can take that feature further by adding support for SYLT (Synchronized Lyrics)? It's gonna be similar to Spotify and other streaming players where timed lyrics are displayed below the cover art.

I've done a little digging into how this works behind the scenes. The standard reference for the format is ID3v2.3.0 Section 4.10 (https://id3.org/id3v2.3.0#sec4.10).

Sharing existing implementations for libraries and projects that already handle this:

Examples of SYLT parser CLI tools:

It feels like a feature that would really make AIMP shine and stand above other players! What do you think? Is this something the devs might consider down the line?

Cheers!
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: Artem on May 25, 2026, 00:10:07
Synchronized Lyrics already supported by the AIMP
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: nicc on May 25, 2026, 11:36:22
Oh really? I didn't know. I tried with an LRC file with the same name in the same directory, but it didn't show synchronized lyrics.

My suggestion is to add support and read synchronized lyrics from the MP3 file itself which is embedded in the IDv3 metadata tag:
(https://i.imgur.com/tMnWIlD.png)

Then when those lyrics are loaded from the MP3 SYLT metadata, we show them below the cover art. For example if I'm on 0:48 second, I show the lyrics that correspond to this timestamp (like Spotify).

I think this is currently not supported in the AIMP Android app.
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: Artem on May 25, 2026, 11:44:29
I tried with an LRC file with the same name in the same directory, but it didn't show synchronized lyrics.

Switch to lyrics pane to view live lyrics:
(https://aimp.ru/forum/index.php?action=dlattach;topic=77763.0;attach=77709)

My suggestion is to add support and read synchronized lyrics from the MP3 file itself which is embedded in the IDv3 metadata tag:

Its already supported:
(https://aimp.ru/forum/index.php?action=dlattach;topic=77763.0;attach=77708)
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: Artem on May 25, 2026, 12:08:29
Can you send me one of the MP3 files which lyrics doesn't show in AIMP?
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: nicc on May 25, 2026, 12:28:21
Oh wow, it really does work! I wrote synchronized lyrics in the USLT frame and it works!
But according to the IDv3 specification, the USLT frame (the one AIMP is using) is supposed to hold only plaintext lyrics:
https://id3.org/id3v2.3.0#Unsychronised_lyrics.2Ftext_transcription

My MP3 has plaintext lyrics in USLT IDv3 frame and synchronized lyrics in SYLT IDv3 frame. Attaching my MP3. You can inspect with exiftool command.
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: Artem on May 25, 2026, 16:33:06
synchronized lyrics in SYLT IDv3

A very small number of programs support SYLT tags, so that why AIMP uses USLT for both kind of lyrics.
I've tried to open your file in Foobar, Tag&Rename, TagScanner and MediaInfo, no one of these apps does not load lyrics with timestamps.

AIMP expects LRC-compatible lyrics text in USLT tag.
Title: Re: Display synchronized lyrics below Cover art (Android app)
Post by: nicc on May 25, 2026, 17:13:07
Gotcha, that makes sense. Since AIMP already supports synchronized lyrics under the cover art, would it be possible to just check if data in the SYLT tag exists and load the lyrics from there? And if not fallback to USLT tag? Most of my songs use both SYLT for synchronized and USLT for plain. AIMP shows only plaintext lyrics now.

If it's too much work and don't want to support SYLT that's totally fine. Thanks for looking into my case regardless!

Cheers!
Title: Re: Display synchronized lyrics below Cover art (SYLT section)
Post by: Artem on May 28, 2026, 15:08:51
Yep, will add SYLT support in one of future updates.
Title: Re: Display synchronized lyrics below Cover art (SYLT section)
Post by: nicc on May 28, 2026, 18:54:11
That's awesome! Thanks for considering to support SYLT!

I have some thoughts about how to implement SYLT and improve the whole editing flow for timestamped lyrics:

Backwards compatible implementation of SYLT

- You can store plaintext lyrics in USLT tag and serve them as "preview" when the tags are not in editing mode
- When in editing mode, you detect whether you have SYLT or USLT tag data
- If you have SYLT (with timestamps) - show advanced Lyrics editor with timestamps (described below)
- If you have USLT (plaintext only) - show simple text editing field (current implementation)
- When editing completes you update the SYLT tag and generate a plaintext version of the lyrics without timestamps and then update USLT tag too
- Additional notes: you need to keep only 1 timestamp format to simplify implementation (maybe LRC). If synced lyrics have SRT, WebVTT, etc. you convert to LRC and store LRC in SYLT tag

Lyrics Editor with Timestamps for SYLT

A mobile lyrics editor has to handle two different things on every line - the text and the timestamps, so they should work differently.

Lyrics -> inline editing. It's the main content you touch all the time. A popup every time would get in the way

(https://i.imgur.com/QJkADpy.png)

Timestamps -> popup. Rarely edited, so compact B/E (Begin/End) chips keep the row clean. Tap the chip and a popup opens with both fields visible together, plus the line's lyrics as context - prevents accidentally setting start > end.

(https://i.imgur.com/tnJMC5f.png)

A few extra touches:
- Numbered pills so lines are easy to scan and reorder
- Green left border on edited lines to see what's changed at a glance
- Play button to listen the current lyric line
- Trash icon currently appears all the time. Alternatively we can remove trash icon and implement swipe left/right of the whole row to remove a line
- Add line auto-inherits previous line's end time as start - saves a tap