Piezo Kalimba


I designed all the electronic hardware for a group project to develop a MIDI thumb piano, based on the success of the piezo-based 'rubber banjo' we'd built previously in the semester.


This instrument controls a software synthesizer in Reason through a visual programming environment called Max. The data used to run the Max program is sent to the computer from an Arduino microcontroller via USB. My role in the project was to design the electronics that sculpted the signals coming from the various sensors and controllers into something the Arduino can use. The device has twelve channels of analog, including signal coming from each of the eight piezos mounted below the keys and the four force-sensing resistors on the underside of the handles. I also designed the circuitry for seven channels of digital data, including two push buttons and two multi-selector switches.


When each of the eight keys are plucked, the vibration in the piezo triggers a note to be played. The FSRs on the handles controls expression such as LFO rate and filter frequency. The switches select the scale to be played, and the push buttons extends the range of those scales. The biggest issue we came across was the mechanical energy that transferred along the wood dowel, causing significant noise in the piezo signals. We were able to compensate by changing the peak-detection thresholding in the software, and also loosening the dowel and adding padding for the keys. Thus, there was a tradeoff in terms of noise vs. musical dynamics.