[sdiy] Vocoder dabblings
Richie Burnett
rburnett at richieburnett.co.uk
Thu Nov 29 21:45:04 CET 2012
I forgot to mention this before, but another thing I had been experimenting
with for the vocoder was Hilbert envelope followers.
The design of the envelope-follower filters in a vocoder is a compromise
between responding quick enough to variations in formant amplitude but at
the same time sufficiently attenuating the AC ripple from the full-wave
rectified band output being "envelope followed." Excessive ripple present
in the envelope follower CV output risks ring-modulating the carrier signal
passing through it's VCA with horrible discordant results! The
envelope-follower's filter design is particularly challanging for the lowest
frequency bands where there is not much room for a filter to do its rolloff
and an aggressive high-order filter introduce undesirable overshoot and
ringing in the envelope CV output. The Hilbert envelope follower helps
here...
The Hilbert envelope detector generates two new versions of the audio to be
"envelope followed". These are seperated from each other by 90 degrees by
passing through two different allpass filters. The envelope level for this
band is then calculated by summing the squares of the two instantaneous
signals and square-rooting the result. This "magically" generates a value
that follows the envelope of the signal being analysed but contains several
orders of magnitude less ripple than a simple "rectify and low-pass filter"
envelope follower. It therefore requires minimal post-filtering to make the
envelope CV ripple-free. [The mathematical explanation comes from the trig
identity: sin^2 + cos^2 = 1 or intuitively you can think of the positive &
negative peaks of the 90 degree shifted waveform (the sine) "filling in the
dips" in the envelope signal when the other waveform (the cosine) is passing
through zero.]
The Hilbert transformer circuit is familiar to RF engineers as it is used
for SSB generation, and also appears in things like the moog/bode frequency
shifter. The design is usually complex in order to maintain a precise 90
degree phase difference over the entire audio range. However, in the case
of a vocoder each band is only something like 1/3 octave wide so it's easy
to maintain a good 90 degree phase shift over this small frequency span
using two simple allpass filters. The biggest hit in CPU cycles is the
final square-root operation!
Just thought i'd share a technique that might be useful in other electronic
music applications. It doesn't seem to be that well known.
-Richie,
More information about the Synth-diy
mailing list