Martin - Yes, that's what I meant when I said the impulse response looked very good! Pretty cool, huh?! It still looks pretty good with Olli's coefficients, but it has much better symmetry with yours.
I'm not sure of a good way to make complex poles out of this structure. I've been trying to figure that out. Stanford has a paper on making efficient linear phase truncated IIR filters, but I don't understand all the heavy math notation. Let me know if you understand any of this paper.
https://ccrma.stanford.edu/~jos/pdf/tiir.pdfThere's one thing I've found that sort of works. You can multiply the input signal by a complex oscillator, then filter it and complex multiply it again after the filter and this give you control of the cutoff frequency and the resonant frequency. It doesn't behave quite like complex poles. Essentially your cutoff controls the DFT window size/shape and the oscillator controls the frequency of interest. In practice, it behaves a bit like a moog style ladder filter but the standard math for complex poles doesn't work. It's pretty cool if you want to compute a DFT at a specific frequency though. You can use this method with any type of lowpass filter.
I used this method to make a harmonic analyzer for helping somebody test guitar pedals. It would generate a sine at a specific frequency and analyze the first 16 harmonics. I used regular lowpass filters (I think I chained a few for a quasi gaussian window). It worked great!
Since we are on the topic of HIlbert transforms, I stumbled on something cool. You can use it to generate harmonics without DC offset for even polynomials and you can auto-normalize the harmonics.
Let's call the outputs a and b.
pow = a*a+b*b
rms = sqrt(pow)
x1 = a
a2 = a*a-b*b
b2 = a*b+a*b
x2 = a2 / rms
a3 = a2*a-b2*b
b3 = a2*b+b2*a
x3 = a3 / pow
Since the denominator is always 1 power less, the polynomial has the same volume as the input (e.g. x^3/x^2 = x). You can blend the harmonics organ style! I think it's much better for simple harmonic generation than using Chebyshev polynomials. Since the hilbert shifter you made has such good performance, the harmonics are very pure. Also notice that inputting two frequencies a fifth apart into the second harmonic, the intermodulation generates a sub octave of the root. This happens normally with 2nd harmonic distortion, but it's very pronounced using this. You could also shift the phase of the harmonics if you wanted to for some reason.