FM Plotter, a tool to visualize frequency modulation

Now what in the hell is frequency modulation? In this article i will focus on it’s use in music production. Basically any Synthesizer use frequency modulation to create the typical vibrato effect. This kind of effect was very popular in the 70s and 80s and is still used widley today.

It basically swings a played note between a lower and higher frequency (e.g. 400 hz and 420 hz) in a specific amount of time. Depending on the chosen waveform (Triangle, Sawtooth or Square Wave) the swing between those two frequencies behaves differently.

The Triangle Waveform smoothly swings up and down, the Sawtooth smoothly swings up and then instantly changes to the lower frequency and the Square Wave just changes between those two frequencies instantly. This doesn’t seem so complicated at first glance but the maths behind it can be a bit confusing. Therefore i’ve wrote a little tool, called FM Plotter, to help here out.

FM Plotter: first waveform (modulation signal): Sawtooth (Integral), second waveform (carrier signal): Squarewave

It visualizes the three typical Waveforms which can be adjusted with a set of parameters (iteration, frequency, modulation index). They can be created with the Fourier Series or with trigonometric functions. These three Waveforms can be applied individually on a second waveform which represend the Carrier signal or in our case the note. This process is referred as (frequency) modulation. Before those waveforms can be applied, their integral need to be computed. This is also done by the tool with a simple click. If everything is setup correctly, FM Plotter will show you the modulated signal on the bottom. Now you can play around with the frequencies and the modulation index and check how those affect the signal.

FM Plotter was written in Python and only uses the library Matplotlib (and Numpy of course).

You can download the tool from my github page:

I’ve also created a video about frequency modulation where i go into more details about the maths.

Leave a Reply

Your email address will not be published. Required fields are marked *