Quick And Easy Arduino-powered Theremin

[Martin] sent in a great guide to a simple Arduino based theremin. It’s a very small build – just a single common IC and some passive components – and easy enough to build in an afternoon.

The theremin is based on a simple LC oscillator built around a 7400 quad NAND gate IC, a wire antenna, and a few caps and resistors. When a hand moves closer to the antenna, the frequency of the oscillator increases; when a hand moves away, the frequency decreases. On the software side, the oscillator is connected to the internal hardware counter of the Arduino. Every time there’s a change in the voltage output by the oscillator (all the time, varying slightly with the distance from a hand to the antenna), the counter increases by one. This counter is tallied up over 1/10th of a second, and the distance from the instrumentalist to the theremin can be determined. From there, it’s just outputting a frequency to a speaker.

All the code, schematics, and board layouts are available on [Martin]’s guide, and most of our readers probably have the parts to build this lying around their workbench. You can check out a video of [Martin]’s theremin in action on his guide.

19 thoughts on “Quick And Easy Arduino-powered Theremin

      1. Do you have any idea how small the capacitance of a hand several inches away from the antenna would be? The parasitic capacitance in the board alone would swamp any variation from your hand. This is not a workable solution.

  1. Ok, When I first read this I thought ‘cool hack but why even use the Arduino when you already have an oscillator?’. Then I read the actual article… ‘…Arduino Board that gives out the tune to a speaker or puts out the tune as control signal like MIDI, Servo etc…’ This makes a possibility of Theramin to MIDI. Hmm… Interesting!

  2. I would go for the LC oscilator and counter type solution shown above over the capsense solution.

    I’ve always found the CapSense library sense technique unreliable and fussy. Of course you could use a better touch sensing solution as documented in app notes by microchip etc where the sense plate is charge by more direct connection to an output pin (often through a diode or ~1K resistance). Then the capacitance is measured via dicharge through a large resistor or charge transfer to the sample hold circuit of an ADC channel.

  3. Oh silly trolls. The Sachs-Hornbostel and other musicologists category of Electrophone don’t have that granularity. I think a third level category would be position sensing controls and forth would divide IR from LC sensing circuits with the LC being refereed to as theremins. Expression controls could be a fifth level.

    Theremin’s design has included foot petals and push buttons for the articulation as well as a few different brands only have the hetrodyne LC for producing a different controls for the expression. The RCA and Moog theremins do have volume antennas but they are not the only instrument in that class.

    I saw Victor Wooten’s solo project live and his brother (not Futureman oddly enough) play the theremin using only the pitch and a wah pedal.

  4. I have a related side-question:
    I want to open a drawer by a hand-gesture. I first thought about some optical-sensors, installed next to each other, so I can check if there is a constant sensing from left to rights. But… meh, I have the feeling that walking by it would make some problems.

    So, is there a sensor to check if a hand of flesh is nearby? This project is sensing the distance of a hand, so is there a sensor for sensing hands in a distance of 1-10 cm/inch?

  5. It’s the 0.1 sec interval between measurements that bothers me. There’s so much data being thrown away by using a digital solution, when this is the type of thing analog solutions are best at. There has to be an easier way to connect a theremin to an arduino. Is it limited by processing power?

    1. Moog has control voltage out for both the volume and pitch. Volume is 0-10v and the pitch scales from -2.5 to 3.5v, so you can do some tricks with diodes and resistors and use the analog in on the arduino.

      0.1 sec should be just fine to play accurately and expressively anyway.

  6. I just got an ultrasonic sensor in the mail yesterday, and in just about 5 minutes had something similar working…Probably even simpler than this project (though entirely digital with square wave audio instead of sine).

  7. I have everything set up as instructed according to Martin’s guide with an Arduino Uno R3, but I cannot get the antenna to generate a signal. Using a multimeter and a pushbutton though the Arduino’s 3.3V, I can manually drive the 3.3 V through the circuit and generate tones using the pushbutton when I push it down. So even though it is not using an Arduino Deumilanove board as the original, I know the code works with the Uno board. The only troubleshooting areas left are the L1 10uH inductor and the C1 150pF capacitor. I do not have the exact same type as Martin used – has anyone tried this circuit using components that were not the exact same and they were still able to get similar results?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.