Getting latency down when working with FIR   3 comments

One of the challenges nowadays is getting latency down as much as possible (in my opinion).

You can get a frequency/phase flat system by using All-pass filters or FIR filters but both have a disadvantage: Latency. Frequency flat will not be much of a problem on latency but since phase is the conversion of time or distance related to a frequency expressed in degrees altering/correcting phase would cost time ie. latency.

Back in 2011 I attended a Meyer Sound level 2 System optimisation training where the instructor Mauricio MAGU Ramirez explained briefly how at that time in the analogue world it was possible to get a 2 way system phase flat by cascading 2nd order All-pass filters.

I did a number of Blog posts on this so you might want to check out the following links:

Link 1 older post and kinda of a long read

All-pass filter blog posts

FIR Blog Posts

Video’s on the Fulcrum Acoustic website

There’s probably more to be found at my blog or via Google…….

Back in 2011 I heard about a thing called FIR but also heard it being a “problem” on the Latency part and some systems I heard where FIR was part of the processing didn’t sound all that great (understatement).

It took me about 5 years to become interested in trying to write a FIR file after hearing and measuring the systems manufactured by Fulcrum Acoustic . At that time I became the Distributor for Fulcrum Acoustic for the Netherlands.

So in my opinion if you do the distributor job for a brand you should at least have an idea on how FIR works and how it’s implemented. To do the measurements is kind of tricky but in the end it comes down to the same thing as doing system tuning with “old school” digital processing using IIR type processing but with a lot of extra possibilities and “pitfalls/traps”.

The following “report” on getting latency down has been done on 1 mic position which is the biggest “pitfall/trap” of them all. To assume a 2 way system behaves the same on every other mic position possible next to the 1 mic position you use is asking for problems. So I see this as a starting point to figure out on how to bring latency down not on how to get a preset for the loudspeaker in need of “a little help”.

The speaker I used for this is a 7Sound HRX134 provided by the manufacturer to try different ideas on. The measurements are done with Smaart V8 and the mic I used was a ISEMcon EMX7150 out of a matched octa set. The software used for writing the FIR coefficients would be FIR Designer M a soft i really like working with since it behaves like Smaart with inverted Phase and Magnitude windows and normal views for seeing the predicted respons based on the measurements you perform. Processing was done by the Powersoft X8dante i have available for demo’s and testing.

Getting a NO LATENCY FIR File

After seeing a online video by Fellow Instructor Nathan Lively – Sound Design Live (Link to video (i think) let me know if it’s ok Nathan to share this – if not i’ll remove it again) it got me to try a trick shown by MAGU on the 2011 Sys op. 2 seminar at Mallorca.


Synchronise Smaart V8 on the 2 way system +0.25ms delay added. After synchronising Smaart set the 0.25ms delay added back to 0ms of delay. This causes the phase trace to show a up-worth angle increasing to the right side of the screen on both the low and high drivers. Capture trace in Smaart and load the captured data in to FIR Designer M. Push the phase trace back down via minimal phase 2nd order All-pass filters and correct the magnitude respons via minimal phase EQ filters. Even if possible implement a 4rd order Linkwitz-Riley high and low pass x-over filter combination at 1000Hz in the FIR coefficients.

Here are the screenshot from the Smaart data:

Sum High and Low driver no processing applied.001 sum high low no processing

High driver solo no processing.002 high start no processing

Low driver no processing.003 low up 6db no processing

High driver -0.25ms delayhigh driver -0.25ms

Low driver -0.25ms delaylow driver -0.25ms +6db

You might think “Hold on -0.25ms delay IMPOSSIBLE!!!!”. Well it’s possible. Remember i implemented 0.25ms of delay on both drivers before synchronising Smaart. If i set delay back to 0ms after synchronising both drivers are early compared to the reference point Smaart found with delay added. Also the low driver showed an up-ward angle on the phase trace at the start so it was already early from 200Hz going to the right side of the screen.

Now the data is ready for loading in to FIR Designer M.

First thing I did was to set the export FIR file to have a delay of 0.3125ms (15 samples at 48kHz sample rate) on both the high and low driver.

After that implement EQ on the high driver and include a 4rd order Linkwitz-Riley high pass filter at 1000Hz (all filters are set to minimal phase).

High Driver: EQ + LR 4rd high pass

And the same on the low driver.

Low Driver: EQ + LR 4rd order low pass

Now both driver are sort of eq’ed start with finding the frequency points for the “phase correction”.

First the high driver

setting frequency points for the 2nd order minimal phase all-pass filters

After implementing the 2nd order all-pass filters at the correct frequency points play around with the band-width/Q factor to get a +/- flat phase respons in the bottom window

A bunch of minimal phase filters + 2 max phase all-pass filters

Always verify if the predicted respons matches with the actual respons via measurements.

004 high FIR needs a high shelf
High driver FIR loaded. Needs a high shelf eq (d*mn more work 😉 )

Repeat the procedure on the Low driver

Low driver frequency points for minimal phase 2nd order all pass filters

After implementing the 2nd order all-pass filters at the correct frequency points play around with the band-width/Q factor to get a +/- flat phase respons in the bottom window

play around with Bandwidth/Q

And verify if the predicted respons matches with the actual respons via measurements.

005 low FIR needs a high pass
Low driver FIR coefficients implemented

After all’s been done combine respons within FIR designer M to see if both driver combine ok especially in the crossover.

bottom screen show the sum of both the high and low driver summed together

Verify response via measurements

006 result after processing 0.56ms latency
Sum High and low driver

I did add a high pass filter to prevent the low driver from damage and a high shelf EQ on the high driver to get a little flatter in the high end.

Hope this helps a bit

Enjoy 😉

3 Reacties op “Getting latency down when working with FIR

Schrijf je in op reacties met RSS.

  1. Mad science!
    So is the idea here that if the native phase measurement would slope down, then if you add delay to the delay locator in Smaart, it will slope up? And then you can use minimum phase filters instead of linear/mixed phased filters that would require a pre-delay?

    • No. I synchronise smaart on both drivers with a 0.25ms added via the Powersoft processing. After synchronising i’ll set that day to 0ms and as a result the phase trace in smaart will go up indicating the frequencies where the phase goes up are early to the reference point in Smaart. After that i implement 2nd order all pass filters to get those frequencies back to around 0º so all frequencies are at the synchronisation point again. Since you have bandwidth as a control you have control over where the phase will settle

  2. Pingback: A LITTLE FOLLOW-UP | Timo's World all around the globe

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen. logo

Je reageert onder je account. Log uit /  Bijwerken )

Google photo

Je reageert onder je Google account. Log uit /  Bijwerken )


Je reageert onder je Twitter account. Log uit /  Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit /  Bijwerken )

Verbinden met %s

%d bloggers liken dit: