Play it on remote HiFi speakers
After several Linux trials and errors over the last couple of years, I finally switched to Ubuntu Gutsy as my main OS on my laptop. The user experience of current Linux distro’s is good enough, and Linux does not (yet) suffer from the massive amount of malware and virusses for the Windows operation system. Another welcome issue is that I can now do all my perl/python/ruby programming work for school on my home machine, without any fuss. Also very nice is the ability to encrypt your partitions, so if your laptops gets stolen or lost (as they do), your data is reasonably safe.
What was a big problem, was playing music with my shiny new Ubuntu laptop. In my situation I have a nice stereo set with good speakers. Sitting next to that is my home server, running Ubuntu. I deliberately picked a very small server that does not make noise or suck up much power: the Lex Light. This is a completely silent (no moving parts) booksize PC with everything onboard:
- 533MHz VIA Centaur CPU
- 256Mb RAM
- 10/100 Mbit ethernet
- 1Gb Compact Flash (/dev/hdd)
- 2 x USB
I have done some tests with a power meter and it uses about 10 Watts 🙂 The audio output jack is connected to my amplifier, the ethernet is hooked up to my home network.
My laptop running Windows XP had WinAmp installed, with an obscure Russian plugin that sends the raw audio frames to a small daemon on my home server. This way I was able to play music on my big amplified speakers. The whole setup was quite buggy so the daemon would crash sometimes, an most of the time minimizing the Winamp window would make if disappear from explorer. Only running the Winamp binary again would make it show up 😉
After installing Ubuntu-7.10 a few weeks ago, I really missed this great way of playing music, so I went on to find a Linux alternative for my remote sound system. It turned out to be quite easy 😉 I installed Esound (or ESD, the The Enlightened Sound Daemon). ESD can be configured to run in deamon mode and accept connections via TCP/IP. On my Ubuntu laptop I installed XMMS and the XMMS-ESD plugin, configured the right IP address and hey, Presto remote sound system 🙂
Seeking in HTTP streams with XMMS
There was one other annoyance though. All my MP3 music sits on a server that streams via HTTP. In Windows XP, I was a big fan of Winamp, which had great support for seeking (skipping inside a song) in these HTTP streams. However, it seems that XMMS (both the upstream source and the Ubuntu package) does not have support for this. Not very nice if you listen to 2-hour mixes 🙁 As you can see in the original bugreport for this issue, this was recognized back in 2001. It is still not solved, but somebody did write a patch to implement it 2004. Luckily this patch applied cleanly to the Ubuntu sources, and after installing it XMMS now does have a slider to seek in the stream 🙂 (it is not a good as Winamp’s seek support however, if you skip to position near the end you sometimes get a nice 416 Requested Range Not Satisfiable error. I think this is because the patch only does some basic assumption on ranges, which is not accurate with VBR streams).
You can download this recompiled Ubuntu XMMS package from my Ubuntu software repository.