#77 in a series of articles about the technology behind Bang & Olufsen loudspeakers
I’m occasionally asked about the technical details of connecting Bang & Olufsen loudspeakers to third-party (non-B&O) sources. In the “old days”, this was slightly difficult due to connectors, adapters, and outputs. However, that was a long time ago – although beliefs often persist longer than facts…
All Bang & Olufsen “BeoLab” loudspeakers are “active”. At the simplest level, this means that the amplifiers are built-in. In addition, almost all of the BeoLab loudspeakers in the current portfolio use digital signal processing. This means that the filtering and crossovers are implemented using a built-in computer instead of using resistors, capacitors, and inductors. This will be a little important later in this posting.
In order to talk about the compatibility issues surrounding the loudspeakers in the BeoLab portfolio – both with themselves and with other loudspeakers, we really need to break the discussion into two areas. The first is that of connectors and signals. The second, more problematic issue is that of “latency” (which is explained below…)
Connectors and signals
Since BeoLab loudspeakers have the amplifiers built-in, you need to connect them to an analogue “line level” signal instead of the output of an amplifier.
This means that, if you have a stereo preamplifier, then you just connect the “volume-regulated” Line Output of the preamp to the RCA line inputs of the BeoLab loudspeakers. (Note that the BeoLab 3 does not have a built-in RCA connector, so you need an adapter for this). Since the BeoLab loudspeakers (except for BeoLab 5, 50, and 90) are fixed at “full volume”, then you need to ensure that your Line Output of the source is, indeed, volume-regulated. If not, things will be surprisingly loud…
In addition to the RCA Line inputs, most BeoLab loudspeakers also have at least one digital audio input. The BeoLab 5 has an S/P-DIF “coaxial” input. The BeoLab 17, 18, and 20 have optical digital inputs. The BeoLab 50 and 90 have many options to choose from. Again, apart from the BeoLab 5, 50, and 90, the loudspeakers are fixed at “full volume”, so if you are going to use the digital input for the BeoLab 17, 18, or 20, you will need to enable the volume regulation of the digital output of your source, if that’s possible.
Latency
Any audio device has some inherent “latency” or “delay from the time the signal comes in until it goes out”. For some devices, this latency can be so low that we can think of it as being 0 seconds. In other words, for some devices (say, a wire, for example) the signal comes out at the same time as it comes in (as far as we’re concerned… I’m not going to get into an argument about the speed of electricity or light, since these go very fast…)
Any audio device that uses digital signal processing has some measurable (and possibly audible) latency. This is primarily due to 5 things, seen in the flowchart below.
Each of these 5 steps each have different amounts of latency – some of them very, very small. Some are bigger. One thing to know about digital signal processing is that, typically, in order to make the math more efficient (and therefore squeeze as much as possible out of the computing power), the samples are processed in “blocks” – not one-by-one. So, the signal comes into the input, it gets converted to individual samples, and those samples are collected into a block of 64 samples (for example) before being sent to the processing.
So, let’s say that you have a sampling rate of 44100 samples per second, and a block size of 64 samples. This then means that you send a block to the processor every 64 * 1/44100 = 1.45 ms. That block gets processed (which takes some time), and then sent as another block of 64 samples to the DAC (digital to analogue converter).
So, ignoring the latency of the conversion from- and to-analogue, in the example above, it will take 1.45 ms to get the signal into the processor, you have a 1.45 time window to do the processing, and it will take another 1.45 ms to get the signal out to the DAC. This is a total of 4.35 ms from the instant a signal gets comes into the analogue input to the moment it comes out the analogue output.
Sidebar: Of course, 4.3 ms is not a long time. If you had a loudspeaker outdoors, then adding 4.35 ms to its latency would be same delay you would incur by moving 1.5 m (or about 4.9 feet) further away. However, in terms of a stereo or multichannel audio system, 4.35 ms is an eternity. For example, if you have a correctly-configured stereo loudspeakers (with each loudspeaker 30º from centre-front, and you’re sitting in the “sweet spot”, if you delay the left loudspeaker by just 0.2 ms, then lead vocals in your pop tunes will move 10º to the right instead of being in the centre. It only takes 1.12 ms of delay in one loudspeaker to move things all the way to the opposite side. In a multichannel loudspeaker configuration (or in headphones), some of the loudspeaker pairs (e.g. Left Surround – Right Surround) result in you being even more sensitive to these so-called “inter-channel delay differences”.
Also, the amount of time required by the processing depends on what kind of processing you’re doing. In the case of BeoLab 50 and 90, for example, we are using FIR filters as part of the directivity (Beam Width and Beam Direction) processing. Since this filtering extends quite low in frequency, the FIR filters are quite long – and therefore they require extra latency. To add a small amount of confusion to this discussion (as we’ll see below) this latency is switchable to be either 25 ms or 100 ms. If you want Beam Width control to extend as low in frequency as possible, you need to use the 100 ms “Long Latency” mode. However, if you need lip-synch with a non-B&O source, you should use the 25 ms “Low Latency” mode (with the consequent loss of directivity control at very low frequencies).
Latency in BeoLab loudspeakers
In order to use BeoLab loudspeakers with a non-B&O source (or an older B&O source) , you may need to know (and compensate for) the latency of the loudspeakers in your system. This is particularly true if you are “mixing and matching” loudspeakers: for example, using different loudspeaker models (or other brands – *gasp*) in a single multichannel configuration.
Model | A / D | Latency (ms) | Equivalent in m | Volume Regulation? |
Unknown analogue | A | 0 | 0 | No |
Beolab 1 | A | 0 | 0 | No |
Beolab 2 | A | 0 | 0 | No |
Beolab 3 | A | 0 | 0 | No |
Beolab 4 | A | 0 | 0 | No |
Beolab 5 | D | 3.92 | 1.35 | Yes |
Beolab 7 series | A | 0 | 0 | No |
Beolab 9 | A | 0 | 0 | No |
Beolab 12 series | D | 4.4 | 1.51 | No |
Beolab 17 | D | 4.4 | 1.51 | No |
Beolab 18 | D | 4.4 | 1.51 | No |
Beolab 19 | D | 4.4 | 1.51 | No |
Beolab 20 | D | 4.4 | 1.51 | No |
Beolab 50 | D | 25 / 100 | 8.6 / 34.4 | Yes |
Beolab 90 | D | 29 / 100 | 10.0 / 34.4 | Yes |
How to Do It
I’m going to make two assumptions for the rest of this posting:
- you have a stereo preamp or a surround processor / AVR that has a “Speaker Distance” or “Speaker Delay” adjustment parameter (measured from the loudspeaker location to the listening position)
- it does not have a “loudspeaker latency” adjustment parameter
The simple version (that probably won’t work):
Since the latency of the various loudspeakers can be “translated” into a distance, and since AVR’s typically have a “Speaker Distance” parameter, you simply have to add the equivalent distance of the loudspeaker’s latency to the actual distance to the loudspeaker when you enter it in the menus.
For example, let’s say that you have a 5.0 channel loudspeaker configuration with the following actual speaker distances, measured in the room.
Channel | Model | Distance |
Left Front | Beolab 5 | 3.7 |
Right Front | Beolab 5 | 3.9 |
Centre Front | Beolab 3 | 3.9 |
Left Surround | Beolab 17 | 1.6 |
Right Surround | Beolab 17 | 3.2 |
You then look up the equivalent distances in the first table and add the appropriate number to each loudspeaker.
Channel | Model | Distance | + | Latency Equivalent | = | Total |
Left Front | Beolab 5 | 3.7 | + | 1.35 | = | 5.05 |
Right Front | Beolab 5 | 3.9 | + | 1.35 | = | 5.25 |
Centre Front | Beolab 3 | 3.9 | + | 0 | = | 3.9 |
Left Surround | Beolab 17 | 1.6 | + | 1.51 | = | 3.11 |
Right Surround | Beolab 17 | 3.2 | + | 1.51 | = | 4.71 |
This technique will work fine unless the total distance that you have to enter in the AVR’s menus is greater than its maximum possible value (which is typically 10.0 m on most brands and models that I’ve seen – although there are exceptions).
So, what do you do if your AVR can’t handle a value that’s high enough? Then you need to fiddle with the numbers a bit…
The slightly-more complicated version (which might work most of the time)
When you enter the Speaker Distances in the menus of your AVR, you’re doing two things:
- calibrating the delay compensation for the differences in the distances from the listening position to the individual loudspeakers
- (maybe) calibrating the system to ensure that the sound arrives at the listening position at the same time as the video is displayed on the screen (therefore sending the sound out early, since it takes longer for the sound to travel to the sofa than it takes the light to get from your screen…)
That second one has a “maybe” in front of it for a couple of reasons:
- this is a very small effect, and might have been decided by the manufacturer to be not worth the effort
- the manufacturer of an AVR has no way of knowing the latency of the screen to which it’s attached. So, it’s possible that, by outputting the sound earlier (to compensate for the propagation delay of the sound) it’s actually making things worse (because the screen is delayed, but the AVR doesn’t know it…)
So, let’s forget about that lip-synch issue and stick with the “delay compensation for the differences in the distances” issue. Notice that I have now highlighted the word “differences” in italics twice… this is important.
The big reason for entering Speaker Distances is that you want the a sound that comes out of all loudspeakers simultaneously to reach the listening position simultaneously. This means that the closer loudspeakers have to wait for the further loudspeakers (by adding an appropriate delay to their signal path). However, if we ignore the synchronisation to another signal (specifically, the lips on the screen), then we don’t need to know the actual (or “absolute”) distance to the loudspeakers – we only need to know their differences (or “relative distances”). This means that you can consider the closest loudspeaker to have a distance of 0 m from the listening position, and you can subtract that distance from the other distances.
For example, using the table above, we could subtract the distance to the closest loudspeaker (the Left Surround loudspeaker, with a distance of 1.6 m) from all of the loudspeakers in the table, resulting in the table below.
Channel | Model | Distance | – | Closest | = | Result |
Left Front | Beolab 5 | 3.7 | – | 1.6 | = | 2.1 |
Right Front | Beolab 5 | 3.9 | – | 1.6 | = | 2.3 |
Centre Front | Beolab 3 | 3.9 | – | 1.6 | = | 2.3 |
Left Surround | Beolab 17 | 1.6 | – | 1.6 | = | 0 |
Right Surround | Beolab 17 | 3.2 | – | 1.6 | = | 1.6 |
Again, you look up the equivalent distances in the first table and add the appropriate number to each loudspeaker.
Channel | Model | Distance | + | Latency equivalent | = | Total |
Left Front | Beolab 5 | 2.1 | + | 1.35 | = | 3.45 |
Right Front | Beolab 5 | 2.3 | + | 1.35 | = | 3.65 |
Centre Front | Beolab 3 | 2.3 | + | 0 | = | 2.3 |
Left Surround | Beolab 17 | 0 | + | 1.51 | = | 1.51 |
Right Surround | Beolab 17 | 1.6 | + | 1.51 | = | 3.11 |
As you can see in Table 5, the end results are smaller than those in Table 3 – which will help if your AVR can’t get to a high enough value for the Speaker Distance.
The only-slightly-even-more complicated version (which has a better chance of working most of the time)
Of course, the version I just described above only subtracted the smallest distance from the other distances, however, we could do this slightly differently and subtract the smallest total (actual + equivalent distance) from the totals to “force” one of the values to 0 m. This can be done as follows:
Starting with a copy of Table 3, we get a preliminary Total, and then subtract the smallest of these from all value to get our Final Speaker Distance.
Channel | Model | Distance (m) | + | Latency (m) | = | Total | – | Smallest | = | Final |
Lf | BL 5 | 3.7 | + | 1.35 | = | 5.05 | – | 3.11 | = | 1.94 |
Rf | BL 5 | 3.9 | + | 1.35 | = | 5.25 | – | 3.11 | = | 2.14 |
Cf | BL 3 | 3.9 | + | 0 | = | 3.9 | – | 3.11 | = | 0.79 |
Ls | BL17 | 1.6 | + | 1.51 | = | 3.11 | – | 3.11 | = | 0 |
Rs | BL 17 | 3.2 | + | 1.51 | = | 4.71 | – | 3.11 | = | 1.6 |
Of course, if you do it the first way (as shown in Table 3) and the values are within the limits of your AVR, then you don’t need to get complicated and start subtracting. And, in many cases, if you don’t own BeoLab 50 or 90, and you don’t live in a mansion, then this will probably be okay. However… if you DO own BeoLab 50 or 90, and/or you do live in a mansion, then you should probably get used to subtracting…
Some additional information about BeoLab 50 & 90
As I mentioned above, the BeoLab 50 and BeoLab 90 have two latency options. The “High Latency” option (100 ms) allows us to implement FIR filters that control the directivity (the Beam Width and Beam Directivity) to as low a frequency as possible. However, in this mode, the latency is so high that you will notice that the sound is behind the picture if you have a non-B&O television.* In other words, you will not have “lip-synch”.
For customers with a non-B&O television*, we have included a “Low Latency” option (25 ms) which is within the tolerable limits of lip-synch. In this mode, we are still controlling the directivity of the loudspeaker with an FIR, but it cannot go as low in frequency as the “High Latency” option.
As I mentioned above, a 100 ms latency in a loudspeaker is equivalent to placing it 34.4 m further away (ignoring the obvious implications on the speaker level). If you have a third-part source such as an AVR, it is highly unlikely that you can set a Speaker Distance in the menus to be the actual distance + 34.4 m…
So, in the case of BeoLab 50 or 90, you should manually set the Latency Mode to “Low Latency” (using the setup options in the speaker’s app). This then means that you should add “only” 8.6 m to the actual distance to the loudspeaker.
Of course, if you are using the BeoLab 50 or 90 alone (meaning that there is no video signal, and no other loudspeakers that need time-alignment) then this is irrelevant, and you can just set the Speaker Distance to 0 m. You can also change the loudspeakers to another preset (that you or your installer set up) that uses the High Latency mode for best performance.
Instructions on how to do this are found in the Technical Sound Guide for the BeoLab 50 or the BeoLab 90 via the Bang & Olufsen website at www.bang-olufsen.com.
* Here a “B&O Television” means a BeoPlay V1, BeoVision 11, 14, Avant, Avant NG, Horizon, or Eclipse. Older B&O televisions are different… This will be discussed in the next blog posting.
Millemissen says:
Thanks Geoff,
this article might be of great value to those, who prefer to use a non- B&O television as the preamp/multichannel processor.
Reading this I thought of your statement in the video presentation of the BV Avant back then, when you talked about using a non-B&O processor instead of the audio engine of the Avant for connecting BeoLab.
It was about choosing ‘large’ or ‘small’ speakers etc in the interface/the menu of most AVR’s.
You said ‘at B&O we don’t do it this way’.
The recent article clearly however, shows that there are ways to have a proper setup using a non-B&O AVR and some BeoLabs.
Now – when ‘we don’t do it that way at B&O’ – it would nice to have a more detailed overview of ‘how we do it at B&O’!
For instance: why is it important to choose the right BeoLab speaker in a long row of speakers in the setup menu? What does the B&O engine know about the speakers, that a regular AVR can’t know?
Is it worth it to prefer a B&O AVR (the one built in to the newer B&O tv’s/the Audio Engine) over a common AVR?
If yes – assuming it is ;-) – what do we gain from the work (made in the last 10 years) of you guys in the Aucoustic Department in Struer, when we ‘do it the B&O way’?
Just as an inspiration for – maybe – another (inspiring) article.
Greetings MM
Millemissen says:
Note:
In my post it should have been ‘prefer to use a non-B&O -television or -AVR solution as the …..’ in the first sentence.
Sorry!
geoff says:
Hi MM,
“How we do it” has to remain a bit of a secret, I’m afraid. However, the article makes light of two of the three parameters that we’re managing automatically: namely sensitivity and latency. The third parameter is discussed in the Technical Sound Guide for the televisions. This is used to do the automatic menu selections for the bass management. So, when you tell the television which loudspeakers are attached, there is a lot of configuration and compensation being looked after for you.
However, this is not the only (audio) reason to decide to choose a B&O AVR over another. There are other aspects such as channel management, multiform capabilities, and so on…
However, I take your point… it’s inspiration for a future posting. :-)
Cheers
-geoff
szebi001 says:
Dear Tonmeister,
I really love your articles with the state-of-art speakers behind the scenes informations. I am – as a hobbyist – really like read about loudspeakers and digital data processing.
Now I started to drive an Audi A5 with B&O speaker system. It has a very good performance and clearness despite a car’s body is a pretty bad place to listening music.
I would like to ask that do you work on car systems in any level or it is a totally different department of your company? If you have access or knowledge about these systems, could you share some information about that too? :)
Thank you for your reply!
BR
Sebastian
Rolf Nijveen says:
Dear Geoff,
could you please provide information about the new Beosound Shape speakers. Superb set by the way :-)
Kind regards
Rolf Nijveen
Tracker says:
Typo/editorial correction: I believe your initial Left Surround BL17 Table 3 calculations are off: 1.6+1.51 = 3.11, not 2.11. If correct, then some subsequent tables, i.e. those treating the minimum speaker distance as 2.11 m, are also off.
(P.S. +1 on MM’s request!)
geoff says:
Hi Tracker & MM,
Thanks for spotting this! I think that it’s fixed…
Cheers
-geoff
Morten Jakobsen says:
Great article.
Can you provide a bit more information related to Wisa connection and older Beolabs.
I have bought all equipment for a 7.1 WISA connected system with all beolab speakers and a 3rd party 4K wisa hub.
My center is a Beolab 7-4 and sides and rears are Beolab 4000’s all with Receiver1 boxes (+ Beolab 18’s and a 19 for front and subwoofer)
Can you give latency figures for my sides and rears?
Will all Wisa connections add the same latency, incluiding the B&O receiver1 boxes?
My flat is under renovations, but I look forward to the day when all get hooked up….
Kind regards
Morten
I have just confirmed it will work with a 3rd party hub in a test setup, as my main residence is under renovation.
Can you give the .
but great sounding
geoff says:
Hi Morten,
Can you be more specific regarding the transmitter you’re using? I might be able to answer some of your questions, but I need to know a little more. Feel free to send me an email if you don’t want the info made public here…
Cheers
-geoff
Morten Jakobsen says:
I use an Klipsch RP-Hub1 transmitter. I have just briefly checked that the hub work with the speakers and the receivers.
geoff says:
Hi again Morten,
The WiSA system ensures that you have synchronization between all of your loudspeakers. So, you don’t need to worry about inter-loudspeaker time alignment. This is also true of your Receiver1 -> BL4000’s (or BL7-4) since the 4000’s have no additional latency (being analogue loudspeakers) and the Receiver1 has the .
Of course, there is a (very small) delay incurred by the WiSA transmit-receiver system. However, this is very small, and well under the limits of lip sync with your video signal. In fact, I would guess that you have a larger delay caused by the physical distance from your listening position to your loudspeakers…
Unfortunately, I can’t give you the precise latency value of your system, since I don’t know the value for the Klipsch transmitter… Sorry.
Hope that this is enough information for you… sorry I can’t give you more.
Cheers
-geoff
Jean Vézi says:
Good afternoon,
First, congratulations for all your work for Bang & Olufsen and audio in general.
My question is: In a Beosystem 3, is the delay of the Beolab 5 (3,92 ms) taken account when that type of
speaker is selected? I have a Beovision 7 mk3 but I use non B&O speakers as front. As these are full range
monitors, I selected the Beolab 5 type to ensure that all bass is directed to them. I read your article, subtracted the 1,35 m distance in the settings (since the passive speakers have no delay), and the sound imaging is far better in surround mode. Is this just a coincidence or I did the right thing ?
Best regards,
Jean Vézina
geoff says:
Hi Jean,
What you’ve done is correct. I would try making minor adjustments to the distances (±10 cm) – just to see if things get a little better, or if you’ve already landed on the optimum…
The BeoSys3 will bass manage all of the bass to what it thinks is the BeoLab 5’s – you say that your non-B&O speakers are “full range monitors”, so I assume that this is okay.
Cheers
-geoff
Jean Vézina says:
Thanks a lot!
I own this system since more than 10 years now and I realize that I did not used it to its full capabilities.
I read your article just a few weeks ago and never thought that the Beolab 5 had a processing delay. I did the distance adjustment and observed immediately a significant change. Before, there was some weird spots in sound in the room that I attributed to self-cancellations caused by reflexions on furniture, but in fact it was the sound waves that were not properly synchronized from each speaker.
Thanks again,
Jean
Tom says:
Hi Geoff,
Found this article after your reply to my comment on another post. Unfortunately my preamp (Integra) only allows setting of the distance up to 9m. My distances using your “better chance of working” model come up a bit short. My left speaker is 2.657m and my right is 2.5m from the listening position. Rears are 1.8m and 1.2m. Center is a pair of 4000s, which I assume are 0 latency and 2.97m. With the math, I’m still a bit short. I need a bigger room or a preamp that supports greater distances. I suppose I could add an analog delay to the rear and center speakers.
Tom says:
Hi Geoff,
I have now decided this article is maybe the coolest post ever. This is super useful information that must be studied to really understand it. As I commented last night, I ran my numbers and they didn’t work. So, I took those numbers and put them into a spreadsheet and started playing with them. Long story short: If I moved my sofa .56 meters forward, I could solve the surround sound latency problem. It took me a while to figure out what you were up to. By subtracting the smallest number, you are making the numbers all relative. So by increasing the shortest distance and decreasing the distance to the front speakers, the numbers all fit into my preamps 9 meter limitation. My spreadsheet says that the front speaker sound will arrive .02ms after the rear speaker sound. If I want to move the couch back further, I can always buy a delay for the rear speakers.
Thanks so much!