Eric's Generalized Receiver Explanation
The idea behind a generalized receiver is to take a bandpass radio frequency signal and shift it into the baseband. All bandpass signals consist of a conjugate pair of signals centered around +- f, where f is the frequency of the signal. A baseband signal has f=0, which doesn't have a conjugate.
bandpass signal ---(-f)------0------(+f)---
baseband signal -----------(f=0)-----------
To shift the frequency into the baseband, you can multiply the signal by a cosine wave. Multiplying by a cosine wave has the effect of both adding and subtracting the frequency of the cosine wave, so you gain an additional signal. For example, if we multiply the bandpass signal above by a cosine wave with fcos=f, we will end up with the signal at 0 and +-2f.
Note that the fcos signal doesn't actually exist in the output, I only included it to show its relative position to the shifted signal. Since fcos=f, this is also the original location of the signal that has been shifted.
Because the signal is essentially copied onto two new frequencies, a filter is needed to remove the unwanted signal, known as the image. If you want just the baseband signal, you would use a low-pass filter to block the higher frequency signal at 2f. Conversely you could use a high pass filter to block the baseband signal.
For a software radio, this signal shifting needs to be done outside the computer because a soundcard is designed to handle audio signals, which max out at about 192KHz for a high end soundcard. This is a much lower frequency than most radio signals, which are in the megahertz range. By shifting this high frequency signal into baseband, the sound card can detect the signal and the computer can do the rest of the work.