Dial

Side A · for Jellyfin · C-90

Dial

Mixtapes from your own record collection.

Dial is a music player for the library on your Jellyfin server, built natively for iPhone, iPad, Mac, Android and Android TV. Every night its server plugin makes you a fresh stack of tapes from what you actually play, the way a friend used to.

Get Dial on GitHub Hear what’s on the tapes

Track 01 · The mixtapes

A new tape every morning.

While you sleep, the Dial plugin goes through your play counts, favourites and history and records a set of mixtapes for you. Songs you heard in the last three days get a rest. Songs you loved and forgot come back first. Nothing is picked from a chart.

Make Your Own

Drag one dot across a pad: calm to energetic, dark to bright. Slide between songs you love and new to you, tick a few decades and genres, press Play. Dial finds the songs in your library that fit.

Decades and genres

Every decade and genre in your library is a station of its own. Pick the 70s and you get every song from every album of the decade, in a cover that looks the part.

Track 02 · The Jellyfin plugin

The tape deck lives on your server.

The Dial plugin runs inside Jellyfin. It does the heavy work once a night, keeps the results on your server, and hands them to every device the moment you open the app. Your phone, your Mac and your TV all show the same tapes.

  • 04:00Refresh Dial Discovery
  • 04:30Refresh Dial Mixtapes
  • StatusA page in the Jellyfin dashboard: green for what works, orange for what is missing and what you lose without it
  • OptionalWithout it the apps hide Discovery and the mixtapes. Everything else plays as normal

Discovery, from artists you already own

New From Your Artists: releases from the artists you play most, minus the albums you already have. Fans Also Play: who the fans of your top artists listen to. On Tour: upcoming shows on a month-by-month timeline, if you add a free Ticketmaster key.

Track 03 · The apps

Native on every machine you own.

No web wrapper, no one-size-fits-all. Each app is written for its platform and behaves like it belongs there.

iOS · iPadOS · macOS

iPhone, iPad and Mac

SwiftUI. Lock screen and Control Center, AirPlay, and the Mac app through Catalyst.

Android

Android phones

Kotlin and Jetpack Compose, with Material 3 and the system media controls.

Android TV

The living room

Built for the remote and the big screen, sharing the Android app’s library and player.

Dial on iPhone: Home, with new releases from your artists and what you played
Dial on iPhone: Tune In, with your DJ, mixes and stations
Dial on iPhone: the player, on a live Lofi stream

Shown on iPhone.

  1. Your whole libraryArtists, albums, songs, genres, decades, favourites, search
  2. A proper playerSynced lyrics, queue, crossfade, volume leveling, sleep timer
  3. PlaylistsRename, reorder, add, remove, import your old ones
  4. RadioStations from your library, and thousands of live ones
  5. OfflineDownload songs, albums or playlists for when the server is away
  6. Hand-offStart on one device, carry on from another
  7. Quick ConnectSign in by approving a code, no typing a password on the TV

Track 04 · Bring your collection

Dub it once. Keep it forever.

Dial is for music you own. Ripping CDs, capturing records and tapes, and tagging them properly is what makes the mixtapes and Discovery so good.

  1. Rip CDs to FLAC with a verified ripper: XLD, Exact Audio Copy or whipper.
  2. Capture vinyl and cassettes at 24-bit, split the tracks, clean lightly.
  3. Tag with MusicBrainz Picard so every file carries its MusicBrainz IDs.
  4. Organise one folder per album, with a cover.jpg.
  5. Back up: three copies, two kinds of media, one somewhere else.

Read the digitising guide

Track 05 · Get started

Press play in three steps.

1

Run Jellyfin

Free and open source. Add your music folder as a Music library.

2

Add the Dial plugin

Plus the helpers you want: MusicBrainz, Playback Reporting, AudioMuse AI. Each one unlocks something, and the status page shows what is missing.

3

Open Dial

Enter your server address, sign in or approve a Quick Connect code, and play.

Server setup guide Build the apps

Your server, your data

No Dial account, no analytics. Your play history and library never leave your server. The plugin only sends artist IDs to MusicBrainz, ListenBrainz and Wikidata, and artist names to Ticketmaster if you add a key.

Open source

Source available under the PolyForm Noncommercial licence. The apps, the plugin and the guides are all in one repository. Read it, build it for yourself, send a fix; selling it is not allowed.

github.com/nodescraper/dial →

Questions

Do I need a Jellyfin server?

Yes. Dial has no music of its own. If you can open Jellyfin in a browser, you can use Dial.

Do I need the Dial plugin?

For the mixtapes and Discovery, yes. Without it those two parts are hidden and everything else works.

Which Jellyfin version?

The plugin is built for Jellyfin 12.

Do I need AudioMuse AI?

No. It adds mood mixes and searching by sound. Without it, genres and decades still work.

Which formats does it play?

Whatever your server serves. FLAC and other lossless files play as stored, and Dial can ask the server for a 320 or 128 kbps stream when you want a smaller one.

Is Dial part of Jellyfin?

No. It is independent software that works with Jellyfin.