Yet Another MP3 Jukebox

Updated! 16/11/2001 - See Below.

Jukebox Mockup

Photoshop mockup for MP3 Jukebox software.
Larger Version

This is an early mockup screen for a current project - a TV Jukebox for my MP3 collection. I already have a Samba- and NFS-serving FreeBSD box with 100Gb of diskspace sitting in the back room, and the network in. A spare P200MMX with an ATI Xpert98 card with TV out will be the jukebox itself, with an Infra-red keyboard to control it (and probably an IRMan remote too). There is already a decent set of speakers and amp by the TV, so it's just a case of hooking it all up and writing the software.

It's using Windows 98, DirectDraw, and XAudio for the MP3 handling. It's been a while since I wrote any Windows software so it's taking a while, but I'm getting something useful now. I have a couple of hundred scanned CD covers, out of about 600 CDs currently ripped (still plenty to go), which you can use to browse for tracks. There is a perl program on the server that does a lot of donkey-work in finding the tracks, their run-times and cleaning up the filenames a bit for display - this saved me writing a bunch of text-handling in C, and also doing lots of directory-searches and file reads over an SMB connection, which sucks.

Likewise, it uses a fair chunk of RAM to cache the JPEG because it seems to take an age to read them in sometimes. As a lucky coincidence, it seems that the image size I am using (300x300) is almost exactly what Amazon use for their large cover pictures, and I can usually find images there quicker than I can scan them on my poor little USB scanner.

The main downside right now is the noise of the PC - it'd be nice to find something that was fanless, diskless, networked and still had sufficient oomph to deal with the graphics. Something like a Corel Netwinder would be cool, if it wasn't for the price.

Howie Jan 22nd 2001

Update - 16th November 2001

Jukebox Client

First cut of the Jukebox client
Larger Version

To the right is the current incarnation of the jukebox. It's a Duron 800 running Windows 98, with a GeForce 2MX driving the TV out. It's not that quiet although the PSU is pretty silent and the drive is running in a SilentDrive enclosure from It's a fairly small case, as you can see from the Sony PS2 standing next to it - the ideal system would be the same size as the PS2, and perhaps a little quieter. Also visible is the IRMan infra-red reciever (on top of the VCR).

Jukebox Server

The Jukebox FreeBSD server
Larger Version

And now, on the left is, which is the server end of the jukebox. It's a K6-2/450 with 300+Mb of RAM (I had a lot of spare PC100 DIMMs when I upgraded to an Athlon desktop!), and a bunch of large IDE disks mounted in CoolDrives. The disks are 6Gb for system (FreeBSD 4.4) and 140Gb for data (40+40+60). It runs Samba to share the disks, and some perl scripts to catalog the files so that the poor little windows system doesn't have to do that over an SMB connection. The catalog stores the filename, a cleaned-up artist/title, the length of the track in seconds, and the MD5 hash of the track.

The MD5 isn't used yet, but my intention was to write a tool to rename the files based on their MD5 hashes. I have all the data backed up onto many CDRs, and a lot of the tracks have been renamed since they were burned. To avoid losing that renaming effort, I wanted a tool to recognise the tracks by their content (MD5 hash being an approximation), and rename them accorsing to a master list. That way, next time I have a disk crash, I don't lose the nice renamed files (last time, I did).

The jukebox software itself hasn't changed a whole lot since I first wrote this article, because I haven't had a lot of time to spend on it. It's next on the list!

Also, I heard from Latka, about this set-top box, which looks like a promising hardware platform for the next jukebox. Silent!

Copyright 1994-2005, by Howard Jones.