digital crossover frequency

Status
Not open for further replies.
jheoaustin said:
Chris,

Thank you for sharing your knowledge here. I am still a little bit nervous about overlapped FFT method or MFFT?(like MDCT?), and long impulse response of stiff LP FIR. I hope you can get a good result with actual music where transients may make audible difference. Good luck! 🙂


About the “long impulse response”: play a test cd with perfect impuls track (single needles in lots of silence) and look at the analog output with an oscilloscope or a 192 kHz sampling soundcard like the audigy2.
There is your perfectly symmetric and long sin(kt)/kt, with k about 22 kHz.
On a cheap dvd player the output was very asymmetric.

I strongly recommend you to simulate pure FIR filtering with enough taps on a PC to get an idea of the benefits.
One of the most convincing results, imo, is that the sum of highpass+lowpass is equal to the original.
This is simply impossible by any analog or IIR filter other then first order.
Then there is the possibility to choose lower crossover frequency because the filter is as sharp as desired.
Tweeters having constant SPL down to 1000 Hz can finally be fully exploited without fear of destruction.
Another strong point is the easy implementation of (eg. tweeter) delay, but that’s a pro for all digital filters.

From 16 bit 44.1 kHz stereo tracks, I make multi-channel 24 bit 44.1 kHz wav files containing four filtered (two way active) channels that can be played on my audigy2. After the software floatingpoint filtering I truncate to 24 bit instead of 16 bit (why not, it improves resolution).
My software has no driver for multi-channel soundcards so I have to filter off line.
I am very impressed by the result on two way speakers where I can choose wiring between passive low order series filtering or active filtering.
While the series filter doesn’t sound bad at all, the active filtering throws in rocking definition and very wide positioning.
Positioning is of course the weak point of a low order filter because of a large frequency overlap of the tweeter and bass/mid.
 
Chris,
My concern stated above had nothing to do with long decay time, but rather with the pre-response that is possible (and likely) with FIR filters, including those implemented with FFTs. Ringing after a transient is inaudible. Ringing before it is very audible and objectionable. That is why I prefer IIR filters. They have no pre-response because they act like analog filters - they cannot 'see' future samples like a FIR filter can. (An FIR filter can respond to any number of future samples up to the filter length, but typically 1/2 the filter length. That is also why an FIR results in a delay).
 
awboy said:

...
I strongly recommend you to simulate pure FIR filtering with enough taps on a PC to get an idea of the benefits.
One of the most convincing results, imo, is that the sum of highpass+lowpass is equal to the original.
This is simply impossible by any analog or IIR filter other then first order.

A Linkwitz-Riley aligned 4th order crossover has a unity summed voltage response. Implementing these are IIRs is trivial.
 
One of the most convincing results, imo, is that the sum of highpass+lowpass is equal to the original. This is simply impossible by any analog or IIR filter other then first order.

In simple words: That is definitely NOT true. But there are some disadvantages of transient-perfect higher order crossovers (IIR or analog) like overlap and humps that a pure FIR crossover wouldn't have.

IMO a good compromise between performance and computation power is the subtractive IIR with constant delay that I already mentioned before.

Regards

Charles
 
macboy said:


A Linkwitz-Riley aligned 4th order crossover has a unity summed voltage response. Implementing these are IIRs is trivial.

I was talking in timedomain! Exact summing in amplitude and phase!
You are talking about half the story.

Try filtering a simple square wave.
Does the LR filter give a perfect sum? NO
 
macboy,

I disagree with your statement that preringing on an FIR is audible. It will be more audible if the pre-ringing is not there. Symmetrical FIRs (with symmetrical impulse response in time domain) produce phase linear filtering. As soon as you introduce assymmetry in the response, you get phase distortion. If you want a perfect filter, you will have pre-ringing. It is not a side-effect of some approximation or compromise.

As stated before, the low-pass filters used in all oversampled DACs and ADCs (pretty much everything post 1988) are symmetric FIRs of very high order. I think thats proof enough that they work.

Further proof- run an ADC and DAC together to get the end-to end analogue performance. ie DAC out minus delayed ADC in. After applying compensation for the delay, you will see that the difference (even with REAL music) is very small, and dependant on the quality of the ADC and DAC. The signal will go through several low-pass symmetrical FIRs. If pre-ringing caused an audible distortion, then it would definitely show up on the time domain result of this test. All you will see is the artifacts due to noise and distortion of the DAC, ADC and analogue filters.

These statements are proven in most good textbooks on communication theory. Its not easy bed-time reading, and you probably need to do some serious maths revision first. What you will get out of it is a better understanding of the relationship between time and frequency domains, hence a better understanding of how to interpret time-domain plots.

awboy,

I implement my filters as you describe, and yes its amazing how much range extension you get for the tweeters. I tried my XO at 1200 on some old D25 vifa metal domes I had lying around from years ago, and was stunned that they sounded quite good(?!!). The problem with these drivers is that they object strongly to ANY sub 1200Hz midrange signal, which is simply unavoidable with an IIR XO unless its at 3k and has a high order. So the FIR XO breathes some new life into them.

For the HF I use ~1000 taps.

Your cheap DVD is probably just not oversampling at a very high rate, and/or has significant artifacts above 20kHz (cheap silicon => low-order FIRs), requiring an analogue output filter with a low cutoff frequency. The analogue filter will distort the impulse response just as you describe.

jheoaustin,

Sorry for getting technical. Basically, all I was saying is that ringing on the impulse response of an FIR looks bad in the time domain because our audio training say smooth graphs make smooth sound. This is not always the case- especially when interpreting time domain responses. Unfortunately, there are a lot of passionate audio designers who dont understand this because its not something you can learn in a few days(unless you are a genius). Its easier to go with gut instinct and say "smooth must be better". As we all know, our instinct is often wrong.

Looks like I can quite easily put 5.1 on the crossover, but not DTS (yet).

I wonder if I'm still getting moderated 🙂
 
Re: Its all possible now...

Chris Lockwood said:

I'm thinking of commercialising it for the audiophile market.

Group delay is 80 to 150ms depending on filter settings, which makes it sort-of tolerable to watch DVDs and TV in stereo, but is unsuitable for use in a surround system combined with conventional speakers, unless your surround processor can add delays in the order of 150ms to each of the non-FIR channels.

Email me before March '04:

Final product format will be sorted by then, so any suggestions on desirable features are welcomed.

Sorry to reply this late but I do have two question:
do you incorporate a variable delay for mechanical mis-alignment of the speakers (read tweeter)? should be easy in dsp.

As a dsp dummy/starter I wonder how highpass is impemented by you.
ADSP manuals talk about simple methods to get the highpass coeff from the lowpass coeff but in my PC program I just get highpass by very simple substraction of (delayed original- delayed lowpass)=delayed highpass.
This saves a lot of cpu time and gets a perfect result. Could this be implemented on a dsp (or the same question: can a dsp hold blocks of data)?
 
If you want a perfect filter, you will have pre-ringing
That hardly sounds perfect to me!

As stated before, the low-pass filters used in all oversampled DACs and ADCs (pretty much everything post 1988) are symmetric FIRs of very high order. I think thats proof enough that they work
I agree that they work extremely well in those roles. But they do have the benefit of that the frequency of their transition region is well beyond the range of human hearing.

These statements are proven in most good textbooks on communication theory. Its not easy bed-time reading, and you probably need to do some serious maths revision first.
Being an EE, things like doing Laplace transforms and thinking in the Z domain are practically second nature to me.
 
This saves a lot of cpu time and gets a perfect result. Could this be implemented on a dsp (or the same question: can a dsp hold blocks of data)?

Because of the linearity involved you can do the following to get highpass FIR coefficients:

1.) Calculate an allpass. I.e. a lowpass with a cutoff frequency that is the same as the Nyqust frequency and having the same filter-length as you intend to use as your FIR HPF.

2.) Calculate an LPF like the one you used for subtracting but now you subtract it's coeffiecients from the Allpass coeffiecients and voila: You have your FIR highpass coefficients.

Regards

Charles
 
Re: Re: Its all possible now...

awboy said:



As a dsp dummy/starter I wonder how highpass is impemented by you.
ADSP manuals talk about simple methods to get the highpass coeff from the lowpass coeff but in my PC program I just get highpass by very simple substraction of (delayed original- delayed lowpass)=delayed highpass.
This saves a lot of cpu time and gets a perfect result. Could this be implemented on a dsp (or the same question: can a dsp hold blocks of data)?


You certainly can do this, but it may not be what you want. John K (frequent poster on the madisound forum) has some material on this type of subtractive delay xover on his site.

The main problem with this approach is that you have to account for the acoustic response of the drivers - what you really want is the tweeter *acoustic* response to be derived by subtracting the woofer *acoustic* response from the original signal (appropriately delayed). If either driver has any meaningful response variations in it's passband (and basically all do) then you'll have to eq the signal to correct for this response, which basically gets you back to needing a second fir filter anyway.

The 'best' way to approach this type of subtractive topology is to use an IIR for the lowpass, and then subtract an FIR equalized version o fthe lowpass from the original signal *that has been delayed by an amount equal to the group delay of the IIR* - this is the topology that John K talks about, and is probably the most computationally efficient way to get a decent transient-perfect xover.
 
Ive just set up my xover using brutefir.
Im x'ing over a sub (up to 70hz), left&right woofer (up to 2.5khz), and left&right tweeters.

What do you guys recommend as a good xover point rolloff rate?
And then whats the best way to generate the coeffs for it?

Ive got matlab with the filter designer.
Ive played with it a bit, but i cant work out whats the best method of creating the coeffs (window, etc).
 
multistage FIR

In 2001 I did my master degree thesis: Digital crossover networks and equalization.
I tried several multirate implementations and also frequency warped filters.
With my implementation 4096 stereo samples of music had the computational burden:

Direct filtering: 33.6 *10^6 multiplications;
FFT: 1.98 *10^5 multiplications;
Multirate: 3.27 *10^6 multiplications;
Warped filters: 50% of the direct filtering;

It’s hard to overcome the FFT!!!
 
best method of creating the coeffs

If you wish that your crossover should equalize your speaker as well, I can recommend

MATLAB PROGRAM FOR LOUDSPEAKER EQUALIZATION AND CROSSOVER DESIGN, Hawksford, M.O.J., JAES, vol. 47, no. 9, pp 707-719, September 1999

Hawsford is here taking help of the Hilbert transform to find the stable inversion of the measured impulse response . (I tried the spectral factorization as well to solve the inversion problem.)

If you know MATLAB and some theory in digital signal processing I can recommend it, even if you are not interested in the equalization. The program can calculate coefficients for both FIR and IIR’s.
 
Status
Not open for further replies.