phat code If the code and the comments disagree, then both are probably wrong.
Main

Projects

Downloads

Articles

Links

Projects

Oldskool MP3

Main / Other Stuff / Downloads / Screenshots/Photos
 

Details

AuthorPlasma (Jon Ρetrosky)
Emailplasma@phatcode.net
StatusCompleted
ReleasedFeb 20 2003
PlatformDOS
LanguageAssembly, C, QuickBASIC
SourceYes
BinariesYes

 

Newest Screenshots

 
 
added Mar 4 2005
 
 
 
added Mar 4 2005
 
 
 
added Mar 4 2005
 
 
 
 


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.)