Your music. Your stage.

Rainy is the music server you run yourself. Every song you own, on every screen you have.

No subscription. No cloud. Just your music, on your machine.

Your whole library. Beautifully kept.

Library, mixes, history and playlists. Fast, quiet, and all yours.

  • Library. Covers, tags and lengths, read straight from your files.

    rainy.home.lan/library
    Rainy Library screen

Mixes that know what comes next.

Rainy turns what you play, like and skip into a shelf of mixes, rebuilt every time you open it. All of it is worked out on your server.

Rainy’s Smart Mix page: the Supermix, and My Mix 1 and 2 under Made for you

Then it puts them in order.

A traditional shuffle plays songs at random, so a quiet track can land right after a loud one. Rainy shuffle plays each song next to the one it sounds most like, so a mix moves instead of jumping around. Here are the same fourteen songs both ways.

next = random(remaining)

remaining
the songs that haven’t played yet
random
every one has the same chance, however it sounds next to the current song

next = arg maxs ∈ remaining sim(now, s)

sim(a, b) = a · b‖a‖ ‖b‖

now
the song playing
a, b
two songs’ sound fingerprints: 23 numbers for timbre, tempo, rhythm, energy, loudness, brightness and key
a · b
how much the two fingerprints agree, number by number
‖a‖ ‖b‖
divides out their size, so the score runs from 1 (same sound) to −1 (opposite)
arg max
pick the remaining song with the highest score

Each square compares two songs: the brighter, the more alike. The covers on the diagonal are the songs in play order, so the squares touching it are the transitions you actually hear.

TraditionalRainy
Average match between songs that play back to back——
Roughest jump the least alike pair in a row——

Match is sim as a percentage: −1 is 0%, 1 is 100%.

Every song gets its own show.

Open the fullscreen player and hit the lights. The song’s key and genre pick the colours.

rainy.home.lan · Neon Gutter · light show

Pick how hard the rig goes.

Auto follows each song’s energy, Chill keeps it slow, Hype turns every chorus into a drop.

Rainy’s light show settings: intensity, lyrics on stage, reduce flashing, low performance mode and sync offset

It hears the drop coming.

  1. ListenAfter import, the server analyses each song: beats, downbeats, and kick, snare and hat hits.
  2. StructureSections get labels: intro, verse, build, drop, breakdown, outro. The song’s key picks the palette.
  3. ForesightRisers, drops and silences are marked ahead of time, so the rig blacks out a beat before the drop instead of reacting after it.
  4. SpeedAnalysis runs on every CPU core, or on an NVIDIA GPU when there is one.

Analysing a 3:36 song

CPU · Ryzen 5 5600X2.8 s
GPU · RTX 4060 Ti1.9 s

One library. Every screen.

Start on your laptop, carry on from your phone, finish on the TV. Rainy Connect finds your other devices and hands playback over.

First LightPlaying on Laptop
  1. Installable PWAAdd it to your home screen. It opens like an app, with an offline-capable shell.
  2. Rainy ConnectSee your other devices and control playback from any of them.
  3. ChromecastCast from your own server, with LAN-IP discovery built in.
  4. Lock screen & keysMedia Session artwork, lock-screen controls and hardware media keys.

The details are the product.

10-band equalizer

With presets, applied as you listen.

Word-synced lyrics

Aligned on your machine with Whisper, highlighted word by word.

Every window kept your name

Hold the chorus, hold the flame

Crossfade

Songs overlap. Silence doesn’t.

Genres, offline

Every song gets a genre out of 400 styles, worked out on your machine.

  • Progressive House.86
  • Melodic Techno.61
  • Trance.34
  • Synth-pop.12

Duplicate detection

Same song, two sources? Rainy hears it.

night-bus.flac
Night Bus (Official Audio).m4a

Same recording, matched by audio fingerprint

Import & sync

Bring in playlists from YouTube and Spotify, and keep them up to date on their own.

  • YouTubePlaylist · Late night drives24/24
  • SpotifyPlaylist · Sunday kitchen31/50
  • SyncNext sync in 23 hdaily

Friends & shared playlists

Invite people, share playlists, set who can edit.

Rainy’s friends list

Keyboard first

Every action in Rainy has a shortcut.

Space
Play / pause
⇧→
Next track
L
Like
B
A–B repeat
/
Search
?
All shortcuts

Playback, properly

  • Speed in 0.25× steps
  • A–B repeat
  • Sleep timer
  • Shuffle bag, no repeats
  • BPM-aware shuffle
  • Synced lyrics
  • Media keys
  • Mosaic covers
  • Playlist export

Up in thirty seconds.

Two containers: the app and a database. Your music stays a folder on your disk, so rebuilds lose nothing. No database server? Set RAINY_DB=sqlite and everything lives in one file.


    
Runs on
Anything with Docker, or Python 3.11+ with ffmpeg
Database
MySQL 8.4, or SQLite for personal and family installs
GPU
Optional. CUDA speeds up analysis and falls back to CPU automatically
Port
6969 by default, configurable in .env

Bring the show home.

Free, open source and yours.

Download Rainy

Rainy, the mascot: a girl with cobalt hair and a raincloud hair clip
psst… press space

Shortcuts on this page

space
Play / pause the show
D
Skip to the drop
?
This sheet