[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