🛠️ music player

I've been making my own cloud-based music player (think Spotify, but for one person - just me).

My music collection is stored in the cloud (B2 - Backblaze's equivalent to Amazon's S3), and I have a web app that lets me play it.

It has a 2 features particular to the way I want need things to be:

  1. the data sources (listening history, ratings, source music, 3rd party metadata) are all independent and self-contained, integrated together by the app as needed (motivation for this below)
  2. a custom "DJ" algorithm, which tries to pick the next song according to many factors
    • tonal similarity (ie. by the same artist, or similar artist based on metadata, similar tempo, genre)
    • statistically biased towards my high rated songs (or, only unrated songs)
    • avoiding songs I've listened to recently

I also spent a silly amount of time writing an algorithm that extracts a palette of colours from album art - like iTunes did (does?) - and apply that palette to the entire app interface:

Internally, I use Datascript to integrate the various datasets together to pretty good effect. Although, today I might consider Pathom3 instead, which I've loved using for WikiSculpture and VNTRHB.

It's also my second serious attempt at a PWA (after Viva Vocab) - and it feels cool to get a near native app experience using only web technologies (both on desktop and mobile).

History

I discovered the wonders of computers, the internet, and music all at around the same time.

In elementary school, I somehow convinced my dad to get a CD burner, making me the cool kid that could bootleg CDs amongst my classmates (back when it was pseudo-legal in Canada, thanks to the blank-media levy). And just a few years after, I remember discovering the unlimited source of music that was the internet (I can still name the apps: Napster, WinMX, Kazaa, Limewire, uTorrent). The legality of which also ebbed and flowed - but apparently, was made straight up legal in 2004/2005 (!).

In high school, I remember furiously digitizing my growing collection of CDs with aid of Picard and adding missing metadata to MusicBrainz. I remember having a MP3 CD player that could play 10 hours of music! (Oh man, I loved that thing.) Then a slew of MP3 players (never an iPod... but I did have a Creative ZEN Micro).

Those of you that know me, know that I have an obsessive side - and managing a growing music library is exactly the sort of thing that would channel my inner digital-hoarder and archivist. I spent the next several years meticulously/blissfully managing all my files and their metadata - and carefully moving my listening history and ratings (every single song was rated!) from one computer and music software to another (Windows Media Player, Winamp, Amarok, iTunes). In 2005, I discovered Audioscrobbler (before they became Last.fm), letting me track every. single. time. I listened to a song. Oh ho ho! Right up my alley.

Good times!

Then, according to my last.fm profile, sometime in November 2013, iTunes updated automatically and corrupted my music database, and, because there was a lot of other stuff going on at the time... it broke something in me - my archive was no longer perfect! - and I just (╯°□°)╯︵ ┻━┻ on the whole music thing.

Yep. The whole thing.

I pretty much just stopped listening to music altogether.

It took 8 years before I could "face the music" again.

The feeling of "I miss music" finally won out over "@#GHfkkkkkk!!!", and I could bear to dig up my old hard drive of 1000s of tracks and start rating them again.

And so, in late 2021, I started a digital archaeology project to bring back what metadata I could.

Spotify would be the platform-du-jour, but I refuse to use it, because (a) most of my collection was from legitimately purchased CDs and I don't want to pay again, (b) Spotify doesn't have all of my music: I have some tracks from TheSixtyOne) - RIP - that I can't find anywhere else on the internet, and (c) I want to be in control, gawdammit.

Future Plans

2023-01-25
music player
:project-started-on2021-07-30
:project-updated-on2023-01-25
:post-created-on2025-10-16
:post-updated-on2025-10-16