The Hexachord, an Arduino-Controlled Musical Instrument
by BarbMakesThings in Circuits > Arduino
13767 Views, 126 Favorites, 0 Comments
The Hexachord, an Arduino-Controlled Musical Instrument
Last year, with the deadline of the Bay Area Maker Faire, I created a new instrument called the Hexachord. It was a whole lot of fun, a great hit, and I've had the chance to do a number of talks about it. The design challenge was thrilling and there were a ton more ideas that I bypassed for that version.
This past spring, I decided to take on the challenge again and make another instrument. It is similar in some ways to the old Hexachord - it still has twelve strings, six necks, and is motorized - but now it is smaller overall, with a single chamber that's larger than any of the previous ones, and is Arduino powered, so it can be more precisely controlled.
Design
My design work for the previous Hexachord was mostly hand sketches, for this one I modeled it all in Illustrator, and stayed mostly true to the plan, though there was again some tinkering involved. Having the vector version was very helpful when I needed to make twelve identical neck pieces.
Having hauled a six-chambered, three-foot-tall instrument around all over the place, I decided to make this one smaller. A tiny version of the same instrument wouldn't have been feasible, however, because the chambers would have been too small for any real volume. Instead I chose a single, hexagon-shaped chamber large enough to house six necks radiating from the center.
I knew that I wanted to be able to control each pair of strings individually using an Arduino Uno, so I made the chamber somewhat toroid with a hexagon in the center.
Materials
- 1/8" birch plywood - a future version will use some nicer quartersawn wood that's actually intended for instruments, but this works pretty well
- Cedar, Mahogany, Poplar square dowels
- Arduino Uno, USB cord & plug
- 16-Channel servo shield from Adafruit
- 2.1mm jack to screw terminal block adapter
- 5V 2A switching power supply
- At least 6 Micro servos
- Soprano ukulele strings
- 12 tuning pegs
- Heavy gauge wire
- 6 guitar picks
- PLA filament
Tools I used included:
- Scroll saw
- Drill press
- Belt sander
- CNC Machine
- Bukito 3D printer
- Orbital sander
- Dremel rotary tool and Multi Max
- Soldering iron
Sides and Front
I first made paper patterns for the panel pieces and used those to trace and cut the 1/8" plywood. I cut the front panel larger than it needed to be so that I could attach it all and then sand down to a perfectly flush corner.
The initial plan included a back panel to the instrument, but when I got to the point of attaching it several steps later, I actually preferred the sound with an open back, so I left it off.
The advantage of designing your own instrument; make it whatever you want.
Supports
From my last Hexachord experience, I knew that assembling the chambers without interior supports is a royal pain, and difficult to get exact. So this time I made supports for all of the interior corners. I began cutting these on the CNC machine, but it quickly became apparent that I could do it much quicker by hand on the scroll saw. They were cut in four different pieces, glued together, and then smoothed out with a belt sander.
Assembling Sides
With the supports, this step is substantially easier, though you do need a lot of clamps. I waited until this point to put everything together and check alignment before I sanded beveled edges onto the side panels, to make them fit snugly at the corners. I went around the hexagon and glued each side panel to the inner supports. If you've measured and cut everything carefully, it fits just right. Once again, I let the side panels be larger than needed on one side (see photos) and then sanded them down to meet precisely.
When the walls were all assembled, I cut and attached neck blocks (mahogany, same wood as I used for the necks) to the inside to help secure the necks later.
Attaching Face
Did I say that I used a lot of clamps in that last step? Forget that, THIS is a lot of clamps. I had to go in to the kids' makerspace where I work and use all of the clamps we had at the time to glue the face panel onto the sides. As you can see in the second picture, cutting the face a little bit oversized means that there's a lip that I have to sand off.
After it was dried, I sanded the face flush with the sides, and used a drill press with hole saw to make the six sound holes in my instrument.
Inner Walls
Simpler, but more delicate was making the inner walls. I first created two hexagon rings from mahogany by printing out the shape I'd made in Illustrator, attaching the paper to a block of wood using adhesive spray, and then cutting it out on a scroll saw. It takes practice to get precise enough for this.
I prepared the inside walls in much the same way as the outside ones, only beveling the edges when I was ready to attach them. I used a sanding block rather than a belt sander for these small pieces. They had to fit snugly.
After the inner walls were assembled, I glued them to the hexagon opening in the center of the face, using a stack of books to hold it in place.
Necks
Using the shape I'd created in my Illustrator document, I cut twelve neck pieces, then glued them in pairs. Like with the inner supports, I used the belt sander to smooth any unevenness, until they looked like a single block of wood.
Next was to drill holes for the tuning pegs, which needed to be tight. I started by making the hole slightly small, and then loosening them up with a dremel rotary tool and little sanding drum.
Attaching them to the body of the instrument was done with the face down, to ensure that it would be flush with the face. I glued it, clamping for a bit, and then screwing into the neck from the inside of the neck block for a little more securing.
Bridges, Saddles, and Nuts, Oh My!
Of course you can buy these things, but they wouldn't be just right for my instrument, especially considering that each neck only has two strings. I made a design in Illustrator and used CRASH Space's CNC machine to make custom bridges in mahogany. This took some time to get just right.
For the saddles, since I also do a lot of 3d printing, I decided to model and print nuts that would fit my bridges just right. It all works very well, and they were easily glued in place on the face of the Hexachord.
The nuts were simple pieces cut on a scroll saw and shaped on a belt sander. They're very small, but I escaped with most of the skin still on my fingers.
Servo Mount
I considered a few different possible designs for how to attach the servos. The trick is to put them in a place where they aren't blocking the sound. In the end, I decided to make an independent mount that goes into the center hexagon and holds all six, so they can be removed and replaced all at once.
I printed the shape I'd designed in Illustrator, used spray adhesive to attach it to a piece of maple, and cut it out with a scroll saw. The square dowels on the inside that slide into the instrument's center hexagon had to be shaped on the belt sander until they fit the angles correctly. These dowels are designed to be a tight fit, and are glued to the servo mount hexagon, but not the body of the instrument, so they can be adjusted. Placing the hexagon closer to the strings makes it pluck more loudly, farther makes a more gentle sound.
I used a mill to carve out seats for the micro servos so that they don't protrude much from the mount. They are screwed in, so they can be replaced if they burn out.
Finally, the picks are glued to heavy gauge wires that attach to horns on the servos. I've found that a little give is important when mounting a plectrum; if it can't bend a bit, it's likely to just get stuck on the string.
Electronics
As I said before, this instrument is controlled by an Arduino Uno running six servos. I wanted to give myself the freedom to expand, so I got a 16-channel servo shield from Adafruit, which works rather well.
The Uno and servo shield live on the inside of the instrument, zip-tied to the center hexagon wall construction. The wires for the servos run through the center out to the front.
There need to be two power sources: one 5-volt 2-amp power source for the shield, and a USB power source for the Arduino board. Since the shield has screw terminals, I needed to get a converter (also acquired from Adafruit) to plug in the power. Plugging in the Arduino doesn't do anything until you plug in the shield.
The code is where you start getting to play the instrument. I began with a simple random function that tells the servos which strings to pluck and when. It has since changed to a weighted random, which is simple enough to accomplish in Arduino code by using a switch case with certain servos being listed more often than others. This way, you can emphasize certain notes (the tonic and fifth, for instance).
I plan to expand the Hexachord's repertoire by having it create different phrases that it can repeat, although part of the beauty of this type of instrument is found in embracing the indeterminacy.
Fin!
I made a simple frame to hold it from square dowels. It would be neat to make an even more portable one that I could wear on by back.
I'm very happy with how this turned out. I'd like to make one with some nicer wood (that I have already acquired) and see how much that impacts the sound. Next year, I'm considering making a percussive instrument to accompany these two Hexachords. They actually sound very nice together!
If you're in LA, and would like to see them in person, both of my Hexachords will be on display in the Kinetic Show:LA at Arena 1 Gallery in Santa Monica, CA from September 12 to October 6, 2015.
Keep an eye out for a video of both of my Hexachords playing together.
Hope you liked reading about how I made my new instrument!