Keith_W
Major Contributor
My previous Virtual Bass Array (VBA) attempt ended in failure. Now I have a different room configuration, and I have learnt a lot more ... so I thought I would try it again. I made a red hot attempt this time, this VBA has been 2 weeks in development, struggling with concepts, coming up with bright ideas (which in hindsight, weren't that bright), etc. But what I will describe here has a reasonable chance of working in other setups.
General Principles
A VBA can be thought of as a poor man’s double bass array (DBA). In a DBA, two banks of subwoofers are mounted on opposing walls, usually the front and rear walls. The purpose of the second subwoofer array is to cancel the sound from the first, thereby eliminating reflections and creating an infinitely long room as far as bass is concerned.
A VBA relies on the timing of reflections to emit a cancellation wave. If we time it correctly, we can hopefully improve the time domain characteristics. It will never work as well, because a DBA emits a plane wave. Two subwoofers do not emit a plane wave, instead two quarter-spherical waves are emitted (if the subwoofer is placed on the floor, against a wall). For corner placed subs, ⅛ of a sphere (an octant) is emitted.
For a VBA to work, we need to know:
1. When to inject the cancellation wave (the delay)
2. How loud the cancellation wave should be (the attenuation)
3. Whether the cancellation wave should have the same waveform as the initial wave.
How to determine the delay
Many VBA schemes rely on calculating the delay from room geometry. Some others by reverse-engineering the frequency response. This is why most VBA schemes fail. The timing of the cancellation impulse has to be determined with great accuracy, otherwise the “cancellation” impulse will actually contribute to ringing rather than improve it! This method (which I have not seen described anywhere else?) will get you to the “ballpark” delay with greater accuracy than any other method, but you will still need to fine tune the exact delay by experimentation.
There are two important insights before we begin our design:
1. the delay is always approximately twice the room length, and
2. the impulse response with a special test signal can be used to read the delays.
The delay is always approximately double the room length, regardless of the position of the speaker or the listener (@UliBru taught me this!). As you see from the diagram, sound is emitted from the subwoofer and reaches the main listening position (MLP plane) at a. The sound travels towards the back wall, reflects, and passes the MLP position again (b). It continues towards the front wall, reflects, and passes the subwoofer plane x. This is the point where the cancellation signal needs to be injected, and it is exactly twice the length of the room. The cancellation signal and the reflection (which has hopefully been attenuated) then travels towards the listener where it is heard again at c.
The same is true if we use the main speaker as the sound source. The cancellation wave needs to be injected at x which is exactly double room length. The time relationship between the cancellation wave and the reflection will remain the same, regardless of the position of the source or the observer. This rule breaks down for non-rectangular rooms and unusual speaker placements (e.g. diagonal speaker placement). However, the method for determining delays can still be used.
These events can be observed in the impulse response of a tweeter. a denotes the arrival of the direct sound, b is the reflection from the rear wall, and c is the reflection from the front wall. How do I know this? I did some math with room dimensions, listening position, and the speed of sound to determine the arrival times of the peaks. Then I looked for the peaks on the impulse response. I know for sure that the reflections I marked are front wall and rear wall reflections.
The delay between a and c is double room length. Therefore, c is when the cancellation impulse should be injected, or put another way, c = x.
We can improve our timing measurement by using an actual subwoofer impulse in place of the tweeter impulse. However, we can not use a conventional sine wave sweep, since the impulse is too long. What is needed is a very short impulse - ideally, a Dirac pulse. Acourate’s Sinc Pulse Recorder is not quite a Dirac pulse, but it is close. If you use REW, I suggest using the generator to send a single sine wave (tone burst generator) and using the oscilloscope to record the impulse.
I aligned the tweeter peak to coincide with the initial subwoofer peak. Notice that the subwoofer has a substantially time stretched impulse compared to the tweeter, and that the peaks align very nicely with the front wall and rear wall peaks we found on the tweeter response! I used the timing of the subwoofer peak at c as my delay.
Note that if you did not have the tweeter response to guide you, you would have a very difficult time determining which subwoofer peak corresponds to which reflection! In reality, c is likely to be already contaminated by reflections from other directions, so its position is not 100% certain. In my larger room, I am reasonably confident that it is real. If you are not confident, then use the tweeter peak as your delay. We will fine tune it later.
Determine the attenuation
Once the timing peaks have been identified, the amplitude of c can be divided by a to give an attenuation factor. In this case it was 0.688.
General Principles
A VBA can be thought of as a poor man’s double bass array (DBA). In a DBA, two banks of subwoofers are mounted on opposing walls, usually the front and rear walls. The purpose of the second subwoofer array is to cancel the sound from the first, thereby eliminating reflections and creating an infinitely long room as far as bass is concerned.
A VBA relies on the timing of reflections to emit a cancellation wave. If we time it correctly, we can hopefully improve the time domain characteristics. It will never work as well, because a DBA emits a plane wave. Two subwoofers do not emit a plane wave, instead two quarter-spherical waves are emitted (if the subwoofer is placed on the floor, against a wall). For corner placed subs, ⅛ of a sphere (an octant) is emitted.
For a VBA to work, we need to know:
1. When to inject the cancellation wave (the delay)
2. How loud the cancellation wave should be (the attenuation)
3. Whether the cancellation wave should have the same waveform as the initial wave.
How to determine the delay
Many VBA schemes rely on calculating the delay from room geometry. Some others by reverse-engineering the frequency response. This is why most VBA schemes fail. The timing of the cancellation impulse has to be determined with great accuracy, otherwise the “cancellation” impulse will actually contribute to ringing rather than improve it! This method (which I have not seen described anywhere else?) will get you to the “ballpark” delay with greater accuracy than any other method, but you will still need to fine tune the exact delay by experimentation.
There are two important insights before we begin our design:
1. the delay is always approximately twice the room length, and
2. the impulse response with a special test signal can be used to read the delays.
The delay is always approximately double the room length, regardless of the position of the speaker or the listener (@UliBru taught me this!). As you see from the diagram, sound is emitted from the subwoofer and reaches the main listening position (MLP plane) at a. The sound travels towards the back wall, reflects, and passes the MLP position again (b). It continues towards the front wall, reflects, and passes the subwoofer plane x. This is the point where the cancellation signal needs to be injected, and it is exactly twice the length of the room. The cancellation signal and the reflection (which has hopefully been attenuated) then travels towards the listener where it is heard again at c.
The same is true if we use the main speaker as the sound source. The cancellation wave needs to be injected at x which is exactly double room length. The time relationship between the cancellation wave and the reflection will remain the same, regardless of the position of the source or the observer. This rule breaks down for non-rectangular rooms and unusual speaker placements (e.g. diagonal speaker placement). However, the method for determining delays can still be used.
These events can be observed in the impulse response of a tweeter. a denotes the arrival of the direct sound, b is the reflection from the rear wall, and c is the reflection from the front wall. How do I know this? I did some math with room dimensions, listening position, and the speed of sound to determine the arrival times of the peaks. Then I looked for the peaks on the impulse response. I know for sure that the reflections I marked are front wall and rear wall reflections.
The delay between a and c is double room length. Therefore, c is when the cancellation impulse should be injected, or put another way, c = x.
We can improve our timing measurement by using an actual subwoofer impulse in place of the tweeter impulse. However, we can not use a conventional sine wave sweep, since the impulse is too long. What is needed is a very short impulse - ideally, a Dirac pulse. Acourate’s Sinc Pulse Recorder is not quite a Dirac pulse, but it is close. If you use REW, I suggest using the generator to send a single sine wave (tone burst generator) and using the oscilloscope to record the impulse.
I aligned the tweeter peak to coincide with the initial subwoofer peak. Notice that the subwoofer has a substantially time stretched impulse compared to the tweeter, and that the peaks align very nicely with the front wall and rear wall peaks we found on the tweeter response! I used the timing of the subwoofer peak at c as my delay.
Note that if you did not have the tweeter response to guide you, you would have a very difficult time determining which subwoofer peak corresponds to which reflection! In reality, c is likely to be already contaminated by reflections from other directions, so its position is not 100% certain. In my larger room, I am reasonably confident that it is real. If you are not confident, then use the tweeter peak as your delay. We will fine tune it later.
Determine the attenuation
Once the timing peaks have been identified, the amplitude of c can be divided by a to give an attenuation factor. In this case it was 0.688.
Last edited: