Car MP3 Player
I'm not sure exactly how the idea popped into my head, I think it was some random article on Slashdot about Matrix Orbital LCD Displays. I ordered one of the displays with the intent to use it for the display in an mp3 player for my car. Problem was, I wanted a computer that'd fit between the two front seats of my car (a 1988 Nissan Stanza Wagon), and I didn't have any cases that would fit. Plus, I'm cheap, so I couldn't just go out and buy one. So, the LCD panel sat on my desk... waiting.
Then, approximately a year after I ordered the panel, I ended up buying an AST slimline desktop 486 machine at a State of Michigan surplus auction. I didn't really want it, I had gotten it in a lot with a couple of Grid laptops for $15. I wasn't really sure what to do with the machine, it was a 486/33DX with 8MB RAM, 340MB HDD... seemingly useless and powerless. But, upon opening it up, I noticed it had a Pentium Overdrive socket. Cha-Ching! Once equipped with a Pentium 83 overdrive chip (acquired off e-bay) a 12X Mitsumi CD-ROM drive, a SoundBlaster SB32 sound card, and an extra 8MB of RAM, I began my coding mission.
My goal was to write an interface for the very fast, efficient, and extensible mpg123 MP3 player for Linux. This interface would use the LCD panel as its output, a Gravis Gamepad as its input, and would play MP3 files off CD-R discs. I wrote the interface over the course of 2 days (when I should have been studying for my Operating Systems course), using VI on a 9" black and white IBM monitor. Yes, the code is messy. I had seen a lot of other similar projects that got really, really fancy, involving databases, large hard disks, etc... I didn't want that. First and foremost, this machine was going to be used in a car, which brought up two major problems: 1) hard disks are fragile devices, and roads can be bumpy. 2) driver distractions are BAD. I opted for playing off CD, and keeping the interface really simple, operating exactly like a typical CD player. Only cooler, 'cause it's playing MP3s.
You're saying to yourself... "But Josh!" (which is an odd thing to be saying to yourself), "Won't there be a lot of skipping, since you're playing off CD?" I scoff at thee. Think about it... MP3 offers a compression rate of approximately 10:1, meaning that the CD-ROM has to read about 1/10th the data a regular CD player has to read to keep the music going. In addition, I'm using a 12X drive, so potentially it can read 120 times the data it needs for a single second of audio. Add in the drive's internal buffer, Linux's input buffering, and mpg123's buffering, and you end up with a lot of buffering. So my answer to your silly, silly question is, "No." I've never had the player skip in the year or so I've been using it.
Once I get around to borrowing my friend's digital camera, I'll put them up here, I promise. Until then, imagine a sleek, stylish sports car, only big, boxy, ugly, and rusty. Oh, and it has a computer in it that plays MP3 files.
I almost feel ashamed of this code. It's quite messy, and my coding style has improved dramatically since then. But hey, I can take the abuse I'm sure I'll get. So, download away, and have a good laugh at my expense. One day I'll rewrite it and add a few features I'd like, but for now, it works.
Download Josh's Awesome Car MP3 Source NOW!
Return To Projects