# Two real time signals convolving

This might be a stupid question but is it possible to convolve two real-time signals together? I know that generally for running convolution you have the IR and the block of the real time signal and then you convolve them both, making sure you have zero-padded, and then you overlap and add these, but would it be possible, theoretically, to convolve two real-time signals? Like, have a block of one and the block of the other and convolve them real-time, and if so, would the process be fast enough to create something musically dignified?

Thanks

Gabe

• doesn't convolution mean that only one of the signals can be real-time? – endolith May 27 '17 at 1:25
• I am not sure that is why I am asking. I mean if you stored both real time signals in a buffer would be possible to process that convolution fast enough to give back the results in real time? – gabrielzalles May 27 '17 at 1:39
• well convolution involves multiplying every sample of one signal by every sample of the other signal, so if both are infinitely long, you'll never finish processing the first sample? – endolith May 27 '17 at 2:10
• @endolith but if we buffer the signals then they won't be infinitely long. We could convolve buffers as they are being passed? – gabrielzalles May 27 '17 at 2:22
• yes you could do that – endolith May 27 '17 at 2:31

Convolution is what happens when a signal passes through an LTI system. $$y(t)=x(t)\star h(t)=\int_{-\infty}^{\color{red}\infty}x(\tau)h(t-\tau)d\tau$$ The keyword in this question is real-time. The associated keyword in the answer would be weather the LTI system is causal or not.

If the system is causal, then $h(t)=0, \ \forall t<0$, and therefore $h(t-\tau)=0,\ \forall \tau>t$ which means $$y(t)=\int_{-\infty}^{\color{red}t}x(\tau)h(t-\tau)d\tau$$ It means we only need the inputs only from $-\infty$ up to the present time $t$ which is all available for a real-time implementation.

So the convolution can be implemented in real-time if the system we implement is causal.

To conclude and generalize this idea for two signals, if at least one of the signals are right-sided (which is practically the case), then the real-time implementation is possible.

Regarding your other question, it really depends on the delay performance of your system.

For two signals that start being non-zero at some (non-negative) point of time, the resulting convolved signal is uniquely determined by the past input. It's just that if both signals are of indefinite duration, the resulting effort for calculating consecutive samples gets larger and larger.

But from a straightforward "causality" view, outputting the convolved signal while new content keeps arriving on both inputs is possible since the convolution integral does not access input lying in the future.