VS1053 Simple 'MP3' Player?
Mar 25, 2011 at 12:01 PM Thread Starter Post #1 of 21

ezzieyguywuf

100+ Head-Fier
Joined
Aug 20, 2005
Posts
464
Likes
10
So I got it stuck in my head yesterday that I want to make my own DAP, probably based around an arduino. I thought it'd be pretty easy, as I could offload the DAC and amp to, say, a bantam and cmoy. My biggest problem is that the arduino doesn't have enough juice to decode ogg or flac (from what I've read/inquired at least). Enter the VS1053. This little guy seems like he can do it all, and then some (I probably wouldn't use half the features on it. My question is as f ollows: the datasheet touts the fact that the chip has a built-in DAC as well as a rudimentary 'earphone amplifier' if you want it. Looking at that block diagram, it seems that the amp can be circumvented, but not the DAC. Ok, actually maybe my question will come a little later.
 
My objective with this will be to get the cleanest, 'best' audio signal to a dedicated DAC and amp for maximum portable audio pwnage. I realize that in a portable setting it'll be hard to drive some of the heavier headphones, but my LiveWires are anything if not easy to drive, and the SR60s don't fall too far behind that. I worry, though, that by going through the VS1053's DAC I'm already compromising the signal since I don't know the specifics of their DAC. At the same time, though, I don't know what kind of signal an external DAC is expecting. Is it the I2S signal that the VS1053's DAC outputs? i.e. do I NEED the decoder to have its own DAC? Or will my external DAC just expect a stream of 0's and 1's in some particular form? Does anyone have experience in this field and can point me to some resources?
 
ezziey
 
Mar 25, 2011 at 1:30 PM Post #3 of 21
I have a Seeedstudion vs1053 board which I plan to drive with Arduino. The plan (when It get a chance to do it) was to get the basic board going with Arduino and use I2S to an OPUS DAC (WM8741). The VS1053 outputs at 16bit. The Master clock originates from the vs1053.
 
The current crystal is 12Mhz resulting in a sample frequency of 48Khz. If you replace with a 11.xxx crystal (or clock), then you can play at 44.1Khz and avoid resampling. That was the next step of my plan.
 
In this configuration, both DAC and VS1053 are driven from a single clock, thus hopefully avoiding most jitter.
 
 
Mar 25, 2011 at 1:34 PM Post #4 of 21
glt: I can't seem to find that board on their website, could you post a link?
 
FallenAngel: if the vs1053's DAC is outputing a digital signal, then indeed what the heck is it doing? Am I misinterpretting something here?
 
Mar 25, 2011 at 1:38 PM Post #5 of 21
You could actually make a nice DAP using the vs1053 and a microcontroller.
Interesting..
 
If you're serious about this you should consider using an ARM based microcontroller instead.
Enter ET-STM32 stamp.
http://www.futurlec.com/ET-STM32_Stamp.shtml
 
EDIT:
Have you seen this?
http://www.opencircuits.com/Music_Player#Yampp:_Yet_another_MP-3_Player
 
http://code.google.com/p/arm-webradio/
 
You could likely base your project off of that.
 
Mar 25, 2011 at 1:43 PM Post #6 of 21


Quote:
FallenAngel: if the vs1053's DAC is outputing a digital signal, then indeed what the heck is it doing? Am I misinterpretting something here?



Failing apparently =p
 
The vs1053 is outputing both a digital and analog signal.
Read the datasheet. There are a Left, Right, and GBUF pins for analog output
 
Mar 25, 2011 at 1:57 PM Post #7 of 21
nullstring: something like that could be infinitely better, as I'm pretty sure Rockbox would run on it.
 
FallenAngel: I have perused the datasheet, but I'm by no means an expert at processing all the data in there. I keep going back to the block-diagram on their main site though: you see where the I2S signal goes through the DAC? Maybe they just did a piss poor job of drawing up a block diagram, but that's what I been going off of primarily. I figured I'd get 'dirty' into the datasheet once I got a few questions answered.
 
Mar 25, 2011 at 2:30 PM Post #9 of 21
The more I look into this, the more I wonder: why hasn't this been done yet?
Most of the hard parts have already been done
 
If we can get everyone to work together, we could certainly make the first open-source hifi DAP.
 
I guess thats the problem.
We'd have to get people with expertise in each area to work together.
 
It could certainly be done.
 
 
Then again, it could be done in an iteration of projects-
  • Super simple proof of concept. Arm, FAT32, and VS1053 with I2S, SPDIF, and headphone out right from VS105.
  • Rockbox proof of concept. Same as above only with rockbox support and a full color screen, usb, etc.
  • Same as above with line out from dedicated DAC, and unoptimized headphone amp.
  • Version 1.0; Same as above with revamped power supply for better headphone amp. Optimized DAC.
 
 
Of course. I am completely talking about of my ass. But, as I see it. It could be done =)
Perhaps you should take the first step and create the first iteration.
 
Mar 25, 2011 at 2:57 PM Post #10 of 21
Sweet. I definitely think I'm going to pursue this then. I think it would be nice to have a real simple but high-fidelity portable audio player. Plus, if I could put Rockbox on that ARM board you linked, it'd be awesome. One step at a time though :-D I wonder if the arduino wouldn't be easier to use as a first step, i.e. to figure out everything I need to figure out with the vs1053 and then step up to the ARM board. What do you guys think? More trouble than its worth?
 
Mar 25, 2011 at 3:00 PM Post #12 of 21
Many people have made standalone digital music servers which is basically what is being described. It is to the point where this isnt even really expensive or difficult.
 
The problem comes in trying to get everything into a truly portable package. This is a herculean task. 
 
Most of what the OP describes can already be done with an Iriver, or other portables that output digital streams. Support for some "newer" formats or 2496 is rough, but both are easy enough to work around. Maybe make that the project? Rather than trying to build new hardware where adequate hardware exists why not write software to run new things on the old hardware? Some of the hardware is limited to 1644, but there is no reason other than software that they dont play certain files. 
 
Mar 25, 2011 at 3:02 PM Post #13 of 21
I remember trying to bit bang the I2S protocol using the GPIO port on a DE2 board that has a 50MHz clock. It didn't work really well... Couldn't output a consistent waveform at 12kHz sampling rate and 16 bits resolution. -_-  But bit banging was pretty stupid. I'll be following this thread with close interest. :p
 
Mar 25, 2011 at 3:02 PM Post #14 of 21
nullstring: I completely agree, and I too am of the mindset of "why hasn't this been done yet". There was some efforts over in the Rockbox community which developed itself into the Lyre project. I'm not so sure how applicable that project would be to this though, as (I'm pretty sure) they ended up just using a dev board for some u-processor and  built from there. I'd like to make this thing cheap but good, which I feel is totally doable since we already have external DAC and amp projects that are tried and true. All we need is a way to read the files (ARM/arduino), decode them (vs1053) and then send that decoded signal to the DAC. After that, let the DAC and amp designers have at it, as they have been since the cmoy (or earlier?). It'd be _great_ to have rockbox control everything, but (as you mentioned) that would be a project in and of itself. We _might_ be able to write some drivers between our proc and our decoder chip such that Rockbox has everything it needs to function properly, but I'm not savvy enough on what goes on behind-the-scenes with rockbox to know if that will be sufficient. I DO know that rockbox is an OS written from the ground up, so I don't think it would be _too_ hard. I'm def gonna try to convince the wife that this is a worthwhile purchase, and go from there. When I brought it up the other day, though, she was all "shouldn't you finish buying all your homebrewing stuff before you get into yet another project?"
tongue_smile.gif

 
Mar 25, 2011 at 3:07 PM Post #15 of 21


Quote:
Many people have made standalone digital music servers which is basically what is being described. It is to the point where this isnt even really expensive or difficult.
 
The problem comes in trying to get everything into a truly portable package. This is a herculean task. 
 
Most of what the OP describes can already be done with an Iriver, or other portables that output digital streams. Support for some "newer" formats or 2496 is rough, but both are easy enough to work around. Maybe make that the project? Rather than trying to build new hardware where adequate hardware exists why not write software to run new things on the old hardware? Some of the hardware is limited to 1644, but there is no reason other than software that they dont play certain files. 


I agree that the iriver does pretty much everything I want, but last I checked its the old school irivers that do so. I.e. the out-of-production ones that are super hard to come by at a decent price. This vs1053 costs like, $5 I think. add to that a board (how much do those cost, another $3?), various components/connectors ($10? I'm talking usb mainly, plus resistors etc), the arduino/ARM (~$35) and then an external DAC and amp (could be done for ~$60, no? maybe $100?) and you got you a great DAP for <$200. I'm super stoked with my Cowon D2, but it doesn't even have line-out, so there's not really a whole lot I can do with it. I dunno what you mean by 2496, or the 'newer' formats. And what hardware exactly are you talking about that we could write software for? Isn't that pretty much what I've mentioned already, the vs1053 being the hardware? Or do you mean higher-level hardware than that?
 
edit: ok, so after hanging out in #rockbox on freenode for a bit, it looks like using rockbox with the hardware decoder would be more trouble than its worth. Rockbox does all its decoding in software which, apparently, is what gives it such a large library of supported formats. So, I guess the first thing I'd (we'd?) need to decide is which route do we want to take: use the hardware decoder and build everything (including the software music player) from scratch, or scrap the hardware decoder and find the cheapest processor that we can to run rockbox on. <to be continued, I gotta go>
 
 

Users who are viewing this thread

Back
Top