I started this project out of a desire for a more interactive way
to create and perform electronic music. I found that when it came
to performing with synthesizers, many artists tend to lose the
physical elements of performance that came so naturally to other
instruments. Having played in the
Bato Bato
marimba band in high school, I thought that playing a synthesizer
with mallets would be a unique creative experience.
The Process
The first step was to build a marimba. On my instrument, the
actual shape and tone of the keys wouldn't matter, since all of
the sound will be generated by a computer. I wanted the instrument
to be two octaves long, so I measured out and constructed an
appropriately sized frame to hold the keys. They keys are simple
1x2 inch blocks, with lengths that range from 8 inches to 6
inches. Lastly, I just drilled two holes in each key so that I
could suspend them by a string connected to the frame. Lastly, I
just added some foam padding in between the keys and frame, since
I didn't want mallet noise interfering with the sound generated by
the computer.
The marimba frame that I built
Next I began on the electronics. Since the Arduino doesn't have
enough data input for all 24 keys, I used three 3-to-8
multiplexors in order to cycle through the sensors. The piezo
sensors require pull-down resistors in order to ensure they read 0
Volts when not being hit. I used 1K Ohm resistors for this
purpose. The piezo sensors are connected to terminal blocks on the
left, and the right side power, data, and ground connections all
go to the Arduino.
The schematic and final version of the multiplexor circuit
I wrote code for the Arduino that cycles through every
multiplexor input, and reads the voltages of the piezo sensors.
The program has a certain threashold that triggers the appropiate
midi note if the piezo sensors produce a high enough voltage. The
midi signal is then sent to my audio interface, which triggers a
VST instrument on my computer.
A demonstration of the final marimba
Conclusion
The marimba works! I've been able to control various synthesizers
and VSTs, and the MIDI thresholding works well to isolate the
intended notes from other vibrations in the instrument.
There currently are some issues with the marimba, and I would
like to build a second prototype of this project in the future.
Currently, the marimba has an inconsistent velocity response. This
could be due to density variations of the wooden keys or possibly
that the multiplexors arent sampling each piezo fast enough and
they are overlooking part of the peak voltage. I have read the
force-sensitive resistors have much better pressure sensing than
piezo sensors, but they are much more expensive. I plan to address
this issue first by designing capacitive circuitry to hold the
peak voltage of the piezo for longer.
I would also like to add some other features to the second
prototype. Having different velocity curves, threshold options, an
octave up/down button are just some of the first features I would
implement. I'm generally pleased with how the first prototype
turned out, and I hope to continue this project in the
future.