Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vivizzz007/vivi-music/llms.txt

Use this file to discover all available pages before exploring further.

VIVI Music connects directly to the YouTube and YouTube Music catalogs, bypassing all advertisements and letting you stream any track, album, or playlist without interruption. The app runs as a persistent MediaLibraryService in the background, so music keeps playing while you use other apps or lock your screen, complete with full media notification controls. An optional JioSaavn integration provides an alternative streaming source with its own audio quality tiers, useful in regions where YouTube quality is inconsistent.

Ad-Free Streaming

Full YouTube and YouTube Music catalogs with zero advertisements at any quality tier.

Background Playback

Continues playing when the screen is off or you switch apps, with rich notification controls.

Google Cast

Cast to any Chromecast or Google Cast device (GMS build only).

Sleep Timer

Auto-pause after a set number of minutes or at the end of the current song.

Crossfade

Smooth transitions between tracks with configurable duration and gapless mode.

JioSaavn Source

Alternative high-quality audio stream from JioSaavn when enabled.

Audio Normalization

Levels out loudness differences between tracks automatically.

Persistent Queue

Your queue survives app restarts and is restored on next launch.

Audio Quality

VIVI Music exposes a three-tier audio quality selector stored under AudioQualityKey. The choice is applied at stream resolution time, so switching it takes effect from the next track.
VIVI selects the highest quality stream that the current network conditions can support without buffering. This is the recommended default for most users.Preference key: AudioQualityKeyAudioQuality.AUTO
To change the setting, go to Settings → Player & Audio and tap Audio quality.

JioSaavn Streaming

JioSaavn is an alternative audio delivery backend that VIVI Music can query when EnableSaavnStreamingKey is turned on. It offers three fixed bitrate tiers:
Maximum quality from JioSaavn. Corresponds to SaavnAudioQuality.QUALITY_320.Preference key: SaavnAudioQualityKeyQUALITY_320
Enable JioSaavn streaming in Settings → Player & Audio → JioSaavn Settings, then select your preferred quality tier in the same sub-screen.

Background Playback & Notification Controls

VIVI’s MusicService extends MediaLibraryService (Media3), which means:
  • Playback continues when the screen turns off or you switch to another app.
  • A persistent media notification shows the current track, artwork, and playback controls.
  • Android Auto and other media session clients can control VIVI natively.
  • The PersistentQueueKey preference (default: true) saves your queue to disk on each change, so it is fully restored if the app is killed and restarted.

Google Cast

Google Cast is only available in the GMS (Google Mobile Services) build of VIVI Music. The F-Droid / FOSS build omits the Cast SDK entirely — the setting is hidden when BuildConfig.CAST_AVAILABLE is false.
When using the GMS build, enable casting in Settings → Player & Audio → Google Cast (EnableGoogleCastKey). Once enabled, a Cast button appears in the top bar whenever a compatible device is on the same network.

Crossfade

Crossfade blends the end of one track into the beginning of the next. Because it interacts with the ExoPlayer pipeline, it is marked as a beta feature and shows a confirmation dialog before being enabled.
Preference keyTypeDefaultDescription
CrossfadeEnabledKeyBooleanfalseMaster toggle for crossfade
CrossfadeDurationKeyFloat (seconds)5fOverlap length — 1 to 15 seconds
CrossfadeGaplessKeyBooleantrueWhen on, eliminates silence at the track boundary before fading
Audio offload (AudioOffload) is automatically disabled while crossfade is active, as the two features are mutually exclusive in the ExoPlayer pipeline.
Configure crossfade under Settings → Player & Audio → Crossfade.

Skip Silence

Preference keyDefaultDescription
SkipSilenceKeyfalseSkips over silent passages within a track
SkipSilenceInstantKeyfalseWhen enabled alongside SkipSilenceKey, jumps instantly without a brief fade
Enable both from Settings → Player & Audio.

Audio Normalization

AudioNormalizationKey (default: true) enables ReplayGain-style loudness normalisation across tracks. This evens out volume differences between songs encoded at different levels without requiring you to adjust the volume manually.

Audio Offload

AudioOffload (preference key enableOffload, default: false) offloads audio decoding to dedicated hardware when the device supports it. This significantly reduces CPU usage and extends battery life during long listening sessions. It is automatically disabled when crossfade is active.

Sleep Timer

The SleepTimer class integrates directly with the ExoPlayer Player interface. You can activate it from the player screen:
  • Timed sleep — choose a duration in minutes; playback pauses when the countdown reaches zero.
  • End-of-song sleep — sets pauseWhenSongEnd = true; playback pauses when the current track finishes, with no countdown required.
The timer is cleared automatically after it fires and can be cancelled manually at any time.

Auto-Load More

AutoLoadMoreKey (default: true) tells VIVI to automatically append related tracks to the queue when it reaches the last song. Combined with DisableLoadMoreWhenRepeatAllKey, you can prevent this behaviour while a repeat-all loop is active.

Network IP Version

IpVersionKey controls how the network stack resolves hostnames for stream requests:
ValueBehaviour
IpVersion.AUTOSystem default — uses whatever address the DNS returns first
IpVersion.IPV4Prefers IPv4 addresses, falls back to all addresses if none found
IpVersion.IPV6Prefers IPv6 addresses, falls back to all addresses if none found
Change this in Settings → Content → Network IP Version if you experience connectivity issues on networks with inconsistent dual-stack behaviour.

Build docs developers (and LLMs) love