LRC lyric files
LRC is a text-file convention that prefixes lyric text with playback timestamps, with parser-dependent extensions for metadata and finer timing.
An LRC file stores timed lyrics as readable text. In a common simple form, a bracketed timestamp precedes the lyric line it starts. The file remains separate from the audio, so a player needs both an association with the track and a parser that understands the convention.
This is an original example for a fictional song:
[ar:Mira Vale]
[ti:River Lights]
[00:12.40]River lights
[00:20.00]Carry us home
[00:28.25]Lift the sail
[00:40.00][01:10.00]Into the morning
The artist/title fields are descriptive tags. They are not playback events. The final physical line describes the same text starting at two different times.
Timestamp fractions and millisecond conversion
For [00:12.40]:
0 × 60 + 12 + 40 / 100 = 12.40 seconds
12.40 × 1,000 = 12,400 milliseconds
The .40 represents forty hundredths of a second under this two-decimal convention, not forty milliseconds. Parsers can also encounter other fractional precision; the actual number of digits matters.
| Timestamp | Position in seconds |
|---|---|
| 00:12.40 | 12.40 |
| 00:28.25 | 28.25 |
| 01:10.00 | 70.00 |
LRC minutes are elapsed media minutes. They are not an hour/minute clock display, and the timestamps do not encode a calendar date.
One stored line can yield several cue occurrences
Expanding the final example line produces separate cues at 40 and 70 seconds. The file has four physical lyric lines but five timed occurrences.
A reader can sort the expanded cues by time before display. Keeping the text only once while ignoring its second timestamp loses the repeated verse. Treating every bracket as another lyric line also confuses descriptive fields with time values.
Synchronized-lyrics software such as Kid3 documents importing/exporting simple and enhanced LRC. Enhanced variants can carry finer timing than whole lines. The parser's supported variant matters; an unfamiliar tag or extension does not automatically have the same meaning in every application.
Correcting a timeline is a content operation
A missing 500-millisecond delay can be applied as a timestamp edit: the first cue becomes 12.90 seconds and the second becomes 20.50 seconds. That example adds 0.50 seconds directly to the cue positions.
An offset metadata tag is another convention. Its support and sign interpretation should be established for the reader being used rather than assumed to be equivalent to those edited cue times everywhere.
Changing a file extension from .txt to .lrc does not create timestamps. Likewise, timing for a studio recording may need more than a constant correction for a live version. Synchronized lyrics works through a drift example.
File association and text encoding
A sidecar needs to resolve to the intended track; a title-only association can become ambiguous when several recordings share a song title. Emby's Music Lyrics documentation describes supplied lyric companions, while the actual server/app support determines which representation can be displayed.