A vocoder aims to replace the carrier of your voice with another
carrier from another source. Thus, it changes the sound of the voice
but not the message when you speak. It takes formant and carrier from
external sources and splits them up in bands (a band is a region
of frequencies, same thing an equalizer does). Then, the envelope
(the modulation) is extraced from each formant band. This part is done
by an envelope follower, an extreme low pass filter.
Next, formant bands are modulated onto the carrier bands and the
resulting bands are mixed together to the output signal.
The benefit of doing this is, you can make the carrier speak or sing.
As a side effect, the formant's voice type is absolutely irrelevant to
the output so everybody (even those with an ugly voice) can create cool
and futuristic samples :-)
You usually use a human voice as the formant and an instrument as the
carrier. It makes the instrument speak. Good results can be achived
with strings, brasses, flutes or any other sound with nearly constant
dynamic. Even chords may be used to give the result more depth.
Input sources each may be file or soundcard (if supported) as for the
output. If you use a soundcard as a source, please note: input is
sampled in stereo but internally processed as two mono channels. One
channel is considered to be the formant, the other the carrier. If
your soundcard is duplex aware, you may even use it as source and
destination at the same time. You can talk into the microphone and
hear yourself. Unfortunally, soundcards have a high latency and thus,
the result has a noticeable delay :-(
Each band can be modified in various ways. Volume and panning are two
of them that are already implemented.