Electronic – Microcontroller based music player

musicplayer

I'm toying with the idea to build a music player. Now, before you close this as an exact duplicate: they often do this with a single board computer with a high end controller like ARM9, running Linux.
I do have experience with microcontrollers, but not with (RT)OSes, and I would like to do it without Linux or so.
Audio can be in MP3 format, but also native PCM. (I don't mind the larger files, a 500GB hard disk is a lot cheaper than a 50GB SSD). So I'm thinking of a very basic setup of a Cortex M3 controller (possibly NXP LPC1700) connected to a hard disk and a DAC, a few buttons and a text LCD.

What are possible pitfalls, and is this a good idea from the outset? And I must have overlooked some things too?

Edit:
The hard disk I want to use will be IDE, I don't thin an LPC can handle SATA.

Best Answer

Not much pitfals here except quality of DAC+amplifiers.

From the digital side, all you need is libmad which is easy to compile for ARM, any micro with hardware multiplication (Cortex M3) with at least 32kb of SRAM (48-64kb is easier & better). For MP3 decoding with hardware multiplication you need clock of some 20-40Mhz+. No RTOS/Linux needed for libmad.

Another approach might be using weaker micro (like AVR) with hardware MP3 decoder - VS1011 and later. They have builtin DAC, and therefore easier to work with.
The VS1011 also accepts PCM, so that you bypass the MP3 decoder, and just use the DAC.

Accessing IDE is another topic, which should not be big of an issue, but can't recommend specific library. I would prefer to just use SD cards - they are very easy to interface, and even 32Gb cards are not too expensive.