## Alternative to VBA

### Alternative to VBA

I have been chatting with Uli offline about other options of Bass equalisation other than VBA. Uli has come up with another way of doing prefiltering.

Here are the steps

1. load pulses Pulse48L and Pulse48R

2. think about the height position of a possible target curve, lets use an example 6 dB. For safety add 1 or 2 dB and keep the value in mind.

3. calculate FD-Functions - Amplitude Inversion - linearphase and FD-Functions - Amplitude Limiter with value -8 dB (= inverse of 6+2 dB) for both pulses

4. apply TD-Functions - Gain +8 dB to both inversions

5. search for a proper frequency f below 200 Hz where both inverses have a value of 0 dB.

6. calculate TD-Functions - Phase Extraction - minimumphase below=0 and above=f. The result is now an unsmoothed filter which suppresses all peaks above 8 dB. Whereas dips are not in consideration.

7. Save the results as preL and preR and apply them in macro0. That's it.

This is my Pulse L and R

With Pre filter loaded

Here are the steps

1. load pulses Pulse48L and Pulse48R

2. think about the height position of a possible target curve, lets use an example 6 dB. For safety add 1 or 2 dB and keep the value in mind.

3. calculate FD-Functions - Amplitude Inversion - linearphase and FD-Functions - Amplitude Limiter with value -8 dB (= inverse of 6+2 dB) for both pulses

4. apply TD-Functions - Gain +8 dB to both inversions

5. search for a proper frequency f below 200 Hz where both inverses have a value of 0 dB.

6. calculate TD-Functions - Phase Extraction - minimumphase below=0 and above=f. The result is now an unsmoothed filter which suppresses all peaks above 8 dB. Whereas dips are not in consideration.

7. Save the results as preL and preR and apply them in macro0. That's it.

This is my Pulse L and R

With Pre filter loaded

### Re: Alternative to VBA

After going through all the macros

Test convolution

Test convolution

### Re: Alternative to VBA

Hi,

This is an interesting solution. It is basically the same as creating the pre-filter with an IIR filter, but much easier and more refined taking into account mainly all peaks below 200Hz instead of only concentrating on the main room mode peak.

Fujak in aktives-hoeren forum recommended to use 1/12 octave smoothing instead of psychoacoustic smoothing and 40/2 values for FDW in Macro 1. I think this goes into the same direction, to mainly not smooth out the area below 200Hz for following minimal phase f-curve correction.

Would be interesting to compare both results and also compare them to VBA results.

Best regards,

Jörn

This is an interesting solution. It is basically the same as creating the pre-filter with an IIR filter, but much easier and more refined taking into account mainly all peaks below 200Hz instead of only concentrating on the main room mode peak.

Fujak in aktives-hoeren forum recommended to use 1/12 octave smoothing instead of psychoacoustic smoothing and 40/2 values for FDW in Macro 1. I think this goes into the same direction, to mainly not smooth out the area below 200Hz for following minimal phase f-curve correction.

Would be interesting to compare both results and also compare them to VBA results.

Best regards,

Jörn

### Re: Alternative to VBA

Please note that the octave smoothing is correcting dips much more than the psychoacoustic smooting. You can use the octave smoothing but I do not recommend it. The alternative VBA described in this topic does not care about dips. It concentrates on peaks. A variation is to run FDW before step 7 described above.

Stay well tuned

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

### Re: Alternative to VBA

Hi Uli,

I compared some PSY smoothed pulses with octave smoothed curves. To my understanding it looks like PSY does some max envelope between a strong and a light smoothing, so that dips are "filled up" and peaks remain nearly untouched. The VBA alternative here works with no smoothing, taking also dips into account (like octave smoothing) but only down to the limit set. The 1/12 octave smoothed curves remain nearly unchanged in low frequency area, keeping nearly all peaks and dips here.

If in PSY dips are filled up and the target curve lies below such filling line between 2 peaks this would lead to a further reduction of SPL in the dip area due to the correction, so I do not see the benefit of such correction bahaviour. What is the benefit of doing this?

Best regards,

Jörn

I compared some PSY smoothed pulses with octave smoothed curves. To my understanding it looks like PSY does some max envelope between a strong and a light smoothing, so that dips are "filled up" and peaks remain nearly untouched. The VBA alternative here works with no smoothing, taking also dips into account (like octave smoothing) but only down to the limit set. The 1/12 octave smoothed curves remain nearly unchanged in low frequency area, keeping nearly all peaks and dips here.

If in PSY dips are filled up and the target curve lies below such filling line between 2 peaks this would lead to a further reduction of SPL in the dip area due to the correction, so I do not see the benefit of such correction bahaviour. What is the benefit of doing this?

Best regards,

Jörn

### Re: Alternative to VBA

Jörn,

you may consider the correction as the inverse of the smoothed curves. Now assume the following. The octave curve has a max. peak of +10 and max. dip of -10. Whereas the the psy curve has a max. peak of +10 and a max dip of -5.

So the correction will show up -10 for correcting the peak and +10/+5 for correcting the dip (octave/psy). Thus the octave correction will boost the driver by +5 more than the psy correction.

Now we know that boosting dips is a critical topic. Thus limiting the boost is a good idea. Acourate is doing this by the psychoacoustic calculation in time domain. Whereas competitors need to calculate averages by multiple measurements.

you may consider the correction as the inverse of the smoothed curves. Now assume the following. The octave curve has a max. peak of +10 and max. dip of -10. Whereas the the psy curve has a max. peak of +10 and a max dip of -5.

So the correction will show up -10 for correcting the peak and +10/+5 for correcting the dip (octave/psy). Thus the octave correction will boost the driver by +5 more than the psy correction.

Now we know that boosting dips is a critical topic. Thus limiting the boost is a good idea. Acourate is doing this by the psychoacoustic calculation in time domain. Whereas competitors need to calculate averages by multiple measurements.

Stay well tuned

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

### Re: Alternative to VBA

Hi Uli,

everything is relative, no? In your example you set +10/-10 in relation to a target line on the zero level to which the inverse is calculated. But what if Target line is the -10 level? In this case you cut the dips you filled with the psy calculation for another -5dB while with an octave smoothing it would remain "untouched". But I understand the idea of not boosting dips and limiting dynamic range..

Best regards,

Jörn

everything is relative, no? In your example you set +10/-10 in relation to a target line on the zero level to which the inverse is calculated. But what if Target line is the -10 level? In this case you cut the dips you filled with the psy calculation for another -5dB while with an octave smoothing it would remain "untouched". But I understand the idea of not boosting dips and limiting dynamic range..

Best regards,

Jörn

### Re: Alternative to VBA

I have been experimenting with VBA on my 2-channel passive speaker system. And I appreciate the effect on top of the convolution filter.

I’m about to try the Alternative to VBA to see if I like it.

And then my mind keeps wondering, what if I do a VBA, and then the remaining bass peaks that are not taken care of by VBA, I use the Alternative to VBA to get rid of them first.

But ultimately, the point of confusion is why does the main convolution filter generated by Acourate from the target curve not produce the same results? As in, why do I need the VBA or Alternative to VBA pre-filters in the first place?

Is it because the psychoacoustic smoothing on the measured Pulse would remove some specific bass peaks so the main convolution filter would not adequately correct for them?

Or is it that it’s better to correct bass peaks using more traditional IIR type filter or using VBA first, and then the convolution filter is better for other frequency response and phase issues?

Or is it because once you have imperfect crossovers, speaker frequency response, room response, you’re always living with compromises so it just becomes trying out different methods of correction to compensate to reduce the compromises involved? As in, no filter is going to get you back to a perfect speaker with active crossovers in an anechoic chamber so all DSPs are compensatory with their own sets of trade-offs?

I probably shouldn’t be too philosophical and should just play around with more filters and listen to what I like. But it would be good to understand the science better.

I’m about to try the Alternative to VBA to see if I like it.

And then my mind keeps wondering, what if I do a VBA, and then the remaining bass peaks that are not taken care of by VBA, I use the Alternative to VBA to get rid of them first.

But ultimately, the point of confusion is why does the main convolution filter generated by Acourate from the target curve not produce the same results? As in, why do I need the VBA or Alternative to VBA pre-filters in the first place?

Is it because the psychoacoustic smoothing on the measured Pulse would remove some specific bass peaks so the main convolution filter would not adequately correct for them?

Or is it that it’s better to correct bass peaks using more traditional IIR type filter or using VBA first, and then the convolution filter is better for other frequency response and phase issues?

Or is it because once you have imperfect crossovers, speaker frequency response, room response, you’re always living with compromises so it just becomes trying out different methods of correction to compensate to reduce the compromises involved? As in, no filter is going to get you back to a perfect speaker with active crossovers in an anechoic chamber so all DSPs are compensatory with their own sets of trade-offs?

I probably shouldn’t be too philosophical and should just play around with more filters and listen to what I like. But it would be good to understand the science better.

### Re: Alternative to VBA

Indeed a correction is always a compromise. This includes the psychoacoustic processing, the smoothing and the windowing.

Now the VBA or alternative VBA approach takes place before room macro1. So it allows to use prefilters BEFORE all the processing in macro1. Thus the prefilters are independent.

I like to give some easier example for better understanding:

a multiway speaker has its own behavior which is heavily influenced by the crossovers. You can measure the speaker in the room (the usual case) and you get a mixed result of drivers, crossovers and room. Now a necessary FDW (for the room) will also be applied to the inherent answer of the crossovers and drivers.

When you measure the speaker in an anechoic chamber you mainly measure drivers + XOs. And you can create a prefilter independent of the room.

So later you can apply such a prefilter on the room measurement before macro1 which then processes mainly the room behaviour.

So the idea is to split different influences. The VBA approach simply tries to simulate the basic room mode and to prefilter it first.

Of course in reality it is always difficult to separate single influences from a total mix in the measurement. There is always a compromise. And that's why the result is different with different approaches.

Now the VBA or alternative VBA approach takes place before room macro1. So it allows to use prefilters BEFORE all the processing in macro1. Thus the prefilters are independent.

I like to give some easier example for better understanding:

a multiway speaker has its own behavior which is heavily influenced by the crossovers. You can measure the speaker in the room (the usual case) and you get a mixed result of drivers, crossovers and room. Now a necessary FDW (for the room) will also be applied to the inherent answer of the crossovers and drivers.

When you measure the speaker in an anechoic chamber you mainly measure drivers + XOs. And you can create a prefilter independent of the room.

So later you can apply such a prefilter on the room measurement before macro1 which then processes mainly the room behaviour.

So the idea is to split different influences. The VBA approach simply tries to simulate the basic room mode and to prefilter it first.

Of course in reality it is always difficult to separate single influences from a total mix in the measurement. There is always a compromise. And that's why the result is different with different approaches.

Stay well tuned

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

Uli

Moderator

Acourate system: JRiver/Roon -> AcourateConvolver -> Merging Hapi + RME ADI192 DD + Apogee BigBen) -> TacT M/S2150 amps -> DIY horn speakers

### Re: Alternative to VBA

Thank you, Uli. The explanation was super helpful.

For me, the VBA prefilter (after figuring out the optimal cutoff frequency and gain) produced better results than the Alternative to VBA for my system (and to no VBA). So I’m very happy that VBA exists to help me get even more out of my system. Thanks.

For me, the VBA prefilter (after figuring out the optimal cutoff frequency and gain) produced better results than the Alternative to VBA for my system (and to no VBA). So I’m very happy that VBA exists to help me get even more out of my system. Thanks.