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

Audibility of clean phase response at low freq in speakers?

Joined
Sep 17, 2023
Messages
27
Likes
13
I've been dorking about with my speaker setup again. (Neumann KH-120 II, 2 x SVS SB-1000, Minidsp Flex, REW, heavily treated small room)

I did some experiments with getting a nice flat phase response on my speakers using rephase, simulating it first by using a phase-adjustment audio plugin on some test files.

I was able to reliably blind ABX spot a solid difference with the tidied-up phase down to about 150Hz, and I've got that running on my minidsp as a FIR filter. Subjectively, hi-hats and really impulsive stuff sounded a tiny bit cleaner. It was a minor change though.

My step response continued to be a bit gross to look at, though. So I've been experimenting with using some more heavyweight software and processes to get flat phase down to 20Hz.

I was able to get a ridiculously clean step response from the speakers (required an epic processing delay though, couple hundred msec? could probably be optimized a little), but unlike the higher-frequency phase processing, I couldn't reliably tell when it was active in a blind test. Like, it sounded no different to me at all.

Does anyone have any links for good docs on where the hearing limits are for phase accuracy? Just a bit curious and maybe some reading will save me doing some more experiments. Thanks.
 
Give yourself some time listening to the phase correction engaged vs. off (and no other changes, of course).

IME, it all depends on what the sub-to-mains XO is like. If it is the usual LR4@80Hz (with a clean implementation, that is, phases of both ways must track precisely) then unwrapping the phase contribution can sometimes be clearly audible on bass notes from electric bass guitar (with strong even-order overtones) where timbre changes from the different waveforms give clues.

With more transient signals like plucked upright bass, often a tighter, more compact and faster "gestalt" of the notes can be perceived.

Of course room mode issues may drown the improvement, and with a sloppy initial sub-to-main XO the phase correction is much less effective.

Finally, some people appear to be less sensitive to phase errors than others, that also may have to do with training. Did you do experiments with headphones by adding in excess phase on the bass, or simply flipping polarity?
 
Sub-to-mains crossover is LR24 at 70Hz, it's pretty clean (see L+R waterfall and phase graphs). I've also attached (left-only) step and phase measurements run through the 600deg phase correction - it's just in my DAW at the moment, I haven't integrated it in to my full playback setup (which would be via a big IR in EqualizerAPO if I go that way).

The mess at 700Hz is desk bounce.

I just tried again, still can't really hear anything different with the phase adjustment bypassed/on.
 

Attachments

  • L+R 20251228.png
    L+R 20251228.png
    1.5 MB · Views: 56
  • L+R step 20251228.png
    L+R step 20251228.png
    212.8 KB · Views: 309
  • L+R phase 20251228.png
    L+R phase 20251228.png
    201.3 KB · Views: 59
  • L phase corrected step 20251228.png
    L phase corrected step 20251228.png
    201.5 KB · Views: 58
  • L phase corrected phase 20251228.png
    L phase corrected phase 20251228.png
    232.5 KB · Views: 48
...maybe there's a tiny bit more sub chest thump with it active but that could maybe just be the 20Hz pre-echo from the phase adjustment?
 
Your MiniDSP has at most 2048 taps per input channel at 96kHz. This limits how much FIR correction you can do at low frequencies. So even if you design a nice correction in rePhase, you will need to cut down the correction to the available number of taps that you have, which limits the excess phase correction.

1766921770189.png


This is what you can achieve with 65536 taps at 48kHz. You could probably get something similar with as few as 16384 taps.

1766922178943.png


And this is what it looks like before DSP.

Does it sound better? I think so. My system delivers a LOT of clarity and impact. But I have to warn you - there is far from universal agreement on this, and what I said is my subjective opinion. A lot of people don't think there is any correlation between a good looking step response and audibility.
 
Sub-to-mains crossover is LR24 at 70Hz, it's pretty clean (see L+R waterfall and phase graphs).
index.php

Well, this is before phase correction? If so, this is not a standard LR XO alignment. The sub starts too early and in the wrong direction. The individual step responses must start at the same time and in the same direction (4th-order LR has both ways in same polarity). Did you engage a polarity flip on the sub and a delay on the mains? Further, the KH120-II has a 2nd-order subsonic filter at 40Hz for a total 4th order acoustic bass rolloff, therefore a rather complex XO filter (4th-order shelf) is necessary to arrive at a 70Hz LR4 acoustic.

So, this is not really an ideal starting point.

Anyway, you seem to have chosen true flat phase even down at 20Hz which is an overcorrection to linear phase and IME doesn't really cut it. While it makes the peak of sub-bass tonal transient faster and more co-incident in time with the rest of the signal it also adds pre-ringing and time-smear which can make some sounds artificial. Deep kick-drums etc now have the very low bottom start before the main event which sound very unnatural, slightly "spongy" and not very "crisp", once one has noticed it.

So, maybe these two factors inhibit much of perceived change in the time domain. But the timbre change should still be audible. Try a 2-tone signal of 45Hz fundamental with 90Hz 2nd harmonic (both at the same level and both with a cosine start phase of 0degree to establish the correct asymmetric waveform). The 90Hz overtone effectively has inverse polarity in the uncorrected version, waveform looks like the original with a polarity inversion. It should sound different from what you hear with the corrected version. Control check is to use only corrected version (or headphones) and test with original waveform vs. polarity flipped which tests for the same waveform differences, in the end. Most people tend to hear a difference and can successfully ABX it.
 
the "before" graph is with the minidsp correcting phase down to about 120Hz-ish (can't remember where i had it set, the rephase files are long gone). this was audible as an improvement in blind ABX tests.

the "after" graph is with additional phase mangling using VSTs, playing the sweep (and some test files) back through Reaper. it all seems a bit busted though. the plan was to use equalizerapo to do this if i went down that path.

the sub integration was endlessly hand-tweaked to get the transition as smooth as i could get it. both the KH-120 II's and the SVS subs are running loads of their own DSP. it definitely *sounds* good, and test tracks with bass sweeps are perfect from 200Hz down to about 30Hz.

will poke around a bit more tomorrow - mostly i'm interested if there's any published studies on audibility of phase under, say, 100Hz.
 
mostly i'm interested if there's any published studies on audibility of phase under, say, 100Hz.
This is topic not that well researched, I fear.
I found more rewarding to do my own studies, all you need is a good (low bass distortion) headphone for basic tests if phase distortion is audible for you.

For the timbre change test all you need is the mentioned 2-tone -- actually a set of these at different frequencies --, but with the 2nd harmonic 0.5Hz off from the nominal frequency. That effectively cycles through all possible waveforms generated by phase distortion with a 2 seconds period. Either you hear a periodic timbre modulation (change of perceived "fatness") or you don't. Because all possible phase relationships are covered, this also works on any low-distortion speaker, regardless of its phase response. IME this test works best at really low levels, with the ears not being strained at all.

For time-domain effects, to be tested with headphones, one can create a bunch of excess-phase kernels and some dummy kernels with the same pulse delay and do A/B or even full ABX, using a convolver, for example with the foobar audio player, or using a VST convolver plugin.
 
...going to zero out a spare config slot on the minidsp and see if i can get the speaker/sub integrating properly without inverting the subs tomorrow.
 
ok yeah, you were right. although it took a whole day of dorking about to find a way to get it working.

i now have two operation modes, one with 6ms delay in the mains which is roughly equivalent to my old setup, and an equalizerAPO chain with a 40ms IR giving me the step response measured below. they have approximately the same freq. response curves, but the full phase-corrected system has a bit more impact on kick drums. i could set up a proper blind ABX to check i'm not imagining the effect, but it seems pretty audible. there's a chance i'm hearing some other system artifact though.
 

Attachments

  • 1767005379427.png
    1767005379427.png
    102.4 KB · Views: 45
^ That looks much better than before and I'm sure it sounds better, too. The rising ridge after the initial edge is somewhat suspicious but unlikely to have a major impact when corrected to a full textbook style step response.
 
that step response shape is related to my room target curve (6dB bass boost, rolls off under 30Hz). the attached diagram has an ideal min phase step response for the target curve, vs the measured curve following all the processing.
 

Attachments

  • 1767012245381.png
    1767012245381.png
    138.5 KB · Views: 47
  • 1767012431826.png
    1767012431826.png
    162.9 KB · Views: 49
fwiw - the effect was basically inaudible until i got it 100%, at which point the low end all coalesced beautifully. the change is not subtle at all (via single blind level-matched ABX, i needed a helper to toggle the option), mostly drums seem to kick harder. lost a couple of dB headroom though.

the way i got there: after arsing about uselessly for a few hours, i found a new video by OCA ("The Best $0 Upgrade for Your Audio Setup"), who i believe is around here on this forum somewhere, which gave me some new ideas (thanks)

i didn't end up using rephase though. after re-integrating and DSPing speaker/sub integration with REW, i did a bunch of fresh measurements, took a smoothed average, generated excess phase plots and then took 1/A of those, exported that as an IR, and then loaded that into equalizerAPO. experimented a bit with IR size to get the best balance of latency/impact.
 
A couple thoughts:

• The human ear is very tolerant of loudspeaker phase distortions. You can hear them, but they don’t stand out like frequency response anomalies do.

• With group delay in bass speakers running into dozens of milliseconds and the processing latency of FIR filters growing almost exponentially as the frequency being processed decreases, it’s no surprise the latency of your playback system is over 100 milliseconds.

The whole deal with FIR processing latency is still an issue thats answer seems to be squarely rooted in CPU power.

Your process for DIYing this is pretty interesting.

I’m seriously considering going the same route for my next speakers. It’s too late for you to consider, but I’m looking at the Colinear DSP-8C interface and DEM Audio LinFIR software for producing the crossovers and EQ.



The great thing about Colinear’s box is that it’s set up for running FIR filters and has hardware processing specifically for accelerating calculations for both FIR and IIR filters.

Most of the processors that I’ve seen on the market have around 4500 taps for FIR processing. The DSP-8C has 49,000!
 
Last edited:
The whole deal with FIR processing latency is still an issue thats answer seems to be squarely rooted in CPU power.
The CPU/DSP latency just adds to the problem, but it is not the problem. Long FIR filters simply need more samples and more samples means longer latency to fetch them. CPUs/DSPs should be plenty fast these days to have negligible overhead compared to this.
 
CPU overhead seems fine. Current additional latency is about 29ms across all processing (22ms in EqAPO, 5ms straight delay on minidsp for mains/sub integration, probably another 2ms in the Neumanns).

The improvement I mentioned is felt in the chest, rather than directly audible. Keep in mind the Neumanns are already super clean for phase above about 150Hz out of the box; this is on top of that.

Next problem is to figure out an easy way to switch between a couple of processing modes (EqAPO config change + Minidsp preset change) for when I need to run low latency. There's a homebrew API for the Minidsp at least, can probably hack together a script. (EDIT: used gbevin/sendmidi and mrene/minidsp-rs)
 
Last edited:
The CPU/DSP latency just adds to the problem, but it is not the problem. Long FIR filters simply need more samples and more samples means longer latency to fetch them. CPUs/DSPs should be plenty fast these days to have negligible overhead compared to this.

You need to understand what Amir is saying here. The latency associated with linear-phase FIR is a function of tap length and sampling rate. With linphase, the impulse is placed in the middle of the tap length. If you have 65536 taps, you need to wait for 32768 taps to pass through the convolver at a speed determined by your sampling rate. This means fewer taps or lower sampling rate = higher latency.

The situation is not the same if it's a minphase FIR. The impulse is placed at the beginning of the tap length, so its latency is comparable to minphase IIR. But the CPU requirements are much higher since you need to hold more samples in memory.

And BTW, @OCA released a new video, and it's a gem:


As with most of his videos, it will likely go over the heads of most people who are not well versed with DSP. I think this video is so important that I might start a thread and transcribe his video to text so that more people can understand it.
 
Last edited:
The whole deal with FIR processing latency is still an issue thats answer seems to be squarely rooted in CPU power.
It may be helpful to point out that any real time FIR filter has an intrinsic latency in addition to any processing/buffering latency. The latter can be reduced to effectively zero for any sane-length filter on modern hardware by utilizing partitioned convolution. The former cannot be reduced without modifying the filter. If one wants to "remove" 100ms of group delay at low frequencies in real time without changing the magnitude response, the only option is to delay higher frequencies to match.
 
As with most of his videos, it will likely go over the heads of most people who are not well versed with DSP. I think this video is so important that I might start a thread and transcribe his video to text so that more people can understand it.

Took me several hours to work through the filter creation steps with REW and rephase. I'm still a bit unclear on the IR windows for the final convolution of all the filters. And, yes, the excess phase thing goes over my head. In particular, the steps leading up to the FLphase and FRphase filters.
 
I've been dorking about with my speaker setup again. (Neumann KH-120 II, 2 x SVS SB-1000, Minidsp Flex, REW, heavily treated small room)

I did some experiments with getting a nice flat phase response on my speakers using rephase, simulating it first by using a phase-adjustment audio plugin on some test files.

I was able to reliably blind ABX spot a solid difference with the tidied-up phase down to about 150Hz, and I've got that running on my minidsp as a FIR filter. Subjectively, hi-hats and really impulsive stuff sounded a tiny bit cleaner. It was a minor change though.

My step response continued to be a bit gross to look at, though. So I've been experimenting with using some more heavyweight software and processes to get flat phase down to 20Hz.

I was able to get a ridiculously clean step response from the speakers (required an epic processing delay though, couple hundred msec? could probably be optimized a little), but unlike the higher-frequency phase processing, I couldn't reliably tell when it was active in a blind test. Like, it sounded no different to me at all.

Does anyone have any links for good docs on where the hearing limits are for phase accuracy? Just a bit curious and maybe some reading will save me doing some more experiments. Thanks.

I find it to be very audible.


As for music signals, to me it's more audible in a stereo bass setup, with music actually having stereo content in low frequencies where time domain performance tends to have an effect on perceived sense of space and auditory envelopment. Strictly mono, less so.
 
Back
Top Bottom