The Theremin is a musical instrument that is played by waving hands around two radio antennas, one to control pitch and a second to control volume, and was invented by Lev Termin circa 1920s. The Aerolin is an unfinished development project stretching many years, originally attempting to use radio antennas. Around 2010 I changed the ranging technology to use low-cost ultrasonic transducers and then built the control functions and sound engine around an Arduino Mega.
There are a number of challenges using low-cost ultrasonic transducers for this application. They can have a range over several meters, however the sampling rate at these distances would only allow for a few samples per second - far too slow for musical gestures which would require 50 to 60 samples per second. Most implementations result in a measurement resolution of 1 to 2 centimeters, but musical gestures would require millimeter resolution. Then if you are playing in a room, there are all sorts of nasty echoes that confound and alias the measurements, and even interference between a left and right sensor module.
These problems were resolved with analog conditioning circuitry and pulses controlled by the Arduino, with a sensor configuration of four receivers and one transmitter. This solution was reduced to a high-resolution and high-sample rate ultrasonic ranging module as shown above.
The Arduino controls the pulse outputs to the sonar modules, but also creates the range measurements with its built-in timers. The sound engine is a two-oscillator frequency-modulation algorithm which consumes about half of the Arduino CPU budget, and each oscillator can select from several waveforms.
This highly integrated control of a sound engine with gesture controllers within a single software implementation allows for a wider range of expression than would normally be associated with electronic musical instruments.
David Asher
Milford, MA
No comments:
Post a Comment