Q: band limited difference curve

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Z1202 wrote:
mystran wrote:The big problems however tend to be either harmonic amplitude mismatch just slightly above the cutoff point (ie. aliasing doesn't cancel sufficiently well; personally I've never managed to get reasonable results with analytic approaches here) or step-discontinuities at the beginning/end of the window higher-order BLEP due to repeated numerical integration (which can be mitigated by using a window with better continuity at the end-points.. up to a point anyway).
Hmmm, to get good response at the cutoff you need a long window (just by the Heisenberg principle). However, I wonder how critical is that. E.g. if the software is running at 88kHz or above (which is reasonable to mitigate the prewarping BLT artifacts and reduce the aliasing from nonlinearities at least a bit), you have quite a lot of headroom below Nyquist.
When you window (ie. low-pass filter in the spectral domain) a piece-wise linear signal (or piece-wise constant signal, like the spectrum of a sinc), if we assume the low-pass kernel has approximately finite support, then we can assume that as long as the non-negligible part of the kernel support is within a single segment, the result is a good approximation of the original function (and when the kernel overlaps multiple segments, we have a transition region). This obviously requires that the low-pass kernel (ie. spectrum of the window function) is symmetric, but that's usually the case.

When you try to window an analytically integrated spectrum, you don't have a piece-wise linear curve anymore and you get systematic error depending on the non-linearity of the slope... that is the curve under the (non-negligible part of) the symmetric low-pass kernel no-longer averages out to the actual desired value. In my experience this source of error is far more significant than the error from the window function side-bands. Since the error isn't even fixed across the spectrum (as the non-linear slope introduces different systematic error at different parts of the spectrum), you can't even fix it by any normalisation. The reason I specifically noted the mismatch just above the cutoff is that this is where an N/octave (ie. one or more rounds of integration) spectrum is furthest from linear.

So .. you either have to make the window ridiculously long (such that the non-negligible part of the low-pass support is narrow enough that the non-linearity of the slope is negligible)... or you have to perform the windowing first, then analytically integrate the whole thing. I'd assume the latter approach might work with a suitably chosen window, but given that it appears you also need higher order of continuity (at least approximately) at the end-points for higher-order BLEPs, this gets messy really fast.

I mean it's entirely possible I'm missing something here, but at the same time I've probably tried something like 20+ different methods for generating these residues... and so far the best performing method I've seen is to numerically integrate (time-domain or with FFT, doesn't matter) straight windowed sinc. Once it no longer works for a given order, improve the continuity of the window (or just bump the Kaiser alpha up) and it'll probably work again.. at the cost of wider transition.

Post Reply

Return to “DSP and Plugin Development”