At the core of this project is a Microchip PIC 18LF4525, which controls all of the functions that are needed to play a file. I wanted the files to be easily updated, so I chose an SD card using FAT16 as the file system. FAT16 is supported on nearly every OS, and is a bit easier to implement in firmware. To decode the MP3s, I’m using VLSI’s vs1001k MP3 decoder IC. Newer and better versions have been released, but I decided to use this since it was fairly expensive when I first purchased it. The vs1001k has two SPI interfaces for commands and for data. It successfully plays MP3s that are stored in the root directory of the first partition. A joystick is provided to allow the user to pause, play, select next track, and select previous track.