Well, it works like an absolute charm on a lowpass. For a highpass, however, the results are a little iffy. It becomes increasingly comb-filtered as the cutoff moves lower – I realize this is expected behavior of FIRs, generally, but I’m curious what can be done to control some of that, other than increasing the filter size (which, although it does help, the results aren’t convincing enough to warrant doubling my filter sizes for.
Additionally, I’m getting a phase shift from the highpass that’s near Nyquist. I get the same thing on the lowpass, but it disappears once you blend even 1% of the dry (delay-compensated) signal back in. Not so with the highpass:
Using a windowing function fixed this, at the expense of making the highpass into a sort of peak-filtered frequency response.
Last but not least, I’m trying to figure out how to get these filters to work such that they can produce a variable number of multiband crossovers, i.e. a lowpass, bandpass, highpass. Attempting to cascade a highpass into a lowpass has resulted in a pretty hideously comb-filtered response. I’m guessing my issue is not properly compensating for delay between filters, but I had supposed that they would all be delay compensated with each other if they’re using the same filter lengths. Perhaps I was mistaken?
EDIT: Achieving better results on the bandpass when I produce it simply by subtracting the final band (the highpass) from the previous highpass. Mainly just need to control how to properly compensate the phase against the dry signal as it’s now all out of whack.
DOUBLE EDIT: Had to set the delay to be Filter Length - 1. This thread is now Over.