|
Click For New Design |
This new design has replaced the old one.
The design shown on this page is obsolete.
The new design has more features, is flash upgradable,
is much easier to use, costs less, and is actually available if you'd
like to buy one! It's better than this old design is almost
every way. These old pages are still available, mostly for
reference.
The Older MP3 Player Design
MP3 Player Pages
|
Related PJRC Pages
|
Data Sheets
|
Making Your Own High Capacity MP3 Player
I've wanted an MP3 player for some time... but forget about those
tiny little flash memory toys. I don't need miniture and absolutely
shake-proof, I want long play times, very long! Playing a CDR is
an improvement, but it's only 650 megs, still not enough.
Only one storage will do, a standard hard disk drive.
I got tired (impatient) of waiting, so I rolled my own.
Here's a photo.
It's actually not all that difficult to make your own player.
The MAS3507D decoder chip does all the
hard work of turning a MP3 bitstream into the decoded audio. A CS4327 DAC
provides the audio output, though many other audio DAC chips will work.
One of my 8051 development boards reads the
hard drive and pumps the bitstream into the MP3 decoder chip. The decoder
only runs on 3 volts, so there are a couple logic level conversion issues.
Here is a
larger photo of just the player. The hard drive is in the middle, the
8051 development board with IDE interface, MP3 decoder, and audio output
is on the top, and a power supply board is located on the bottom. Vent holes
allow the power supply and hard drive to keep cool.
Cool Stuff
- Plays for a long time. I used a spare 1.2 gig hard drive and loaded
it with 17 hours of MP3s, but the
design can easily handle any modern IDE drive.
I'll probably buy a 20 gig drive for this thing someday soon.
- It sounds great. The MP3 decoder chip and DAC are really quite
easy to use and they sound great. Both manipulate 20 bit data.
- Reasonably small size. About half of the box is the power supply,
which was a spare one laying in my junk drawer. Most of the development
board circuitry is not necessary for playback. The design could be
much smaller.
- The top and bottom pushbuttons jump to the next or previous track.
- The middle pushbutton pauses and restarts playback.
- I can keep listening while rebooting between Linux and Windows, or
while playing games, or in my car!
Things To Improve Upon
The new design addresses most of these
issues, and it is fully flash upgradable, so cool new features
can be added to it even after it's built.
- The 8051 can't play 256k and 320k bitrates. Bitrates 192k and lower
work fine, and variable bitrates work fine.
- There is currently no buffering, beyond a single 512 byte sector.
- If you shake it (fairly hard), the drive will have higher read
latency, and without much buffering, little gaps in the playback can
happen. Walking with it is no problem, but jogging won't work. Works
fine in my car on the front seat, but probably would need shock mounting
if it were bolted down.
- The firmware requires the MP3 files to be written directly to the
drive, with a table in the first several sectors to indicate where each
track begins. I wrote a little program to copy the files to the drive,
but it requires all of them to be copied at once. You can't easily add
and remove files. The program runs in Linux. There is currently no
windows version.
- Power supply needs 120 volts AC. I've used it in my car with a
small inverter. Should really design a 10-15 volt input supply for
use in my car.
- There is no display and no support for playlists, categories, etc.
- The drive always spins, so it uses too much power to run from
any small-size battery.
- Plastic enclosure looks nice, but it's a pain to remove the drive
for loading new data.
Design Info (For Free)
I haven't made any nice pages with all the info for this player.
It takes time to make nice web pages, and I'm putting most of my
limited free time into making the second version.
Here is the info that is available now:
Disclaimer: This code and design data is distributed in the hope
that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.
The circuit board shown is the newer 8051 development board. The
schematic and
layout are available.
Wrote a detailed page about the
IDE interface, which is the circuitry on the right side of
the photo, partially hidden by the ribbon cable. The circuits
on the left side are the MAS3507D, a crystal oscillator for it,
a Cyrstal Semiconductor DAC, and a couple chips to do the 5 volt
to 3 volt logic level conversions. There is now
schematic for this circuitry.
The 8051 sends data to the
MAS using its serial port, configured in "mode 0" (sync serial).
See the 8051 datasheets for more info.
I did not actually draw a schematic, but you can view
Originally I did not have a nice schematic drawn, just
these hand-drawn notes and sketches that
I used when I built the player. Some
close-up photos of the point-to-point
wiring are available, in case I've forgot to document something.
Here is a copy of the firmware source code
(assemble with as31).
This code is intended to be used with my
Paulmon2 monitor. To
get a group of MP3 files onto the hard drive, you will need to
use this little perl script that generates the
raw hard drive image, in the linear sector format that the
firmware uses, with a list of the starting sector addresses in
the first 256 sectors of the drive. It's ugly, I know, but it
does work, and unlike a lot of the other players you'll find on
the net (see below), I am actually distributing the design data for free.
Future Plans
Here is a page about my
plans for a new open source design. If you
are interested in the technical development of this project, please
read and make comments. The new design's hardware is more or less
finished. The design is fully flash upgradable, including the digital
logic on the board that implements the DRAM controller, IDE interface,
and DMA interface to the MP3 decoder chip. There should be lots of
room to add cool features to the design.
If you're interested in this project and/or want to have one of
your own, please contact me.
I'm interested in any feedback or ideas you may have.
Other Homebrew Players
It seems that there are a number of people building their
own MP3 players. Here's a few that I know about:
If you know of other homebrew players on the net, please let me
know so I can make links to them.
Paul's Homebrew MP3 Player, Paul Stoffregen.
Designed and constructed Winter, 2000.
http://www.pjrc.com/tech/mp3/old_player.html
Last updated: November 28, 2003
Status: More info to come... just a couple photos for now.
Questions, Comments?? <paul@pjrc.com>