Aurora 96

Aurora 96 is a complete system for making impulse response measurements and auralizations of anechoic audio signals using them as filters.

Aurora is made of the following ten modules

TIM filter

Convolve with Clipboard

Generate MLS Signal

Generate IRS Signal

Deconvolve MLS Signal

Deconvolve IRS Signal

Acoustical Paramenters

Inverse Filter

Flatten Spectrum

Subtract Convolved


Filtro per files .TIM
MLSSA (.TIM) Import/export filter

The MLSSA (pronounced "Melissa") system is a dedicated hardware and software tool, originally developed by Douglas Rife as a measurement tool for loudpseaker evaluation and room acoustics. It makes use of a special full-sized ISA board (named A2D160), which includes an hardware MLS-signal generator. The board has only one analog input, but it can generate the MLS signal simultaneously with the acquisition. This way the Impulse Response between the excitation signal and the microphone connected with the input is measured, and this includes both the loudspeaker Transfer Function and the reverberation of the room.

This board is accompained by a very powerful and versatile software (MLSSA.EXE). Although this is a DOS-based applications, it is still now an unvaluable tool for making computations and extracting information from Impulse Responses.

The MLSSA .TIM file format is quite strange: the inport/export filter for CoolEdit makes it possible to manage .TIM files exactly as if they were .WAV files: this can be useful for importing in Aurora Impulse Responses measured with the MLSSA system, or, on the other hand, for exporting to MLSSA Impulse Responses measured with Aurora.

For example let we start with an Aurora-measured Impulse Response. If it was stereo, we have first to separate it in two mono files, because MLSSA is a single-channel system:

This file was already saved in MLSSA .TIM format, as it shown from its name.

The only point to be noted here is that, when saving the file, an "Options" button appears in the Common Dialog Box. Pressing it, the following Form is displayed:

This makes it possible to select the MLSSA acquisition mode which is flagged inside the .TIM file: this way the user can "fool" MLSSA, changing the acquisition mode after a measurement is made, thus making it possible to perform computations that MLSSA does not allow for certain kinds of data (for example computing the Acoustical Parameters from Scope data).

Starting the MLSSA program and opening the converted file, it looks properly converted:


Convolve with Clipboard

This module performs linear convolution of the currently selected waveform with the waveform actually present in the Windows Clipboard. This means that, before using this module, You have to load in the Windows Clipboard (not in the CoolEdit Clipboard !!!) the Impulse Response that You want to use as a filter.

For example, we can start opening the Impulse Response file:

As the sampling rate of this Impulse Response is 48 kHz, we need to convert it to 22 kHz using the proper internal function of CoolEdit. After copying the resampled IR to the windows Clipboard, we can load an anechoic sample:

This is a mono file: if we want it to be convolved with the binaural stereo IR, producing a stereo result (auralisation), we need first to convert the waveform to stereo, making use of the standard CoolEdit "Convert Sample Type" function. We can mix the sound data to the left channel only, obtaining this result:

At this point, pressing the "Convolve with Clipboard" button, the following dialog Box appears:

In this case, as it is shown, we want to convolve the Left channel of the current audio data with both the channels of the IR.

When OK is pressed, tha standard Progress Meter of CoolEdit appears, until the convolution process is finished. At this point the final dialog box is displayed, reporting statistics about the convolution process:

Pressing OK, the new convoluted waveform is displayed.


Generate MLS Signal

Generate IRS Signal

These two modules perform very similar tasks: they create the excitation signals, which are required for exciting the system when doing impulse response measurements with the following scheme:

MLS stands for Maximum Lenght Sequence, IRS stands for Inverse Repeated Sequence. Both these excitation signals are defined as a pseudo-random sequence of binary digits (0 and 1), built with a complex number-theory technique.

The important properties of these sequences are the following:

•	Periodic: the signal can be repeated continuously, through the "Loop Mode" of playback in CoolEdit. Averaging the system's response over many repeated sequences, the Signal-To-Noise ratio can be largely improved

•	Binary: as the signal switches between only two extreme values, the crest factor is 0 dB, and this gives maximum power within a constrained amplitude.

•	Flat spectrum: the frequency content of these signal is almost perfectly flat, resembling an ideal "white noise".

•	Autocorrelation is a Dirac's Delta function, and this enables the deconvolution of the system's impulse response by correlating the measured response with the original sequence.

•	The MLS sequence has the great advantage of making it possible the correlation process with a very fast algorithm, the Fast Hadamard Transform, which yields the result through a limited number of sums and subtractions, directly in the time domain. The disadvantage is that, if the system exhibits some kind of non-linear distortion, this can cause the appearance of some spurious "phantom echoes" at some well-defined tap position.

•	The IRS sequence is made of two MLS sequences, the second being an inverted copy of the first one. This means that a 2*N sequence is required for measuring an N-point impulse response, doubling the measurement time. Furthermore, the fast Hadamard transform cannot be used for deconvolving the result, and the usual processing in the frequency domain (by use of very large FFTs and IFFTs) is required during the correlation. Although with this sequence the measurement is slower, it exhibit a larger immunity to distortion, and particularly to odd-order distortion.

Aurora makes it possible to generate MLS and IRS sequences up to order 21: this means that the maximum length of the measured IRs will be 2^21-1, that is 2,097,151 samples, corresponding to more than 47 s at a sampling frequency of 44.1 kHz !!!

For the most commonly used orders (14, 15, 16 and 17), more than one sequence is available (labelled as 16A, 16B and 16C, for example). Each of them is produced according to a different permutation of the numerical basis, and thus the results are uncorrelated. In case of distortion, each of these sequences produces spurious echoes at different positions, so that they can be easily identified and removed.

The following picture shows an MLS sequence of order 5 (period of 31 samples):


Deconvolve MLS Signal

Deconvolve IRS Signal

These two modules perform very similar tasks: they recover the impulse response during measurements made following this scheme:

The computer is used for generating the MLS (or IRS) sequence, and for feeding the omnidirectional loudspeaker (or the sound reinforcement system, if this must be included in the measurement). The recording of the response is not made simultanously to the playback of the signal, for three reasons:

1.	A full-duplex audio board is required for simultaneous playback and recording, and most notebooks are not equipped with such boards.

2.	Most audio boards don't have a stereo MIC input (preamplifiers should be required for entering the LINE IN stereo input).

3.	You need long cables or a stereo wireless link for connecting the microphones with the computer

A small, portable DAT machine solves all these problems, enabling very fast measurement inside the room. Then, at home, You can playback the sampled signals from the DAT cassette to the audio board, recovering the binaural impulse response in each point of the room where You have recorded the signals.

Obviously, if You make laboratory measurement with a full-size computer, You probably have a full-duplex audio board, You don't have problems using high quality preamplifiers and cables, and You prefer to have real-time measurements for looking quickly at the results.

The following picture shows how the signal appears in Cool Edit after recording a period corresponding to 20 repetitions of the original signals:

After applying the deconvolution process, as shown above in the dialog box, You get this result:

  At this point, You have simply to start another instance of Cool Edit (if You don't want to overwrite the sampled signal), and then paste the impulse response from the Windows Clipboard. This is the waveform obtained in this way:


Acoustical Parameters

After measuring an Impulse Response, this module makes it possible to calculate the Acoustical Parameters defined in the ISO standard 3382, in 10 octave bands (from 31.5 Hz to 16 kHz). These include various kinds of Reverberation Time (EDT, T20, T30, Tuser), Clarity C50 and C80, Definition, Center Time.

The calculations are made accordingly to the ISO 3382 standard: the impulse response is octave-band filtered by means of IIR IEC-compliant filters, then it is squared (for obtaining the acoustic energy) and processed. For the reverberation time estimation, the squared impulse response is backward-integrated, with an optional noise-removal algorithm. Then a linear regression is performed over the proper dB range.

For example, from the following binaural (stereo) impulse response:

Pressing the button these acoustical parameters are obtained:

These data can easily be exported to other programs via the Windows Clipboard. After copying them to the clipboard, they appear in this way:

OCTAVE BAND ACOUSTICAL PARAMETERS

Left Channel

Band       Lin     31.5    63      125    250     500     1K      2K      4K      8K      16K
Parameters
C50 [dB]  -0.1349 -28.09  -29.91  -23.58  -10.6   -9.256  -5.846  0.6492  1.312   5.547   13.67
C80 [dB]  2.212   -21.17  -19.24  -13.48  -1.766  1.654   -0.6134 2.959   2.137   6.147   13.83
D50 [%]   49.22   0.1549  0.1021  0.4364  8.01    10.61   20.65   53.73   57.49   78.2    95.88
TS [ms]   89.58   303.6   176.    153.4   139.2   122.3   149.9   82.36   76.54   41.74   13.6
EDT [s]   1.602   5.882   2.38    1.831   1.759   2.618   2.378   1.499   1.489   1.274   0.8046
RT20 [s]  1.518   3.006   3.439   2.038   1.714   1.74    1.583   1.572   1.419   0.9592  2.203
r RT20    -0.9975 -0.7664 -0.9618 -0.9815 -0.9884 -0.9819 -0.9834 -0.9949 -0.984  -0.9922 -0.9435
RT30 [s]  1.507   --      --      1.828   1.674   1.644   1.498   1.483   1.379   1.334   2.618
r RT30    -0.998  --      --      -0.982  -0.9921 -0.9827 -0.9865 -0.9971 -0.9902 -0.9763 -0.966
RTU [s]   1.689   5.603   4.225   2.091   1.913   2.28    1.791   1.797   1.044   1.152   0.6691
r RTU     -0.9982 -0.9377 -0.9694 -0.8953 -0.9683 -0.959  -0.9847 -0.9975 -0.9935 -0.9719 -0.9237

Noise C.: yes     no      no      yes     yes     yes     yes     yes     yes     yes     yes

RTU = RT User (-5. dB, -15. dB)


Inverse Filter

<<< Sorry, not translated yet…>>>

Determina il filtro inverso di una IR col metodo dei minimi quadrati.

Lo scopo principale del filtro inverso così ottenuto è la dereverberazione di un segnale audio registrato, nota la IR del sistema costituito da sorgente sonora-ambiente-microfono.

Come si usa

Caricare in Cool Edit il file contenente la risposta all`impulso di cui si desidera determinare il filtro inverso. La IR può essere mono o stereo, in quest`ultimo caso vengono calcolati i filtri inversi di entrambi i canali. Selezionare la parte di IR che interessa (che può essere l`intera IR caricata o una sua porzione) e far partire la funzione di calcolo del filtro inverso premendo il bottone corrispondente sulla barra degli strumenti di Cool Edit o selezionando Aurora-Inverse Filter dal menu Transform.

Inverse filter length

Impostare in questa edit box la lunghezza che si desidera abbia il filtro inverso. In genere lunghezze maggiori garantiscono risultati migliori ma comportano tempi di elaborazione superiori. Il modulo propone, come valore di default, un valore pari al doppio della lunghezza della IR meno un campione. Solitamente questo valore porta a buoni risultati.

Delta delay

Impostare in questa edit box il ritardo in cui posizionare la  di Dirac che si otterrebbe dalla convoluzione del filtro inverso con la IR originaria. Il modulo propone, come valore di default, un valore pari alla lunghezza della IR (ossia la  di Dirac viene posizionata di default in corrispondenza dell`ultimo campione della IR).

Terminati i calcoli viene visualizzata una dialog box che mostra informazioni sul filtro inverso determinato: la sua lunghezza in campioni, il numero di canali, la frequenza di campionamento, il tempo impiegato per la sua determinazione. La dialog box informa anche che il filtro inverso è stato memorizzato con successo nella Windows Clipboard. La sequenza utilizzata per la determinazione del filtro non viene minimamente modificata dal procedimento e rimane visualizzata nella finestra grafica di Cool Edit.

I tempi necessari per la determinazione del filtro inverso sono proporzionali al quadrato della lunghezza scelta per lo stesso. La determinazione del filtro inverso di IR di notevole durata, quali sono quelle degli ambienti riverberanti, richiede quindi tempi di elaborazione piuttosto lunghi.

Nel caso il filtro inverso ottenuto non sia soddisfacente occorre procedere ad una nuova determinazione dello stesso cambiando i valori impostati per la sua durata e/o la posizione della  di Dirac.


Flatten Spectrum

This module creates an inverse filter, starting from a generic Impulse Response, and inverting only the Minimum Phase component of it. This means that the Magnitude of the Transfer Function is inverted, and the inverse filter, applied to a signal containing the effect of the original impulse response, perfectly equalizes it in terms of spectral flatness.

It must be nothed, anyway, that the non-minimum phase component is left not-inverted: as this component carries the reverberation, the equalised signal has a proper spectral frequency response, but it still suffers of echoes or reverberation present in the original signal. Thus this module is ideal for creating an equalising filter taking into account only the direct wave coming from a loudspeaker with poor frequency response.

For example, suppose that we have measured the anechoic IR of a loudspeaker:

through CoolEdit we can look at its Frequency Response:

Now we can press the Flatten Spectrum button, and the following Dialog Box appears:

With this dialog box it is possible to select some parameters, which affect the computation of the Inverse Filter.
First of all there is the Filter Length: the larger this value, the most accurate is the frequency equalisation.
Then we have the Windowing function to be used before the FFT is applied to the original data.
The "minimum phase" inverse filter requires a certain amount of "frequency smoothing": so we have to choose between Octave Smoothing or Linear Smoothing, specifying in either case the proper smoothing bandwidth.

When the OK button is pressed, the computation is made (it is almost instantaneous), and the following dialog box is displayed:

At this point the Imnverse Filter has been stored in the Windows Clipboard. Opening another instance of CoolEdit, and pasting from the Windows Clipboard, the following signal is recovered:

And looking at its frequency response, we obtain:

This is roughly the specular image of the original Impulse Response, and thus the recovered signal is the required equalising filter.

For verification, if we apply it by convolution to the original signal we obtain the following:

And looking at the frequency response we obtain:

This is not perfectly flat, due to the limited number of taps employed for the creation of the Inverse Filter.


Sutract Convolved
Subtract Convolved

When You listen through loudspeakers at signals convolved with Binaural Impulse Responses (BIRs), You cannot avoid the Cross-talk effect: the signal emitted from the left loudspeaker reaches also the right ear, and vice-versa.

Anyway, You can design special cross-talk cancelling filters, which must be applied to the original BIRs prior of the convolution with the anechoic signal(s).

Schematic of the convolution/auralisation process:

The figure above shows what happens when a couple of loudspeakers is placed in front of the listener's head: the signal coming from each loudspeaker reaches both the ears, and so at the ear channel entrance both Left and Right channels arrive mixed.

Furthermore, the Head Related Transfer Function is already inserted in the IRs used for convolution, but the signals coming from loudspeakers newly interfere with the listener's head, so the head filtering is applied twice! For these reasons, a more involved processing is needed. In mathematical notation, the signals arriving at the Left and Right ear channel entrance of the listener's head can be described as:

in which the stereo signal yl and yr were derived from a single mono input x, through convolution with the two binaural IRs hl and hr. Passing to the frequency domain by FFT, the previous relations can be rewritten as:

Now, let we substitute two adequate IRs (hl' and hr') instead of the original ones: they must be capable to make the terms in parenthesis equal to the (wanted) BIRs HL and HR. After a few passages, we get:

In principle, at this point a simple IFFT would make it possible to obtain the new IRs hl' and hr', which include the cross-talk cancelling effect and the original BIRs. This is not true, as this simple inversion process produces unstable, acausal FIR filters. We need again to use the Mourjopoulos theory to obtain least-squares FIR filters, making use of the Inverse Filter module.

The task of the Subtract Covolved module is then simply to produce the two numerators and the denominator of the above formulas, processing two stereo IRs obtained from the binaural measurements with the Left loudspeaker and with the Right loudspeaker and the original binaural IR. After the processing, the signal corresponding to the denominator must be inverted through the Inverse Filter module, and saved. This inverse filter must then be convolved with the two numerators of the above formula, for obtaining the required time-domain, cross-cancelling filters.

This is the correct sequence of operations:

1.	The process needs of these 3 stereo files:

•	hl-lr.wav: measured impulse response between the Left loudspeaker and the two ears of the listener's head. It is measured using Deconvolve MLS Signal module, which shows the maximum value, called XM1, of the waveform before normalisation to the full scale.

•	hr-lr.wav: measured impulse response between the Right loudspeaker and the two ears of the listener's head. It is measured exactly as hl-lr.wav, and its maximum value will be called XM2.

•	h.wav: original binaural impulse response for the auralisation

2.	Having noted the values XM1 e XM2 during the deconvolution, at this point it is necessary to make hl-lr.wav and hr-lr.wav normalized to the same value, which will be the maximum between XM1 and XM2. For example, if XM1>XM2, then You have to normalise hr-lr.wav to the ratio XM2/XM1*100, employing the Normalize function in the Transform menu of CoolEdit (remember to select the option "Normalize Left and Right Equally").

3.	Load into the Windows Clipboard the original binaural Impulse Response file (h.wav).

4.	Create the Numerator #1: open the hr-lr.wav file, exchange the left and right channels of it through the "Swap Channels" preset in the Transform->Amplitude->Channel Mixer module of CoolEdit, then apply the Aurora's Subtract Convolved module, choosing the "Left-Right" option. Save the results as Num1.wav, making note of the maximum value YM1.

5.	Create the Numerator #2: open the hl-lr.wav file, exchange the left and right channels of it through the "Swap Channels" preset in the Transform->Amplitude->Channel Mixer module of CoolEdit, then apply the Aurora's Subtract Convolved module, choosing the "Right-Left" option. Save the results as Num2.wav, making note of the maximum value YM2.

6.	Again, You have to normalise Num1.wav and Num2.wav to the same maximum, which will be the maximum between YM1 and YM2, as already done before.

7.	At this point You can glue together Num1.wav and Num2.wav into a single stereo waveform, taking the left signal of the first and the right signal of the second. Use the Mix Paste function of CoolEdit. After this, save the resulting stereo waveform into the file NUM.wav.

8.	Create the Denominator: load into the Windows Clipboard the file hl-lr.wav, then open the file hr-lr.wav, swap the left/right channels as above, and apply the Aurora's Subtract Convolved module with the "Left-Right" option. The result is a stereo file, with non-zero signal in the left channel only. You can transform it in a mono file for further processing, through the Edit->Convert Sample Type function of CoolEdit.

9.	Invert the denominator through the Aurora's Inverse Filter module. Save the result in the InvDen.wav file.

10.	Load the Inverse of the Denominator into the Windows Clipboard. Open the NUM.wav file. Convolve it (both channels) with the clipboard. Now You have the required h' impulse response, which includes both the original h.wav BIR and the cross-talk cancelling filters. You can save it with the name h'.wav. This file has to be used for the convolution of the anechoic signal x.wav, producing the proper signals (Y'.wav) for feeding the two loudspeakers.

11.	If You don't have the original impulse response h.wav and the anechoic signal x.wav, but You have already the convoluted signal Y.wav (ready for headphone listening), You can apply the above processing to it instead of the impulse response h.wav, obtaining directly the Y'.wav signal, ready for loudspeaker playback.

Through the above process, not only the crosstalk is eliminated, but also any unwanted frequency filtering due to loudspeaker response is equalized. Furthermore, the head-related transfer function is eliminated too, avoiding the double-filtering due to the superposition of the listener's head with the head already included in the original BIR. In theory this processing could also eliminate reflections on the listening room's walls, and this way a special listening environment should not be necessary. But this is quite difficult to obtain, as the dereverberation is a very unstable process, and it works only for the exact position of the listener's ears in which the loudspeaker measurements were made.

For maximum automatisation of the whole process, a CoolEdit Macro can be created, which performs all these tasks without the need of human intervention.