N-band ZDF vocoder for serious vocoding
"we have daft punk at home"
UPDATE - 1.2
So Serious. Wow
we have improved two stage envelope detectors, (decoupled in the attack and release feedback paths) as graciously provided and suggested by laureano lopez and have also fixed cutoff issues to do with the 2x oversampling of the detectors. not to toot my own horn but this might be one of the best dang sounding digital vocoders i have personally heard
UPDATE - 1.1
Now Even More Serious
this vocoder has been updated to include a basic built-in carrier synth (sawtooth + impulse oscillator AKA spiky sawtooth) so it can be used with midi input and a single audio input as modulator. the display has been updated from an event table to a poly display, so now it will work correctly when changing the number of voices/bands. the voiced/unvoiced detection has been reworked to behave more like a gate instead of simply adding in noise at variable volume, (yuck!) and—more importantly— in the B panel there are now extended controls for this to dial in the detection threshold and hold time.
all envelope detectors now use 2x oversampling for improved level detection —especially for higher bands— because, as a wise man once said, 'squaring doubles the bandwidth'. what else... oh, and the tanh saturators in the nonlinear filters for the modulator's envelope detectors were upgraded to the fancy taylor series version because, ya know, what the heck. finally, the resonance for the modulator filterbank is adjustable in the B panel as well, all the way up to .99 which, somewhat surprisingly, seems to give the best intelligibility, even while bordering on ringing/resonance
this came about because i've never been terribly floored by the sound of many software vocoders, and suspected that using the computationally expensive SOTA ZDF reaktor filters might go some of the way closer to getting a 'classic vocoder' sound. after some experimentation, the curious combination of the 4p NLB ladder --> to 2p bandpass breakout for the modulator, and 4p butterworth bandpass for the carrier, seemed to give a surprisingly good result. OK, next thing to do was figure out a heuristic approximation of the voiced/unvoiced detection that nicer vocoders have, with a burst of noise exciting the carrier for fricatives and plosives, but inaudible at all other times: check! this has a side effect of also working nicely for transients when vocoding things like drums. this noise channel is gated also by the carrier
the number of voices corresponds to the number of bands. it is set to 24, but it can be set to fewer (if you're going for a more 'authentic' sound), or more (if you're a dork)
for maximum effect, the carrier signal should be driven with something like an unfiltered saw wave, a pro tip is to mix in some unfiltered impulse train (to taste) as well, since the best thing to have for a carrier signal is something with a flat frequency response or close to it, to avoid a 'hat on a hat' or 'transfer function on a transfer function' effect on the sound. conversely, some filtering of this carrier signal could also be desirable, if the unvoiced-envelope gated noise is exciting the high frequencies on its own, providing separation between the lower vowels driven by an oscillator and higher frequency speech components driven by noise. this could be argued a more realistic approximation of human speech