[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