Ben and I had been talking about building a MIDI controller based off an Arduino for some time now. Then, about a month ago, with Apogaea just around the corner, we started thinking about making an instrument for the Soundpuddle, John English’s spectrum-analyzing dome. We thought it would be cool to build a circular keyboard, where each key would emit a tone which corresponds to a frequency bin on the Soundpuddle. Thus began development on the Cyclophone.
We did a lot of brainstorming that first week, which included building a couple of prototypes. The first prototype was just aimed at answering the basic questions: Can we reliably send note-on messages over the serial port, and without latency? Can wooden keys give a good tactile response? Will this even work? The result of these first experiments was a little creation that we affectionately call the “cuttlefish”.
The cuttlefish gave us a good first impression of how we were going to proceed, both on the hardware and software sides. One realization was that, as long as we were using our own custom software to synthesize the sounds (see my Pythagoras repo), there was no reason for us to bother with the MIDI protocol. We could just write small, byte-sized messages to the serial port, and then trigger callbacks in the software every time a byte is read. Another realization was that we needed to debounce the signal from the switches – otherwise, each key press would result in several erratically-timed notes being played. But most importantly, we realized that this was totally going to work maybe!
The next step was to move these concepts over to the circular table design. So we cut a circle (41″ in diameter) out of a piece of 1/2″ plywood, and made 24 cuts along radii from the outside. The length of the cuts was determined by experimenting with another single-key prototype to achieve a good action with the wood’s flexibility.
The next challenge was mounting the switches underneath the keys. We knew we were going to need a mechanism which allowed for adjustment of the switch height, because each key had a different flex according to its grain direction (the joys of working with wood). But the switches we had were very small and very simple (and very cheap) – they provided no easy way to mount them at all. So we ended up coming up with a system where the switch is clamped, facing down, between some blocks of wood on the underside of the keys. Beneath the switch, we thread a 1/4″ hex bolt through an angle bracket mounted on the spacer block. By turning the bolt, we could raise or lower the sensitivity of each key individually.
Once all the switches were on, we wired them into the Arduino and tested the action. We noticed that sometimes, depressing a key would warp the entire top in a way that pressed several other keys simultaneously. To make the whole structure more rigid, and also in anticipation of the “safety bumpers” we were going to want to put under the keys, we mounted another plywood disk, about 3 feet in diameter, on the bottom of the wooden spacer blocks, preventing their relative movement. This helped immensely in keeping the top from flexing like a big saddle every time a key was pressed.
We had also picked up some potentiometers and a rotary selector switch from JB Saunders, which we wanted to mount on the top to control some parameters of the programs we were running. So we mounted the rotary switch right in the middle, as a kind of mode selector, and then mounted the 3 pots symmetrically around that.
At this point, the Cyclophone was nearly complete – all that was left was to pretty it up. We thought about just painting it a solid color, but we realized that with such a large instrument, it’s actually difficult to keep track of the keys when they all look the same – a unique design would be much better. We had originally planned to have an artist friend paint the top, but with just a week left before Apogaea, and summer jobs keeping people busy, scheduling conflicts made that impossible. And so we were left – a physicist and a software engineer – with the task of coming up with an artistic design for the top. We ended up using the only graphic design tools we were comfortable with – polar equations – to come up with a sort of rosette design for the top.
The paint job took about 3 days, during which we applied 3 layers by hand. After that, we built a base for the thing, so that it sat about 12 inches high, good for playing while seated on the floor. Finally, Dan Julio donated an RGB LED strip and driver to illuminate the table from below.
At Apogaea, the Cyclophone took its place in the center of the Soundpuddle. We had it running off Ben’s laptop, with 5 modes to choose from, via the rotary selector:
- Chromatic sine waves (Soundpuddle mode)
- Tabla samples + koto, chimes, and guitar (all pentatonic)
- Half piano, half guitar (harmonic minor scale)
- FM synthesizer (major scale, parameters tunable by knobs)
- Drum circle
Here’s a video of the Cyclophone fulfilling its destiny at Apogaea:
We had a lot of fun working on this project, and I expect it won’t be the last USB controller we build (next step, velocity sensitivity!). It was also great being part of the Soundpuddle project – many thanks to John English and the entire Soundpuddle crew for making it all possible.
Nearly all of the code we used in this project is available in my Github repo. If you have specific questions about the construction of the Cyclophone, feel free to contact me (Chris Chronopoulos) or Ben Burdette.