By Zhi-Hern Loh
Results of my design
On the 31st of April, I finally got my MP3 player to play a MP3 smoothly.
The MP3 player worked as specified. This was the testing process:
Welcome to Serial MP3 Player Version 1.0 by Zhi-Hern Loh User interface is as follows Button|Function 0 Start playback 1 Stop playback 2 Volume Up 3 Volume Down STA013 found Ready for Xmodem transfer Press Btn 0 to start Xmodem
Stopped play File transfer complete Ready for Xmodem transfer Press Btn 0 to start Xmodem
Thus I verified that the MP3 Player was working as specified.
The maximum transfer speed for my design is about 2KBps. I found this limit by experimenting with MP3 files encoded at various bit rates. A 4 min 40 sec song was encoded at different bit rates, resulting in file sizes 215, 500, 800KB for 8kbps,16kbps,24kbps MP3 encoding respectively. The 800KB file playback was very noisy and had many spikes. I suspect that further optimization of my code might be able to allow me to download MP3s at 115.2k BAUD. This might enable me to play songs up to 3.8MB in size (for a 4m 40s song, refer to the calculations on the design page).
For the current design, smooth playback requires the (file size / song time (in seconds)) to be no greater than 2KBps.
Using the LAME Encoder, I can resample any MP3 file to fit this transfer rate requirement.
The song quality sounds roughly like that of a radio with occasional blips. I suspect that the blips might be due to buffering problems since they seem to occur at evenly spaced intervals. However even with the occasional blips, the sound is pretty good for a device utilizing the slow RS-232 interface.
The volume increase and decrease controls work fine. The volume change did not make the playback jerky or noisy. I was able to scale from maximum to mute while a MP3 was playing.
Sadly, I could not get the CD-ROM to work. The furthest I got with the CD-ROM was sending a hardware reset and software reset command. The bug seemed to be with trying to read the table of contents (TOC) of the CD-ROM. Even though I put a Joliet formatted CD-ROM in the drive, I could not get the appropriate response. There could have been a few reasons for this:
The CD-ROM version would have let me play files at much higher bit rates compared to the RS-232 version. Documentation on the ATAPI and ISO9660 standards was difficult to find. The documents that I found were really difficult to read and understand within the 4 week time span of the project.