Are there any inexpensive Arduino variants w/ micro SD and DACs built in?

I'm aware Adafruit has an audio shield that I could plug into an Arduino Uno, but that requires assembly so is no good for my needs. And MP3 shields cannot loop sounds seamlessly or transition seamlessly from one track to the next.

Gravitech has a Nano MP3 shield but that has the same problems with looping sounds as all the rest. Still for some purposes a board like that might be okay, so if you know of any boards similar to that that would be good. I know Adafruit has one tiny Mp3 board but that's been out of stock for a while.

The smaller and cheaper the board is, the better.

Maybe I am missing something, but your title and your text don't seem to match up to me. What are you wanting?

I want a board or shield that can play sound effects with seamless looping and transitions from one to the next. Needs to be high-ish quality 10bit or more, not some cheap PWM thing like those tiny ebay modules. Mp3 shields, from what I can tell cannot do the job.

And MP3 shields cannot loop sounds seamlessly or transition seamlessly from one track to the next.

I bet they could. You'd just have to re-optimize the programming.

Putting the microSD and DAC on the same board as the CPU is not going to improve the situation; the communications links won't get faster by being an inch closer. A more complex board (a PC motherboard, for instance) may have special local buses that are faster than the buses that come out on the various connectors, but that's not true of a slow/small microcontroller.

You most likely need better software, not better hardware.

You can also consider something like a beaglebone, which includes actual audio-output capability, for about the same price as Arduino + waveshield...

Guys, I researched those MP3 boards quite thoroughly. There are numerous threads here on Sparkfun, and elsewhere with people complaining about how there is a delay between starting one track and beginning the next. It's an issue with the chip used to play back the file.

I believe the delay is from having to read & decompress some data before the output DACs can be loaded.

Well, the adafruit "Wave shield", as well as the titular DAC-based hardware, wouldn't need to have an mp3 decompression delay, so it might fit the bill. You can, after all, fit several hours worth of uncompressed audio on a cheap SD card...

That's some of the confusion - do you need an mp3 decoder, or not?

scswift:
Guys, I researched those MP3 boards quite thoroughly. There are numerous threads here on Sparkfun, and elsewhere with people complaining about how there is a delay between starting one track and beginning the next. It's an issue with the chip used to play back the file.

You refuse to give us any information about what you really want so don't expect useful answers. (What exactly is is you want to do? Why do you need seamless looping?)

If you're using mp3 format then that could be the problem, it encodes in large blocks and doesn't support seamless playback.

fungus:
You refuse to give us any information about what you really want so don't expect useful answers. (What exactly is is you want to do? Why do you need seamless looping?)

I want to add sound to costume props. Some props I can get away with using an MP3 module. Some props I can't. With some props I need to loop sound effects and seamlessly transition from one sound effects to another.

I designed an Arduino variant specifically for this purpose:

But the boards cost ~$50 each to manufacture and I cannot afford to do another run. I also can't afford to spend weeks assembling audio shields by hand. Also, if you notice my boards have servo pins broken out for attaching various modules, switches, and knobs. I was thinking about designing some PCBs to piggyback an Arduino onto. Perhaps an Arduino Micro. But with no way to play sound effects that doesn't do me much good. So I need some kind of module or shield to go with it. Unfortunately all the sound modules out there I've seen are based on those mp3 chips so none of them can loop sound effects or transition between them seamlessly.

If you're using mp3 format then that could be the problem, it encodes in large blocks and doesn't support seamless playback.

As far as I know all these mp3 chips have the same problem with wav files as they do with mp3s.

Maybe it's because I'm a software guy and software is my "hammer" but ... it seems that all you need is a DAC and the right program.

Once you get manual control of the timing (instead of relying on some chip or other on a shield), all the problems with gaps will vanish.

The other way would be to use two playback shields and alternate between them when you start new sounds.

scswift:
As far as I know all these mp3 chips have the same problem with wav files as they do with mp3s.

I'm with fungus -- don't use a mp3/wav chip, just the Atmega and a DAC. Perhaps an AD5340/AD5341 and use the Atmega's entire port 'D' for data transfer?

I think the Atmega can stream the data off an SD card with clock/2 hardware SPI fast enough to keep a RAM buffer filled enough to keep the DAC fed with 44kHz?

tylernt:
I think the Atmega can stream the data off an SD card with clock/2 hardware SPI fast enough to keep a RAM buffer filled enough to keep the DAC fed with 44kHz?

I haven't measured it but if you store data in 'raw' format, 8bits per sample then (plenty for sound effects) then I don't think there'd be any problem keeping up.

My board used a DAC. The audio shield from Adafruit uses a DAC. A DAC alone however is not enough. You need an SD card as well. With level translation. Also, like I said I do not want to be assembling tons of boards by hand. Nor do I really want a solution that requires three separate boards for the audio (SD, DAC, and amp). I ship these kits to people who don't know much about electronics so the simpler it is the better.

But yes, a DAC works fine, to a point. The Arduino can handle up to 44khz stereo. However, it uses up half your ram, unless you have a chip with more ram like the atmega1284 I used. Also doesn't leave enough time to send data to a strip of one wire RGB leds, which is unfortunate. And causes problems with updating servos on time.

Also, that AD5340 is twice as expensive and twice as big as the MCP4921 I use, and which is used in the audio shield.

Well it's starting to sound like this is a very unique custom application (not just SD and DAC but also servos now too?!) so I'm a little pessimistic you'll find ready-made hardware for this without duct-taping multiple boards together.

If performance is an issue, put two Atmegas on your board. Let one deal with LEDs and servos and such while the other acts as your custom WAV shield. They can send instructions to each other over serial or I2C or SPI.

My board used a DAC. need an SD card as well. ... [and] a strip of one wire RGB leds ... [and servos][/quote]
Sounds pretty custom to me, and $50 each is quite a bargain (but doesn't offer enough room to sell them to other people at a reasonable cost.) It will be tough to equal that cost with Arduino+shield, even if you could get an only-two-board combo that worked for you.
Perhaps you just need someone to manufacture them more cheaply, and/or otherwise cost-reduce your existing design.
It might be a candidate for crowd-funding, but it sounds like you don't want to be the actual manufacturer (probably a wise choice!) Have you looked into the SeeedStudio-style "open source" manufacturing?
The Freetronics "Goldilocks" has been mentioned recently. It has a microSD card and 1284 procesor, but also sells for a 76% premium over their Uno-equiv.
Standard Arduinos seem a little underpowered for your combination of things.

scswift:
Also doesn't leave enough time to send data to a strip of one wire RGB leds, which is unfortunate. And causes problems with updating servos on time.

Oh, the specifications just changed again? The whole thread so far has been a waste of everybody's time...?

I haven't changed the specs. I want to add sound effects to props. For some props, an MP3 shield will suffice. For most, something with just a DAC and MicroSD card would do.

The ideal solution however, which would cover virtually everything, would be a board which can loop and transition between sound effects seamlessly and, like the MP3 shield, takes care of all the playback so the Arduino itself can be dedicated to other tasks, like updating servos and sending data to RGB led strips. That's just icing on the cake though, and I don't expect anyone to find something like that.

So the only thing I really need suggestions for is what I originally requested in the subject line: a pre-assembled board or shield which has a DAC and a MicroSD card slot on it.

I have a couple of Adafruit WaveShields..

using the default/stock WaveHC library.. you will -NOT- get seamless/gapless playback..

unless you can rip into the lib and get under the hood to edit what fat16lib author did...

(I have posted here, and on Adafruit about getting the same results.. I have done it/seen it yet) :slight_smile: