• 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

Hi Mark,

Glad the phase traces are working well for you!

I understand what you're asking, but adding HP/LP to target curves would actually complicate things without really adding value. Let me explain the logic.

The goal of magnitude correction (FIR magnitude correction or auto EQ) is to smooth the driver's response within its passband and around the crossover region. When you then apply your HP/LP crossover filters afterwards, the result naturally approaches the theoretical crossover shape you want.

If you tried to build the HP/LP shape into the target curve first, you'd be "pre-correcting" for filters that aren't applied yet. Then when you actually apply those filters, things get confusing, you're basically correcting twice for the same thing.

That said, you can already achieve what you want with auto EQ Just add your HP/LP filters in the auto EQ tab and lock them using the padlock icon. Once locked, auto EQ treats those filters as part of the target. Or more precisely, it smooths the response without any filter, and when the LP/HP is applied, it approaches its theoretical response. This gives you exactly the result you're looking for.

So the feature essentially exists already, just through the locking mechanism rather than target curve specification.

Does that make sense, or am I misunderstanding what you're trying to achieve?

Best, Arnaud
 
Hey @Arnwald !

I’m considering using LinFIR to do a linear phase crossover on a MacMini running CamillaDSP.

I am curious, I watched your 4 way speaker how-to video. Does the IIR step get converted to FIR at output so the final dsp uses only FIR filtering? Is the IIR step just to allow easier visualization of broad Q corrections or does it actually work as layered IIR+FIR filtering?

Also, can you explain in more detail why it appeared you used IIR on the tweeter only?
 
Thanks Arnuad, for a generous & instructive reply.

I understand the logic you explained, how it would be a double application of the HP/LP to both target them, and include them in the filter list for auto-IIR.

The task I'm trying to find the easy and correct way to do, is how do I end up with an acoustic band pass with HP/LP that match the crossovers I've chosen.
For example, for a mid driver section, I want to end up with acoustic response of a LR24 HP at 300Hz and a LR24 LP at 900Hz.
Want to end up with an acoustic mag response like this: This is my acoustic target.
1769354021011.png

I can play with differnet HP/LP to massage the driver's rolloffs towards that curve, and then add PEQ's to further massage the response to a smoother fit to curve.
The auto-IIR is what I'm hoping will at least do the PEQ stage, and if possible the HP/LP fitting as well.

I've been playing with putting the electrical HP & LP in place, that I want to be the passband's acoustic response target. Like above, put in a LR24 @300Hz HP and LR24 @750Hz LP.
I take take the driver's measurement with those in place, and then want to be able to auto-IIR to match the response of that measurement, to the target as defined by the electrical HP/LP.

Here's a measurement of the mid section with those filters in place.

1769356937727.png


Here's that HP/LP measurement placed on top the HP/LP target, to show the acoustic variance from target. Not bad really, could easily just manually correct...probably should lol.
1769357413284.png



My thoughts though are, if I can use auto-iir to match measurements to target, that makes for an easy way to use IIR and have good acoustic target matching.
Just trying to figure how to do IIR target matching; the same way target matching is so dang easy to do with FIR. lol

Hope that all made sense....pls feel free to tell me if you think I'm barking up a tree.
(Here's where I got so far with the idea with another IIR target matcher...you know the one....)
1769359022303.png


Anyway,
 
Isn't it just linearising the driver through the stopband attenuation range, not just the passband, then add whatever filter you like on top?
 
I've been playing with the app some more too. I discovered the problem with my IR's from my last post here - after replacing my aging 2ch mic pre I was still having problems with timing which turned out to be a faulty loopback cable. :facepalm: I was also exporting mono .wav when my handwritten CFG needed stereo, problems solved. :facepalm:

I'll try the method explained in post 61 but I've been struggling to get good bandpass filters as well. From my experience so far IIR filters are not baked into the IR but exported as biquads or a comma delineated PEQ txt file which would have to be added somehow to the exported WAV files.

@Arnwald how much information is exported with the IRs? Is the magnitude adjustment part of the export? I keep getting mismatched magnitude which defeats any HP/LP sums. It's fun to play with the software, I appreciate your steady flow of improvements and your documentation is very good.
 
Isn't it just linearising the driver through the stopband attenuation range, not just the passband, then add whatever filter you like on top?
Do you mean fully flattening drivers response well into out-of-band? Is that what mean by 'stopband'? Which I guess would make passband between crossover points?
I guess I tend to be sloppy, use one term, and call passband the range I want good critical summation .....say thru at least 24-30 dB down.

For a while, when first learning to use rePhase, a saw POS talk about flattening driver response way out of bounds, ignoring the whacked out gain...because once we apply appropriate linear-phase high pass and low pass gain would be negated back into operable territory. I've adopted that idea as the cornerstone method for creating passbands to have the desired acoustic target I'm after.

Only thing is...i see no need to do the flattening first, then add crossovers...when we have good targeting matching software. It does the same thing without the work, yes?

For FIR, I have three nice auto-target matchers I feel competent with (counting LinFIR).
Auto-IIR is a learning in progress......

(btw, the inspiration for wanting to delve deeper into IIR here, is playing with delay subtracted crossovers...like I know you've done. And then easily EQ the driver's response with the xovers in place)
 
Do you mean fully flattening drivers response well into out-of-band? Is that what mean by 'stopband'? Which I guess would make passband between crossover points?
I mean like this when I say stopband attenuation

1769367311406.png


I guess it's maybe like an octave or so either side though that depends how steep your filter is
 
guess it's maybe like an octave or so either side though that depends how steep your filter is

Gotcha. Makes sense, and looks like the common LR24 fits that pretty close.
So I guess you call the passband being between xover points.
I probably use those defs too, for ease of communication. thx
 
POS talk about flattening driver response way out of bounds, ignoring the whacked out gain...because once we apply appropriate linear-phase high pass and low pass gain would be negated back into operable territory. I've adopted that idea as the cornerstone method for creating passbands to have the desired acoustic target I'm after.

This has been my method as well - we both must have absorbed that nugget from POS years ago. LinFir has some very nice features I'd like to figure out more but hard to deviate from years of REW and rePhase routines....
 
Only thing is...i see no need to do the flattening first, then add crossovers...when we have good targeting matching software. It does the same thing without the work, yes?
It seems like the same work to me if it's done automatically though to my mind it's conceptually simpler/more obvious to think in terms of flat response then add a pass filter on top ( which is probably a function of how I approach passive xo design and how acourate works which also separates those two steps)
 
This has been my method as well - we both must have absorbed that nugget from POS years ago. LinFir has some very nice features I'd like to figure out more but hard to deviate from years of REW and rePhase routines....

Yep , I remember how elegant the POS method appeared, how it opened my mellon up to see how electrical filters and acoustic response fit together.
I hear your regarding changing from known routines. I've gone thru rePhase and REW, to Smaart and FirDesigner, to Crosslite+, and now working on adding LinFIR to the stable.
I like to use them all, as I learn from how they do things either the same, or a little differently.

It seems like the same work to me if it's done automatically though to my mind it's conceptually simpler/more obvious to think in terms of flat response then add a pass filter on top ( which is probably a function of how I approach passive xo design and how acourate works which also separates those two steps)
Yep me too,.... as was saying to DWPress,... the flatten first, then add filters technique....helps me clearly visualize how to achieve acoustically complementary crossovers with smooth response through stopbands.

I guess after validating that the auto-target matchers give the same results, I've become addicted to their ease.
 
Hi everyone,

Apologies for the silence over the past days, I've been swamped with my day job and haven't had much time for support here. Catching up on messages now!

Thanks for your patience.

@gnarly
LinFIR is designed to create crossovers from raw driver measurements (no DSP or passive filters applied). The main idea is to design the complete signal processing chain offline, without the old-school approach of measuring after every filter change.

If measurements are done properly (quasi-anechoic, carefully windowed to eliminate reflections without losing bass information), LinFIR predicts the final result quite accurately. Any deviations you see are usually caused by room reflections, standing waves, or driver non-linearities (port/cabinet compression, etc.).

Taking into account filters that were already applied during measurement would make the equalization target process confusing, you'd be correcting for something that's already there.

@DWPress
There are three different IR exports in LinFIR, depending on what you're trying to do:
- Raw measured driver IRs (from IR Management window): These are exported exactly as measured, with no processing or windowing applied.
- Summed driver IR (File → Export): This is the theoretical prediction of the complete system response - all drivers summed with the entire signal processing chain (FIR filters, IIR filters, delays, gains, etc.).
- FIR filter coefficients (individual filter export): Only the FIR filter coefficients themselves are exported (what you see in the FIR tab graphs). These don't include IIR filters since those are a different filtering process.

Arnaud
 
I'm releasing LinFIR v1.2.13

This release focuses on workflow improvements and fixes several issues reported by users.

What's new:

I've added batch import for measurements: you can now select multiple IR files at once, and LinFIR will automatically parse angle information from filenames. This makes setting up multi-angle measurements much faster.

The driver control interface has been reorganized with clearer section labels. Instead of the ambiguous "Visualization Controls" label, you'll now see "Driver Adjustments" with proper colored headers for FIR Filters, IIR Filters, and Driver Adjustments sections. This should make it clearer what each control does, particularly the distinction between signal processing filters and gain/delay/polarity adjustments.

For advanced users, there's a new setting to show/hide manual FIR delay compensation controls. This is hidden by default now to prevent accidental filter misalignment (a common source of confusion). You can enable it in Settings → General → Filter Processing if you know what you're doing. When disabled, all FIR compensation delays are forced to 0.

Bug fixes:

Fixed the undo behavior when dragging FIR correction frequency range sliders, it no longer creates a separate undo entry for every tiny increment. The off-axis sum calculation now correctly handles cases where some drivers don't have measurements at specific angles (previously it would incorrectly fall back to 0° measurement). The directivity sonogram also got improvements: normalization now excludes artifacts near Nyquist frequency, and the default view is capped at 24 kHz for cleaner visualization.

Important note about distortion measurements:

I've redesigned how distortion data is stored internally to improve performance and reduce project file size. Unfortunately, this means projects with distortion measurements from versions before 1.2.13 are not compatible. If you have projects with distortion data, you'll need to re-measure to capture it with the new structure. This was a necessary trade-off for better performance and lighter project files going forward.

Everything else in old projects continues to work normally, this only affects distortion measurements.

Download: https://linfir.demaudio.com

As always, feedback and bug reports welcome!

Arnaud
 
Arnaud, any chance of creating crossover slopes similar to the "UB" series in Acourate with LinFir? An option to do a polynomial or other function based curve but letting the user specify the coefficients could avoid any actual toe stepping. :p
 
Arnaud, any chance of creating crossover slopes similar to the "UB" series in Acourate with LinFir? An option to do a polynomial or other function based curve but letting the user specify the coefficients could avoid any actual toe stepping. :p
I need to take a look... Do you have any link so that I can check that? Thanks!
 
Arnaud, I stand in awe of all the work you’ve put into the software — the rapid release of updates and the excellent documentation are truly impressive.

Would it require much additional effort to compile an Intel-silicon macOS version?

Greetings from across the Alps
ElEsido
 
Back
Top Bottom