• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

LinFIR – DSP Software for FIR/IIR Filter Design and Speaker Correction

If you can measure and correct speakers independently, I think it's best to proceed that way.
My question is, can a multi-way speaker be corrected / compensated / EQ'd just like an individual driver?

I've read opinions that it's too difficult, or even pointless...
 
Arnwald,

First, thanks for the software. Amazing how much is available for free.

Is it possible to correct reach drivers response to match the crossover slope with LinFIR given that i can provide per driver measurements (not anechoic, though, just on-axis at about 1-1.5m)?

Or is what i describe basically the main workflow for the crossover use-case (as opposed to room correction scenario)?
I'm not sure to follow you. If you want the response to match a precise crossover slope, it is pretty easy: you just have to flatten the response before applying the crossover filter.

You can do that either using IIR filters or FIR filters.
My question is, can a multi-way speaker be corrected / compensated / EQ'd just like an individual driver?

I've read opinions that it's too difficult, or even pointless...
Yes, it is possible. In some cases you can fix on axis response with poorly designed crossovers, but it will not replace a proper engineering process done from scratch.

Just be aware that it won't fix directivity issues.
 
Yes, it is possible. In some cases you can fix on axis response with poorly designed crossovers
I was thinking, even with a good speaker I'm pretty happy with, just to make a slight baseline improvement before starting to play with the crossover aspect?

Also which do you think will give a better result, an actual crossover where the main-pair HPF and the bass unit pair LPF are done in one tuning

or doing both separately, maybe with different slopes? e.g. 24 dB/octave slope for the bass side LPF, and a 12 dB/octave slope for the FR HPF

Maybe even if the frequency points are set at slightly different points?

I recognise getting a smooth blend, and dealing with phase issues may be a greater challenge this way.

Thanks for your time
 
I personally think that the best method is to design the crossovers so that they match the theoretical slopes:
- you first EQ the responses in the crossover region so that the response becomes sufficiently flat
- then you apply LR or brick-wall crossover filters (same cutoff frequency and order for the LP and HP).

This is the most reliable way to obtain a perfect summation. Different slopes (e.g. 12 dB/octave vs. 12 dB/octave) induce different phase rotations with IIR filters, and it can be really tricky to sum everything properly. If the natural roll off of the driver does not match the missing 12dB slope on one side, you will spend a lot of time tweaking parameters.
 
LinFIR 1.3.2 is on its way.

It features new advanced analysis tools:
- An overlay plot to visualise off axis radiation behaviour
- A spectrogram using Morlet wavelets transform or STFT (Short Term Fourier Transform)

I am now fully committed to turntables implementation. I'm starting with the Audiomatica Medusa, and the Pololu USB Tic controller will follow.
 
I personally think that the best method is to design the crossovers so that they match the theoretical slopes:
- you first EQ the responses in the crossover region so that the response becomes sufficiently flat
- then you apply LR or brick-wall crossover filters (same cutoff frequency and order for the LP and HP).

This is the most reliable way to obtain a perfect summation. Different slopes (e.g. 12 dB/octave vs. 12 dB/octave) induce different phase rotations with IIR filters, and it can be really tricky to sum everything properly. If the natural roll off of the driver does not match the missing 12dB slope on one side, you will spend a lot of time tweaking parameters.
Is that ^^ even possible? Take a Butterworth HP 12dB/Oct and non matching Butterworth LP at 18dB/oct IIR filters and then tidy up the response dips in Xover region with FIR to get flat SPL and phase? Seems like that would take a few hundred tapss- or maybe a 1000 or so?
 
Is that ^^ even possible? Take a Butterworth HP 12dB/Oct and non matching Butterworth LP at 18dB/oct IIR filters and then tidy up the response dips in Xover region with FIR to get flat SPL and phase? Seems like that would take a few hundred tapss- or maybe a 1000 or so?
A lot more at bass frequencies than between tweeter and mid
 
I set up a system earlier this year using LinFIR, and results were good. I had phase linearized using a FIR filter on an AsciLab C6B and a sub.
But today I opened the LinFIR project again and it told me that LinFIR had updated to a new version of this month (can't figure how to see what version that is now).

But now it doesn't show phase being linearized anymore in the same project. Did something change?
Here is what it looks like with the FIR phase linearization disabled (showing only for "driver" 2, the C6B speaker (the sub not included, to simplify):
withOUT phase correction.JPG


This is now with the FIR correction enabled -- it looks not much different and not corrected (phase curve USED to be flat with the older LinFIR version):
with phase correction.JPG


Here are control forms for the filter settings on this:
FIR settings.jpg
driver settings.JPG


Am I doing something wrong now, or did LinFIR change so I need different settings? Previously I was using the LinFIR version as downloaded Feb 4 of this year.
(BTW, I wish programs wouldn't update without asking first!).

Thanks,
Bill Waslo
 
Just an interim question: as the program can write into Hypex DSP, would it also be able to extract these informations (HFD does not)?
 
I set up a system earlier this year using LinFIR, and results were good. I had phase linearized using a FIR filter on an AsciLab C6B and a sub.
But today I opened the LinFIR project again and it told me that LinFIR had updated to a new version of this month (can't figure how to see what version that is now).

But now it doesn't show phase being linearized anymore in the same project. Did something change?
Here is what it looks like with the FIR phase linearization disabled (showing only for "driver" 2, the C6B speaker (the sub not included, to simplify):
View attachment 528968

This is now with the FIR correction enabled -- it looks not much different and not corrected (phase curve USED to be flat with the older LinFIR version):
View attachment 528969

Here are control forms for the filter settings on this:
View attachment 528970 View attachment 528971

Am I doing something wrong now, or did LinFIR change so I need different settings? Previously I was using the LinFIR version as downloaded Feb 4 of this year.
(BTW, I wish programs wouldn't update without asking first!).

Thanks,
Bill Waslo
Hello,

Yes, there was some changes. The algorithm was modified to avoid introducing magnitude artifacts. You can restore the previous behaviour by increasing the « guard tolerance » value.

Sorry about the update, with Windows version I do not have control on the way updates are performed.
 
Just an interim question: as the program can write into Hypex DSP, would it also be able to extract these informations (HFD does not)?
LinFIR can write HFD project files but it can’t push them into Hypex’s hardware.

But it may change in the future, I can’t say more for the moment. :)
 
Hi Arnaud,

I've been playing with your latest release to create a bandpass driver/filter and have some observations.

a. My target hardware runs at 48kHz and 512 taps- so I have selected those values. I am surprised to get almost 70dB rejection at low frequencies on the LR24HP @400Hz cutoff without using any IIR filters. Does this seem correct to you? I have not had time yet to load and sweep my hardware with this filter loaded to verify by measurement, but in my Marani AEQ there is no way of getting this LF rejection with just 512 FIR taps.

b. I used the Global FIR to flatten phase down to around 400Hz, but then noticed that the time axis is showing the impulse before t=0. Since the controls are labelled as "delay" shouldn't the impulse appear to the right of T=0 origin? Strictly speaking a delay with a negative sign would indicate an advance in time.

c. Phase correction stops just after 10kHz, is this caused by an FIR tap limitation of 512 taps? or something else?

Best regards




Image 5-4-26 at 6.17 PM.jpeg
 
Hello,

Yes, this is correct. A length of 512 taps at 48 kHz is equivalent to 10.66 ms, or a frequency resolution of approximately 94 Hz. Since 400 Hz is well above this limit, the filter will be effective.

The Impulse Response (IR) of your Driver 1 appears before t=0; perhaps you used the delay compensation feature in the IR management window?

Phase correction does not stop at 10 kHz because of the tap count. What you are seeing is likely caused by the low-pass filter applied to your driver. When the magnitude is very low (close to zero), the phase becomes indeterminate.
 
Hi Arnaud,

I spent the day trying different FIR filters to equalize the magintude and pahse of a mid-frequency driver and wanted to share the best results that I obtained.

In all cases I measured the actual magnitude and gain of the FIR filters using a precise bode plotter to take out the FIR filter and electronics delays.

The goal was to equalize the driver response to follow a bandpass acoustic contour or LR24 HP and LR48 LP with flat pass band.

With the phase equalized to be zero degrees within the pass band.

I plotted the results of v7 after much optimization. The final results are the bolded black and turquoise traces. These represent the expected SPL and phase.

So far I am happy with the results. Notice the departure from the target on the HP side. I see this also with Marani AEQ and believe this is a number of taps limitation.

Anyway, I thought forum members might be interested in a real world application of your new software.

Comments, suggestions invited

SPkrLINFIRCORV7.jpg
 
Hi Arnaud,

I don't recall off hand the final value of Kaiser beta, but I’ll let you know _ I am planning a day this week to do final measurements on the loudspeaker - outside in my garden.

There are a couple of things that I think would be helpful in your software.

A. In the plot above, the black line is my acoustic target bandpass filter. Having this available when “tuning” the filter would help a lot, to tune the response to fit the target. As it is, the only way to get the precise filter response is by measurement.

B. An alternative to A, is having the means to export (jn tabular FR data) the filter responses. That would allow the user to export out to a plotter and compare against the acoustic target. But having this feature on all curves would actaully be a great feature to have for those, like myself that like to validate everything.

Best regards
 
Hello all!

LinFIR v1.3.3 is on its way. This update is focused on harmonic distorsion extraction and visualization. The individual impulse responses of harmonics are now visible in a new graph (shortcut J) as a quality diagnostic (IR peaks should be above noise level, etc.). This feature is available with a valid license.
I have also implemented time windowing to the distorsion IRs: it cleans up the noise contribution and room reflexions from distorsion data, giving a much better estimation of harmonic distorsion.

I have been busy with the study of non-linear behavior estimation of loudspeakers through the Rébillat/Novak method to hopefully predict how harmonic distortion can evolve with input filters, and this work will soon be published in a blog on my website.
 
Hi Arnaud,

I cant wait to give it a try. But I have a quick question about importing an impulse created by Farina's Exponential Sine Wave Sweep method, where, after processing, the non-linear impulses appear before the main impulse, requiring the window to be set after those impluses but before the main "linear" impluse. Should the user manaully intervene? by specifying the time delay from the start of the record to the point where the main impulse starts?
 
Hello Waveform,

The harmonic distortion extraction requires the knowledge of the exponential sine sweep parameters (sweep duration Ts, start frequency f1, and end frequency f2). Indeed, the harmonic impulse response of order k is located at Δtk=Ts⋅ln(k)/ln(f2/f1) ahead of the linear impulse response. Consequently, LinFIR cannot import "nonlinear" measurements performed with other software, as these parameters are unknown. Imported impulse responses must not contain harmonic IRs, only the linear part (h1) should be present in the file.

There is, however, an exception: IRs measured and exported directly with LinFIR can incorporate the nonlinear part, as they include metadata allowing the software to compute the exact position of the harmonic impulses.

When measuring with LinFIR, everything is computed and extracted automatically. With third-party software, however, things are a bit more complicated since LinFIR cannot guess the original sweep parameters. Furthermore, it depends on the sweep's phase definition: LinFIR uses Farina's definition, but other software may use Novak's definition, which results in different delays between each harmonic impulse.

I explored the idea of asking users to manually enter the sweep parameters, but I haven't found a reliable way to implement this yet, and it might be too complex for beginners. I have already noticed that many users are unaware that REW exports the complete deconvolved IR containing harmonic distortion impulses, which pollutes both the linear response and the time reference.
 
Back
Top Bottom