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.
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:
However you’ll get this message saying feedback is not allowed.
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.
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.