Blog

Asynchronous MLS

In traditional MLS measurements a PC generates the MLS stimulus and at the same time samples the room response. In many cases however it is impractical to have a wired connection between the PC and source or the PC and the microphone. If we decouple the MLS generator from the response sampler, the clock frequency used to emit the stimulus may differ from the clock frequency used to sample the response, by a very small amount. We call this an asynchronous measurement. Sometimes it is also called an open-loop measurement.
What actually happens in an asynchronous measurement, and how does it differ from a synchronous measurement?

Demonstration
To demonstrate the difference between synchronous and asynchronous measurement we prepare 4 stimuli (using DIRAC 6). The first is a simple MLS sequence of order 16 (65536 sample sequence length).

Generate MLS


We double the length of this sequence by using the keyboard sequence: Ctrl-A, Ctrl-C, Ctrl-V and Ctrl-V. We save this file as mls16.wav. Our second stimulus is an e-sweep of the same length:

Generate e-sweep


After using the same procedure as before to get 2 full sequences, we save this file as eswp.wav. The e-sweep result should look like this:

Double e-sweep


We can now import this file using the following setup:

Import e-sweep sync


to get this result, which is exactly what we'd expect, a perfect Dirac pulse:

Perfect Dirac pulse


Now we need to prepare 2 files that appear to have a slightly different clock frequency. This can easily be done using the 'Change Sample Format' option on the File menu. First we resample mls16.wav and eswp16.wav at 48048 Hz, for a simulated clock deviation of 1‰ or 1000 ppm.

Resample


Next we need to set back the sample rate without actually resampling the signal.

Change sample rate


Save the modified files as mls16mod.wav and eswp16mod.wav. We now have 2 stimuli that seem to come from a player with a 1‰ lower clock rate. What happens if we import these files? First import mls16mod.wav with the following setup:

Import MLS async


The result is not pretty and doesn't look like an impulse response at all:

MLS import failure


The e-sweep is not nearly as bad and actually looks quite acceptable:

e-sweep sync import


If we zoom in however we can see that the e-sweep too delivers a distorted impulse response:

zoomed e-sweep sync import


This imperfect reproduction of a Dirac pulse has consequences for the parameters derived from these impulse responses, as shown in a paper presented at the ICA 2007 [1]

Why not use e-sweep exclusively?
Given these results, and those found in the paper mentioned above, one would be tempted to dismiss the MLS signal and use e-sweep exclusively. The e-sweep is certainly more robust in the face of clock speed differences, but it still has a number of problems.

For one we can see that the Dirac pulse reproduction is far from perfect, with detrimental results for the derived parameters, although it is still better than the MLS results.

The e-sweep signal can be very annoying and it is simply not tolerated in many situations. The MLS signal is far less noticeable and in many cases doesn't even turn any heads when played, in contrast to sweeps.

A final problem of sweep signals is that they are much harder to handle by loudspeakers than MLS signals. Because all energy is being expended at a single frequency at each point in time, the loudspeaker will have large voice coil excursions with reduced cooling. MLS signals have their energy spread over all frequency bands at all times, resulting in improved voice coil cooling.
The Echo Speech Source is a case in point. Its small size and low power consumption are only possible because it uses the MLS as a base signal.

Improving asynchronous measurements
Confronted with the problem of asynchronous MLS measurements, we decided to look for a way to improve the results of open loop measurements. The solution was found in resampling the recorded signal in a way that that is the reverse of what we did for the demonstration above. This resampling is performed automatically by DIRAC for all asynchronous signals. We can demonstrate this by importing mls16mod.wav again, but now with the stimulus set to external (=asynchronous).

Import MLS async


External stimuli are by definition asynchronous and resampling will therefore take place automatically, giving a much improved result.

Async MLS result


Zooming in shows a little bit of residual ringing, but this has negligible effect.

Zoomed Async MLS result


With e-sweep we see the almost same improvement. One can see a fraction more ringing over a longer time.

Zoomed Async e-sweep result


It is perhaps paradoxical that resampling the MLS response gives better results than resampling the e-sweep response, making the MLS an even better candidate for asynchronous measurements than e-sweep. However, the differences are negligible as can be seen from the INR graph for the internal (synchronous) and external (asynchronous) signal processing.

INR graph


The INR values graphed above are an indication of the quality of the impulse response. A high INR indicates a large decay range. An INR of 25 dB or higher is required to reliably calculate acoustical parameters from the impulse response. More information on the INR parameter can be found in TN007 - Impulse to Noise Ratio INR.

Conclusions
In recent years e-sweeps have gained a lot of popularity and are now perhaps the stimulus of choice for impulse response measurements. Much of this popularity was stimulated by the excellent work of Angelo Farina [2] and the article by Swen Müller and Paulo Massarani [3].

With the improved method for asynchronous measurements in DIRAC, and the other advantages of MLS signals over e-sweeps, the MLS should not be fully discounted yet. In many situations it can still be an excellent choice.

[1] Constant Hak, Jan Hak. Effect of stimulus speed error on measured room acoustic parameters", Presented at the 19th international congress on acoustics, ICA 2007, Madrid, Spain
[2] Angelo Farina. “Simultaneous Measurement of Impulse Response and Distortion with a Swept-sine technique”, J.AES, vol. 48, p. 350, 108th AES Convention, Paris 2000
[3] Swen Müller, Paulo Massarani. "Transfer-function measurement with sweeps." J.AES, 49.6 (2001): 443-471.