Skip to content

countervolts/Volta

Repository files navigation

Volta icon

Volta

A native iOS player for your own music server Subsonic, Jellyfin, Emby, or Plex.

Platform Built with Servers License: GPL v3



Home · Picks for You & Recently Played

Now Playing · artwork-tinted player

Album · shuffle / play / download

Artist · stretchy header & top songs

Synced Lyrics · tap to seek, translate

Search · browse genres & lyrics

Features

  • Playback Gapless and crossfade, plus an AutoMix mode that (tries to) beat-match tracks. ReplayGain, a sleep timer, and an infinite autoplay queue. Full lock screen, Control Center, and (WIP) Siri support.

  • Audio A 10-band graphic EQ, mono downmix, a 3D spatial widener, and an Audio Signal Path sheet so you can see exactly what's happening to the sound. Lossless / Hi-Res / True Hi-Res badges come from real data.

  • Now Playing Backgrounds that take their colour from the artwork, animated cover art (GIF, APNG, WebP) on screen and the lock screen.

  • Lyrics Time-synced lyrics (via LRCLIB) with tap-to-seek, on-device translation, bulk download for offline use, and search across the lyrics you've saved.

  • Library A Home feed with daily Picks for You, Discovery Station, Heavy Rotation, and genre/artist mixes. Albums, artists, songs, genres, folders, playlists, smart playlists, and hidden albums.

  • Offline Multithreaded, resumable downloads with per-track progress, a storage cap that auto-evicts your least-played downloads, and artist profiles that still work with no connection.

  • Multi-server Save several servers and switch between them on the fly. Each server can have its own cellular URL that kicks in automatically off Wi-Fi. No server? Try a built-in demo.

  • Localized 17 languages with live, in-app switching.

  • Lightweight It sits at roughly 30 MB of ram idle on the Home tab (more on that below).

Performance

Volta sizes itself to the device it reads the physical ram tier (3 / 4 / 6 / 8 GB+) and scales every cache and decode budget to match, then leans on disk so very little has to stay in memory.

  • ram-tiered artwork cache (48 → 128 MB) and animated-frame decode caps (192 → 768 px)
  • Images are never decoded larger than the device's screen
  • Animated artwork runs off one shared frame-stepper with a downsampled on-disk frame cache, and caches get evicted on memory pressure
  • Scroll and drag are throttled to the display refresh, with CADisplayLink keeping frame pacing steady
  • An optional Performance Mode (battery saver) plus Image Loading and Data Caching dials if you want to trade quality for battery

Volta aims to remain as lightweight as possible. During testing, it used approximately the following amount of ram:

Scenario ram usage
Idle on the Home tab ~30 MB
Viewing an album with static artwork ~40 MB
Viewing an album with static artwork while playing music ~50 MB
Viewing an artist with 15+ albums ~60 MB
Viewing an artist with 15+ albums while playing music ~70 MB
Viewing an album with animated artwork ~170 MB
Viewing an album with animated artwork before optimizations ~2.3 GB

Supported servers

Backend Notes
Subsonic / OpenSubsonic Navidrome (volta works best with), Gonic, Airsonic, Funkwhale, and friends
Jellyfin / Emby Self-hosted Jellyfin or Emby
Plex Plex Media Server, with hosted "Sign in with Plex"

Getting started

Volta needs a music server to talk to. On first launch, pick your server type, drop in the URL and your login (plain http is allowed), and your library loads in.

Building from source

There's no App Store build yet, so for now you build it yourself with xtool on Linux, Windows (WSL), and macOS:

xtool devices                       # list connected iPhones and their UDIDs
xtool dev run --udid <DEVICE_UDID>  # build, install, and launch on device

Contributing

Issues, ideas, and pull requests are all welcome this is a personal project and I'm happy to have company. If you're reporting a bug, mentioning your server type (Navidrome, Jellyfin, Plex…), App version and iOS version helps a lot.

Acknowledgements

  • xtool building and deploying to iOS without a Mac
  • LRCLIB community-sourced synced lyrics
  • The Subsonic / OpenSubsonic, Jellyfin, and Plex APIs that make any of this possible

Other

Volta is released under the GNU General Public License v3.0.

Volta discord server can be found here

About

A fast SwiftUI player for Subsonic / Jellyfin / Emby / Plex.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages