As I've become a father and a homeowner, I've suddenly found less time to work on new projects, and have decided to try to finish old ones, instead. A few years ago, I had the pleasure of working with an interesting and interested mechanical engineer who was a joy to bounce project ideas off, named Joe. Having seen my other musical projects, he suggested that I look into "Mr. Christmas" products, especially their "Santa's Marching Band" line -- a set of computer-controlled holiday bell ringers. Joe thought the biggest problem with this product was that the figurines were connected by wire to a rather large control box, which required a mess of short-lasting alkaline batteries. Why not make them wireless and rechargable?
I got a broken set off eBay for $30 and got to work in late 2015, connecting the Santa figures to GPIO on a Raspberry Pi through H-bridges on Pololu dev boards, and writing a quick and dirty MIDI sequencer (thanks to Giles Hall for the excellent library). At that point, I took a video, and the project collected dust.
In June 2018, I took a deep breath and disassembled the system (fearing it would never go back together, again). In pursuit of finishing projects, I've also started taking shortcuts -- buying dev boards instead of cutting boards myself. For each Santa, I used a Sparkfun ESP8266 thing connected to a Pololu motor driver (using a TI DRV8838 H bridge), and small LiPo battery. The ESP8266 thing takes care of USB charging, the radio, and a microprocessor with enough horsepower to get things ringing. These went into a small velvet box upon which I attached each Santa. (I also added a small piezo transducer to each, which allows playback of arbitrary pitches, but this is not as much fun.) The biggest problem is timing and synchronizing the MIDI files (using Python on a Raspberry Pi Zero W). All of my Python and C++ code can be found on Github. It's not perfect, but it's good enough. Perhaps I'll make some more refinements closer to the holidays?
Next project: → MIDI Floppy Controller
Code for download (save link as):