Header image  
by Ralph Glasgal
line decor
Home Tutorials Tech
Kudos and
Demos Bio Free Ambio
Glossary The Home
Concert Hall
Rec Engineers
FAQ/Forum Links Contact us
line decor
e WIFR Structure

Ambiophonic Principles for the Recording and Reproduction of Surround Sound for Music - Part 4

Angelo Farina, Ralph Glasgal, Enrico Armelloni, Anders Torger

3.2 Implementation of the WFIR structure as an audio plugin and as DSP code

The WFIR structure illustrated in fig. 6 was first translated into an equivalent C-language code, suitable to operate on discrete-time samples of a sound waveform. The algorithm can be implemented with a single cycle, which is repeated as many times as the number of coefficients of the WFIR. This implementation was done independently by two of the authors [13, 14], with slightly different goals. TorgerÝs implementation is freely available as GNU public domain software.

The body of the cycle requires 3 multiplications and 3 sums, plus 4 memory operations (3 retrieves and one store). The algorithm requires a memory space as long as the number of filter coefficients, in order to store the partial sums of each stage.

In comparison, the traditional FIR algorithm is much cheaper, as the body of its main cycle requires only a single multiplication and addition, and two memory operations (retrieving the coefficient and the sample). The related computational cost is thus approximately given by the ratio 10/4, provided that we assign the same weight to multiplication, addition and memory operations.

Then the C code was embedded in a CoolEdit plugin, in order to mimic the behavior of the DSP code (allowing for listening tests, although not in realtime) and to pre-warp the measured impulse responses. This means that it is possible to process the measured IRs in the warped domain, deriving directly the coefficients of the cross-talk canceling inverse filters. Fig. 7 shows the user interface of the "ConvoWarp" module.

Fig. 7 ˝ User interface of the WFIR module

From the user point of view this module simply requires one to store the WFIR coefficients on the clipboard (in WAV format), then allows for the processing of a stereo audio signal by up to four separate WFIR filters, and thus is ideal for cross-talk canceling networks.

When the plugin is employed for the pre-warping of measured impulse response coefficients (or of precomputed cross-talk canceling filters), a negative value of λ must be used. Furthermore, a discrete Dirac delta function is fed into the warped filter structure using the measured impulse response as the coefficients of the WFIR. This operation produces the set of pre-warped coefficients.

Both WFIR and FIR architectures have been implemented on an evaluation board equipped with an AD 21065L SHARC processor in assembly code for efficiency purposes. This DSP unit is capable of real-time processing up to approximately 900 multiply-add operations at a sampling rate of 48 kHz. This means that with the traditional FIR implementation approximately 225 taps for each of the 4 cross-talk canceling filters are allowed at maximum.

Fig. 8 ˝ Analog Devices AD20165L code for WFIR

Exploiting the parallel processing capabilities of the SHARC processor, the WFIR code was implemented with only 5 lines of code, as shown in fig. 8, and thus, in this case, the computational cost of the WFIR is exactly 5 times of that of a traditional FIR. Thus, the maximum number of taps for each WFIR crosstalk canceller is 45.

3.3 Experimental results

Experiments and listening tests were performed at ASK Industry, Italy, inside a treated listening room, equipped with a pair of professional-grade selfpowered monitor loudspeakers (Dynaudio). The loudspeakers were arranged in the stereo dipole configuration (distance between the acoustic centers was 350 mm, and the listenerÝs head was 2 m from the front of the speakers). First, the binaural impulse responses were measured, making use of a Bruel & Kjaer head and torso simulator type 4100, a PC equipped with a professional sound board (Echo Layla) and the Aurora measuring software [15]. Fig. 10 shows a typical measurement session.

Fig. 11 shows the measured impulse responses of the system, corresponding to the 4 impulse responses referred to as h in fig. 3.

First, a set of very long inverse FIRs was computed (2048 taps each), as shown in fig. 12. When these filters are employed (running them with the Aurora convolution plugin under CoolEdit), a good frequency response and cross-talk cancellation is obtained, as shown in fig. 13.

Despite the length of these inverse filters, the response is good only above 600 Hz: at lower frequency the response is quite uneven, although the cancellation of the cross talk remains very effective.

Fig. 10 ˝ Measurements in the ASK listening room

After this, the "short" FIR and WFIR inverse filters were derived, respectively 220 and 42 taps long.  Fig. 14 shows the effect of such short FIR inverse filters when applied to the system of fig. 8.

Similarly, figs. 15 and 16 show the WFIR coefficients, and the filtering effect of the WFIR structure.

From these results, it is clear that the short FIR only behaves correctly at medium/high frequency, providing poor overall response, with great problems at low frequency. On the other hand, the WFIR gives an overall flat spectrum starting from much lower frequencies, although the cross-talk cancellation is somewhat less effective, and the time response is slightly "smeared".

Fig. 11 ˝ Measured Binaural Impulse Responses and corresponding frequency response

Fig. 12 ˝ Cross-talk cancellation with long FIR filters

Fig. 13 ˝ Cross-talk cancellation with long FIR

Fig. 14 ˝ Cross-talk cancellation with short FIR

Fig. 15 ˝ WFIR coefficients

Fig. 16 ˝ cross-talk cancellation with WFIR filters.

<< Previous Page | Next Page >>

Article Pages 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10