This project spawned from my desire to become a thereminist, and my discovery that all high-quality theremins cost hundreds of dollars. Even the digital theremins, requiring simpler circuitry are in the $200-$300 range phew, a bit too much for a high-school hacker! The Minimin is an attempt to bring a high quality theremin to everyone, and to enrich my own knowledge of embedded processing and RF circuitry.
The current functioning model (depending on how you define functioning) uses, at its heart an ATMega328 and a single LMC555 wired in astable mode for just about all functionality. The frequency of the 555 is varied by a 3.7" loop antenna soldered to the board, which acts as a parasitic capacitance on the trigger pin in parallel with the main timing capacitor. The 555 clocks the ATMega's internal timer/counter0 which is periodically read, by an interrupt on timer2. The 16 bit timer1 runs an output-compare vector which toggles the output pin on PORTD to achieve a square-wave output. The compare-match of the waveform generation timer is varied with the frequency read from the 555, which is set at about 5Mhz and is frequency-shifted lower as a hand (or other large, conductive object) is drawn towards, or away from the antenna.
Volume is varied by a volume potentiometer, and the MCU is protected from over-current through the output jack by a 1K resistor in series with it. Not having an appropriate LDO handy, Iam powering the device directly from a USB port on the board, or else through the ISP programming header. The firmware I wrote is very simplistic, and definately needs a rework for stability and a wider frequency range. I am doing the firmware development in C++ with the open-source AVR-GCC toolchain, although the first iterations used the Arduino IDE for simplicity, so that I could "test the waters" so to speak.
The Minimin Mk2 is scheduled to supercede Mk1 in just a few weeks after I get a new heting element for my soldering station and am able to complete the prototype. This next generation uses an XMega processor so that I can implement its extra timers for a true pitch-volume instrument, as well as the inbuilt 12 bit DAC from which I can get a lovely sine wave. The XMega will also give me a ready USB interface so that I can implement the theremin as a MIDI controller further down the line
Been a year since the last update so I'm curious. You said it sounds awful and I'm wondering why it sounds awful. In what manner is it awful sounding? Is it hard to control. And why did you pick 5Mhz. Even if you think this is a failure it's interesting and has other uses. Could you give us some of the insights.