Sound Synthesis & SFX

FM Synth with Convolution

max patch


General Description

FM Synth is a FM additive synth with quasi convolution. It was designed to produce drones that remind of “abandoned space station”. It has only one voice but 20 unison voices.

FM engine

Each unison voice represents a FM synthesis engine. FM engine has two modes: Modulator Amplitude mode – where one has the option to control the amplitude of modulators, or Modulation Index mode – where one has the option to control the modulation index I=d/Fm; where d stands for frequency deviation and Fm for modulator’s frequency.

The selection between the two modes can be done in the right bottom corner under the section Modulation Options (the smallest multislider in the interface). Only one mode per unision voice can be selected.

Noise part

Noise Amplitude multislider is not part of the FM engine. It is a white noise filtered by the resonant filters. The frequencies of the filter peaks can be determined by either FM carriers or FM modulators. There is also a frequency multiply factor, so that filter frequencies might be an integer or float multiples of carriers or modulators frequencies.


Wet signal represents the signal that goes through reverb and the process of convolution (if turned on). The main Additive FM signal can be convolved with a sample, saw wave, square wave or another FM wave. From a puristic technical perspective, the convolution in question is not real by the book convolution, since only amplitude part of FFT spectrum is being multiplied.

All the rest…

Modulation and Carrier Frequency multisliders represents the factors by which the pressed note is multiplied. The factor can be either float or an integer. There is an aliasing option as well for the real adventurists!

Linedrive represents the fluctuation in volume and panning position for each voice. Linedrive Bang Interval represents the time in which new volume and panning destination is set. On the other hand Linedrive Time represents the time needed for a transition from previous to the next value.

Leave a Reply