Friday, January 12, 2007

Mama's got a squeezebox...

A number of friends have asked about my Squeezebox home audio setup, so rather than repeat myself, I'll write it up here. 

Squeezebox is a device that you attach to your home network and your stereo, streaming digital music to your stereo system.  There are lots of such devices on the market; Roku's Soundbridge, Apple's AirTunes, and offerings from networking companies like Netgear and Linksys.  I chose Squeezebox because it has a digital (optical) audio out, meaning that what gets piped into my expensive stereo is not going through the analog stage of a $20 sound card.  The model I have has a wireless (802.11g) interface and a wired ethernet port as well; I paid about $250 each, and we have them in multiple rooms so you can listen to any music from any room without fussing with physical CDs.  (You can even sync them so you can have the same music throughout the house, say for parties.) 

My primary motivation for this transition was that I hate CD furniture; it's mostly ugly, and takes up an obscene amount of room in your living room if you have any reasonable size music collection.  Even transferring from jewel cases to sleeves, which gives about a 2.5:1 space compression, CDs can overwhelm your living room. 

The first challenge: ripping the CDs.  This is the most time consuming step, so I did not want to have to do this again because I had chosen the wrong audio format.  There are three components to ripping: the audio extraction, the association of metadata (artist, title, genre) with albums and tracks, and conversion to the format of choice (mp3, wma, etc.)  As with many other situations, you can get all-in-one solutions like iTunes or Windows Media Player that will do all of these in a single step, or you can have more control over each step but have to deal with multiple programs. 

It turns out that nearly all rippers do not take advantage of the error-correcting information present in CDs.  So if you have a scratched CD, you'll get bad bits when you rip, and those bad bits will stay with your recording forever.  The only Windows-based tool I know of that will use the error correction is EAC (Exact Audio Copy).  It's not as slick as iTunes, but it will usually get you a perfect rip.  For CDs in good condition, it can usually rip at 10x, ripping a whole CD in 6 minutes or so.  If it detects bit errors, it will slow down and keep reading until it is satisfied; for one really badly scratched CD (one that wouldn't even play in my car), it chewed for 24 hours, and got all but ~1000 bits off! 

EAC will rip to WAV, and has a mechanism to post-process to further launch an external converter (mp3, wma, etc), which I did not use.  Instead, I saved the WAV files to disk and post-processed them separately.  iTunes and WMP can access the commercial CDDB database that associates metadata (artist, album, track names) with albums and tracks; EAC uses the open-source freedb database, which is convenient but whose data quality is less than perfect.  Expect to spend some time correcting titles and genres that don't match up (e.g., the first CD of a set is called Volume One, where the second is called Disc 2, or one volume lists Rock as the genre, where the other lists Pop).  You can do this through EAC or using an ID3 tag editor, but in any case, expect to spend some time cleaning up the data. 

For my storage format, I chose FLAC, the open-source lossless audio compression, which stores files in about 55% of the space of the WAV file.  This about about three times bigger than a good VBR MP3 or AAC, but disk space is cheap -- real cheap.  (As of this writing, 500G drives are going for less than $200.)  And the time to re-rip is very expensive.  I set up the ripper on Windows to write the output files to a drop folder on my Linux server (named using a convention that embeds the track, artist, album, and genre, since WAV doesn't support metadata tags), and have a home-grown perl-script (willing to share, just ask) that will find the files and feed them to the flac converter. 

Squeezebox versions 2 and later support FLAC native, so it doesn't have to transcode to MP3 on the fly.  This is nice because the transcoding interfers with fast forward / rewind functionality on the Squeezebox.  So, following the chain, error-free RIP courtesy of EAC, lossless conversion to FLAC, digital transfer from server to squeezebox, lossless FLAC decompression to PCM on squeezebox, digital out to receiver -- meaning no end-to-end signal loss, and digital-to-analog conversion done by my receiver.  Just as if I'd plugged the CD player's optical out into the receiver. 

For the server software, the free SlimServer package is written in Perl so can run on Windows, Linux, or Mac.  I chose Linux since I did not want to downgrade the reliability of my stereo to that of my Windows desktop.  (I have a Linux server in the house anyway, but if you don't, you can build one fairly cheaply.) 

If you want to transfer to your iPod or other device, you need to transcode from FLAC to MP3 or AAC or WMA or whatever your favorite portable format is.  The best MP3 encoder is called LAME (open source); you then have to decompress from FLAC to WAV, and pipe that into LAME to get an MP3 out.  (I believe iTunes for Mac has a LAME plugin, but not iTunes for Windows.)  LAME encoding using VBR (variable bit rate) takes a while.  Disk space is cheap enough you might consider an automated nightly script to encode all new FLAC files into a parallel tree of MP3 files for transfer to iPod, if iPod is a big enough part of your life.

Once you get all the ripping done, it's pretty nice.  It took me about a week to rip ~400 CDs "in the background" while I was working.  Thereafter, the only time you need to find the physical CDs is if you want to play them in the car.  And the SlimServer software has a web interface that lets you create playlists and such, so you can set up playlists for parties so you don't have to be fussing with CDs. 

Highly recommended.  We've got two squeezeboxes now (living room and bedroom) and are considering adding more (kids room, family room).  Plus there's a software player you can use on the computer.


  1. Hey, cool blog entry. I'm looking around the net for info about SqueezeBox & Sonos, and your blog came up. I'm about halfway through the exact process you describe above. The Sonos system sounds a bit nicer, but it's a *lot* more expensive, so I'm thinking about continuing on with your approach with SquuezeBox. One question -- is it possible to play different music on 2 SqueezeBoxes (in 2 different rooms)? Oh, perhaps a second question, since the SqueezeBox is unamplified, what do you use for an amp? Thanks!

  2. Yes, if you have two or more SBs in the house, you can either play different streams on each, or sync them so the same music is going, synchronized, in multiple rooms.

    I pipe the optical audio out right into my receiver. This was one of the reasons I went with SB rather than the lower-end units -- I didn't want to pump all my music through the analog stage of a $20 sound card. Now, its direct, lossless digital right into my receiver, which has a better D/A than the Squeezebox is likely to have.

  3. Hi Brian. I'm planning to start the ripping process for my own music library in the near future. If you were writing this post now (over 2 years later), would you still suggest the same formats/technologies/approaches?


  4. I haven't really kept up with the technology, but I'm still pretty happy with the setup. EAC seems to still be the best Windows solution for ripping. FLAC still seems to be the best all-around format. I love Squeezebox, but I think it has not kept up with the times. It still requires a proprietary server app which is tightly tied to the hardware. I would like to see SqueezeBox able to act as a UPnP/AV client, since there seems to be a lot of things moving in that direction.

  5. Thanks for the quick response. I'm glad to hear that the CD->WMV (via EAC) and then WMV->FLAC is still the process you'd recommend. It's nice to have a few things that don't change much over time. :)

    Do you know much about gear from Sonos? I see from their page on formats ( ) that their systems support FLAC files, but I don't know much about them otherwise.

    By the way, I'm disappointed to be missing your talks at the Boston-area NFJS this Fall, but at least I'll be attending SpringOne2GX in October instead.

  6. I think you mean CD -> WAV / WAV -> Flac. Going through WMV (Windows Media) will entail loss.

    I've found that I have to maintain a pile of scripts to do various conversions. I'd prefer to avoid that, but until the hardware-software converges on a standardized solution with acceptable audio quality, that's the cost of getting what I want.

  7. Yup, you're right. Too many format TLAs, too little sleep.

    If I have to script the various processes, I guess it'll make a nice excuse to hone my Groovy skills. :)

    Thanks for putting this info up on your blog.

    (no need to respond to this one if you don't feel like it - I didn't mean to have a whole conversation in the comments)

  8. Hi,
    I have a duet as well. I have the optical cable. I tried plugging it in and the other end into my denon receiver digital in. No sound. Any ideas?