Close
0%
0%

The Stereo Theremin

With my version each hand controls both pitch and volume.
The up/down motion controls volume, and the right/left motion controls pitch.

Similar projects worth following
I'm sure that Hackaday readers are familiar with the Theremin. It is a musical instrument that uses hand movements to control pitch and volume. One hand controls pitch, and the other hand control volume. I like the expressiveness of a no contact instrument,
but controlling two variables is just too limiting. With my version each hand controls both pitch and volume. The up/down motion controls volume, and the right/left motion controls pitch. This way the right hand plays treble and the left hand plays base, like a piano.

To sense the location of the players hands I use ultrasonic transmitters and receivers. The following diagram shows the arrangement.

        L       R

    X   A   Y   B   Z

There are two ultrasonic transmitters, A and B, three ultrasonic receivers, X, Y and Z, and two players hands, L and R. First transmitter A transmits a series of pulses which reflect off hand L and is received by receivers X and Y. The controller measures the time of flight for ALX and ALY. Next transmitter B transmits a series of pulses which reflect off hand R and is received by receivers Y and Z. The controller measures the time of flight for BRY and BRZ. From these times I calculate the four desired values, left pitch, right pitch, left volume, and right volume.

The controller for this project is a Raspberry PI Pico-W. I chose the W version so I can use a Bluetooth interface to a notepad with control software. To create the sound output I wanted to use a couple of SID chips from the Commodore 64 that I used in college. Am I dating myself? However, today these chips a expensive and hard to find. After some research I settled on a pair of the TI SN76489 sound generators.

  • New PCB design

    Mike Christlea day ago 0 comments

    Today I finish a new PCB design, Rev3. This time I decided to mount the ultrasonic transmitters and receivers on the PCB. This gives me a 15 by 2 inch board. The plan is to mount the ultrasonics on the back side, then mount the board upside down, with the components hanging down. I was able to take advantage of the extra board space to spread the circuits out. This allowed me to make a two layer board, instead of four, and saved some money.

  • Audio output circuit checkout

    Mike Christle06/22/2026 at 16:39 0 comments

    Today I checked the SN76489 audio generator circuits, and they work great. When I built this on a protoboard it had a lot of ringing. But now that It is plugged into a PCB with a proper ground plane and filter caps, the output looks really clean.

    I originally wanted to use the SID chip from the Commodore 64, but they are just to available at a reasonable cost. I also read stories about some of the remade sound chips not working. So I purchased the SN76489 from two sellers on Amazon. Turns out both sent me good chips.

  • Progress on receiver circuits

    Mike Christle06/22/2026 at 16:12 0 comments

    My apologies for the delay in reporting. Last week my AC died and I had to get a whole new system $$$. Having no AC in Florida in June is not good for my productivity.

    I finally finished up with the receiver circuit. First I experimented with the spacing between transiter and receiver. See picture below. I decided to reduce the distance from 4 inches to 3.5 inches.

    Then I found that the output of the receiver circuit was too low in the default state. This meant that the PICO always saw a logic one. I fixed this by adjusting the resistor values so the output defaults to about 0.5V.

  • Fixed receiver circuit.

    Mike Christle06/09/2026 at 14:54 0 comments

    I changed the driver circuits increase power supply from 12V to 16V, and increased the gain so the output is ~14V. 

    Increased the gain on the receiver circuit from 100 to 200. Now I am reliably getting pulses at the pico. 

    I might need to decrease the distance between transmitter and receiver from 4 inches to 3.5 inches. This will take some experimentation. 

  • Fixed Driver Circuit

    Mike Christle06/05/2026 at 20:00 0 comments

    Found the problem with the driver circuit. The gain was a little too high. The amp didn't like the signal getting that close to the rail. I dropped the gain about 10% and it works much better.

    Now I am looking at the input circuits. I have a first order RC high pass filter to block voices and 60 Hz hum. It appears to be picking up a lot noise and it is having trouble isolating the 40KHz signal reliably. I think I will experiment with a LC filter.

  • Mike Christle

    Mike Christle06/01/2026 at 14:54 0 comments

    The story so far.

    First I bread-boarded the ultrasonic driver and receiver circuits and got them to work reasonably well. However, when I built up the exact same circuit on the PCB it didn’t work for crap. It is either getting way too much gain, or the filtering isn’t working. Next step is to rework the driver circuit using a first order low pass filter.

    I also bread-boarded the audio output circuits. Tomorrow I will add these components to the PCB and test.

View all 6 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates