[music-dsp] Anti-aliasing when simulating nonlinearities
Sampo Syreeni
decoy at iki.fi
Fri Mar 3 07:36:23 EST 2006
On 2006-03-03, Emanuel Landeholm wrote:
> How *do* you solve a Volterra series type equation in the light of
> aliasing? Do you truncate the coefficients at a certain point (say
> fitfh order or so) and provide adequate oversampling "headroom", or
> what?
Both.
> Another thing I wonder about is window functions. These are often
> specified as sampled versions of non-bandlimited continuous time
> function. Look at the tapering function used in Vorbis for example. It
> involves frequency modulation so the resulting bandwidth is really
> infinite.
There are two sides to this coin. First, if we use the continuous window
function directly, then yes, there will be aliasing. It can't even be
avoided because proper window functions have compact support in time
which implies noncompact support in frequency. When you window, the
spectrum of the signal will end up being convolved with the frequency
response of the window function. If the smudging causes some energy to
hit the Nyquist limit, there will be foldover. And of course this will
always happen because the window function will necessarily have
arbitrarily high frequency components.
But you also need to quantify the resulting amount of alias before you
worry. If the spectrum of either the window function or the input signal
decays fast enough, the alias won't be noticeable. In music processing
they will usually both fade quite nicely. The window response will fade
because windows are used to regularize Fourier transforms, so we want to
retain frequency selectivity in any case; this implies smooth windows
with little high frequency content. The signal spectrum will typically
fade because music tends to have a 1/f average longterm spectrum. (OTOH,
there are things like acoustic guitars which produce extremely broad
band transients; this might even help explain in part why phase vocoders
and lossy codecs fare so badly with them.) In most cases the alias will
land nicely below the quantization noise floor without any further
processing, and even if it doesn't, no more than 2x oversampling is
needed to drive it there.
Secondly, and more importantly, we never actually use continuous time
windows in DSP. Here window functions are usually applied by multiplying
them sample by sample in the baseband. This implies that we're actually
using a sampled window, which is itself necessarily bandlimited. Its
continuous time, reconstructed counterpart is *not* actually compactly
supported, but instead is just as bandlimited as the input signal. It
has an infinitely long tail in the time domain where it rapidly decays
towards zero, and is identically zero at the sampling times. Thus the
discrete windows aren't really window functions at all in the strict,
continuous time sense. Multiplying the signal with them can still give
rise to alias, yes, but in this case 2x oversampling is *guaranteed* to
get rid of it.
This looks a bit suspicious, doesn't it? Well, it is. The aliasing
problem didn't vanish, but was moved elsewhere: when we go from the
continuous time window to the discrete version, we're actually sampling
a non-bandlimited signal (just as you said) and there can be alias. In
this case it would affect the frequency response of the window. But
again, even continuous time window functions decay fast in frequency
because of how they're defined and used in the first place. The change
in window frequency response induced by sampling will invariably be very
limited, even without oversampling.
--
Sampo Syreeni, aka decoy - mailto:decoy at iki.fi, tel:+358-50-5756111
student/math+cs/helsinki university, http://www.iki.fi/~decoy/front
openpgp: 050985C2/025E D175 ABE5 027C 9494 EEB0 E090 8BA9 0509 85C2
More information about the music-dsp
mailing list