The first time I worked with this board, I was running the Arduino IDE from my MacBook. The original source code from Seeed was very convoluted, and neither of their demos worked. Only after finding corrected code on GitHub did I get the shield working… to some extent. MP3 playback, volume and track forward/backward were fine. WAV playback was not crystal clear, and when playing WAVs, track volume and navigation were also compromised. The selling point of 44.1 Khz, 16-bit WAV playback was the whole reason I purchased this board!
Seeed support was useless and requests for help on Arduino.cc did not result in any groundbreaking tips.
In order to start fresh – and retrace my steps – I came back to the original demos using the Arduino IDE 1.0.3 on my PC. That way I knew I was starting with clean libraries, and could more easily control the testing scenarios without botching other projects.
The first problem I ran into was that the ZIP files for the demos would not download onto a PC running XP with Firefox. So I actually had to download the files onto my MacBook first, then transfer the files to the PC via thumb drive.
The second problem I ran into was that the Seeed sketches were referring to WProgram.h, not Arduino.h. I also had to overcome incompatibilities in the New Serial libraries – help for which is easily found from a number of places by searching on the error codes. I even changed the pins library, even though this was only recommended for Linux users.
Over the course of about 2 hrs, I did some troubleshooting for the 1.4 and 1.7 demo examples. Both tests were performed separately – with only the libraries for the specific test installed at once (because Seeed tells you that the libraries can’t coexist). SD card was freshly formatted, with files in correct format and naming structure.
The first demo (1.4) failed miserably. The sketches compiled, and uploaded, but none of them resulted in playback – MP3 or WAV.
Demo 2 (1.7) eventually worked for MP3s, but WAVs were still played back with extra static and noise, similar to my other experiences with the GitHub code. At times it just sounds like the device is choking on the WAV data, which would make sense since there’s more data to process. No difference running via battery, USB or 9V adapter.
I can only conclude that a) this board is defective, or b) there is a user-definable codec setting somewhere in the Arduino code/library that is simply set incorrectly. Unfortunately, if the problem is a codec setting, I am not experienced enough to track that down. I tried to explore the code/libraries with my basic understanding, hoping there would be some obvious setting, but I didn’t find any. I could be looking for something that doesn’t exist.
For now I have a glorified MP3 player, which I guess is something. Other people have not even gotten this far with this board, but I appear to be the only one who has experienced the WAV issue. I will send a free CD out of my catalog (visit www.jeremydeprisco.com) to anyone who can help me figure this out.
Why do I need WAV playback?
Hi-res MP3 is very good, and in most cases playback from this shield will not happen on a system with suitable 20 Hz-20 Khz speakers for full 44.1 Khz playback. My problem with using MP3 in this case is more about time than it is audio quality. MP3 requires a step for conversion. I’d like to be able to drag/drop WAV content directly from my writing/recording platforms, without the extra step of compressing the files.
So the outcome of all of this: this board was very difficult to use, despite the fact that it came preassembled and basically amounts to nothing more than the inside of an iPod. The code provided was buggy and support was terrible. Version 2.0 is supposed to be better. I’d look elsewhere.
Dec 2015 Update: Seeed appears to have released two updates to this board. Version 2.0 and 2.2. The capabilities look interesting, but I still think Adafruit has the best boards, and service.