• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. 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!

Best way to apply a time correction (FIR) to a 2.1 system

ErLan

Member
Joined
May 16, 2023
Messages
53
Likes
27
Hello,

I am trying to figure out the 'right' way to apply phase correction of a 2.1 system.

Some details on current pipeline:
> I use my PC as the hub for streaming & DSP. The signal outputs to a 2.1 system via a 6 channel soundcard where each if the channels may be controlled saparately.
> DSP is done via. EQAPO,
> DSP includes:
(a) Generation of LFE as sum of 0.5*(Rt+Lt), (b) Tuning of Lt, Rt, LFE, delay & gain (c) Bass management of Rt & Lt channel to LFE (XO80; LR4); (d) Remove room modes peaks of Lt+LFE and Rt+LFE. Using IIR filters (REW + nanual).

The outcome frequency response is good, yet not optimal from time (Impulse, Step characteristics) characteristics.

I thought to apply FIR to correct frequency and phase, but - as I am are dealing with a single Sub - it is not clear to on what combination should this be applied, my current 'options' include: (a) Lt+LFE, Rt+LFE, (b) Lt+Rt+LFE together (system), or (c) Lt, Rt, LFE saparately?

Any recommendations or exchange of experiences (good or bad) will be much appreciated!
 
I thought to apply FIR to correct frequency and phase, but - as I am are dealing with a single Sub - it is not clear to on what combination should this be applied, my current 'options' include: (a) Lt+LFE, Rt+LFE, (b) Lt+Rt+LFE together (system), or (c) Lt, Rt, LFE saparately?

I presume the LFE out is your sub out...

I am trying to figure out the 'right' way to apply phase correction of a 2.1 system.

I dunno about the "right way", to be honest.

You could do an "after the fact" global inversion after the whole system has been already summed (HF+MW+SUB), but I kind of prefer applying filters in stages so individual channels are adjusted first -- also verify any major EQ corrections done > 100Hz by re-measuring again (e.g. subs) -- then thereafter apply more global adjustments to the summed result as desired.

But when it comes to inverting the phase/GD though... eh, it's iffy and very speaker-room dependent -- IOW, your results may vary. It's easy to cause artifacts and/or excessive "corrections".

I can show measurements to give you an idea of what I've re-done for the umpteenth time via rePhase, REW, and JRiver -- but, I'm not sure if it will be useful as these are just my own in-room MCH desk setup measurements.

The thing I've been trying to experiment with for now is how to limit or most effectively/cleanly truncate the stuff above 200 Hz from my own sealed subwoofer -- as well as reduce or optimize the size and length of the filters. See: "v2" measurement

It may be even more difficult/impossible to completely remove with some ported sub systems... I found your uploaded sub response from before, and, let's just say it's way, way harder to "fix" with just EQ compared to the sub in my room.

edit: I reduced the delay of the sub FIR filter from ~1.3s to ~151ms by playing around the IR window settings and exporting using 16k sample.
 
Last edited:
Thanks @ernestcarl for the insightful feedback (as always :))

I reviewed your data, True, the time response is MUCH less hectic than mine in the non-EQ phase, are you using physical treatment or similar to get such a 'clean' baseline?

To your recommendations,
I piloted both 'whole system' vs 'each component' and got similar conclusion as you: tuning each component first and moving to whole system tweaks seems more appealing overall, especially when coming to compensate for phase a symmetries between components (like, e.g.: for FR+Sub I managed to fix a 'hole' caused by opposite phases in the crossover region).
w.r..t that, what does your experience show on FIR-ing the Sub (and low end frequencies in general)?
per recommendations I read on-line, going below 100Hz introduces notable pre-ringing, which means that when crossing over 80Hz reduces the ability to compensate for the sub to marginal to none.
BTW, when gently applied FIR below 100Hz I did not hear any notable distortion but I suspect that I did not noticed that as this frequency range is messed up in the first place, which makes it hard to differentiate between room & EQ errors. (just a thought)
 
edit: I reduced the delay of the sub FIR filter from ~1.3s to ~151ms by playing around the IR window settings and exporting using 16k sample.

Actually, it was 322ms -- my mistake -- that one exhibited some rippling if zoomed-in closer.

Adjusting the IR left window in REW is the same as specifying the amount of ms centering delay in rePhase. While one doesn't get the ability to pick the type of windowing (e.g. hann, cosine) there is some other extra windowing options.

1724751907706.png 1724751915293.png

are you using physical treatment or similar to get such a 'clean' baseline?

There's some acoustic absorbers in my basement listening room (rockwool and 4-inch wedge foams). But, much of the bass decay is absorbed or dampened by the drywall all around (insulation behind walls too) of the room and the much larger surrounding structures. The room is somewhat larger than it seems given the lossy walls -- sub bass frequencies easily pass through.

Nevertheless, positioning makes a big difference. And, maybe to some extent, the fact that the sub I'm using (Rythmik F12) is a sealed design with known low GD -- also depends on amp settings. My other speakers -- other than the KH120s -- are modded by me to have more damping than originally built.

what does your experience show on FIR-ing the Sub (and low end frequencies in general)?

Well, there's a very subtle difference that when done "right" where it can slightly improve tightness/impact in the bass. The magnitude response needs to be forced to be identical though, which is not the case in this one example I uploaded. It's important to note the vast majority of typical domestic rooms do not produce close to "minimum phase" looking IRs (having looked at a lot of heavily room-mangled measurements out there). If I didn't have the ability to use FIRs in my 7.1 MCH setup, I would have been forced to apply all-pass filters and relatively steep xo high-pass filters to match the phases of all 8 speakers. The sound to me is worse when one is forced to increase GD just to get a better phase match between differing set of speakers.

I read on-line, going below 100Hz introduces notable pre-ringing, which means that when crossing over 80Hz reduces the ability to compensate for the sub to marginal to none.
BTW, when gently applied FIR below 100Hz I did not hear any notable distortion but I suspect that I did not noticed that as this frequency range is messed up in the first place, which makes it hard to differentiate between room & EQ errors. (just a thought)

As I said, it can be iffy. But, I'm also not exactly sure what you mean.

FIR filters can independently adjust the phase from the magnitude response so the effect will be variable depending on what's exactly being done by those filters.

When pushed harder, the sub does eventually lose some linearity and will exhibit "slippage" alongside the increasing distortion and compression:

SPL & PHASE
221-sub-1.png221-sub-2.png221-sub-3.png221-sub-4.png

GROUP DELAY
221-sub-5.png221-sub-6.png221-sub-7.png221-sub-8.png

DISTORTION
221-sub-9.png221-sub-10.png221-sub-11.png221-sub-12.png221-sub-13.png

The phase did change a little... but stable enough, for me not to worry, I think.


If one is simply gently correcting the (filtered/windowed or quasi-anechoic) excess phase or actual phase then I don't expect there likely to be audible pre-ringing. Firstly, though, you need to know how much of the visible transfer function is contributed by the room. Some overcorrection artifacts are not audible, plus can be pre-emptively avoided by carefully checking with the measurements -- but, it takes experience. Notwithstanding, objective verification measurements and listening tests is a must. You can usually get away with longer window filters at very low frequencies due to the wavelengths involved. The higher you go, though, the more positionally variable things become so "room correction" applied should be much less.
 
Hello OP @ErLan,

Just for your possible reference and interest; the links below are for your jump to relevant posts on my project thread.

If you would be seriously interested in applying the same "primitive but reliable and reproducible" measurement and tuning methods, using the tone burst signals I prepared thereof, please personally contact me through the PM communication system by clicking the envelope button on the upper right of ASR screen.

- Precision measurement and adjustment of time alignment for speaker (SP) units: Part-1_ Precision (time-shifted) pulse wave matching method: #493
- Precision measurement and adjustment of time alignment for speaker (SP) units: Part-2_ Energy peak matching method: #494
- Precision measurement and adjustment of time alignment for speaker (SP) units: Part-3_ Precision single sine wave matching method in 0.1 msec accuracy: #504, #507

- Measurement of transient characteristics of Yamaha 30 cm woofer JA-3058 in sealed cabinet and Yamaha active sub-woofer YST-SW1000: #495, #497, #503, #507

- Identification of sound reflecting plane/wall by strong excitation of SP unit and room acoustics: #498

- Perfect (0.1 msec precision) time alignment of all the SP drivers greatly contributes to amazing disappearance of SPs, tightness and cleanliness of the sound, and superior 3D sound stage: #520

- Not only the precision (0.1 msec level) time alignment over all the SP drivers but also SP facing directions and sound-deadening space behind the SPs plus behind our listening position would be critically important for effective (perfect?) disappearance of speakers: #687


Edit:
My post here (#152) on the thread "Manually time-aligning subwoofer(s) to mains - how to" would be also of your reference.:)
 
Last edited:
Actually, it was 322ms -- my mistake -- that one exhibited some rippling if zoomed-in closer.

Adjusting the IR left window in REW is the same as specifying the amount of ms centering delay in rePhase. While one doesn't get the ability to pick the type of windowing (e.g. hann, cosine) there is some other extra windowing options.

View attachment 388744 View attachment 388745



There's some acoustic absorbers in my basement listening room (rockwool and 4-inch wedge foams). But, much of the bass decay is absorbed or dampened by the drywall all around (insulation behind walls too) of the room and the much larger surrounding structures. The room is somewhat larger than it seems given the lossy walls -- sub bass frequencies easily pass through.

Nevertheless, positioning makes a big difference. And, maybe to some extent, the fact that the sub I'm using (Rythmik F12) is a sealed design with known low GD -- also depends on amp settings. My other speakers -- other than the KH120s -- are modded by me to have more damping than originally built.



Well, there's a very subtle difference that when done "right" where it can slightly improve tightness/impact in the bass. The magnitude response needs to be forced to be identical though, which is not the case in this one example I uploaded. It's important to note the vast majority of typical domestic rooms do not produce close to "minimum phase" looking IRs (having looked at a lot of heavily room-mangled measurements out there). If I didn't have the ability to use FIRs in my 7.1 MCH setup, I would have been forced to apply all-pass filters and relatively steep xo high-pass filters to match the phases of all 8 speakers. The sound to me is worse when one is forced to increase GD just to get a better phase match between differing set of speakers.



As I said, it can be iffy. But, I'm also not exactly sure what you mean.

FIR filters can independently adjust the phase from the magnitude response so the effect will be variable depending on what's exactly being done by those filters.

When pushed harder, the sub does eventually lose some linearity and will exhibit "slippage" alongside the increasing distortion and compression:

SPL & PHASE
View attachment 388752View attachment 388753View attachment 388754View attachment 388755

GROUP DELAY
View attachment 388756View attachment 388757View attachment 388758View attachment 388759

DISTORTION
View attachment 388760View attachment 388761View attachment 388762View attachment 388763View attachment 388764

The phase did change a little... but stable enough, for me not to worry, I think.


If one is simply gently correcting the (filtered/windowed or quasi-anechoic) excess phase or actual phase then I don't expect there likely to be audible pre-ringing. Firstly, though, you need to know how much of the visible transfer function is contributed by the room. Some overcorrection artifacts are not audible, plus can be pre-emptively avoided by carefully checking with the measurements -- but, it takes experience. Notwithstanding, objective verification measurements and listening tests is a must. You can usually get away with longer window filters at very low frequencies due to the wavelengths involved. The higher you go, though, the more positionally variable things become so "room correction" applied should be much less.
Thanks (again) for the thorough and clear answers. must say that I get to learn many of your derived conclusion, mostly through trial & error (no complaints, I see it as one of the joys that our hobby brings :)).

My room is a standard, non-treated living room. As such, it is clear to me that DSP can get me far but surely not all way to the 'north star' of perfection.
Having that being said, I feel like I am (still) struggling with answering your well phrased question "you need to know how much of the visible transfer function is contributed by the room".
I have my speakers' spinoarama (for simplification, lets stick with Rt & Lt only), the placement geometry, and the measurement at the MLP.

Yet, Can the difference between "in-room measurement - spinorama's listening window(*)" is the "room only transfer function"?
Should this now be derived as function of, e.g.: SPL to assess (non)linearities?

(frankly, seems oversimplified to me...)
 
Thanks (again) for the thorough and clear answers. must say that I get to learn many of your derived conclusion, mostly through trial & error (no complaints, I see it as one of the joys that our hobby brings :)).

My room is a standard, non-treated living room. As such, it is clear to me that DSP can get me far but surely not all way to the 'north star' of perfection.
Having that being said, I feel like I am (still) struggling with answering your well phrased question "you need to know how much of the visible transfer function is contributed by the room".
I have my speakers' spinoarama (for simplification, lets stick with Rt & Lt only), the placement geometry, and the measurement at the MLP.

Yet, Can the difference between "in-room measurement - spinorama's listening window(*)" is the "room only transfer function"?
Should this now be derived as function of, e.g.: SPL to assess (non)linearities?

(frankly, seems oversimplified to me...)

Yes. BUT, it isn't that simple.

1724923592203.png


I don't think it is controversial to say that moving the microphone/angle/MLP/speaker in a room changes the measured transfer function.


From DRC documentation:
4.1 Filter generation procedure

The creation of a correction filter for room acoustic compensation is quite a challenging task. A typical acoustic environment is a non minimum phase system, so in theory it cannot be inverted to get perfect compensation. Furthermore a typical Hi-Fi system in a typical listening room isn’t either a single linear system, but it is instead a different linear system for every different listening position available.

Trying to get an almost perfect compensation for a given position usually leads to unacceptable results for positions which are even few millimeters apart from the corrected position. The generation of a filter that provides good compensation of magnitude and phase of the frequency response of the direct sound, good control of the magnitude of the frequency response of the stationary field and an acceptable sensitivity on the listening position, requires many steps...

Rythmik F12. Manufacturer measurement at particular default amp settings:

...bass extension controls set to 14 Hz, the response is 3 db down at 14 Hz. The response is flat and extended.

sealed response

Fig 1.0 - F12 Frequency response chart in AVR/12 low pass filter setting

In the case of my subwoofer's measured response around my Desk setup (and other seating positions in the room), I know relatively how much/little the sub's response is mangled by the room since I also have very nearfield measurements of the driver in situ which isn't too different from what's shown above. Drastic EQ adjustments at a single location will change the response elsewhere for better or worse... so there are real limits to what I would consider acceptable since I do not want too much excess energy forced elsewhere in the room. You've seen that I have also measured the distortion at increasing SPL levels, which really helped me decide how much EQ boost/cut I was willing to apply.

Another speaker manufactuer, Hedd, provides the ability to equalize their ported sub's phase, but the corrections were derived from lab anechoic data making their "correction" even more accurate/universal when paired with their own speakers.

This was what I last saw of your subwoofer measured response:

1724925221625.png 1724925242402.png

I could try to window out the frequency response -- but even that seems of limited use... While it may prove not all that useful in the end, it would be heck of a lot better if we actually knew what the native response was minus what the room adds. Right?


If you take a second look carefully at the mdat I posted, there's a boost around 6-7kHz in my center channel speaker to compensate for a direcitivity narrowing off-axis which is not present on-axis. I've listened to a lot of music track sections that had significant activity around that region comparing it to my Neumann KH120s and have come to the conclusion that I can definitely hear the power response drop off-axis while sitting at the MLP which is still much closer to on-axis. To improve timbral matching between LCR speakers, I've kept it boosted.

Fulcrum RX699
1724922922674.png


There's a peak around 1.4kHz in my LR KH120s which is mostly resonance coming from the port while there's a dip around 1.3kHz of my (modded) Center RX699 which appears inherent in the speaker esp. nearfield but fills up at further listening distances. Flattening/inverting both with EQ makes the LCR speakers sound far more tonally different than similar at the MLP so it is left as-is...

1724925993659.png


There are other differences here and there, but that would be mostly results from my own experiments with my own speakers and in-room setup.
 
Last edited:
Let us be clear what you are talking about when you say you want to correct the phase of the sub. Do you want to:

1. adjust the phase of the sub so that it is aligned with the woofer? (this will avoid cancellation at the XO overlap band)
2. remove excess phase peaks in the subwoofer response? (might help with room cancellation)
3. turn the sub from a minimum phase device to a linear phase device? (it is possible to do this with some DSP software but I think the benefits are questionable and it is exceedingly difficult to get a meaningful measurement).

You mentioned something about not being happy with the step response. You are using IIR's, those are only minimum phase. If you want linear phase, your only option is to use FIR's.

There are two steps to get a perfect looking step response:

1. All drivers need to be time aligned. Since you only have one sub, you will have to choose which speaker to time align your sub to. This depends on sub positioning, for e.g. if your sub is on your left, it would be impossible to time align it to both speakers. If might work better if the sub was in between the two speakers.

2. Once all the corrections have been made (minimum phase inversions, etc.) there will be excess phase which needs to be removed. This is the effect of removing the excess phase. On the left is a speaker which has been time aligned. On the right, the excess phase has been removed.

1724957104956.png


Unfortunately I can't talk you through how to do it with REW. I really should try to get more familiar with REW, but to me it's almost like learning a new language! I use Acourate, getting rid of excess phase is as easy as making a few adjustments and pushing the "OK" button.
 
Thanks @Keith_W
What I am trying to achieve is indeed:
1. adjust the phase of the sub so that it is aligned with the woofer? (this will avoid cancellation at the XO overlap band)
2. remove excess phase peaks in the subwoofer response? (might help with room cancellation)

Which is part of an bigger effort ]to maximize my 2.1 system performance under constraints of: (a) a living room, (b) keeping the tonality of my speakers as natural as possible (at least based on spinorama data and\or - as suggested by @ernestcarl - in-situ nearfield measurement), while focusing the correction on the room contribution\distortion.''
For now, I am using REW (IIR) RePhase (FIR) and EQAPO as my DSP tools - that even though requires "some" manual work, which also helps me to turn some 'black-boxes' of knowledge into 'gray' ones :)

Thread started with a query on the best approach to tackle the FIR design, or in a more precise words, remove the excess phase from the system.
So far I learnt that:
(i) it is good to FIRST optimize each speaker separately and then the system as a whole,
(ii) Using reference like in-situ measurement and\or spinorama looks can capture well the 'room contribution',
(iii) with a careful design that lookis at aspects like: speaker distortion, cross component tonality, different window sizes, etc. FIR is not going to cause audible artifacts (like: pre-ringing) when applied in the low end,
(iv) under the above mention constraints (mainly the living room one) results will not be perfect but can get "good enough".
(v) There is no clear schema how to get to perfection, but rather lot of trial and error :)

I guess it is now the time 'wet my hands' and experience some of the practices mentioned in this thread and beyond
as always, tips are most welcomed!
 
Thanks for the clarification.

1. Phase aligning the subwoofer to the speaker. As I said: if you have one subwoofer, you have to choose which speaker you want to align the phase with. It works best if your subwoofer is positioned in between the two speakers, but that may not be the best position for bass reproduction in your room. With ANY non-midline sub position, your sub can be aligned to one speaker or another, but not both (unless you are extremely lucky!).

@OCA has a video on how to do this. His method is a bit different to mine, but essentially you use REW's phase unwrapped graph and delay the speaker until the two graphs overlap at the XO point. IMO the problem is that the phase of the sub is typically rotated many times. So what I suggest is: measure the phase difference between the sub and the woofer at (say) 80Hz. You find it is 4500 degrees. So (12 * 360) + 180 = 4500 degrees, so you only need to rotate your speakers 180 degrees to put them in phase.

1724996282835.png


Note that the phase slope of the sub and the woofer is typically different. Phase aligning at 80Hz might mean phase cancellation elsewhere (if you look at the curves you will see that they diverge). Here is an example where the phase of the sub (red) has been aligned with the woofer (green) - you are looking at the unwrapped phase. It is only aligned at 50Hz - by 45Hz and 55Hz they are almost 180 deg out of phase. One way around this is to slap a reverse all pass filter on the sub to straighten out the phase a little.

2. Remove Excess Phase peaks in the bass region. This is done by putting a high Q reverse all pass filter in the opposite channel. I believe that RePhase can do this, and so can Acourate's ICPA ("Interchannel Phase Alignment"). Acourate's ICPA designer is very easy to use.

1724997152427.png


You mark the frequency which loads it into a a calculator. You then adjust the f0 and Q and press the "demo" button which gives you a preview of the filter. When you are satisfied, save the result.

3. Pre-Ringing. This is always a risk with FIR filters but can be mitigated with careful filter design. In particular, be careful with high Q all pass filters. Acourate's Macro won't let you create a filter which will have a lot of pre-ringing because it has a built-in Q limiter, but if you decide to do it manually (e.g. with RePhase) there is a risk you might inadvertently cause pre-ringing.

The other thing to be careful for is asymmetric crossover slopes - for e.g. if you start off with LR4 at 50Hz, the XO band is symmetrical and they sum properly. But if you happen to have a peak in room response at the XO band at (say) 60Hz and you correct for it, the XO's will no longer be symmetrical and the excess may appear as pre-ringing.

I have a few golden rules of DSP, but here are a couple: (1) Do not make too many changes at once, and (2) If you don't know what you are doing, leave it alone. Go acquire the knowledge and try again, making sure that this is the only variable you change.
 
Thanks for the clarification.

1. Phase aligning the subwoofer to the speaker. As I said: if you have one subwoofer, you have to choose which speaker you want to align the phase with. It works best if your subwoofer is positioned in between the two speakers, but that may not be the best position for bass reproduction in your room. With ANY non-midline sub position, your sub can be aligned to one speaker or another, but not both (unless you are extremely lucky!).

@OCA has a video on how to do this. His method is a bit different to mine, but essentially you use REW's phase unwrapped graph and delay the speaker until the two graphs overlap at the XO point. IMO the problem is that the phase of the sub is typically rotated many times. So what I suggest is: measure the phase difference between the sub and the woofer at (say) 80Hz. You find it is 4500 degrees. So (12 * 360) + 180 = 4500 degrees, so you only need to rotate your speakers 180 degrees to put them in phase.

View attachment 389351

Note that the phase slope of the sub and the woofer is typically different. Phase aligning at 80Hz might mean phase cancellation elsewhere (if you look at the curves you will see that they diverge). Here is an example where the phase of the sub (red) has been aligned with the woofer (green) - you are looking at the unwrapped phase. It is only aligned at 50Hz - by 45Hz and 55Hz they are almost 180 deg out of phase. One way around this is to slap a reverse all pass filter on the sub to straighten out the phase a little.

2. Remove Excess Phase peaks in the bass region. This is done by putting a high Q reverse all pass filter in the opposite channel. I believe that RePhase can do this, and so can Acourate's ICPA ("Interchannel Phase Alignment"). Acourate's ICPA designer is very easy to use.

View attachment 389353

You mark the frequency which loads it into a a calculator. You then adjust the f0 and Q and press the "demo" button which gives you a preview of the filter. When you are satisfied, save the result.

3. Pre-Ringing. This is always a risk with FIR filters but can be mitigated with careful filter design. In particular, be careful with high Q all pass filters. Acourate's Macro won't let you create a filter which will have a lot of pre-ringing because it has a built-in Q limiter, but if you decide to do it manually (e.g. with RePhase) there is a risk you might inadvertently cause pre-ringing.

The other thing to be careful for is asymmetric crossover slopes - for e.g. if you start off with LR4 at 50Hz, the XO band is symmetrical and they sum properly. But if you happen to have a peak in room response at the XO band at (say) 60Hz and you correct for it, the XO's will no longer be symmetrical and the excess may appear as pre-ringing.

I have a few golden rules of DSP, but here are a couple: (1) Do not make too many changes at once, and (2) If you don't know what you are doing, leave it alone. Go acquire the knowledge and try again, making sure that this is the only variable you change.
Thanks @Keith_W for the detailed organized information, very helpful.
A question though, In bullet (2) above you wrote 'Remove Excess Phase peaks in the bass region. This is done by putting a high Q reverse all pass filter in the opposite channel'.

While I understand the rational of matching Rt & Lt, nevertheless, it is not clear to me how does such operation remove the excess phase. Especially as (with reference to the short tutorial above) the Lt channel holds an excess phase on its own that does not seem to be compensated? (see e.g. in your snapshot, the red channel has a notable peak in GD at ~300Hz which may indicate a room mode, SBIR, comb, etc.; what happened to the Rt channel when SW is trying to match Rt to Lt in that area?)

Also, I believe that those GD are derived under a certain FDW or smoothing.
In few references I was able to find out recommendation for FDW of 6-8, on @mitchco (filmed) tutorial, Acourate's smoothing is window is set to psychoacoustic. Do you have any recommendations on that aspect?

Last, thanks for the DSP 'golden rules' - so far, I 'managed' to fail on both :) (but at least it gave me the opportunity to learn something new)
 
FIR is not going to cause audible artifacts (like: pre-ringing) when applied in the low end

I would never want to make any guarantees of "improvement". In fact, this rabbit hole of phase manipulation may turn out to be a waste of time.

Your sub+mains alignment already appears okay in this one particular sample measurement and could be left as-is:

1725007492060.png 1725007504922.png

Suppose we were to invert the in-room excess phase globally -- just as a "quick" simulation exercise -- after applying some windowing and bandwidth limit adjustments within REW. Hmmmn. It looks more flat and closer to t=0 now... Or, at least the peak energy time under 120Hz or so.

1725007585217.png 1725007593267.png

Either way, one would still need to do critical listening tests to confirm it sounds better and not only looks "nicer".

EDIT: SPL level in measurement adjusted

Unfortunately I can't talk you through how to do it with REW. I really should try to get more familiar with REW, but to me it's almost like learning a new language!

Worth the effort to learn at least some of the basic stuff since it's way easier to share and examine mdat file measurements given the software is free.

When it comes to being a dedicated DRC FIR filter generator... perhaps not quite there yet.
 
Last edited:
Thanks @Keith_W for the detailed organized information, very helpful.
A question though, In bullet (2) above you wrote 'Remove Excess Phase peaks in the bass region. This is done by putting a high Q reverse all pass filter in the opposite channel'.

The explanation can be found in Dr. Bruggemann's accompanying document explaining the ICPA function in Acourate v2.0. I just had a look on his website, but he did not make it publicly available. Here is a quick snippet of the summary:

1725017377755.png


The "peaks" he is talking about refer to non-flat regions in the unwindowed group delay plot.

While I understand the rational of matching Rt & Lt, nevertheless, it is not clear to me how does such operation remove the excess phase. Especially as (with reference to the short tutorial above) the Lt channel holds an excess phase on its own that does not seem to be compensated? (see e.g. in your snapshot, the red channel has a notable peak in GD at ~300Hz which may indicate a room mode, SBIR, comb, etc.; what happened to the Rt channel when SW is trying to match Rt to Lt in that area?)

You are referring to that red spike at about 300Hz?

1725018426140.png


The reason I left it alone is because it is outside Acourate's recommended boundary for correction. If you look at this graph you can see there is an upper and lower Q limit. If you want to, you can certainly exceed those limits and ignore Acourate's warnings.

I don't want to come across as being unhelpful, but you and I are speaking different languages here. I am speaking in Acourate, and you are speaking in REW. You have to translate what I am saying into something you can understand, so I am really hoping that someone with experience with REW/RePhase can jump in and help you.

I have tried RePhase. IMO it can probably do the same thing, but it isn't as easy and there is no safety net. Acourate will try to stop you from doing silly things. RePhase won't stop you. It is up to you to know the limits.

Also, I believe that those GD are derived under a certain FDW or smoothing.
In few references I was able to find out recommendation for FDW of 6-8, on @mitchco (filmed) tutorial, Acourate's smoothing is window is set to psychoacoustic. Do you have any recommendations on that aspect?

Let us think about FDW for bass frequencies for a moment. A 50Hz wavelength is 6.9m (23ft). 15 cycles of 50Hz (FDW 15) is 103.5m (340ft). In my room, choosing an FDW of 15 means that the sound has reflected in my room about 17 times. If you choose an FDW of 6, then the sound has reflected about 7 times.

Now let us ask ourselves what our intentions are. For bass, we wish to correct the bass together with the room - i.e. the steady state response of the speaker-room system. We have no hope of correcting the speaker by itself because there is no way you can window out the reflection to produce a speaker-only response when the wavelength is so long. Furthermore, choosing a short window will not capture the steady-state response. In fact, if you do this, you will see some strange anomalies on your graph, e.g. dips can appear which are not in the unwindowed response. Why? Because the sound is still bouncing around. So for me personally, I always choose an FDW of 15 for bass.

Can you please point me to a timestamp on Mitch's video where he recommends an FDW of 6-8?

Last, thanks for the DSP 'golden rules' - so far, I 'managed' to fail on both :) (but at least it gave me the opportunity to learn something new)

The reason I came up with those rules because I am guilty of committing them myself! Quite often I have hare brained ideas and I am impatient to implement them. So they all go in. Result: weird sounding filter. More work to go back to zero and start going through the changes one by one. So although I have a rule that says "don't make too many changes at once" I break my own rule more often than I follow it.
 
It would be painfully slow to manually adjust and correct for each GD peak given there is no GD plot view in rePhase to begin with!

The presets in rePhase are really not for compensating the “in-room response” itself. Plus, there is no IR frequency dependent windows option. Although, yes, it could indeed be used in conjunction with other programs like REW, but more in a roundabout way.

There are some issues with using smaller window widths in the low frequency, yet, sometimes we might not want to necessarily correct the in-room steady state too much… or we may want to use smaller left window widths and “taps” for export anyway etc. Oh, yeah, turns out there is a way to at least avoid inducing such magnitude dips when using smaller FDW but it’s also somewhat roundabout. And finally all that stuff above 120Hz (in the spectrogram) is really better dealt with via room acoustics, to be honest.

It’s a rabbit hole… and you know it.
 
Last edited:
It would be painfully slow to manually adjust and correct for each GD peak given there is no GD plot view in rePhase to begin with!

1725045019765.png


Group delay is the negative derivative of the phase response. It is visible in the phase curve as a sudden discontinuity in phase. I have positioned the yellow marker over such an excess phase spike.

My RePhase skills are rudimentary, so I can't really give a step by step explanation on how to use it. Sorry! But if you want a free tool, this is the only free tool I know of that can do the job. Sometimes it's better to pay a bit of money to get a luxury tool :D

It’s a rabbit hole… and you know it.

It's a fun rabbit hole though!
 
Group delay is the negative derivative of the phase response. It is visible in the phase curve as a sudden discontinuity in phase. I have positioned the yellow marker over such an excess phase spike.

Indeed, yet still more really of a roundabout method of seeing the GD "peaks".

"Global" phase/GD inversion with the mains (along with the room windowed-in IR --- when there's a lot of it) as in here with Erlan's room measurements feels iffy to me.
 
Thanks @ernestcarl and @Keith_W for the detailed descriptions and possible paths to proceed.
Overall, I see FIR 'exercise' as a potential boost in the system quality and good opportunity to enrich my knowledge and 'toolbox' so, even if insignificant improvement on the former, I am good with only the later.

Overall, from correspondence above and though I did not try it in person, I feel like the approach that Accourate take - where GD is being treated directly - is more elegant, straightforward and similar to what is done on the frequency domain; unfortunately, I do not have this cash to spare at the moment, so I am forced to continue using RePhase for that (which, btw, is a VERY good alternative).

My current 'schema' for FIR generation using RePhase is following Bear's REW & Rephase tutorial (Acoustic treatment & Calibration Rephase - The Tutorial) and threads that are available on ASR (https://www.audiosciencereview.com/forum/index.php?threads/rew-and-re-phase-for-dummies.18891) (@Keith_W this is the source for the FDW=6-8 settings. @mitchco seems to use a Psychoacoustic smoothing window)
I am also applying a conservative design approach while limiting the Rephase Q value default to <2.0 (which I believe conceptually equivalents to Accourate's limitation on fixing GD with too high Qs).

I guess that when I have a better grasp of the theory & impact various parameters, I will let myself loose a and explore a bolder configuration.

As I see it, my main acoustic 'challenge' (and can be seen in the snapshot provided by @ernestcarl is the lag of the low frequencies (upto ~200Hz), which per my understanding is not a Sub-main speaker integration issue but rather a room artifact, as it occurs also when, so sub is engaged (hence Rt & Lt alone). Since heavy room treatment is not practical (the system sits in my living room), FIR seems like the main path to relief some of the imperfections.

I will be glad to share more after applying some of the good practices mentioned (and likely need some supporting tips) - hence 'I am keeping this channel open ;))
 
it is not clear to me how does such operation remove the excess phase
It's quite simple. Your system's steady state (in room, at the LP) response consists of its minimum phase response and excess phase response. Minimum phase part is easy to deal with because it's invertible. You can use simple IIR filters, all you need to be careful about is not to exceed inversion beyond the room transient where your measurement with an omnidirectional mic is no longer accurate.

Excess phase cannot be inverted, it will be unstable by definition. Your only way is to use backwards-in-time filters that correspond to the problem areas. That's a mirror reflection of the impulse around t=0 axis so they will cancel each other out. The filter needs to deal with the impulse before it is produced (hence called backwards in time). You can only do this with FIR filters (because they are symmetric around time 0 unlike min phase filters which do not have any presence in negative time) however you are limited to 3-5ms back in time at most cases in my experience because when there's a discontinuity in the Fourier transform, ringing will form due to Gibbs phenemenon. This is quite limiting as bass frequency discontinuties in phase happen many milliseconds later but is still quite useful because they can fix the initial impulse (ie driver alignments, crossover phase corrections) which in fact repeats itself with every reflection so fixing it fixes a lot more in the overall impulse response.

The green FIR filter below is the carbon copy of the red speaker response in the first 1.5ms and starts at -1.5ms and ends at 1.5ms. See how it corrects alot of reflections in the impulse (blue response) and its benefits go far beyond 1.5ms as the fixed initial impulse repeats itself moving forward. In the example below at around 4ms floor reflection and at 8ms side wall reflection.

1725110805783.png


PS This was all done in REW by inverting 1.5ms windowed EP of the speaker, rePhase was not used.
 
Last edited:
Thank @OCA for the detailed explaination and demo.

Indeed I tried the Inv phase with narrow time window in the past (btw, following your posts and videos) and - as you correctly captured - found it quite limiting when trying to manage the sub 300Hz. This is why I am now trying to assess now the 'power' of FIR and its related drawbacks.
(I know, I may end up with the same conclusions)
 
Back
Top Bottom