DSPRelated.com
Forums

True stereo convolution

Started by VelociChicken October 14, 2007
Hello, I've written my own convolution algorithm using FFT, all seems to 
work nicely and it's fairly fast. But I've got a little stuck on making it 
true stereo. Originally I thought I just simply use two convolutions, but 
that does not work because the impulses fed into the system work on the left 
AND right hand sides. So there needs to be some kind of cross feed at work. 
I've tried in vain looking around the net, and was wondering if some kind 
person could nudge me in the right direction on this. Can this be 
pre-processed into the stereo impulse itself? How's this done?

Thanks,

VC




VelociChicken wrote:
> Hello, I've written my own convolution algorithm using FFT, all seems to > work nicely and it's fairly fast. But I've got a little stuck on making it > true stereo. Originally I thought I just simply use two convolutions, but > that does not work because the impulses fed into the system work on the left > AND right hand sides. So there needs to be some kind of cross feed at work. > I've tried in vain looking around the net, and was wondering if some kind > person could nudge me in the right direction on this. Can this be > pre-processed into the stereo impulse itself? How's this done?
Stereo channels are independent. There must be an error in your code. Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
> Stereo channels are independent. There must be an error in your code.
I was asking what to do for stereo, but O.K. thanks for the reply - they are separate? So... If I have a stereo impulse of a large hall, and process the channels independently on a stereo sound like a hand-clap but the clap is panned to the far left - then independent convolution will sound fine on the left but silent on the right, which is wrong as this does not mimic the space itself. Downloading a few convolution plug-in demos do indeed show the channels to be independent though. Surprised me a little I guess. : ) Cheers, VC
"VelociChicken" <bob@yahoob.com> writes:

>> Stereo channels are independent. There must be an error in your code. > > I was asking what to do for stereo, but O.K. thanks for the reply - they are > separate? So... If I have a stereo impulse of a large hall, and process the > channels independently on a stereo sound like a hand-clap but the clap is > panned to the far left - then independent convolution will sound fine on the > left but silent on the right, which is wrong as this does not mimic the > space itself. Downloading a few convolution plug-in demos do indeed show the > channels to be independent though. Surprised me a little I guess. : ) > > Cheers, > VC
You need to examine your assumptions more closely. Are you positing that the two input channels (l and r) are emitting into an acoustic space and you want to reproduce the resulting signal that arrives at a listener's left and right ears? If so, then you're right - there has to be some interchannel crossfeed for the general case (and for any practical acoustic space simulation). Specifically, you'll need Hll(f), Hlr(f), Hrr(f), and Hrl(f), where Hxy denotes the system function from input channel x to ear y. Where you would get such system functions is another story. -- % Randy Yates % "Midnight, on the water... %% Fuquay-Varina, NC % I saw... the ocean's daughter." %%% 919-577-9882 % 'Can't Get It Out Of My Head' %%%% <yates@ieee.org> % *El Dorado*, Electric Light Orchestra http://www.digitalsignallabs.com
Hi,

In the general case, a 2 input 2 output system has four independent
impulse responses. Probably you can simplify things (turn an cross-impulse
response into a constant factor, for example) but that really depends on
your application. 

-mn
VelociChicken wrote:
>> Stereo channels are independent. There must be an error in your code. > > I was asking what to do for stereo, but O.K. thanks for the reply - they are > separate? So... If I have a stereo impulse of a large hall, and process the > channels independently on a stereo sound like a hand-clap but the clap is > panned to the far left - then independent convolution will sound fine on the > left but silent on the right, which is wrong as this does not mimic the > space itself. Downloading a few convolution plug-in demos do indeed show the > channels to be independent though. Surprised me a little I guess. : )
It is up to the microphones to pick up the stereophonic aspects of the sound in the room. As far as the processing chain is concerned, separate channels might as well be separate mono radio stations. Jerry -- Engineering is the art of making what you want from things you can get. &macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;&macr;
Thanks for all the replies guys. It's clear to me now.

"Jerry Avins" <jya@ieee.org> wrote in message 
news:M6SdneVXRfP1EI_anZ2dnUVZ_ryqnZ2d@rcn.net...
> VelociChicken wrote: >>> Stereo channels are independent. There must be an error in your code. >> >> I was asking what to do for stereo, but O.K. thanks for the reply - they >> are separate? So... If I have a stereo impulse of a large hall, and >> process the channels independently on a stereo sound like a hand-clap but >> the clap is panned to the far left - then independent convolution will >> sound fine on the left but silent on the right, which is wrong as this >> does not mimic the space itself. Downloading a few convolution plug-in >> demos do indeed show the channels to be independent though. Surprised me >> a little I guess. : ) > > It is up to the microphones to pick up the stereophonic aspects of the > sound in the room. As far as the processing chain is concerned, separate > channels might as well be separate mono radio stations. > > Jerry > -- > Engineering is the art of making what you want from things you can get. > &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
>> As far as the processing chain is concerned, separate
channels might as well be separate mono radio stations. If the "processing chain" implements a reverb, that is not true. Example: Take a standard stereo-capable reverb unit from the music shop, feed a signal into left channel and put an unused cable in the right channel (to force it to stereo mode). The output signal appears on both outputs, although stronger on the left channel. In other words, it CANNOT be used as two independent mono reverb units. -mn
> If the "processing chain" implements a reverb, that is not true. > Example: Take a standard stereo-capable reverb unit from the music shop, > feed a signal into left channel and put an unused cable in the right > channel (to force it to stereo mode). > The output signal appears on both outputs, although stronger on the left > channel. In other words, it CANNOT be used as two independent mono reverb > units. > > -mn
Thanks, O.K. this was more like my original question, it makes a lot of convolution kit, that use just stereo impulses, look less appealing. So I guess I need a stereo impulse from a source in the left of the room, for example, and a stereo impulse from the right of the room, and feed each of the user's stereo inputs to both, and mix them? VC
I'd start reading here:

http://www.ludd.luth.se/~torger/brutefir.html

The two outputs of the room are my ears, but what would be the inputs?

-mn