For the last few days I’ve been using MPD as my media player—it’s a dæmon that runs and plays music, and various clients connect to it and offer graphical and non-graphical frontends to it (I can recommend Sonata, too, if you want a graphical frontend).
Anyway, there were a few niggles with it—my previous player, Quod Libet, made it very easy to play only music by a certain artist, or only music from a certain album. MPD, like most music players, is based on playlists, rather than a big library o’ crap (or rather, you do have a library, but things have to be in a playlist to be played, unlike QL where playlists are optional).
So, I went looking. Lo and behold, I came across Joey Hess’s mpdtoys, which includes a script to create playlists for every album and artist, plus a load of useful stuff along those lines. He also mentioned mpd-dynamic, which makes sure your playlist is never empty. This means you can, for example, select an album to play; once it’s done, it’ll go back to playing randomly. This is, actually, nicer than Quod Libet, in my opinion, though the UI could use a little work (since dozens of playlists isn’t always particularly useful—this is a limitation of MPD, really).