Note: If you want to avoid all the modifications I write about below, buy the Sparkfun WAV Trigger instead. It needs no modifications, has polyphonic playback (multiple sounds at once) and much more. By the way it’s the same price!
The MP3 Trigger from Sparkfun is an MP3 player that can be controlled by a micro-controller like the Arduino, or by simply attaching buttons to the 18 available inputs. The designer, Jamie Robertson, works in the theme park industry doing custom audio work, so it’s no surprise that this little board does basically everything that “industrial MP3 players” (like the TecMP3, QuickWave, or JEMP3) can do, but for a lot cheaper.
If you want something that plays sounds when you press buttons (without the goofy user-interface quirks of a hacked consumer player), this is the best I’ve found. (You could even use motion sensors or floor switches to make something similar to my Video Trigger software.)
Unfortunately it has some rather annoying flaws (as of hardware v.2 in May 2013):
B.Y.O. Line Output
The included audio output has a DC offset with respect to the power supply ground, so it’s only safe for driving headphones. Also, the static electricity from a long cable might fry the MP3 decoder chip.
Sparkfun provides a link to the chip’s datasheet with example line-out circuits, but it’s a bit confusing because some of the components are already on the board.
I’ve built several of these so I made this diagram to help myself. Hopefully it will help others too.
Long Cables Cause False Triggers! (solved…)
When attaching buttons to the trigger inputs on the board, you must use short cables (like 2ft or less). Long cables cause false triggering and crosstalk between the inputs. This seems to be caused by inadequate pull-up resistors on the inputs, so they have a tendency to “float” between high and low states when not actively triggered. (The MP3 Trigger’s multiplexer has a 680Ω pull-up resistor on each input, so I’m not sure why it’s so sensitive to long cables.) This problem has been mentioned on the designer’s forum a few times. Some people have used shielded cable, restricted themselves to inputs 17 & 18 (which bypass the multiplexer) or added 1kΩ pull-up resistors to each input (the best option, but hard to implement).
I added a single 1kΩ pull-up resistor to the output of the multiplexer, and to my surprise it fixed the false triggers on all inputs, even with 25ft cables! Connect the resistor between pin 3 of the micro-controller and the large tab (3.3v) of the nearby voltage regulator.
Be careful and use a fine-tipped low-wattage soldering iron. Afterward, consider putting a dab of glue on the resistor to prevent it from damaging the micro-controller if bumped.
All Boxed-Up and Ready to Go
I put it in a Sparkfun Projects Case and added spring-loaded terminals to the outside. The terminals (On-Shore OSTHD040080) are bigger then the series that Sparkfun sells. The wider spacing makes the levers easier to push without tools, but they take up more space and aren’t really modular. (You can’t put 2 next to eachother to build strips of arbitrary length. I had to skip a hole between each one.) Each group of 3 inputs shares one ground, since button panels are usually wired with a single ground conductor anyway.
A ribbon cable from an old hard drive made the connections pretty quick.
The first image of the MP3 Trigger and the PCB image in the line-out diagram are product photos from Sparkfun, distrubuted under a CC BY-NC-SA 3.0 license.