Ever expect a microcontroller to tap you on the shoulder and say "Hey buddy - spare a battery? You haven't recharged me in ages..."? Some people would find that slightly disturbing, not wanting their creations to bug them an inopportune times. Can't blame you there.
But some people just like noise. The Adafruit Wave Shield for the Freeduino SB / Arduino is an excellent add-on to give you such capability. Before you had to use low quality ISP chips that provided 30-second snippets of low quality 8KHz sound. This Wave Shield plays 22 kilohertz 16-bit uncompressed audio files of any size limited only by the size of your FAT16 formatted SD card.
The Adafruit Wave Shield features:
Onboard digital-to-analogue converter, filter and op-amp for high-quality output.
Plays 22KHz 16-bit mono WAV files. Not quite CD-quality, but pretty good!
Mono output to L/R channels via a standard 3.5mm headphone jack
It has a volume knob!
Switchable speaker output when headphone jack is used.
Includes Arduino programming library
But do keep in mind the following:
The playback library requires 10K of flash memory, so you cannot use in ATmega8 Arduino (ATmega168 or better, which is usually the case)
It requires ~600 bytes of SRAM to buffer the audio and keep track of file data.
It cannot play MP3, WMA, or in any other compressed file format. It can only play uncompressed WAV files. Really!
The files need to be stored as 8.34 format that can only be in the root directory of the SD card. this limits you to approximately 512 files, but they can be any size.
The wave shield does not record deal. It only plays back! Sorry - the Arduino doesn't have quite that much power.
This shield uses pins 13, 12 and 11 for reading the SD card as they are the only pins that have at high speed SPI interface.
Pin 10 is used for the SD card and pins 2, 3, 4 and 5 are used for communicating with the DAC.
Pins 6, 7, 8, 9 and of the six analog pins (a.k.a.: Digital I/O pins 14- 20) are fully available on the shield.
(Note: Arduino shown in photo not included. Just there for the photo!)