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

Room equalization through inverse delayed and attenuated bass signals

I've just tried out a few other continuous tones with OCA's IR and found some oddities.

Firstly I've only just noticed that his method has caused the t=0 impulse to be -4dB (~63%), which is a result of the 4dB he adds to the LP. You can see this on the impulse graph below when unticking the "Normalised" setting. So when I said before it's -4 then -8, if it was volume matched it be more like 0 then -4 at 33Hz?

Second thing I've noticed is the ~30ms delayed impulse appears in basically all frequencies. In the REW SPL graph you can see the LP cuts off the effect (the squiggle approaches 0), but at ~198Hz it is meant to be close to zero, and at 2kHz it reports as zero. But zooming in in Audacity reveals the delayed IR peak shows up at these freq too. I guess in effect it is "noise".

View attachment 301766
Edit: It seems the forum automatically scaled this large screenshot, so it's a bit hard to see.

Next I tried some short repeating tones (0dBFS, 500ms tone, 200ms silence, repeating) at different frequencies, starting at 33Hz (the first -EQ valley), and iterating towards 50Hz (the first +EQ peak). Here are those results;

View attachment 301767

It's evident that even with the main impulse being -4dB, these frequencies are really getting boosted as REW suggests they were, and this is causing the signal to clip.

Also of interest is how I have now included some silence at the end, so that it can calculate the "run off", which doesn't look good. At 33Hz (full -EQ) it seems to gain power at the end. I guess this is because the main impulse has moved in to silence, but the "cancellation impulse" is still at full power? Meanwhile at 50Hz (full +EQ) it loses power once the time aligned signal+delay becomes delay only.

In the next image I have zoomed in on the 33Hz runoff, and time aligned a normal 33Hz signal above it. You can see there is a small phase shift, but it is not shifted enough to be an actual "cancellation" wave.
View attachment 301768


Now I'm no expert, so I don't know if what I've done is even technically valid, but it doesn't look good. It kind of seems like this IR method is just a dynamic (in time and frequency) EQ.
Yes, you're adding a tail that you shouldn't add in an anechoic space. You are right, you'll get an increase in signal level when the cancelling effect of the original signal quits. This happens all the time in real rooms when a note stops and starts. It'll start out loud and then cancel down to a lower level. When the note quits it will momentarily get artifically louder before it quits fully in the room. We look at recorded bass pulses frequently where I work and we call this a "bow-wow" note. Sometimes it's the other way around. The note reinforces once the echo reaches the listening position, so it tapers up as the note starts and then tapers down when it stops playing. In either case, an inverse delayed signal at the appropriate volume can reduce these effects in a real room. The proof of it is looking at a spectrogram of a bass sweep in your room and seeing how much it cleans up in the time domain by applying appropriate counter "noise."
 
Last edited:
Can VBA be applied to multiple subs that are summed as one sub? Or should it be applied to each individual sub then sub the sums? Seems like the former?
At its core, VBA is an anti room mode signal and since they are independent of the LP or the speaker position (hence the name "standing" wave) can be implemented to any FIR filter active in a system in a symmetrical room but I've seen odd shape rooms benefit from slightly different VBA filters for the left and right speakers, I guess same would apply to multiple subs.
 
I've just tried out a few other continuous tones with OCA's IR and found some oddities.

Firstly I've only just noticed that his method has caused the t=0 impulse to be -4dB (~63%), which is a result of the 4dB he adds to the LP. You can see this on the impulse graph below when unticking the "Normalised" setting. So when I said before it's -4 then -8, if it was volume matched it be more like 0 then -4 at 33Hz?

Second thing I've noticed is the ~30ms delayed impulse appears in basically all frequencies. In the REW SPL graph you can see the LP cuts off the effect (the squiggle approaches 0), but at ~198Hz it is meant to be close to zero, and at 2kHz it reports as zero. But zooming in in Audacity reveals the delayed IR peak shows up at these freq too. I guess in effect it is "noise".

View attachment 301766
Edit: It seems the forum automatically scaled this large screenshot, so it's a bit hard to see.

Next I tried some short repeating tones (0dBFS, 500ms tone, 200ms silence, repeating) at different frequencies, starting at 33Hz (the first -EQ valley), and iterating towards 50Hz (the first +EQ peak). Here are those results;

View attachment 301767

It's evident that even with the main impulse being -4dB, these frequencies are really getting boosted as REW suggests they were, and this is causing the signal to clip.

Also of interest is how I have now included some silence at the end, so that it can calculate the "run off", which doesn't look good. At 33Hz (full -EQ) it seems to gain power at the end. I guess this is because the main impulse has moved in to silence, but the "cancellation impulse" is still at full power? Meanwhile at 50Hz (full +EQ) it loses power once the time aligned signal+delay becomes delay only.

In the next image I have zoomed in on the 33Hz runoff, and time aligned a normal 33Hz signal above it. You can see there is a small phase shift, but it is not shifted enough to be an actual "cancellation" wave.
View attachment 301768


Now I'm no expert, so I don't know if what I've done is even technically valid, but it doesn't look good. It kind of seems like this IR method is just a dynamic (in time and frequency) EQ.
VBA will work with no SPL offset to the lpf or a -4 dB offset to the lpf. +4dB is just an optimization merely based on the "frequency response" however, -4dB results in a smoother bass rolloff and improves phase response and group delay compared to the original response (+4dB introduces a fixed increase in GD).

Similarly, you can subtract the lpf from a Dirac pulse rather than add with it and if you don't invert the polarity of the lpf, this will still be the same filter.
 
Some follow-up questions:
To 2. EQ decreases volume at the listening position, so does VBA. However, the time signature would be different, right? Without EQ the room mode would be excited to a lesser
extent, whereas with VBA the first wave-front might be at full volume, but decay faster due to cancellation.
In practice, that could have the same benefit as non-ported designs have over ported ones, resulting in a punchier, less wobbly sound.
Is that right and are there measurements?

To 1. I do understand, that it's working well for the lowest mode. How about higher up in frequency >100Hz? You will have plenty of reflections of the initial sound and the anti-sound of the VBA.

To 3. Can you combine VBA with FIR?
Which software/setup is capable to do the calculation besides DIRAC ART on VBAs and also optimizes excess-phase and step-response? Math becomes quite complex if you plan to correct in the time-domain with multiple sources. I understand, that it's easy to delay the anti-sound by a fixed time w.r.t. to the main signal, but that might screw up the time response.
Acourate can't do that and in order not destroy the phase/excess-phase correction, it would be FIR filter working across all speakers.
There's bass lower down the frequency band and punchier around the first dip due to the improvement in that area and RT60 will improve for the first peak. The cost is though I wouldn't call it wobbly, it's not as fast. Faster versions are possible (i.e. -4dB offset to the lpf) but they do not improve the dips as nicely.

Lpf by definition fades a way after 100Hz.

Any filter you produce in REW can be exported as a FIR wave file. VBA doesn't intervene with phase response above 100Hz, I wouldn't worry about it destroying anything audible.
 
At its core, VBA is an anti room mode signal and since they are independent of the LP or the speaker position (hence the name "standing" wave) can be implemented to any FIR filter active in a system in a symmetrical room but I've seen odd shape rooms benefit from slightly different VBA filters for the left and right speakers, I guess same would apply to multiple subs.
so what you're suggesting is apply it to each sub and then sum them? Or should I operated on the summed response?
 
so what you're suggesting is apply it to each sub and then sum them? Or should I operated on the summed response?
How are you going to run 4 different FIR filters for four different subs?
 
You just gave me an idea though...

Why wait until the bass wave bounces from the rear wall and returns rather than send an inverted wave shortly after which will cancel it at the rear wall? Or just after it bounces frokm the rear wall before it reaches the LP...It will surely introduce less group delay and be more like Dirac ART ;)

I will work on this this weekend. You guys are very welcome to contribute ideas. We can use the other speaker as well.
 
How are you going to run 4 different FIR filters for four different subs?
1690577468500.png


it can do up to 2048 taps on one channel and 4096 taps overall.
1690577375530.png
 
You just gave me an idea though...

Why wait until the bass wave bounces from the rear wall and returns rather than send an inverted wave shortly after which will cancel it at the rear wall? Or just after it bounces frokm the rear wall before it reaches the LP...It will surely introduce less group delay and be more like Dirac ART ;)

I will work on this this weekend. You guys are very welcome to contribute ideas. We can use the other speaker as well.
after that, figuring out how to use multi-sub to do that :) People could get cheapo subs from big box stores and ebay, solely to get cheap Dirac ART.
 
  • Like
Reactions: OCA
View attachment 301913

it can do up to 2048 taps on one channel and 4096 taps overall.
View attachment 301912
It can do max 2 x 2042 taps, has to always reserve at least 6 taps at other channels. More importantly, you cannot design a VBA in rephase. Even if you go nuts and succeed to mimic it with multiple paragraphic phase and gain EQ filters, for 4 subs you have 1024 taps each with which at 96kHz sampling rate for MiniDSP, the best approximation you will get to a VBA filter would be something like the red lines below:

1690577979960.png


It's now possible to export a filter with 1024 taps from REW but REW cannot export as .bin.
 
It can do max 2 x 2042 taps, has to always reserve at least 6 taps at other channels. More importantly, you cannot design a VBA in rephase. Even if you go nuts and succeed to mimic it with multiple paragraphic phase and gain EQ filters, for 4 subs you have 1024 taps each with which at 96kHz sampling rate for MiniDSP, the best approximation you will get to a VBA filter would be something like the red lines below:

View attachment 301915

It's now possible to export a filter with 1024 taps from REW but REW cannot export as .bin.
The minidsp can take biquads for FIR filters. Would that work?
 
The minidsp can take biquads for FIR filters. Would that work?
In theory, it's possible to mimic a VBA with allpass and peak filters and convert into biquads but it's even easier to replicate it in rePhase and save as FIR filter.
Also, I’d do only 48kHz because I run Audyssey
I am not sure but I think MiniDSP 2x4HD FIR filters only work at 96kHz.
 
If you fancy, create a VBA for your room in REW, export it to rePhase, flatten phase and frequency response of that completely with paragraphic equalizers if you dare. Finally, invert it in "time" and export as bin. Then it can be used in MiniDSP as a VBA fiter ;)
 
In theory, it's possible to mimic a VBA with allpass and peak filters and convert into biquads but it's even easier to replicate it in rePhase and save as FIR filter.

I am not sure but I think MiniDSP 2x4HD FIR filters only work at 96kHz.
Just checked. You are correct it’s 96kHz
 
You just gave me an idea though...

Why wait until the bass wave bounces from the rear wall and returns rather than send an inverted wave shortly after which will cancel it at the rear wall? Or just after it bounces frokm the rear wall before it reaches the LP...It will surely introduce less group delay and be more like Dirac ART ;)

I will work on this this weekend. You guys are very welcome to contribute ideas. We can use the other speaker as well.
1690595429106.png

My filters are way too steep? How did you get yours to be that steep?

EDIT: They the rolloff dictates the slope. Despite my target curve for my sub dropping off steeply, I changed it to 18dB and it was a much friendlier outcome.

Edit again: it's doing it regardless of the roll off


Edit again again: seems you have to hit add offset to data. Otherwise, it only displays it but doesn't apply the math to the LPF
 
Last edited:
You just gave me an idea though...

Why wait until the bass wave bounces from the rear wall and returns rather than send an inverted wave shortly after which will cancel it at the rear wall? Or just after it bounces frokm the rear wall before it reaches the LP...It will surely introduce less group delay and be more like Dirac ART ;)

I will work on this this weekend. You guys are very welcome to contribute ideas. We can use the other speaker as well.
Other speakers would be very much like ART. Do you have additional speakers (such as subs)? Do you have a miniDSP?

Given that ART is, currently, is $10000 plus and when it finally does get to consumer AVR's it will still be $5000 or more (guessing it will be on upper mid-tier big brands with $1000 in licensing). Plus, Dirac is buggy and I find REW to give more consistent results.

I know the goal is always a measurement mic, computer, and free tools BUT I don't think requiring the miniDSP as a cost would be out of line given the alternative for active treatments and the impracticality of passive treatments for low frequencies.

EDIT: with a sound card, Tim Link has that app to create signal chains on channels, just the output is required.
 
Other speakers would be very much like ART. Do you have additional speakers (such as subs)? Do you have a miniDSP?

Given that ART is, currently, is $10000 plus and when it finally does get to consumer AVR's it will still be $5000 or more (guessing it will be on upper mid-tier big brands with $1000 in licensing). Plus, Dirac is buggy and I find REW to give more consistent results.

I know the goal is always a measurement mic, computer, and free tools BUT I don't think requiring the miniDSP as a cost would be out of line given the alternative for active treatments and the impracticality of passive treatments for low frequencies.

EDIT: with a sound card, Tim Link has that app to create signal chains on channels, just the output is required.
I sold my MiniDSP recently, it was the very first model "2x4 Balanced" and had minimal filter capacity and was introducing lots of delay.
 
I sold my MiniDSP recently, it was the very first model "2x4 Balanced" and had minimal filter capacity and was introducing lots of delay.
Those Flex's seem pretty nice.
 
I couldn't come up with a reliable method to use another speaker for VBA but I made some major improvements:

  • "Minimum phase" version of the VBA filter has the same effect on the frequency response and much lower group delay. No more slower bass
  • An SPL offset of +6dB instead of 4dB and cutoff frequency at the 3rd peak / 6th harmonic (instead of 5th) and a much steeper roll off (48 dB/oct instead of 18 db/oct)
  • Only one VBA filter calculated from the first peak of the "vector average" of the left and the right speakers
  • No polarity inversion for the LPF required, VBA filter is produced with A minus B trace arithmetic (subtracted from Dirac pulse)
  • Headroom required for clipping dropped from -6dB to -3dB

Here's how it looks like and the average response before & after:

1690656234447.jpeg


The delay calculation:

1690657286466.png


With 48 dB/oct rolloff, I guess REW filter ref time isn't calculated correctly and the VBA filter dip doesn't match with the response peak perfectly but comes close. You might want to play with the timing offset a bit for a precise match.

Frequency response (L+R) after VBA (green line) and some trimming with REW auto-eq :

1690658359282.jpeg


Group delay (green line is after VBA):

1690658273111.png


You can find the .mdat here:

 
Last edited:
Back
Top Bottom