Thanks for the response. I'm using REW to generate the file. It has frequency dependent windowing but I don't see a way to change the number of cycles as the frequency goes up. Last night I succeeded in getting a good sounding result by limiting the FIR to 200 Hz, and then applying low Q parametric filters to the higher frequencies to bring their smoothed average close to the target curve. The bass is very even and clear and integrates nicely with the treble. I don't hear any hint of ringing now. So it's pre-ringing in the bass that causes the treble to sound weird?
Come to think of it, I suppose I could create different impulses with different time window periods for various frequency ranges and then just multiply these all together to create a full range impulse.
I don't know a whole lot about how this FIR method works, and what it's reasonable to try to do with it. My folded bass horns have a flaw that produces a very deep notch in their output at around 85 Hz. Because the bass horns are so loud and efficient I have to attenuate them to be more in line with my mids and highs I"m currently using. I can do that attenuation by turning down their volume on the amplifier, or I can let the FIR filter EQ them down to the target curve. If I let the EQ do that, it can almost completely erase the notch, and it seems to minimize the group delay all the way down to 20Hz. I'm not doing that right now, allowing the narrow notch to live, and allowing group delay to exist as the frequency approaches the lower cutoff. Do you have any opinion on letting the FIR filter get that aggressive? I know I'm losing about 10dB of digital headroom by EQing it down so hard, so the noise floor will come up, but I don't think I can hear that in the bass horns. But conversely, I don't think I can usually hear that notch at 85Hz either, nor do I think I can hear the 20ms group delay at 20Hz.
@pjwd I've gotten the latency on the FIR filter down to 21 ms! This is good enough for me to watch movies and play games. I had one filter that was clocking in at 14 ms. I'm not sure what all determines the latency but I know the number of samples in the impulse file is a big deal, so trimming off silence on the ends seems to make a difference.