In This Posting, I mentioned “Half-Band Filters”, which are a special case of the “Sinc Filter”, that are faster to compute than typical sinc filters, because in this case, half the coefficients are equal to zero, which means that half the samples which are usually multiplied by coefficients, do not need to be.

Even though this is easy to say, there is one consideration in coding the principle, essential to make it work.

A tight loop would need to dereference half the samples in the input stream, in a pattern which also skips the center sample, which is usually multiplied by the coefficient (+1) as an exception. After this loop has finished, the central input sample would be added to the accumulated, weighted sum, to arrive at the final value for the output sample.

Dirk

(Edit 03/21/2017 : )

There is an additional observation to offer, on half-band filters. Their direct use for playback would suffer from a problem I have yet to characterize. If used directly as input / output filters, this kind of filter assumes that an analog filter is capable of passing an intended signal-frequency, while suppressing a frequency adequately, which is only twice as high – i.e. one octave higher.

The problem with this is the fact that realistic analog low-pass filters never bring down the amplitude completely to zero. And if they are given only one octave to work with, then they will effectively be reducing the signal energy at the oversampled Nyquist Frequency to -50db. While this might sound adequate, for many purposes it is not.

This parasitic energy which is passed will simply show up in critiques of the technology as noise. And if it is either the goal or the achievement, that the noise-level be as low as -90db, and yet that the frequency-response curve be very clean, then the analog filters need to be given 2 or 3 octaves to work with. And this will mean that the digital system needs to be oversampled 4x or maybe even 8x.

This can be accomplished, if several half-band filters are put in a dyadic chain, but then something else cannot be accomplished.