building mp3 player from SD card/flash drive - Page 1
Forum section: electronics / beginners

author: SnakeBite
author_rank: Regular Contributor
timestamp: September 26, 2013, 09:20:02 pm
content: Hi, i need your help....i'm building a amplifier with option to play audio files from SD card or Flash drive and i can't manage to get it to work... i'm was thinking on using arduino to make it work since it has a lot of support and kits but i think i need something better....Ok , what i need is a circuit that can read from SD card and Flash drive all the audio files and print the filename (LONG FILE NAME not dos 8.3 filename) them on a Graphical LCD (include Hebrew characters support ) and when the user select a song it will read that song from the SD/FLASH drive to an ADC and to the amplifier...do you have any idea how to start?! the Hebrew support is hard ...and also the LFN (long file name) is not easy to find (because it's licence by Microsoft)... how can i do it and what chip to use? do i need other microcontroller?!thanksIdo

author: RoadRunner
author_rank: Frequent Contributor
timestamp: September 26, 2013, 10:03:18 pm
content: i guess the easiest way to do it is use an dedicated MP3 decoder chilp like from VLSI solutionshttp://www.vlsi.fi/. they have in built sd card interface , mp3 decoder and all other things , can be easily connected to any mcu. for user interface you can use arduino or any other generic mcu.if you wanted to do all you self , then you have to implement all of these functionality in software , decoding mp3 file could be fun. and you gonna need a bit more powerful mcu.

author: jancumps
author_rank: Unknown
timestamp: September 26, 2013, 10:24:23 pm
content: The easiest way might be to use one of these linux boards that can host MP3 decoding and SD - like the Raspbery Pi or BeagleBone - or to dismantle the cheapest MP3 player you an find.AT89C51SND1C from Atmel is an example of a "Single-Chip Flash Microcontroller with MP3 Decoder and Human Interface" (from the datasheet) chip that supports SD:- MPEG I/II-Layer 3 Hardwired Decoder- MultiMedia Card Interface Compatibility

author: SnakeBite
author_rank: Regular Contributor
timestamp: September 26, 2013, 10:25:31 pm
content: I saw this chips from VLSI they are perfect BUT they don't support LFN (long file name) just the DOS format of 8.3... the only chip that i found that do all of this ishttps://www.ghielectronics.com/catalog/product/340.i don't really know if it's support filenames other than english... (like HEBREW for example) and i don't want to but it and it's doesn't support.someone knows?!

author: amyk
author_rank: Super Contributor
timestamp: September 27, 2013, 10:26:33 am
content: What sort of design are you aiming for anyway? MP3 decoding can be done in hardware or software (DSP or MCU).QuoteThat's not an MP3 player, but that configuration will do fine to play uncompressed WAV (or even video) and I recommend that is something you could try first.FAT filesystem and LFN support is well-documented; if you know any programming you should be able to write something that can handle that easily. Hebrew is going to be a little harder, and you're almost certainly going to need a graphic LCD, but providing you can figure out the character encoding and build a font to match, it shouldn't be an unpassable obstacle.

author: alxnik
author_rank: Regular Contributor
timestamp: October 08, 2013, 10:34:08 am
content: I'd say that's way too much work for what you want. Writing a FAT32 driver, and an MP3 decoder is not a trivial job.Having said that if you want to do it just for the fun of it the go ahead. In that case, keep in mind that I don't think you can work with arduino "C++", you must go with pure C. A good place to find code is the linux sources, although linux is at least 32bit, it would give a good starter.Now if you are focused on the result, as jancumps said, slap a Raspberry in there, connect a display to it - you can find any type of display you want for the raspi - and with a bit of python you will be up and runnning in a week. Bonus points of network connectivity/streaming capabilities.

author: amyk
author_rank: Super Contributor
timestamp: October 08, 2013, 12:43:26 pm
content: Quote from: alxnik on October 08, 2013, 10:34:08 amFAT isn't difficult if all you have to do is read a file sequentially. NTFS or ext* is another matter entirely.MP3 decoding is difficult if you want to understand all the maths behind it, but if all you want to do is knowhowit's done, the algorithm is just a lot of arithmetic and table lookups. You don't even need floating point.

author: alxnik
author_rank: Regular Contributor
timestamp: October 08, 2013, 02:23:17 pm
content: Quote from: amyk on October 08, 2013, 12:43:26 pmActually it depends on programming experience, most young programmers (and many older) I know in real life would struggle with it. I agree that it can be relatively easy, but again it is time consuming and you are reinventing the wheel, multiple times. The only reason I can see for someone to do it is as a learning experience, or as I call it "because I can".

author: odv000
author_rank: Newbie
timestamp: October 09, 2013, 08:20:11 pm
content: i tried it on AVR32 AP7000 evaluation board and it just capable of doing it in fixed point ("madplay" open source fixed point decoder).it's 32bit processor and it runs at more than 100MHz and i got 70%-80% CPU load.there is no way some arduino or 8051 could handle MP3 decoding. there is ridiculous amount of math should be done.