Posts

Showing posts with the label audio

Autoqueue

A nice little piece of code I came across quite a while ago and have been meaning to blog about ever since I wrote some code to extend it properly to the Rhythmbox music player is a generic cross-player autoqueue project.

The idea of the project is to generate interesting tracks to queue up automatically in your player while you're listening to music based on what you're currently listening to.  Put simply, seed your playlist with a few tracks of the sort you want to listen to, turn the plugin on and it will continue to populate your queue with similar tracks.  It's great when all you want to do is have some non-particular music in the background (say when you're coding for example) and you don't want to bother with managing what's playing right now.  If you're in the mood for some acoustic through to heavy metal, just seed with what you want and let autoqueue do the rest.

The Rhythmbox plugin for this project wasn't particularly mature when I picked it up so I've modified it so now I've got a nice little button in my player that I can use to switch the plugin on or off depending on whether I want to choose the tracks or allow the plugin to do it for me.  Autoqueue attempts to be generic about the players it supports by essentially providing a library that player plugins can talk to over a dbus interface.

The autoqueue project itself currently supports 2 mechanisms to determine track similarity.  There's what the project seems to hold as the primary method which is comparing the audio signal of the track you're listening to with those in your music library.  It uses an external library called mirage for this which was originally written for the Banshee player.  Then there's the method I prefer to use which is to call out to last.fm to ask for the similar tracks to the current one playing and queue up one from the list you already have in your library.  Eventually, I'd like to extend this so it takes into account your last.fm profile such that the similar tracks picked are ones you prefer to listen to.

While it's a great little project and I love this type of idea for generating dynamic playlists, the project is fairly stale, not much activity in development and the code repository is way more up-to-date than any released zip files.  However, if you're interested it's easy to get going so long as you know how to write a plugin for your player.

<edit>See comments from the project maintainer below for latest updates on project status at the time of writing.</edit>

Rhythmbox Artist Prefix Plugin

I've recently started using the Rhythmbox music player.  It seems pretty simple to use and like other Gnome applications is actually quite powerful under the covers but hides a lot of the power from basic use.  You sometimes have to dig a little to find a feature you're looking for.  That said, with no amount of digging was I able to find a feature to enable artists to be sorted while ignoring certain prefixes.  This is a pretty bulk standard feature of most music players and allows artists such as "The Beatles" to be sorted under "B" for Beatles rather than "T" for The.  There's quite a lot of discussion to be found on this in various Rhythmbox bug reports and on the mailing list.  The view of the developers is that it's not possible to automatically provide a one size fits all solution so they implemented the ability to allow users to manually add a sort tag to each track.

I've just written a first versions of a plugin I'm calling Rhythmbox Artist Prefix which allows the user to choose whether to have Rhythmbox attempt to automatically sort artists ignoring certain artist prefixes.  If you use Rhythmbox then give it a try!

The plugin works by querying the Rhythmbox database for artists with the given prefixes and that don't currently have a sort order defined (which allows the user to manually override the sort order derived by the plugin).  So long as the plugin is active it will watch the database for changes too.  The first time you run the plugin it will automatically add an entry to the sort order of all tracks returned by the query and if you leave it running then any time Rhythmbox finds new tracks matching the query their sort order will be updated as well.  Whenever the plugin is notified of a track by an artist such as "The Beatles" and that track doesn't already have a sort order, it will chop off "The" from the artist name and add the remainder (in this case "Beatles") to the artist sort order property for that track.  Quite simple really and I'm amazed it hasn't been done before.

Squeezebox Duet: My Impressions

Having recently had my little whinge about setting up the SqueezeBox Duet it's about time I said something about the box itself. Both professional and user reviews around the web are pretty much universally glowing with praise for it and I have to say to a large extent I agree.

First of all, there's the hardware which is sleek looking with a glossy black finish. The hardware is in two parts (ignore the odd cable here and there), the SqueezeBox Receiver:

Which, while not belittling the technicality of it, is to the consumer essentially just a dumb receiver box. It takes an audio stream over either a wired or wireless Ethernet connection and spits it out through your stereo using a digital or analogue audio connection. Then there's the controller:

Which is an altogether more exciting piece of kit. It's a wifi-device that can talk directly to your wifi router or be bridged onto your wired network via the Receiver if you don't have wifi. It features a rather strangely arranged set of controls that become familiar after a little usage. There is a jog dial with selection button, then buttons for playback, volume, control of the playlist and navigation around the menus. As you can see, it's got a nice full colour LCD display too. This means you can wander around anywhere within wireless range, control your music and get feedback directly on the device on just about anything you might want to know.

Software wise, things also come in two parts (well three if you count the firmware on the receiver). There's the software on the controller and some software to run on your PC which is listed as optional but I would consider very much essential. Both of these parts are open source with decent plugin interfaces and documented APIs you can access.

The controller runs a customised embedded Linux distributions known as Squeeze OS which is responsible for running the user interface application on the controller called Squeeze Play. The nice thing about this is you can take the user interface part, Squeeze Play, and run it on your desktop too. While the controller software is open source and pluggable, I haven't found anybody having written any useful applets to run within Squeeze Play yet but it's still early days so hopefully those people producing screen savers will come up with some good ideas for applets. That said, I can have a bit of a hack around too to see how easy it is to program for and whether I can produce something useful too.

The open source server software is called Squeeze Center and should be run somewhere with access to your local music collection. It supports a huge number of formats including flac, ogg and mp3 of course. Squeeze Center is hugely flexible and configurable, mostly through a bunch of supplied plugins. It provides a web interface as well as access to other interfaces so it can also be used to control the music playing as well as being the configuration hub for the entire setup.

Out of the box Squeeze Center provides access to your local music collection via a number of sorting methods (such as by artist, album, song, genre, etc) as well as providing standard playlist functionality. It also allows you to listen to Internet radio through a number of free and paid for services such as shout cast streams, mp3tunes and last.fm (a last.fm scrobbler plugin is also included). It gives you a favourites menu so you can tag anything as a favourite and later get quick access to it through this menu. Last but not least there's the Extras which doesn't do a huge amount out of the box (this is where most 3rd party plugins are accessed) but it does give you access to podcasts - you can subscribe to RSS or OPML podcast feeds and have them streamed to your hi-fi, cool!

I like to use dynamic playlists and that's some functionality that doesn't get included by default so I've found some plugins that do that for me now. Being a UK resident I want access to the BBC audio content and some kind person has written a plugin to access all their content too, including Live Radio streams, listen again streams as well as BBC podcasts. The final plugin I'm finding useful at the moment is one that automatically adds tracks to my music collection when I copy them to my music directory using a groovy Linux kernel feature, Inotify, otherwise you have to rescan your collection manually after adding new tracks. The plugins I've installed are tagged in Delicious.

Overall, the system seems to work very well. It's great having the flexibility of having an entire music collection at your finger tips ready to play, no messing with things that spin any more, and having access to all the additional content over the Internet is another real bonus. The packaging and interface of the components are really nice and are only set to get better over time, particularly as they're open source. This means I can get my hands on extra code in the form of those useful plugins as well as writing my own. But it also means when Slim Devices get caught up in adding support for new products or bug fixing as they inevitably will, new functionality will always be progressing at least through the community. So now I've got everything fixed up in my config, listening to music at home is quite a cool experience, happy days!

Choosing the stereo and speakers

While working out how to string together my new audio solution I decided to replace my faithful old Aiwa NSX-S505 stereo system. The Aiwa has been a good servant over the years and seen a lot of action, but with the volume knob broken and one of the two tape players knackered, when the CD player refused to play a CD enough was enough.

I've always loved Denon kit as being simple yet very good quality, stylish and innovative at the same time, so I was immediately drawn to them for a new stereo. I was looking at the Denon D-M35DAB system as my choice item but before I purchased it used it as the bar for a quick shop-around.


While reading reviews I discovered Onkyo which was a company I'd heard of before but never really heard anyone buying their kit. I came across their direct competitor to the Denon model I was looking at, the CS-515 which has pretty much the exact same feature set. I'm no audiophile so I take great note of what the professional reviewers have to say, and with What Hi-Fi product of the year award, and Best Hi-Fi under £500 awarded to it I had to look much more seriously at the Onkyo. It was, eventually, to be the model I decided on based purely on Internet shopping having never touched or listened to either the Onkyo or the Denon before.

I have pretty simple requirements for a stereo. It has to have enough inputs for me to connect my various devices (Media Centre, possibly TV, etc), I wanted something quite small in terms of height so it would sit in my TV cabinet, and something of a better sound quality than the Aiwa (which really was an excellent buy for what I paid for it many years ago). Feature wise, I wasn't bothered about a tape player any more (we ditched our tapes a while ago), so just a simple CD player and digital radio would be good enough. Conveniently, both of the systems I found fitted these.


When I purchased the Onkyo I didn't go for the CS-515, but rather the CR-515 which is exactly the same unit minus the speakers. The Onkyo speakers are reviewed as being an excellent set, particularly for ones that are shipped as a standard set of speakers with a hi-fi system. However, I decided to go with the professional opinion once again and opted for the current set of award-winning small-sized speakers, the Tannoy Mercury F1 bookshelf speaker set. They're slightly larger than the Denon SCM-50 bookshelf speaker set I have in the kitchen, which are fantastic so the Tannoy's had a lot to live up to. I'm pleased to report they sound really quite nice when attached to the Onkyo, although my first sound test was somewhat inhibited by Beth vacuuming the rest of the house at the time!

Choosing the media streamer

Having recently upgraded my home audio system, the choice of which media streamer to go for was not a hard decision. There are a few different manufacturers out there producing different types of hardware that would result in completely different solutions. These seem to be categorised into roughly three areas.

First, you have the traditional hi-fi system manufacturers who are adding more modern media methods to their kit. Sony have the gigajuke systems with built-in hard disks, while phillips have the streamium systems. I discounted these fairly early on as being rather expensive and full of gimicks I wouldn't really care about or use, while not providing the full functionality that I really wanted at a price I was happy with.

Next there are the traditional NAS manufacturers who are upgrading their firmware to include media streaming functionality. This was slightly more tempting in some ways than a stereo system with this functionality built in. However, the lack of remote control or feedback without a PC switched on was very off-putting here.

What I really wanted was something to stream music from a PC to an existing stereo system that provided good feedback to the user with a remote control too. Enter the third set of devices, the dedicated media streamers designed to work with various media servers such as Firefly, SlimServer, iTunes, etc. When looking at these, my choices were quickly narrowed to a set of 3 possible candidates, in descending order of price:

  1. A collection of various Sonos hardware
  2. A SqueezeBox Duet from Slim Devices (now owned by Logitech
  3. A Pinnacle Soundbridge


I would have dearly liked to get my hands on the market leading Sonos which tops all the reviews while having the reviewer salivate over their nicely designed hardware, excellent interface and crystal sound quality. However, coming in at £700 sterling it seemed a bit expensive, especially as I would be spending more on another hi-fi system too, so it was reluctantly ruled out quite early on.

The next rejection waas the Pinnacle Sound Bridge, rejected for many reasons. It's easily the cheapest of the three on the list at under £100 though. I found it very difficult to find a dealer in the UK who had these things in stock so that was one rather off-putting factor - if there's no demand, then how good could the product be? The killer for me was when I compared to the Roku Soundbridge though. I found out Pinnacle license the soundbridge technology from an American firm, Roku, for marketing in Europe. That's all very well, except the European Soundbridge is inferior (much smaller and less usable display). This annoyed me to such an extent I felt I couldn't buy the European model and there are no American models for sale over here, except possibly some second hand ones on eBay.

Squeezebox Duet
The option I went for is the Slim Devices SqueezeBox Duet which seems like a really nice bit of kit, although not exactly cheap to buy either. It comes in two parts, the receiver box you hook up to your stereo system, and the remote control you use to browse and control the music.

The receiver is a pretty simple box, it has an Ethernet port, built-in wireless, RCA analogue audio output, and a digital output too. It sits on your network waiting for commands from the squeezebox controller and outputting any media streams it receives to a stereo (or powered speakers).

The controller is a little more interesting. It's also a wireless device, and has a jog wheel and LCD screen. Wireless means you don't have to have line of sight to the receiver, so you can hide the receiver away somewhere out of sight near your stereo. The interface is quite polished and very easy to understand. It's firmware upgradeable too so it'll only get better over time.

One of the things I really love about the SqueezeBox stuff is their openness. They use open source development to produce the SqueezeCentre (formerly slimserver) media streamer and as such it's got a nice little community of people outside the main company producing plugins to do all sorts of stuff as you can imagine. They adopt a similar approach for their firmware as well, while I've not come across the source code yet (I've not looked to see if it's available), the controller has some nice open type touches to it such as the ability to use your flickr pictures as the screensaver on the LCD screen when it's not in use. Overall I hope, and I think, I've made a good choice.

In with the new

Related to my previous post "Out with the old" I have been thinking about what's next for me in terms of a home media solution. I've also been spurred on by my recent purchase of a Current Cost meter which I can hook up to a computer, but more about that another time. Similar to my old system, I'm not bothered about video so this is purely an audio solution.

There are some things I took into consideration when building the old system that I don't consider to be so important this time around. I'm not bothered about browsing the Internet on my TV and I'm prepared to spend a bit more cash, for example. But rather than concentrate on those points, here's a list of things I would like to include in the new system:

  • Switchable speakers in different rooms (kitchen and living room)
  • Connection to my stereo amplifier
  • Access to my mp3 collection without leaving my PC powered on
  • Access to Internet music (podcasts, radio, etc)
  • Remotely controlled
  • Separate screen (from the TV)


After much research, here's what I've come up with:
Setup Diagram Click to enlarge.

I'm going to use a Linksys NSLU2 (a.k.a. a SLUG) which can be modified to run Linux so I can hack it into submission to be my low powered music server. The SLUG will provide my music collection over my wireless network to a Slim Devices Squeezebox Duet system. The Squeezebox is also able to access all the Internet services I want and similar to the SLUG runs open source software so has a fantastic community of users. The Duet comes with a wifi remote control with built-in LCD screen so I can interact with the system from anywhere in the house. From the Squeezebox is an audio connection to the amplifier which, similarly to my old system, is connected to a speaker switcher box.

That little lot should keep me busy for a while and give me all I want from music at home. As I mentioned, a lot of research went into deciding which components to choose. The weak link here will likely be the SLUG because it's such a small box with only 32Mb RAM and a relatively slow processor (just 264 bogomips) but it should do for the time being. Here's my component list:

Out with the old

I moved house pretty much spot on 6 months ago now and we're still settling into the new house. Aside from decorating, emptying boxes and all the other things you have to do at the time, it's also an opportunity for re-thinking some of the technology used in our previous house. To that end, one of the things I want to update is my audio solution. I shy away from saying media centre as that seems to brew up ideas of full on PVR systems for most people which would include recording television; something I don't care about as I have a commercial hard disk recorder I'm very happy with.

My current solution was documented at the time on Eight Bar as a description using an IBM Thinkpad built as a media centre with more details of the process, also on Eight Bar. This solution worked extremely well while having its problems at the same time. My requirements for putting the solution together were cost (it was experimental and needed a good wife acceptance factor so price was all important), fast start-up, easy and remotely controllable, and integrated with my current home stereo and speaker arrangement. I think I achieved this, it cost about 20 quid for the cables and keyboard, the Thinkpad was borrowed from work, I used the Amarok music player which made things very easy, hooked up my stereo remote control to the Thinkpad and integrated it nicely. See the no-expense-spared diagram below...

diagram Click to enlarge.
It's running Fedora Linux on the Thinkpad, with a KDE desktop and Amarok as I mentioned. I don't have a huge music collection so all my mp3s fit on the Thinkpad hard disk. I configured Linux to suspend to RAM and thus boot extremely quickly with auto-login to the KDE desktop and auto-start of various programs including the music player should a cold boot be required. The thinkpad has a serial port so I was able to hook up a serial IR receiver using LIRC to receive signals, with the audio cables going to my stereo using the minidisk port. With no minidisk attached I had spare keys on the remote control (such as play/pause/stop/next/previous) that had no effect when pointed at the stereo while other controls (such as volume) function as expected. This means I can program the spare keys to be picked up by the laptop IR receiver instead, in order to operate Amarok, and with no interference with normal operation of my stereo (so only one remote control needed for the whole solution). A nice bonus of this set up was the ability to display the screen on the television via the thinkpad s-video port. With a radio controlled keyboard and built-in mouse it's easy to sit on your sofa browsing the Internet or e-mailing with the convenience of your TV and wireless broadband.

This is all sounding marvelous and when described like that I wonder why I think about replacing it, but it does have issues. Browsing the web on your TV is great, but it's not particularly convenient when someone else wants to use the TV for its main purpose in life. Niether is it convenient browsing the Internet in 800x600 which is the highest resolution my CRT TV can cope with, then there's the wireless keyboard which is slightly fiddly but I'm just being picky now. The next major problem is a bug with the thinkpad firmware that causes the wireless to stay disconnected after a certain amount of uptime, which is unresolvable and requires a full reboot to temporarily fix until the next time it goes down. Another slight usability issue is user feedback. Browsing songs, playlists, podcasts and all in Amarok is stupidly easy, but controlling from a remote control when you can't see the screen (that was another idea for putting it on the TV) is not easy. It's great you've got the secondary screen you can use if necessary, but if you're trying to do something else or not in the same room it becomes much more difficult.

So, all these little niggles to what is in theory quite a nice setup have got me thinking of a better way to solve my requirements.