5.3 Synthesizing multichannel sound from impulse response

Problem

To create an audio data through simulation and do an offline operation test.

Solution

A multi-channel data can be synthesized if the waveform data of a sound source and the impulse response file are available.
Synthesizing is done by convolving the impulse response from the sound source to each microphone into the sound source data. Convolution stated here is a cyclic convolution method implemented at high speed using FFT. It is also possible to use Matlab. Below is the Matlab pseudocode for convolution:

x=wavread('SampleData1ch.wav');
y1=conv(x,imp1);
y2=conv(x,imp2);
y3=conv(x,imp3);
y4=conv(x,imp4);

Here it is assumed that SampleData1ch.wav is a 1-channel audio recorded in Microsoft RIFF format, with imp1, ..., imp4 indicating time-domain representations of impulse responses from the sound source to the microphone 1, ..., 4. Thus, y1,y2,y3 and y4 are the multi-channel synthesized sound being simulated.

It is important to confirm both the impulse responses and sampling frequency of the sound source data before synthesizing because the convolution of sounds with different sampling frequency is meaningless.

When synthesizing mixed sounds, it is adviced to perform additive synthesis in the convoluted data.

Discussion

The convolution of an original sound and an impulse response can simulate multiplicative noise. This multiplicative noise, such as transfer characteristics from the sound source to the microphone or the recording device, is modeled by the convolution to the clean signal. Therefore, this synthesis simulates multiplicative noise.

See Also

To measure impulse response, see Recording impulse response. To add noise, see Adding noise.