• 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!

Understanding the state of the DSP market

Sorry, how you do it?

The first step is to make sure the sub is time aligned to the mains. Then I remove excess phase and invert the minimum-phase response. Then deal with the rest how that video explains it. You have three tools - polarity inversion, time shift, and all-pass filters. And if you use linear-phase FIR, you also have reverse all-pass filters and phase EQ. Use these tools to nudge the excess phase response closer to flat. Success is not guaranteed, sometimes the only thing you can do is buy more subwoofers.

In fact actually the only software that seems to do it, through machine learning, is Dirac. But I'm not even sure about it... nor on its effectiveness.

If Dirac can produce a better correction than I can, I will stop using Acourate and switch to Dirac.
 
This is why correction of a dip by simply filling it will not work, you will have more success if you adjust the phase. It shifts the dip somewhere else in the room.
I was asking how you do this.
The first step is to make sure the sub is time aligned to the mains. Then I remove excess phase and invert the minimum-phase response. Then deal with the rest how that video explains it. You have three tools - polarity inversion, time shift, and all-pass filters. And if you use linear-phase FIR, you also have reverse all-pass filters and phase EQ. Use these tools to nudge the excess phase response closer to flat. Success is not guaranteed, sometimes the only thing you can do is buy more subwoofers
From what I know, in this way you are not adjusting phase to move dips elsewhere, but you are introducing inversions to equalize the IR.
If you don't use a MIMO system that exploits cooperation between at least 2 drivers, you can't change the relation between direct and indirect sound of single point source with DSP, so you can't compensate for dips. You need to move the driver to move the dip.
MSO can exploit cooperation. And presumably Dirac BC/ART.
With Acourate I understand that there is the ICPA function that does something similar, but I am not sure it compensates for the dips due to the room.
If not, I would be happy to learn something new!
 
Last edited:
That's what REW measurement is for.
Dirac delta function can be derived from it, that's the info you pass to rePhase after all if I have gotten it right.
Asking REW for minimum phase helps as well.
He asked how to manipulate the phase before MathAudio.
If he just wants to manipulate the phase in Rephase he needs to load a Dirac pulse (1,0,0,0,0,0,...).
Then MathAudio corrects for the measured IR.
I'm not sure what the purpose is but I don't think it is optimal to alter the phase response on which a DRC filter has already been calculated.
 
Wavelet method can be challenging in a domestic “smallish room” environment.

https://audiosciencereview.com/forum/index.php?threads/time-alignment-question.62803/

VERY true. It's the best technique I've found so far, but even its repeatability varies too much to base major corrections.

The problem as I see it, is what are we measuring in a small room?
If we are in the room's nearfield, where direct energy is greater than reflected, i think wavelets have a decent chance of being repeatedly valid.
If we are where reflected energy is greater, wavelets have no chance....they are trying to measure the distance of a bounce shot.
Critical distance, where direct equal reflected, and often a favorable choice for listening....well, who knows what's being measured.
 
From what I know, in this way you are not adjusting phase to move dips elsewhere, but you are introducing inversions to equalize the IR.

I'll explain it again.

1. Time align the subs to the woofers as a starting point. It is likely that because of varying group delay between subs and woofers, the phase will not align. So the next step is to align the phase by time shifting the subwoofer. Or even inverting the polarity of the subwoofer if it is appropriate.
2. Take a sweep from multiple positions around the MLP and examine them. If you see a peak/dip that does not move, that's a room mode, SBIR, or XO phase cancellation. If it changes by a lot, it's a local phenomenon (e.g. reflection from a listening chair) and should be ignored.
3. Find the minimum-phase portion of the frequency response and invert it.
4. What remains are excess phase spikes. This is most easily viewed if you extract excess phase and view the group delay plot. Minphase regions are flat areas, non-MP regions are peaks. These can be equalised with targeted all-pass filters. You can place these AP filters in the same channel (in which case you would have to time reverse it) or opposite channel. Or in the case of woofer and sub, in one driver instead of the other. This is what Acourate's ICPA does, but if you wanted to, you could design it manually. This isn't as easy to do on rePhase since rePhase only shows you the wrapped phase view, but it can be done.
5. If, after all this, dips remain ... time to buy another subwoofer.

If you don't use a MIMO system that exploits cooperation between at least 2 drivers, you can't change the relation between direct and indirect sound of single point source with DSP, so you can't compensate for dips. You need to move the driver to move the dip.
MSO can exploit cooperation. And presumably Dirac BC/ART.

MSO and Dirac ART are fundamentally different products since they output biquads and use minphase IIR. MSO uses brute force to compute the biquads for a best fit, and in this case you do need brute force because each biquad/PEQ also rotates the phase which may cause problems somewhere else. A linphase DSP can simply lop off the amplitude peak without affecting the phase. These are some limitations to minphase IIR as I explained in my first post.
 
I'll explain it again.

1. Time align the subs to the woofers as a starting point. It is likely that because of varying group delay between subs and woofers, the phase will not align. So the next step is to align the phase by time shifting the subwoofer. Or even inverting the polarity of the subwoofer if it is appropriate.
2. Take a sweep from multiple positions around the MLP and examine them. If you see a peak/dip that does not move, that's a room mode, SBIR, or XO phase cancellation. If it changes by a lot, it's a local phenomenon (e.g. reflection from a listening chair) and should be ignored.
3. Find the minimum-phase portion of the frequency response and invert it.
4. What remains are excess phase spikes. This is most easily viewed if you extract excess phase and view the group delay plot. Minphase regions are flat areas, non-MP regions are peaks. These can be equalised with targeted all-pass filters. You can place these AP filters in the same channel (in which case you would have to time reverse it) or opposite channel. Or in the case of woofer and sub, in one driver instead of the other. This is what Acourate's ICPA does, but if you wanted to, you could design it manually. This isn't as easy to do on rePhase since rePhase only shows you the wrapped phase view, but it can be done.
5. If, after all this, dips remain ... time to buy another subwoofer.



MSO and Dirac ART are fundamentally different products since they output biquads and use minphase IIR. MSO uses brute force to compute the biquads for a best fit, and in this case you do need brute force because each biquad/PEQ also rotates the phase which may cause problems somewhere else. A linphase DSP can simply lop off the amplitude peak without affecting the phase. These are some limitations to minphase IIR as I explained in my first post.
The all-pass filter you mean is not a simple rotation (what I mean by phase adjustment).
It is a filter with exactly the group delay curve opposite to that of excess phase, to reconstruct the minimum phase. This means modifying the IR, not simply rotate the phase, that was what you seemed to say when you said "adjust phase".
I agree with what you say then.
I was only perplexed by that sentence and curious to understand if I missed anything.
It's still a trial and error however, I keep doubting that you can manually do better than a specific acoustic correlation matrices analysis algorithm. Then I agree that in practice MSO and Dirac may not produce anything better due to the type of filters they apply.
 
Last edited:
Apologies if this is a stupid question but does anyone know if is there a cheap(ish)/free VST which would enable me to adjust phase prior to MathAudio RoomEQ VST, output via Foobar2000?

Ideally I would like to see if I can make improvements through phase adjustments, without a full on deep dive into a complex piece of software I may or may not need all of.
(If that makes sense?)
Why would you adjust phase prior to mathaudio. As i could find Mathaudio is already taking care of phase

MathAudio Room EQ applies a state-of-the-art multipoint correction algorithm

The frequency response of your room is very different in every point of the room. "Good" equalization in one point can worsen the sound in the neighboring point. Single-point equalization is not reliable and cannot be used in a professional room correction system. On the other hand, the multipoint equalization is not simple: both the volume and the phase of the testing signal are very different in different points of the room. Simple averaging is not applicable. MathAudio Room EQ applies a state-of-the-art multipoint correction algorithm which ensures the best possible improvement in every point of the listening area.
 
This is incorrect. All those peaks and dips you see in your frequency response are not errors in the frequency domain. They are actually time domain issues manifesting as superposition phenomena in the frequency domain - a sound wave interacting with a reflected (and thus time-shifted) version of itself, or two drivers producing the same frequency but not time/phase aligned due to group delay, non-coincident positioning, etc. This is why correction of a dip by simply filling it will not work, you will have more success if you adjust the phase. It shifts the dip somewhere else in the room. Because the root cause is a time domain issue, the correction should also be in the time domain. You can try to EQ it out, e.g. you can have some success simply cutting the peaks. But it is not the best way.
Some of the dips can be corrected even using simple EQ, they're not all immune to simple parametric EQ. You don't have to use the "other" type of filters to correct for those dips all the time. I mean I know mitchco used to offer services to correct peoples uncorrectable dips using those "other" types of filters (sorry forgot the proper terminology, I am being lazy I admit), but I don't think it's strictly necessary in order to get your speakers sounding good in your room. You can most certainly use normal parametric EQ to help fill in some dips, and certainly to cut the peaks. I think there's too much emphasis in this thread on diving into random bits of the detail rather than actually functionally showing & talking about how to fix issues in a simplified reality of application. I guess I'm saying this because I think you're all beating a lot of water without actually going anywhere.
 
Last edited:
I believe that you cannot simplify the phase to a single concept.
1) There is the relative phase between drivers of the same channel.
2) The relative phase between channels (eg left and right).
3) The full band phase response of a channel with respect to a linear system.
4) The absolute phase, or polarity, which indicates whether the energy peak is positive or negative.

For points 1 and 2 it's pretty important, because two perfectly aligned pulses at opposite polarity cancel each other.
If we take what you say, I guess point 1 is related to diy speaker design. Point #2 you're not gonna flip the polarity of your left or right channel are you? You'd just have your 2 speakers arranged in an equilateral triangle with listening position and that's your lot. I suppose if you couldn't put your speakers symetrically in relation to listening position then you'd have to time align (by accounting for physical distance differences to listening position & converting that into a delay in milliseconds) & volume align them at listening position which is what I do with one of my listening positions. Point 3 I don't really know what you mean. Point 4 is about flipping the polarity of the your speakers, you generally wouldn't do that, I can't see why you'd want to flip the polarity of your speakers - I remember that some people can detect a flipped polarity in music listening.
 
Last edited:
So the next step is to align the phase by time shifting the subwoofer.
Trying to clearly understand the differences between phase shifts and time delays has been a challenge to wrap my head around. My less than solid understanding is that trying to correct phase using a time shift (delay) is suboptimal. Maybe it is just semantics but your statement above is confusing me. Thanks.
 
Why would you adjust phase prior to mathaudio. As i could find Mathaudio is already taking care of phase

MathAudio Room EQ applies a state-of-the-art multipoint correction algorithm

The frequency response of your room is very different in every point of the room. "Good" equalization in one point can worsen the sound in the neighboring point. Single-point equalization is not reliable and cannot be used in a professional room correction system. On the other hand, the multipoint equalization is not simple: both the volume and the phase of the testing signal are very different in different points of the room. Simple averaging is not applicable. MathAudio Room EQ applies a state-of-the-art multipoint correction algorithm which ensures the best possible improvement in every point of the listening area.
I was trying to figure out if it is feasible to improve phase/coherence when using an automated DRC like MathAudio RoomEQ. From what I understand one of the downsides of automated systems like this is their correction (or not) of phase.

Not sure if this is even possible however. Any input welcome!
 
Trying to clearly understand the differences between phase shifts and time delays has been a challenge to wrap my head around. My less than solid understanding is that trying to correct phase using a time shift (delay) is suboptimal. Maybe it is just semantics but your statement above is confusing me. Thanks.

Sure, I understand. Rather than explain it to you, why don't you try this yourself. Download this MDAT that I attached. This is a measurement I grabbed from my collection with the tweeter in the same impulse and all the other drivers muted - ignore the tweeter. Then go to "All SPL", select both measurements, then right click and choose REW's Alignment Tool. Use these settings:

1746982362484.png


In the main window, REW displays the sum of the subwoofer and the woofer along with the phase curves. Slide the red slider and watch what happens to the frequency response. Your goal is to find a setting which is the "least suboptimal". Once you find it, click on "Aligned copy" for the subwoofer and woofer.

Then add "L Sub" to "L Woof" with Trace Arithmetic A+B. Then right click on A+B and "Make Excess Phase Copy". View the Group Delay (GD tab) and look for spikes. You will see that it is mostly flat, which means you can attempt a minimum-phase inversion. If you do see spikes, you can attempt to fix them with an all-pass filter. It's a bit difficult to explain how to do this in a forum post, so I won't. Basically involves exporting a copy to rePhase and reimporting it to REW.

Now you can stop right here, because hopefully playing with the curves should demonstrate what I was talking about. But if you want to have some fun, i'll explain how to do a minphase inversion. Continue with these steps.

Rename "A+B" to "Sub+Woof aligned". In the "SPL&Phase" tab, select "Sub+Woof Aligned", then click on "IR Windows". Choose "Add FDW 15 cycles" then close the IR windows dialog box. Then right click on the measurement pane and choose "Make minimum phase copy". REW creates a new curve called "Sub+Woof Aligned-MP".

Now we invert it. Click on "Trace Arithmetic" and do a 1/A on "Sub+Woof Aligned-MP". Set max gain to 0dB. Rename 1/A to "minphase inversion". The minphase inversion is your correction filter. If you want a preview of what it will look like, do a convolution with "Trace Arithmetic A*B", with A=minphase inversion, and B="Sub+Woof Aligned". Examine the result.
 

Attachments

  • Sub vs Woof.zip
    1.1 MB · Views: 20
Last edited:
I was trying to figure out if it is feasible to improve phase/coherence when using an automated DRC like MathAudio RoomEQ. From what I understand one of the downsides of automated systems like this is their correction (or not) of phase.

Not sure if this is even possible however. Any input welcome!
I once ask one of the developers at Mathaudio if they correct time alignment/phase they do but don't explain how quite understandebly ( commercial point of view) so i guess pre post mathaudio measurment or for that matter any other DSP brand with REW could reveal more probably. Thought @dominikz did such comparison probably a impuls respons measurment but not sure.
 
Last edited:
Trying to clearly understand the differences between phase shifts and time delays has been a challenge to wrap my head around. My less than solid understanding is that trying to correct phase using a time shift (delay) is suboptimal. Maybe it is just semantics but your statement above is confusing me. Thanks.
Here are different phase operations for comparison. This digram shows the frequency domain as phase is part of the frequency domain view of things.

green: The "original", in this case a nearly ideal phase curve, very close to constant phase ≈ 0°
blue: phase shift (180°), at each frequency the phase is changed a fixed amount (of angle)
pink: delay (7ms), the phase changed is frequency dependent, higher frequency -> greater phase change
red: this is how the phase looks most of the time. This is neither a constant phase change nor a constant delay.
A delay will create too much phase shift in higher frequency, a phase shift (i.e.180° =3,142 rad polarity switch) creates too much phase shift in other regions.

Phase.jpg

The point being of course that the phase curves for sub and main will be different.

It is necessary to bring the phase curves in the crossover regions on top of each other. Nice to have is a phase curve that is close to constant (≈0°).
For this alignment it is necessary to have
A. time alignment (impulses start at the same time)
and
B.
phase alignment (sound from sub and main "work together" instead of canceling.

The problem is that changing the phase will change the time alignment, because in the region of the phase change there will be created a group delay.
And the "correction" with a delay will create a phase change in all frequencies and not a constant one.
And last there are phase deviations that cannot corrected with neither method and (inverted) all pass filters are necessary.

To reach alignment one probably needs some iteration with going back and forth between time domain (delay) and frequency domain (phase) until it fits convincingly.

For time alignment the use of wavelets with a tapered leading edge is not necessarily helpful as the start will be hard to gauge and the impulse peak (envelope) is corrupted by reflections (in "small" listening rooms) and will not give the correct delay.
For phase alignment a wavelet with narrow bandwidth (and tapered leading edge) IS helpful.
 
Last edited:
Here are different phase operations for comparison. This digram shows the frequency domain as phase is part of the frequency domain view of things.

green: The "original", in this case a nearly ideal phase curve, very close to constant phase ≈ 0°
blue: phase shift (180°), at each frequency the phase is changed a fixed amount (of angle)
pink: delay (7ms), the phase changed is frequency dependent, higher frequency -> greater phase change
red: this is how the phase looks most of the time. This is neither a constant phase change nor a constant delay.
A delay will create too much phase shift in higher frequency, a phase shift (i.e.180° =3,142 rad polarity switch) creates too much phase shift in other regions.

View attachment 450331
The point being of course that the phase curves for sub and main will be different.

It is necessary to bring the phase curves in the crossover regions on top of each other. Nice to have is a phase curve that is close to constant (≈0°).
For this alignment it is necessary to have
A. time alignment (impulses start at the same time)
and
B.
phase alignment (sound from sub and main "work together" instead of canceling.

The problem is that changing the phase will change the time alignment, because in the region of the phase change there will be created a group delay.
And the "correction" with a delay will create a phase change in all frequencies and not a constant one.
And last there are phase deviations that cannot corrected with neither method and (inverted) all pass filters are necessary.

To reach alignment one probably needs some iteration with going back and forth between time domain (delay) and frequency domain (phase) until it fits convincingly.

For time alignment the use of wavelets with a tapered leading edge is not necessarily helpful as the start will be hard to gauge and the impulse peak (envelope) is corrupted by reflections (in "small" listening rooms) and will not give the correct delay.
For phase alignment a wavelet with narrow bandwidth (and tapered leading edge) IS helpful.
Thanx for your explanation for the first time i get a idea what the differences are between phase an time alignment an it consequences. Basicly you could do a (probably al ready done) pre post measurment of let say Dirac compared to mathaudio room eq an judge wich one handle phase an time alignment best. But on the other hand Mathaudio want you to do multi measurements ( i do 25 measurments in a squere meter with a vertical placed measuring mic) because their algo could combine this multimeasurment for best result. Than we have another difference in probably end result compared with Dirac or other DSP solutions. Comparing on best result is so difficult an probably highly subjective especially if you use the common or custom made target curves to create a personal maximum transparency.

Mathaudio on their website:

"On the other hand, the multipoint equalization is not simple: both the volume and the phase of the testing signal are very different in different points of the room. Simple averaging is not applicable. MathAudio Room EQ applies a state-of-the-art multipoint correction algorithm which ensures the best possible improvement in every point of the listening area."
 
Last edited:
This measurement was made with no filtering beyond the default that can't be changed. I am assuming is a rather heavy handed LF boost to make the 20 Hz response look good and then a brick wall high pass just below 20 Hz to protect the driver from over excursion and prevent warrantee claims. After understanding how these undersized subs work it is not a surprize that they have DSP artifacts. I have a large sealed 12" passive sub that shows almost no group delay and no pre-ringing. I will try addng DSP like I described above and see what happens.

I saw the mdat of your sub measurement some time ago, but simply haven't opened to examine it until now.

67.png 68.png 69.png 70.png 71.png 72.png

Spectrogram:
73.png 74.png
*Interestingly, the FIR filter also fixed whatever little apparent "pre-ringing" was recorded in that NF measurement as visible in the spectrogram. :)

Adding an FIR filter in the chain really shouldn't produce any audible "pre-ringing"/precausal/acausal artifacts. Although, you can see the transition in the excess phase/GD correction approximately under 11 Hz and above maybe 300 Hz is a bit iffy using only REW. Eh, it's quicker for me to generate the filter using REW rather than rePhase so I'll leave it at that.
 

Attachments

  • invert_NF_excess_phase_10-500Hz_SVS-SB-3000.zip
    2.5 MB · Views: 22
Last edited:
I saw the mdat of your sub measurement some time ago, but simply haven't opened to examine it until now.

View attachment 451021 View attachment 451020 View attachment 451019 View attachment 451018 View attachment 451017 View attachment 451016

Spectrogram:
View attachment 451025 View attachment 451024
*Interestingly, the FIR filter also fixed whatever little apparent "pre-ringing" was recorded in that NF measurement as visible in the spectrogram. :)

Adding an FIR filter in the chain really shouldn't produce any audible "pre-ringing"/precausal/acausal artifacts. Although, you can see the transition in the excess phase/GD correction approximately under 11 Hz and above maybe 300 Hz is a bit iffy using only REW. Eh, it's quicker for me to generate the filter using REW rather than rePhase so I'll leave it at that.
I don't know if this is related, but if your sub or speakers is using low frequency boost DSP to increase low end extension, then isn't the only concern whether or not it can produce that low end without unreasonable distortion at the desired SPL. As long as distortion level is acceptable then should be ok, I'm not sure why people are talking beyond frequency response & distortion measurements for such matters? I mean it seems simple enough when you base it on that.
 
I don't know if this is related, but if your sub or speakers is using low frequency boost DSP to increase low end extension, then isn't the only concern whether or not it can produce that low end without unreasonable distortion at the desired SPL. As long as distortion level is acceptable then should be ok, I'm not sure why people are talking beyond frequency response & distortion measurements for such matters? I mean it seems simple enough when you base it on that.
The problem is pushing LF down with a boost requires a strong High Pass "protection" filter which is what causes the crazy high Group Delay on a sub like this. Audibility is not proven but 100 ms is bordering on crazy and almost has to be audible (10 ms is limit for lip sync). Radical group delay like this also make integrating the subs much more difficult. If you look at the tests linked to up thread these small SVS subs have between 30% and 100% distortion at 20 Hz which is not uncommon for other "too small enclosure" subs. As I have become educated the hard way (spending hard earned money) I now realize that many subs are designed to meet marketing specs (SPL at 20 Hz) and sacrifice real life sound quality to do so.
 
I'm not sure why people are talking beyond frequency response & distortion measurements for such matters? I mean it seems simple enough when you base it on that.

Phase is half of the frequency response. You could create an EQ that produces identical magnitude graphs, too, quite easily. Identical magnitude trace plots do not really mean measurements have the same frequency response at all. The idea is not all too different of a person simply insisting in only looking at the on-axis trace curve of the spinorama and neglecting everything else.

For example:
75.png 76.png 77.png 78.png 79.png 80.png
*Very similar "forced" magnitude response curves by using one of the EQ'd sum alignment sub+right speaker results as the "target curve" template

Nope, these don't have the same frequency response at all... similar, maybe, but not the same! The two IRs (sub and right speaker) measured in-room do not sum perfectly either way — notably, some of the resulting sum alignments require more EQ gain applied vs others:

1747364767966.png 1747366903114.png
Less EQ gain needed (FIR equalized speaker) = less distortion at louder listening volume levels


Complete mdat here:
 

Attachments

  • DESK - BM R - force match same target curve EQ but different alignments 1.zip
    3.3 MB · Views: 21
  • DESK - BM R - force match same target curve EQ but different alignments 2.zip
    4.3 MB · Views: 20
  • Gain difference.zip
    4.3 MB · Views: 17
Last edited:
Phase is half of the frequency response. You could create an EQ that produces identical magnitude graphs, too, quite easily. Identical magnitude trace plots do not really mean measurements have the same frequency response at all. The idea is not all too different of a person simply insisting in only looking at the on-axis trace curve of the spinorama and neglecting everything else.

For example:
View attachment 451268 View attachment 451269 View attachment 451270 View attachment 451271 View attachment 451272 View attachment 451273
*Very similar "forced" magnitude response curves by using one of the EQ'd sum alignment sub+right speaker results as the "target curve" template

Nope, these don't have the same frequency response at all... similar, maybe, but not the same! The two IRs (sub and right speaker) measured in-room do not sum perfectly either way — notably, some of the resulting sum alignments require more EQ gain applied vs others:

View attachment 451291 View attachment 451301
Less EQ gain needed (FIR equalized speaker) = less distortion at louder listening volume levels


Complete mdat here:
I mean I'm talking about the anechoic chamber frequency response, and the sub manufacturer using DSP to EQ up the low end to gain more extension. So, yep, I'm not talking about in room measurements. I mean to me what's important re these sub designs is that distortion is ok at that lower end that they're boosting up - if the distortion is ok at the required SPL then I don't see a problem. I just think things can be simplified by saying lets just make sure the distortion and frequency response is ok.

The problem is pushing LF down with a boost requires a strong High Pass "protection" filter which is what causes the crazy high Group Delay on a sub like this. Audibility is not proven but 100 ms is bordering on crazy and almost has to be audible (10 ms is limit for lip sync). Radical group delay like this also make integrating the subs much more difficult. If you look at the tests linked to up thread these small SVS subs have between 30% and 100% distortion at 20 Hz which is not uncommon for other "too small enclosure" subs. As I have become educated the hard way (spending hard earned money) I now realize that many subs are designed to meet marketing specs (SPL at 20 Hz) and sacrifice real life sound quality to do so.
Re the distortion in the low end, you have to pick what you deem acceptable, but yeah my main argument was that I'm sure we can simplify things by just looking at distortion and frequency response. Re "delay" that you mention are you saying that all frequencies are delayed by 100ms in some of these subs in terms of based on when they first receive the electrical signal from your DAC?
 
Back
Top Bottom