The software for this system was written in Perl. Perl was chosen because it is incredibly flexible and easy to use. It is also awesome for manipulating text, so it simplifies design of the interface.

Operating System
Linux is used as an operating system. There are several mp3 player projects that have been done using MS Windows. Linux is much more appropriate for the job because it is much more stable and configurable. The Linux configuration I am using boots incredibly quickly by bypassing all non-essential tasks. It also mounts all the file systems in read-only mode. This prevents any hard drive damage that can be caused by powering down the drives before without shutting down the system.

It proved to be quite complicated to install and configure Linux properly. If anyone else were interested in doing a project like this with limited Linux knowledge, I'd recommend getting a copy of "Running Linux" from O'Reilly publishing. "Programming Perl" is also essential if you plan on doing any Perl coding, and "Learning Perl" is the best introduction to Perl available. Another useful resource is the comp.os.linux newsgroup.

mp3 Decoding
The mp3 decoding is done using xaudio ( This is a third party program that provides excellent support for mp3 playback. There is a CPAN module written to interface the xaudio SDK with Perl (MPEG::MP3Play). More information on this module is found here.

Perl Code
This project is an ongoing one, and I will be constantly adding features to the software and improving it. The source code for the most current version is here.