Tamed has one of the most comprehensive lyrics systems of any Android music player. It queries up to ten independent providers in priority order, caches results in anDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/calmerism/Tamed/llms.txt
Use this file to discover all available pages before exploring further.
LruCache, pre-loads lyrics for upcoming queue tracks in the background, and displays them with six distinct animation styles. Every aspect—from provider order to text size to AI translation target language—is user-configurable.
Supported Lyric Formats
LRC
Line-by-line timestamped lyrics. Each line carries a
[mm:ss.xx] timestamp and maps to a LyricsEntry.TTML
Word-by-word timed lyrics (TTML/Apple Syllable format). Each
LyricsEntry contains a list of WordTimestamp objects with per-word startTime and endTime.Plain Text
Unsynced lyrics without timestamps. Displayed statically when no timed variant is available.
LyricsEntry Data Model
WordTimestamp, which carries the word text, its start/end time in seconds, and an isBackground flag for backing-vocal styling.
Provider System
LyricsHelper
LyricsHelper is the central coordinator. Its primary method is:
- When
preferredProviderOnlyistrue, only the highest-priority enabled provider is queried. - When
ignoreCacheistrue, both the single-result cache and the multi-resultLruCacheare cleared for the current track before fetching. - Results are cached with a key derived from
"$artists-$title"(whitespace stripped).
LruCache holds up to 16 entries (MAX_CACHE_SIZE = 16).
The 10 Providers
All providers implement theLyricsProvider interface:
BetterLyrics
BetterLyrics
Enabled via
EnableBetterLyricsKey. Fetches synced LRC/TTML lyrics from the BetterLyrics API, which aggregates several upstream sources.LrcLib
LrcLib
Enabled via
EnableLrcLibKey. Open-source, community-driven LRC database at lrclib.net. Typically returns well-timed LRC files.KuGou
KuGou
Enabled via
EnableKugouKey. One of the largest Chinese lyrics databases. Strong coverage for Mandarin, Cantonese, and K-pop.SimpMusic
SimpMusic
Enabled via
EnableSimpMusicLyricsKey. Lyrics sourced from the SimpMusic project’s endpoint.Unison
Unison
Enabled via
EnableUnisonLyricsKey. A community lyrics provider with a focus on accuracy.Paxsenix — Apple Music
Paxsenix — Apple Music
Enabled via
EnablePaxsenixAppleMusicLyricsKey. Fetches Apple Music TTML syllable-level lyrics via the Paxsenix proxy API. Best for word-by-word timing.Paxsenix — Netease
Paxsenix — Netease
Enabled via
EnablePaxsenixNeteaseLyricsKey. NetEase Cloud Music via Paxsenix. Excellent coverage for Chinese-language tracks.Paxsenix — Spotify
Paxsenix — Spotify
Enabled via
EnablePaxsenixSpotifyLyricsKey. Spotify line-synced lyrics via Paxsenix.Paxsenix — Musixmatch
Paxsenix — Musixmatch
Enabled via
EnablePaxsenixMusixmatchLyricsKey. Musixmatch line-synced lyrics via Paxsenix.Paxsenix — YouTube
Paxsenix — YouTube
Enabled via
EnablePaxsenixYouTubeLyricsKey. YouTube auto-generated captions reformatted as lyrics via Paxsenix.Default Provider Order
TheDefaultLyricsProviderOrder constant defines the fallback priority when no user-defined order exists:
Display Settings
Animation Styles
TheLyricsAnimationStyle enum controls how the active lyric line is highlighted:
| Style | Behaviour |
|---|---|
NONE | No animation — instant highlight switch |
FADE | The active line fades in, inactive lines fade out |
GLOW | Active line gains a colour glow |
SLIDE | Lines slide vertically into position |
KARAOKE | A fill sweep progresses across the text in sync with playback |
APPLE | Mimics the Apple Music bouncing / scaling style |
Lyrics Mode
V2 is the standard mode. ENHANCED enables additional physics tuning.
V2 / Enhanced Tuning Parameters
| Key | Description |
|---|---|
LyricsV2BounceFactorKey | Amplitude of the bounce spring effect |
LyricsV2GlowFactorKey | Intensity of the glow halo |
LyricsV2FillTransitionWidthKey | Width of the karaoke fill sweep gradient |
LyricsV2LrcBounceEnabledKey | Whether LRC lines use the bounce animation |
Layout Settings
| Key | Type | Description |
|---|---|---|
LyricsTextSizeKey | Float | Font size for lyric lines |
LyricsLineSpacingKey | Float | Vertical spacing between lines |
LyricsTextPositionKey | String | Horizontal alignment (left / centre / right) |
Romanization & Translation
Romanization
Tamed can transliterate non-Latin scripts into Latin characters at display time. Each language is individually toggled:| Key | Language |
|---|---|
LyricsRomanizeJapaneseKey | Japanese (romaji) |
LyricsRomanizeKoreanKey | Korean (revised romanization) |
LyricsRomanizeChineseKey | Chinese (pinyin) |
LyricsRomanizeHindiKey | Hindi |
LyricsRomanizeOtherLanguagesKey | All other non-Latin scripts |
AI Translation
WhenTranslateLyricsKey is enabled, each lyric line is sent to the configured AI provider and the translated text is displayed below the original. The target language is stored in TranslatorTargetLangKey.
AI translation requires a valid AI provider to be configured in Settings → AI. Supported providers include ChatGPT, Gemini, Claude, OpenRouter, and custom endpoints.
Queue Pre-Load
To avoid waiting for lyrics when a track starts, Tamed can pre-fetch lyrics for upcoming queue items:| Key | Type | Description |
|---|---|---|
PreloadQueueLyricsEnabledKey | Boolean | Enable background pre-loading |
QueueLyricsPreloadCountKey | Int | Number of upcoming tracks to pre-load |
LyricsPreloadManager runs on the IO dispatcher and stores results in LyricsHelper’s LruCache, so they are available instantly when the track becomes active.