For those who are not into prog rock in the 70s or old radio shows from the 40s, the Theremin may be an unfamiliar musical instrument. As a purely electronic device, it’s well outside the realm of conventional musical instruments. Two radio antennas detect the position of the musician’s hands to make a unique sound traditionally associated with eeriness or science fiction.
Normally a set of filters and amplifiers are used to build this instrument but this build instead replaces almost everything with a Raspberry Pi Zero 2, and instead of radio antennas to detect the position of the musician’s hands a set of two HC-SR04 distance sensors are used instead. With the processing power available from the Pi, the modernized instrument is able to output MIDI as well which makes this instrument easily able to interface with programs like GarageBand or any other MIDI-capable software.
The project build is split into two videos, the second of which is linked below. The project code is also available on the project’s GitHub page, so anyone with the Pi and other equipment available can easily start experimenting with this esoteric and often overlooked musical instrument. It’s been around for over 100 years now, and its offshoots (including this build) are as varied as the sounds they can produce.




The project is built around a VFM202MDA vacuum fluorescent display, which provides that lovely green-blue glow we all know and love, driven by a PT6314 driver chip. This has the benefit that it can be readily driven by a microcontroller in much the same way as the familiar HD44780 character LCD driver chip. With some minor tweaks, the character set can be modified to allow the display to become a surprisingly-responsive VU meter.




The build is simple and straightforward, using a Teensy LC to interface with a simple gameport joystick. With a smattering of simple components, it’s easy to read the outputs of the joystick with only a little debounce code needed to ensure the joystick’s buttons are read accurately. Similarly, analog axes are read using the analog-to-digital converters onboard the microcontroller.