• Instagram
  • LinkedIn
  • Theresa Ambat

Building a Motion-Controlled FM Synthesizer

This quarter I took a mechatronics class through the DXARTS department at the University of Washington. We learned about Arduino, Pure Data, sound and video manipulation using sensors, 3D printing, and just, basic electronics.

Building a simple speaker system + piezzo microphone.

I had the opportunity to create two projects in this course. My first project consisted of an Arizona tea can, a speaker, accelerometer, and an Arduino.

As you can see from the pictures, it definitely wasn't the most pleasing to the eye. I cut the top of the can off, hot glued a speaker to the top so that the sound would go into the can, and placed an accelerometer inside. In my Arduino code I had random, short sine tones going off and the frequencies of those tones would increase as the can/accelerometer was "poured" (lowered), simulating the sound of a liquid being poured into a cup. It basically sounded like a bubbling, video game potion.

My second project also focused around sound but I wanted to use Pure Data to create my own FM synthesizer (Arduino only allows for simple sine tones). I heard a lot about modular synthesis from one of my favorite YouTubers, Andrew Huang, but I definitely didn't (and still don't) have the money to buy a bunch of hardware synths. I was really excited to hear that we would be learning Pure Data in the class.

My frequency modulation synth programmed in Pure Data.

I created a few arrays featuring notes from 3 different musical scales. These values were sent randomly on a metronome to the carrier frequency and modulation frequency objects for my FM synth. This resulted in some cool, "computery, blippy," melodies that kind of remind me of Stranger Things.

I also had a few messages containing notes for chords in each scale. The frequencies to those notes were input to a few bandpass filters filtering white noise. This created some very warm, airy chords that played behind the random melodies.

I used the z-axis of an accelerometer to manipulate the modulation index and attached the accelerometer to a glove you wore on your hand. The higher you held your hand, the higher the mod index and the "sharper" and more distorted the melodic "blips" sounded. The lower your held your your hand, the more the blips would just sound like sine tones. Throw in a little bit of reverb, and you've got yourself a cool little motion-controlled FM synth.

The set up of my final presentation.

In the future I hope to make this synthesizer a little more flexible. As I'm still learning to program with Pure Data, you're limited to 3 musical scales with this synth. It takes a lot of tedious work to find the frequency data, create the arrays and messages, and then connect all the senders and receivers together. I'd like to come up with some sort of algorithm that will allow me to explore several different scales without having to create so many arrays and messages. I'd even like to connect this to a midi controller of some sort to control the scales using a keyboard. You can listen to how this synth sounds on my instagram story.