// why am I so n00b?

I have finally decided to release version 1.0 of Aurial, my implementation of a music player/client for the Subsonic music server.

I started this around two years ago, some time after switching my primary desktop from Windows to Linux, and I really missed foobar2000 - it has been my primary music player ever since. Unfortunately I have an irrational aversion to using Wine to run Windows applications, and none of the native music players on Linux felt good to me. As I already ran a Subsonic music server, I thought I’d just make use of that.

The existing browser-based clients for Subsonic were either too basic, or the state of their code and some implementation features made me uncomfortable. I just wanted a nice music player that allowed me to browse my collection similar to how I did in foobar2000 (using Subsonic’s ID3 tag based APIs, rather than the directory-based browsing offered by other clients), perhaps manage playlists, make ephemeral queues, and importantly, scrobble played tracks.

Podcasts, videos, and other things some clients support don’t interest me at all, and are a bit out of scope of a foobar2000-like client I believe.

Aurial allows me to build a music player the way I prefer to browse, manage and play music (which admittedly, is quite heavily influenced by my prior foobar200 configuration and usage habits).


This was my first attempt at a React application, and it started off simply enough, with JSX transpiling and stuff happening directly in the browser. At some point Bable was no longer available for browsers, which led to my adoption of Webpack (and eventually Webpack 2) for producing builds.

This also led to things like needing some sort of CI, and I’ve recently begun producing builds via TravisCI which automates building the application, and deploying it to GitHub Pages, which I think is pretty neat.

I also got to play with HTML5’s <audio/> a bit, as the player library I was using previously had some reliance on Flash, and was occasionally tricky to coax into using HTML rather than that. The result is infinitely smaller and less complex audio playback implementation (it’s amazing how much easier life is when you ignore legacy support).

Anyway, altogether it’s been fun, and as I’m using it constantly, it’s always evolving bit by bit. Hopefully someone else finds it useful too.

So Korpse pointed out a rather interesting website the other night - Pandora.

Basically, it’s a rather nice little service which allows you to discover new music, artists, etc, by telling it which music you like already. Based on a song, or artist name you provide, it goes off and finds music matching an assortment of criteria matching the provided song/artist. It then proceeds to play a endless playlist. It’s all streaming, but it’s extremely good quality for streamed content, and practically never stutters, even when downloading or uploading other stuff (0n 512k ADSL anyway).

During your listening, if it plays something you don’t particularly like, you can tell it so, and it’ll further fine tune the playlist, the same applies to something you do like.

I do have a few things I’d like to see added or changed though. The ability to play your well refined playlist in the player of your choice

  • could play pretty much like a normal streaming playlist. Show a timer/track progress bar thing, it’s just nice to know :). Ability to go back and play previously listened to tracks. Perhaps two additional rating categories - it’d be nice to rate vocals and music separately.

Anyway, my 10 free trial hours are up, and I can’t seem to cheat by deleting cookies or something. My MasterCard should be arriving this week some time, and I’m seriously considering that $36 for an annual subscription…