Playing drum sound samples


Is there a way to play sound samples (like drums for example) directly from an Arduino (with the samples stored in additional EEPROM, not sending MIDI data to a separate synthesizer) without getting much delay between an input signal and the sample being played? What I try to do is make a little portable e-drum brain with piezos attached to it and a headphone jack to play drums on the go. Too much of a delay would certainly suck. I know there are quite some MP3-playing solutions and stuff like the WaveShield from Adafruit, but is there a noticeable delay between signal and start of a sample?

Thanks, Otacon2k

Playing samples from an arduino is not very easy or the results particularly good.

This link has some audio experiments that will show you what to do. Forget MP3 samples we are talking about raw samples here.

I have gotten pretty good drum sound to come out of the arduino, sort of a chiptune-style sound. And it occurred as a function within a while loop so other things could happen simultaneously, for example, scanning an led matrix. The idea of what I did was that every time that while loop repeated, for the kick drum, it would decrease a variable for the frequency and play a tone at that frequency, for the snare it would check if it should be playing depending on it's duration, and if so it would play a tone at a random frequency. This technique worked pretty well for a chiptune style drumkit, and with not much memory used. (no samples)

Try a Wave Shield from Adafruit to play wav files. Your sound files are stored on an SD card.

For real samples I've had the Arduino just output some commands over the serial port to a netbook. Yeah you now have a computer involved, but you get to use any sound files. And what's more can play multiple samples at the same time.