|
Overview
Oldskool MP3 is a mobile MP3 player that I designed,
built, and programmed. I started the project in August 2002 and finished it in
February 2003.
People usually have two responses to this project, either "Sweet!" or
"What's the point? Why not just buy an MP3 head unit?" True, I could have just
bought an MP3 stereo. But this project was a learning experience more than
anything else. When I started I had little experience with electronics or car
stereos, no experience with soldering, and had never written more than a few
lines of C. In the end, I walked away with much more than just an MP3 player.
Plus, there are no head units that can play MODs. :P
I'd like to thank my dad for helping me with this project, especially with
the LCD interfacing and box construction. Without him it wouldn't have been
possible.
How It Works
In a nutshell, the player boots off a floppy and runs all software from a
ramdisk. It plays music files stored on a CD-ROM or CD-R (ISO-9660/Joliet).
Input is provided with an 8-button keypad interfaced via the gameport.
A 4x20 character LCD connected to the parallel port is used for a display. The
player produces analog stereo output.
Power is provided with a 140-watt inverter. There are schematics out there
for directly powering a computer from the car battery's 12V, but at the
time I didn't have the experience to do this. (And I basically got an
inverter for free, so it made sense to use it. :P) Anyway, the inverter
works fine, even though it isn't as efficient.
Vehicle
Oldskool MP3 was originally installed in a 1987 Chevy Caprice.
I had planned to put the player in the glove compartment or under the front
passenger seat, but it ended up being too big, so I had to put it in the trunk.
The display and controls were mounted up front, under the ashtray.
(I no longer have the Caprice; right now the player is sitting on the
floor unused. Maybe someday I'll put it in another car...)
Hardware
The following is a list of the major hardware components used
in the project. See this page
for a complete parts list, along with prices.
- Intel Pentium 100 Mhz CPU
- Crucial 16 MB PC66 SDRAM
- DFI P5BTX/L socket 7 AT motherboard (rev. B2)
- Compaq 140-watt AT power supply
- Trident 9440 1 MB PCI video card
- Sound Blaster Vibra 16XS ISA sound card
- Panasonic/MKE 8-bit ISA CD-ROM controller
- Creative 2X CD-ROM (Panasonic CR-563B)
- Mitsumi 1.44 MB 3.5" floppy drive
- Seiko L2014 LED-backlit 4x20 character LCD (HD44780 Controller)
- QuickShot 4-button gamepad (QS217)
Software
Below is the software that I used/wrote for the project.
All the programs, along with a complete floppy disk image, are available for
download on the downloads page.
The source code is also available for the custom programs that I wrote.
-
Canned
The following "canned" (ie, I did not write them) programs
are used in Oldskool MP3. MPXPlay and XTC-Play are especially important, since
they perform the actual music playback.
Custom
These are the custom programs that I wrote for Oldskool MP3.
The TSR was written in Borland C++ 3.1 with some inline assembly. The other
two were written in QuickBASIC 4.5.
- Command-Line LCD Control
- Initializes the LCD and provides LCD output during bootup.
- Control TSR
- Gets input from the gameport and controls MPXPlay or XTC-Play by
"faking" keystrokes. Also provides LCD output during music playback.
- Front End
- Provides the entire menu system. Changes/stores options, controls the
TSR, and launches MPXPlay or XTC-Play. Also provides the code for playing
audio CDs.
File Formats Supported
Oldskool MP3 supports more formats than any other mobile MP3 player I have
seen to date, homemade or commercial. (I have yet to see any commercial player
that plays any Tracker/MOD format!) 16-bit, 44.1 Khz stereo playback is
supported for all formats.
-
Digital Audio Formats
- AC3 Dolby AC-3
- CDA Redbook CD Audio
- MP2 Audio MPEG Layer II
- MP3 Audio MPEG Layer III
- MPC Musepack/MPEGPlus
- OGG Ogg Vorbis
- VOC Creative Voice
- WAV Microsoft Wave
Tracker Formats
- 669 669 Composer Module
- DSM Digital Sound/Dynamic Studio Module
- DMF X-Tracker Module
- FAR Farandole Composer Module
- IT Impulse Tracker Module
- MDL DigiTrakker Module
- MOD ProTracker Module
- MTM MultiTracker Module
- NST NoiseTracker Module
- PTM ProTracker Module
- S3M Scream Tracker III Module
- STM Scream Tracker II Module
- WOW Grave Composer Module
- XM Fast Tracker 2 Module
More Stuff
More details about the project are available on
this page. Project
photos are available on this page.
(I had about 4 times as many photos, but I lost most of them when my hard drive crashed.)
|