FIR Designer

Mark Wilkinson

Sophomore
Feb 24, 2015
243
13
18
Hi Michael, I thought maybe it would be a good idea to start a new thread more specifically for FIR Designer, since the FIR Filter thread seems more intended for FIR in general.
Hope you agree :) Thx for help in getting going with your program.

Now that I understand the workflow, I'm finding it to be fast and easy to build filters. I've built filters for the 3 sections of Peter's DIY60 driver-by-driver, and have loaded them into miniDSP....all is working great.
Surprisingly, and happily, I'm hearing even more detail and clarity than with previous rePhase filters.
Percussive transients and backing vocals in recordings are really ear-opening. I haven't been able to measure the DIY60 with the FIR Designer filters, but I expect the same ruler flat measurements I've been getting with rePhase.
Which is interesting... it shows me ruler flat magnitude phase and phase don't tell the whole story. My guess is that ruler flat, particularly for phase, is more a function of smoothing and time averaging, than would like to admit. 1/6 octave smoothing may not be cutting it. I'm going to zoom in and try to figure it out because the transient detail increase with FIR D is real.

As you know, I'm using maximal taps with 64ms latency right now. Will start chopping and hope to get to 20ms. Other than watching corrected outputs along with Total Error, are there any other things that show sonic deterioration with increased tap reduction? Listening and measuring rule, but it's nice to be able to predict sonic results from within the program screens.. Oh, how do you look for pre-ringing?

One usage question....under the Target tab, with the File button selected and a target file loaded.....
Is there a way to also overlay the upper section's Target Design shelving filters on top of the loaded target file?
I've been going back to Direct Design and adding the shelving filters to the crossover filter targets....spreading shelving across the spectrum by adding them in driver-by-driver is a pain lol...but not that big a deal either if going back to Target Design works best.

Thanks again Michael !
 
Hi Mark,

Those results sound great. Thanks for letting me know.

One usage question....under the Target tab, with the File button selected and a target file loaded..... Is there a way to also overlay the upper section's Target Design shelving filters on top of the loaded target file?

Good point. Right now there isn't, but I can see why it would be useful, in that the Target slopes and knee points can be an easier way of specifying a target shape than playing with shelf filters (in Direct Design mode). I'll see what I can do... :)

are there any other things that show sonic deterioration with increased tap reduction?

Not that I'm aware of. Increasing difference or error between the ideal and windowed filter at low frequencies is really all that happens when shortening the filter length.

Generally speaking, our hearing is slightly less sensitive to spectral dips than it is to boosts. So as you shorten the filter, you could watch the error and lean towards filters where the magnitude error, on the Total Error plots, is slightly higher than 0 dB (that is, the windowed filter is a little lower than the ideal, unwindowed filter on the Export tab.)

I'd also suggest avoiding sharp transitions in mag or phase filtering at low frequencies. They'll get smoothed out by the windowing anyway.

And, since we're talking about low frequencies - say below 100 or 200 Hz - you could try to see which of the tabs is causing the majority of the differences at the lowest frequency in your project, and see if you can make its lowest frequency a little higher.

Oh, how do you look for pre-ringing?

Pre-ringing's an interesting topic. The filters you're creating to flatten the phase do have a maximum phase component - i.e. there are filter coefficients before the filter peak - but since the filter is designed to be the opposite of the speakers natural response, the combined loudspeaker response shouldn't have obvious pre-ringing. This assumes that the loudspeaker's natural response doesn't change too much with level and over time. To see how the speaker's response might vary, you could look at the speaker's filtered response at different drive levels using waterfall and similar tools and there may be some slightly pre-ringing visible. (There was a discussion on the other FIR thread about some of these tools.) You could also try averaging a bunch of measurements at different drive levels, and use the average as input to FIR Designer.

I'd be surprised if any pre-ringing audible. I've used linear-phase brick-wall crossovers in the Lake Processors, without any consideration for the natural phase of the loudspeaker drivers, and I've never heard any problems. Maybe others have? With linear-phase brick-wall crossovers, things like steep steps in dispersion pattern off-axis are usually more audible.

Back to your DIY60... That's great you're getting such good results with FIDd. Keep me posted on what you find re FIRd and rePhase.

Cheers,
Michael
 
Last edited:
  • Like
Reactions: David Sturzenbecher
Now that I understand the workflow, I'm finding it to be fast and easy to build filters. I've built filters for the 3 sections of Peter's DIY60 driver-by-driver,/QUOTE]

Hi Mark,
Thanks for starting this thread, I just downloaded the demo and am finding my way around. Your results look really good.
I have a question, I understand that the Lake processors can't import the export of FIRd directly. Is there a way to import them manually? I'm not sure what format they are in after export.
I'm still pretty new to this so if I ask dumb stuff have mercy.

Thanks,
Don
 
Thx Michael, very helpful as always. if the wind stays down, I may get to make some measurements today...

Hi Don, I know very little about Lake processors other than their manual makes my head swim ! It looks to me like they are set up to automatically generate linear phase crossovers, but that's it when it comes to FIR implimentation. That may be fine really, because it seems drivers' natural response needs to be corrected with minimum phase anyway.
But here, I kinda feel like an observer talking about how the Ark was built, when we have two Noah's in the crowd...ie Michael and Peter :)

MiniDSP accepts *.bin files for FIR import, I get the feeling that's pretty common for FIR enabled processors.
 
Mark as a goof and dont know if you had mentioned it before but which MiniDSP do you use?

Hi Jason, yeah it is a bit of a goof...but it is one of the best learning tools I've bought in a long time....well, that is in combination with FIR Design and/or rePhase ....

For the DIY60 I'm using the OpenDRC DA-8, a 2x8 unit, with 9400 total taps at 48khz that can be allocated across the 8 outs, 2048 taps (= 21ms latency) max per output channel .
It is a bit of a pain to interface, because its input is SPDIF coaxial, and its 8 outputs are RCA. I feed its outputs into a x32 rack, and get its input from a Hosa AES to SPDIF converter (if you do this, make sure and get coax and not optical converter)
Put it and and the x-32 rack together and this combo is not so much of a goof ! Michael tells me Powersoft K series only have 384 taps per channel. For under $1500 I haven't seen how to get even close the combo's performance and flexibility.

For sub duty, I'm using the OpenDRC -DA, a 2x2, with 6144 taps per channel. For live sound this has to be goof...64ms latency.
But talk about seamless transition from subs to mains......
 
Hi Everyone,

Mark raised some great questions with me via email which has resulted in today's release - Version 1.6.
https://eclipseaudio.com.au/fir-designer/release-notes/

It's now possible to export filters from Direct Design mode to a new FIR Designer Target file format, which can then be imported as the target file in the regular workflow. This is useful for experimentation without a license key.

In the Target tab, “Target Design” and “Target File” responses can now be used together. On the Target tab, selecting “Design + File” will combine the magnitude spectrums of both. This is useful for specifying crossovers in a Target File and using the Target Design to set the overall system response curve.

Also, there's now an IIR filters tab. Shock horror!! If you need to use regular IIR high-pass or low-pass filters inline with a FIR filter, those IIR filters can be entered. They are applied to the speaker measurement, and the FIR filter can then be designed with knowledge of what the IIR filters are doing, especially to the loudspeaker phase. These IIR's can be useful for things like subwoofer HP filters or just DC blocking filters.

Regards,
Michael
 
Most Excellent Michael,

The "Design + File" in the Target tab makes putting shelving filters that span multiple band-passes very easy..THX !

The addition of IIR filters, that are not part of the FIR generation, is really going to help with not having to use some additional processing for sub and mid high-pass filters, when either taps aren't available, or if they are, using them takes latency too high.

I mentioned in email, that I found out the increased transient definition I was hearing FIRd vs rePhase, ended up being (embarrassingly) nothing more than level differences between the MF section, and the HF/VHF drivers.
Could you quickly explain how the Normalize buttons work in the Import and Target tabs? I'm pretty sure my inconsistency in their use across driver sections caused the level differences.....

And of course i have another humble request..... sorry :)

After generating a FIR file and then measuring the speaker's response with Smaart, I try to clean up any measured deviations.
So it means I need to either use another source of IIR eq that introduces phase shift, or to put that same eq that cleans response up, into the FIR generation stream.
What might be a neat way of doing this, could be the ability to overlay filter adjustments post measurement, like in Direct Design, that become part of Target curve. This would then include the adjustments in the FIR generation.
I know I can start the whole process over by beginning with a target curve generation that includes needed adjustments, but that's a pretty lengthy process......when all I really want to do is add a few band-pass eqs inside the FIR...then regenerate, and go quickly measure again...
Hope I made sense here...

As always, many thanks !
 
Hi Mark,

Could you quickly explain how the Normalize buttons work in the Import and Target tabs? I'm pretty sure my inconsistency in their use across driver sections caused the level differences.

The "Normalise" check box, when checked, scales or shifts the magnitude of the measurement so that the highest point in the spectrum is at 0 dB. The aim is to bring the measurement in range, if it's too high or too low (as I've found happens often, at least in my setup). However as you've found, when measuring multiple drivers, Normalise will cause each measurement to be scaled differently, which can result in different levels between each FIR filter design.

From your feedback, I'll add an import option to manually set the input gain scaling. That way you can use the same gain for each driver design, and still bring all the measurements in range (if they are too high or too low). Give me a few days! :)

The addition of IIR filters, that are not part of the FIR generation, is really going to help with not having to use some additional processing for sub and mid high-pass filters, when either taps aren't available, or if they are, using them takes latency too high.

Thanks. Yep, that's the intent. I'm slowly coming to the conclusion that my ideal EQ processing chain (per channel) is a bank of, say, 4 to 8 biquads for IIR filters, followed by 2000 to 4000 taps of FIR, plus maybe a delay line. Hopefully some speaker processor hardware folks are watching. :)

And of course i have another humble request..... sorry :)
After generating a FIR file and then measuring the speaker's response with Smaart, I try to clean up any measured deviations.
So it means I need to either use another source of IIR eq that introduces phase shift, or to put that same eq that cleans response up, into the FIR generation stream.
What might be a neat way of doing this, could be the ability to overlay filter adjustments post measurement, like in Direct Design, that become part of Target curve. This would then include the adjustments in the FIR generation.
I know I can start the whole process over by beginning with a target curve generation that includes needed adjustments, but that's a pretty lengthy process......when all I really want to do is add a few band-pass eqs inside the FIR...then regenerate, and go quickly measure again...
Hope I made sense here...

Yes, that makes sense. I need to think over this some more. In the meantime - and you maybe be doing this already - you can save your target designs as project files (just like for the regular workflow) and quickly create a new target by modifying a previous project.

Thanks!
Michael
 
Last edited:
Hi Everyone,

FIR Designer version 1.10 is now available for both OsX and Windows.

It has a raft of updates including changes to time-sample importing (*.txt, *.wav & *.csv files) to maintain time-alignment when designing filters for multi-way loudspeakers and to allow for using a linear-phase FIR filter as a target.

It also has a new Measurement Averaging tab that can load a directory of measurements and average using one of 4 different methods. One measurement can be selected as a Reference and all other measurements are time/phase aligned to the Reference. There are controls for level normalisation, fine time adjustment and averaging weights.

More details can be found at the Release Notes page.
https://eclipseaudio.com.au/fir-designer/release-notes/

Kind regards,
Michael


 
Hi Art,

I'm not sure. I only have access to V7 and V8. I'm told the trace file format has been stable for sometime. FIR Designer can do everything in demo mode except for FIR export, so feel free to download a copy and try importing a trace. If it doesn't work, email me the file and I'll take a look. And, freq/mag/phase text exports from SMAART can be loaded anyway.

Kind regards,
Michael



Michael,

Cool, good news !

Will it work with SMAART V6.1 ?

Art

 
Hi Art,

I'm not sure. I only have access to V7 and V8. I'm told the trace file format has been stable for sometime. FIR Designer can do everything in demo mode except for FIR export, so feel free to download a copy and try importing a trace. If it doesn't work, email me the file and I'll take a look. And, freq/mag/phase text exports from SMAART can be loaded anyway.

Kind regards,
Michael
Michael,

Will try it out sometime in the future, still sorting things out after moving from Madrid, New Mexico, to DeLand Florida. Kind of like moving from a shack outside Alice Springs to Melbourne :^) .
Fun to "start over" in a new place after 20 years in an environment built up over that time. I don't miss having to maintain four separate buildings, though the rental we're in already has had 60 hours worth of "issues".

Will have several new designs (and several old designs...) to try FIR Designer on coming up, including the "SynTripP Too", a two-way, two-part, two cabinet, latch together, infinitely adjustable angle virtual point source center fill/lip fill/stage monitor 25 x 25 degree cabinet using a 3.5" "full range" driver and 8" woofer.

A pair of SynTripP Too cabinets can be put on the same pole as your main speaker after it is erected, providing a tight 45 x 25 degree center fill coverage, ideal for center fill below your 90 (or 60) degree DIY cabinets. A pair per side should get loud (and clean) enough to get over the stage noise of a typical pop back line and monitor wash.

Back to the carport/shop, still putting labels on tool pegboards a month and a half after the move...

Cheers,
Art


 
I've been having some discussions with Michael about his software via email, and he has been very helpful. He suggested bringing some of the discussion into a public forum so others can participate.

So one of the points of discussion with Michael was about using Complex or Power based magnitude averaging for smoothing imported traces. I am used to using power based averaging when using smaart to tune a system in situ. I am curious to hear from anyone who thinks complex averaging may be better suited to the needs task of FIR filter design. I am used to looking at power based averages, and when using complex averages and broad bandwidth averages Ive been able to generate so initially counter intuitive results (where a big dip in the mag response appears where there is no dip at a higher resolution).

I'd also been to hear from Michael about the 'use coherence' function. I assume this uses the coherence value to weight each data point in the smoothing. However, you know what they say about assumptions...

Best,

Phillip
 
Hi Phillip,

A number of smoothing/averaging functions in FIR Designer have the option to "Use coherence." Coherence (usually plotted as a function of frequency) is a measure of how reliable each frequency component is, on a scale of 0.0 to 1.0.

When "Use coherence" is checked, the smoothing/averaging process considers frequency values with a higher coherence score to be more important than frequency components with a low coherence score, and so the smoothed/averaged result will tend closer to the values with high coherence.

Mathematically, rather than taking a simple average (i.e. summing values and dividing by the number of values), using coherence involves multiplying each frequency component by its coherence value, summing them all up, then dividing by the sum of the coherence scores themselves: essentially weighted averaging.

Coherence appears in SMAART trace (TRF) files and SysTune overlay (STO) files.

Kind regards,
Michael