An Arduino-based Theremin
I've never exhibited much musical talent. Like many of my generation, I took (was forced to take?) a few music lessons as a small child. Neither the private lessons to which my parents sent me, nor the recorder lessons in the sixth grade at public school, were successful at finding any hidden talent. That's not to say I didn't have any interest. I thought that playing the bagpipes would be fun, and I tried, to no avail, to teach myself the piano and the banjo.
The one instrument that I think I might have a chance of enjoying using is one that almost every engineer will have taken notice of at one time or another -- the Theremin. This was featured heavily in early science fiction greats like The Day the Earth Stood Still and The Thing. More recently, Sheldon Cooper of The Big Bang Theory TV show used one to wreak havoc with his friends.
The Theremin was invented in 1920 by Russian physicist Lev Sergeyevich Termen, known as Léon Theremin outside the iron curtain. It's a no-touch instrument. The controls are two antennas and the operator's hands. The distance between each hand and its corresponding antenna acts as a variable capacitor. In the traditional implementation, one hand controls pitch while the other controls volume.
Theremin were manufactured in the US for a time by RCA, and later by Moog (of Moog Synthesizer fame). In fact, you can still purchase a Moog Theremin, either pre-built or in kit form.
I recently ran across Open.Theremin by Urs Gaudenz in Switzerland. This comes to life as an Arduino shield. Unlike many inexpensive Theremins, which often control pitch only, this device controls both pitch and volume like the original.
The first thing we see on Urs' website is this video showing Swiss Theremin player Coralie Ehinger playing the Open.Theremin.
"Well, that looks easy enough," I thought to myself, so I immediately sent in my order for the kit, along with an extension kit. You can only imagine my surprise when, after a few days of anticipation, not one, but two Theremin kits and two extension kits arrived in the mail.
Two Theremin kits (Source: Duane Benson)
I shot an email to Urs, the developer and seller of Open.Theremin. He said that I didn't need to return the extra and could, instead, send it to a good friend. That would be Max Maxfield, who you doubtless know well if you're a regular on Embedded.com or EETimes.com.
Assembling the base shield is quite easy. All that's required is soldering the Arduino headers onto the board, connecting up the antennae and ground wire, and calibrating.
Assembled base Theremin (Source: Duane Benson)
I hit a small stumbling block at the calibration step, which requires tuning to 600 Hz. Being non-musical, I really can't even guess at what 600 Hz sounds like. However, I was able to solve that problem with modern technology in the form of my smart phone. I found an oscilloscope app (AR-Oscilloscope for Android) that supports the mic as a signal source.
Two very important steps here are to wait the recommended ten minute "warm up" time and to carefully ground the board. It may seem strange to need to let a solid state device warm up, but many component values change slightly with temperature and this is a very sensitive device.
The kit includes a small screwdriver for the calibration step. This is a nice touch, but be aware that -- being metal -- the screwdriver will affect the tone. I had to adjust, remove the screw driver, and then measure, as opposed to measuring as I was adjusting. Using a plastic screwdriver might make things a bit easier.
The extension kit adds two potentiometers, banana plugs for the antennas, a blue LED, a face plate, and a stick-on tripod mount for your Arduino. It's almost as easy to build as the first part. Just don't do what I did to the LED and bend the leads the wrong way.
Side view of completed unit (Source: Duane Benson)
Speaking of the LED, after bending the leads it sits on top of the push button switch. Another recommendation I have is to put a small piece of insulating tape between the LED leads and the button. Part of the button case is metal and it's possible -- as I've empirically determined -- to short the leads when pressing on the LED/button.
LED and button (Source: Duane Benson)
Installing the software is no more difficult than installing any Arduino code. Download the sketch from the Open.Theremin website; move it in your Arduino folder, open it, compile and upload. The software is designed for use with the Arduino Uno and says it's not compatible with the Arduino Leonardo or Mega. This is because the sketch directly accesses the microcontroller hardware in some cases. That reduces the code size, but makes porting to a different MCU, as used in the Leonardo or Mega, a little more involved.
Ready to go (Source: Duane Benson)
My Theremin is now built, programmed, and mounted on a tripod. I can make Theremin sounds, which is awesome, but -- given my limited skill -- it will take some practice before I can actually call what I'm generating "music." As you'll see, this video proves two things: (a) that my Theremin makes music and (b) that I don't.
As you might have noticed in the above video, each antenna controls a different pitch, as opposed to the more traditional implementation in which one controls the pitch and the other controls the volume. This Theremin, being Arduino based, is easy to modify in software. Urs has a few different sketches on his website, including a pitch-volume sketch and the pitch-pitch sketch I uses in the video.
For your auditory delight, here's another video with my antennas presented in a more traditional configuration.
Because this design is open source, and because I can't leave well-enough alone, I decided to re-layout the board and add in a complete Arduino Uno. I've kept the key mechanical locations the same, so the original expansion kit will still fit.
The shield already uses surface mount parts, but I'm using smaller packages to get that extra room. As I usually do, I downloaded some of the chip footprints from SnapEDA.com. Doing so saves time and increases confidence that my footprints will have their pins in the right spots.
Unfinished layout for the Theremin+Uno (Source: Duane Benson)
The new layout will be finished up in a few days or so. Since I get my boards assembled for free at Screaming Circuits (my day job), I usually have to wait for any paying customer's boards to be completed, which means I'm not sure exactly when my Theremin+Uno will be finished. I'll post some follow-up pictures when it becomes available. Meanwhile, as always, I appreciate any comments and questions.