Søren Andreasen used the Adafruit Wave Shield to create this excellent 12 Button Sampler project, getting help with hardware and code on the Adafruit Forums:
I have made two x 12 button samplers with lamps in each button. They both run on an Arduino UNO R3 with a Waveshield 1.1. My power supply is 12 1,5v AA batteries in series (for 12 lamps), and there’s an lc809cv voltage regulator that powers the Arduino. On the I2C bus i have an mcp23016 IO expander that turns on some of the lamps while also has some of the button inputs.
All the arduino pins that aren’t used by the waveshield, are being used for either button inputs or outputs for triggering transistors to turn on/off lamps. that means i’m using pin 0, 1, 6, 7, 8, 9, 15, 16 and 17 (the last three are analog pins initialized as IO’s).
On one of the devices, all buttons are going through a resistor ladder into an analog pin where they are being read. The sketch then descides which button is being pushed depending on the voltage reading.
On the other device, I have used all IO’s on the mcp in order to give each button its own IO. Both setups work fine, and there are no difference in the amount of distortion on the two devices, so I don’t think this has anything to say.
I ordered 4 wave shields to have enough, and so far I’ve built 3 of them. Now I just tested the one that I haven’t used for these devices yet, and you know what: it’s not distorting!!! …
Featured Adafruit Product
Adafruit Wave Shield for Arduino Kit – v1.1: Adding quality audio to an electronic project is surprisingly difficult. Here is a shield for Arduinos that solves this problem. It can play up to 22KHz, 12bit uncompressed audio files of any length. It’s low cost, available as an easy-to-make kit. It has an onboard DAC, filter and op-amp for high quality output. Audio files are read off of an SD/MMC card, which are available at nearly any store. Volume can be controlled with the onboard thumbwheel potentiometer. This shield is a kit, and comes with all parts you need to build it. (read more)