Stuck with a SynthEdit project?

Category: Modulation

Amplitude modulation.

What is Amplitude Modulation?

It’s all in the name really. We take two signals the first is our carrier, the second is the modulation. If you remember the days of medium, and long wave radio that was Amplitude Modulation applied to RF instead of AF signals. The diagram below shows a block diagram of AM in operation in a radio transmitter.


This makes quite a versatile effect in a synthesizer or FX pedal, some might say similar to Ring Modulation. But personally I class it as entirely different effect. The major difference is where a Ring Modulator (A true balanced one that is) should suppress the carrier signal, amplitude modulation does not suppress the carrier. I’m not going to get too technical (or go into the maths too deeply), but if you want to there’s a good article on Wikipedia on the subject.

Here we have 0% modulation depth:

Then 50 % modulation depth:

Next 100% Modulation depth:

You can see here how we always have an output from the modulator, and that as we apply modulation to the carrier signal we get two other signals, these are sidebands, and are created by the sum of the carrier and the modulation frequency, and the difference of the carrier and modulation frequencies.
Example: (Sorry a little bit of basic math here).
If the carrier (fc) is 440 Hz and the modulator (fm) is 200 Hz then we get a lower sideband of fc-fm=240 Hz and an upper sideband of fc+fm=640Hz. So our output will now contain 240 Hz, 440 Hz and 640 Hz. What about the 200 Hz modulation signal? This never appears as a direct signal at the output. That’s correct it only appears in the form of the sidebands.

440Hz modulated by 200 Hz:

440Hz modulated by 330Hz.

440Hz modulated by 880Hz.

Where has the lower sideband gone? Well 440Hz-880Hz= -440Hz, negative frequencies are an impossibility so it disappears. This is why we need an HP filter in the output to prevent DC and LF rumbles distorting the output.

Howe can we do this in SynthEdit?

It’s fairly easy using VCA modules if we keep one or two details in mind.
1) The VCA Response curve must be set to Linear mode for the proper modulation effect, anything else will not give the correct modulation.
2) With some combinations of carrier and modulation frequencies we can get some very loud rumbling sounds due to the difference between carrier and modulation frequencies. A high pass filter set to about 50 Hz, after the modulator will cut these out.
3) Unless the modulator structure has a bias voltage on the Modulator VCA you won’t get the true AM effect, there will only be an output when modulation is applied. This is not correct, we need to apply a 5V bias to the modulator’s Volume plug for true AM operation.
Note: Don’t be tempted to go beyond 100% modulation unless you want some horrible distortion, and aliasing by products.
Note: The Output VCA is there so that the oscillators will behave properly. If you put this in a synthesizer it’s not really needed.
Note: any Module names with an addition inside curly brackets {added} is just a comment to clarify what the module does…please don’t try and find them in SE or 3rd party modules!

The modulator structure.

The “guts” of the modulator.

Tremolo Effect.

Because the carrier signal is always present at the output we can use this effect as Tremolo as well as an effect to add extra harmonics to a signal. All we need to do is reduce the modulation frequency down to a range of say 0.1 to 5 Hz.

Are there sidebands when used as Tremolo?

Do we get any additional frequencies in the output when used with say 0.5Hz modulation as a Tremolo? No we don’t, just the original 440Hz carrier pulsing up and down in time with the modulation. Any sidebands are so close to the original carrier frequency as to be completely indistinguishable – see below.

Feedback loops in Synthedit.

I thought you couldn’t use feedback in SynthEdit?
In the true sense of feedback in an electronic circuit, no it’s not possible.
Tight feedback loops (as in timing) are NOT currently supported in SynthEdit.  Like VST, SynthEdit processes samples in ‘blocks’ of about 100 samples at a time, this processing method prevents having tight feedback loops.  The Feedback-Delayed modules allows feedback at the expense of a small one-block delay (usually about 2ms).

What is feedback?

In a physical electronic circuits feedback is where we take a portion of the output of an amplifier, filter or other circuit and “feed it back” to the input (hence the term feedback) in this case through the resistor RS.
Feedback can be either negative (180 degrees out of phase with the input), or positive feedback (in phase with the input). The type of feedback affects how it interacts with the input signal. An example of negative feedback in an OP amp circuit is shown below.

Diagram of negative feedback.

To obtain positive feedback we would merely connect RS to the + input of the amplifier rather than the – input. In the case of a filter, adding positive feedback to the circuit will boost frequencies at the cut-off frequency producing a resonant peak much used in synthesizers. If the filter is a delay line based “comb filter” then we can use either negative or positive feedback. Negative feedback will cause notches to appear in the frequency spectrum, and positive feedback will cause resonant peaks to appear. The resulting sound from negative and positive feedback will noticeably different.
In simple terms Positive feedback adds to the signal level, and Negative feedback subtracts from the signal level.

Why is there no true feedback in Synthedit?

This limitation is due to the way a VST Plug-in, and therefore SynthEdit, processes audio in blocks. A block is a group of samples representing a short piece of sound. Each block contains around 100 samples.
For example, in a typical VST synthesiser, the Oscillator produces a short piece of sound (100 samples long), then passes the block of samples to the filter, which then processes the block, before passing it on to the next module. This carries on through the chain of modules.
Feedback in “real” electronics is considered instantaneous (so fast it would make no difference to our audio) . In any block-based system such as SynthEdit, feedback must be delayed by at least 1 block of samples. Therefore you cannot create a feedback path without introducing a delay of at least 96 samples in length.  Because of this, true feedback is not possible, there is just too much of a delay at higher frequencies (2kHz and above), meaning there will be too much phase distortion introduced by the delay.

Filter feedback in Synthedit.
Normally (unless you’re a module designer) you won’t need to worry about feedback for filters, it’s all handled inside the module, but there are some times in Synthesizer circuitry when some feedback would be very useful.

How feedback works in Synthedit.
There are a set of modules specially created for enabling feedback loops. Say you wanted to have a circuit where an oscillator phase modulates itself. You might try this:

Incorrect feedback path in SynthEdit

However you’ll get this message saying feedback is not allowed.

Feedback error in SynthEdit

However there’s a module we can use that does allow feedback of sorts. For our purposes here it’s the Feedback-Volts module (there’s a whole set of feedback modules in the “Special” folder one for each type of DSP data/signal that you might need).
If you connect up the structure shown below, introducing this special Feedback module means your loop will work without any errors. Just be aware of the limitations caused by the signal delay (about 2mS) at higher frequencies.

Correct feedback path in SynthEdit using a feedback module.

With the layout above you will get a feedback type effect on your phase modulated oscillator, but it won’t be quite the results you would get from an electronic phase mod feedback loop- the waveforms won’t match and at high frequencies or modulation levels the audio output will be a bit distorted.

Types of SynthEdit feedback module available.
Basically all the data types:
BLOB, Bool, Double (Double precision Float), Float, Int, Int64 (64 bit Integer), MIDI, Text, and Voltage.