Introduction: Digital Thereminvox
Thereminvox (aka theremin, ætherphone/etherphone, thereminophone or termenvox) is a pure electronic musical instrument, which does not have nor strings, neither buttons. It reacts on thereminist hands positions.
The instrument was invented by Russian electronics engineer and inventor Leon Theremin in 1920.
Here you can find how Leon demonstrates his instrument. Novadays the instrument is not as popular as electronic piano or guitar but musicians still use it.
This project is written in memory of Leon Theremin, almost 100 years after his invention.
The project is a digital implementation of the same principle - contactless musical instrument. Original Thereminvox uses capacitance of humans body to determine hands position relatively to two antennas, but here I am using two VL53L1X sensors instead Those sensors measure distance using laser beam time-of-fly principle, i.e. they are amazingly tiny infrared radars, able to measure distance up to 4 meters (13ft). The microcontroller soldered to Nucleo-L476 demo board controls the sensor and converts measurements into sound.
- Nucleo64-L476RG MCU board
- X-NUCLEO-53L1A1 sensor shield board
- Mini jack 3.5mm plug and cable
- Some wires
- Speaker with linear input and USB power supply (I used JBL Charge speaker for both)
Total budget: $60 - $100
Step 1: Flashing Firmware
To flash MCU firmware, connect MCU board to your computer with Mini-USB cable. The board willbe detected as a new flash drive.
Download latest l4-thereminvox.bin file from github, and save it to that flash drive. The file will be flashed to the MCU automatically. Do not forget to disconnect usb cable before next step.
Step 2: Assembling the Instrument
X-NUCLEO-53L1A1 set contains an arduino-compatible shield board with one range sensor, and another two sensors on satellite boards, which could be connected to the shield as a second layer. I am going to use only main and left sensors, and left should be oriented horizontally. The satellite board is connected with standard 10-pin DIP connector, and I have used five F-M pin wires to as a connection extender. Pins 2-6 (GND, VDD, I2C bus + shutdown signal) is the minimal set to have the sensor working. Thereminvox is monofonic instrument,, and sound output is performed with one channel of MCUs on-chip DAC. The DAC is internally communicated to on-chip operational amplifier. The amplifiers output pin is PB0, which is wired to pin 34 of CN7 MCU board connector.
Next piece is an mini jack cable, which I cut into two parts, and then soldered both L and R sound channels to one single pin female connector, and ground pin to another.
Now you can connect minijack to a speaker, and power the device with USB cable.
Step 3: Music
The instrument produces single-tone sine wave within 20-1200Hz range The distance between players left hand and the sensor controls the frequency, height of the right hand controls the wave volume.
Unfortunately, I am not a musician at all, an I can not play any music as Leon Theremin could. I can just demonstrate how the instrument works.
Step 4: Source Codes
They are published at github: https://github.com/elmot/l4-thereminvox
I've used CLion IDE (writing it is my job), gcc toolset, STM32CubeMX code generator, VL53L1X library from st.com.
Feel free to make your modifications for instance the project might be converted to full-featured MIDI instrument.
Some manual how embedded programming is done are located here: https://www.jetbrains.com/help/clion/embedded-development.html
Participated in the