Late last year, the lovely Capsule people asked me to play the Cake Orchestra at one of their events. A bit of refactoring, soldering and baking later, the Cake Orchestra v3 was born.
This version has several improvements over the v2:
- self-calibration. As I'm using LDRs to drive the sounds, and lighting levels are variable in different playing locations, the new version automatically detects max and min readings from the LDRs and uses these to calibrate the pitch of the sounds. There's also a max pitch in there, cutting out the god-awful dog-calling squeakiness at the top of the register. I also added specific calibration functions, though these turned out to be superfluous after adding a global mute (see below).
- more instruments. I added a key-driven toggle to the interface to cycle through different instruments. Each set of cakes connected to an Arduino analog pin has an array of Sound Cipher instruments associated with it in Processing, so I can quickly change all the instruments for a bit of added interest. Or press the big red button when one becomes particularly grating ....
- turning individual instruments on and off. Using LDRs isn't terribly precise, so I added the ability to mute different sets of instruments. I also added a global mute, which is very handy for calibrating - basically at the start, global mute is enabled so I can take all the cakes off and put them on again, to ensure that max and min levels have been set.
- hardware "improvements": more LDRs. I experimented with soldering LDRs in serial to see if that gave me more control over the sounds: I reasonsed that I might be able to, for example, take one cake off a set of LDRs in serial to get one sound, 2 cakes off for another, etc.. In practice this didn't really work, but it was a useful learning exercise, not least in soldering.
The code has also evolved significantly from the first ever Cake Orchestra attempt, which was partially eaten by my cat. This was a very simple test with 5 LDRs gently embedded in a cardboard platter (see video).
Once I've tidied up the new code to remove the various swearings, I'll put it up here in case anyone else finds it useful and/or interesting.