projects /
Calliope
activeA self hosted music streaming service for my own music library.
Calliope is a music streaming service replacement. I have too many computers to realistically sync my music between the manually, and this has been true since 2009 or so. My first pass at this project was my first foray into web development. My old laptop was in sad shambles, the battery life was 15 minutes tops, the screen hinge was loose, and it belched heat out the back loading minesweeper. But it had 2 cores and as many gigs of ram still kicking, and that was enough to get a small LAMP stack up and running.
The first pass at this was a single page PHP app meant to look as much like 2005 iTunes as I could manage in a browser. While it did work, it was pretty scuffed, and at the time, I couldn’t afford as much music as I wanted. I’m frankly not sure where that code is now, and I doubt it would run without extensive surgery.
Since then, I’ve tried a number of streaming music services over the years, iTunes, Pandora, Spotify, Qobuz, Amazon. Most of them just barely worked, or had all sorts of restrictions about when you could or could not download a playlist to your phone before going on a long drive or on an airplane. Sometimes they made enormous sums of money off of the artists whose work they relied on, without giving back to that community. All of them felt stale after a while.
So I picked my old idea back up. I wanted a number of things:
- The ability to build playlists
- Some sort of auto discovery/radio feature
- A mobile app that could truly download the tracks for offline play
- Real android auto support
- The ability to easily add new music as I found it
Those features were relatively easily achieved, so I started to tinker with its appearance and trying to understand what made songs work together. It picks new colors for the interface based off of the album art that’s playing, it maps music by genre, and features a number of different ways to tinker with song recommendation algorithms.
If this sounds useful to you, feel free to clone the repo add your own music, and run it for yourself!