4
$\begingroup$

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

$\endgroup$
6
  • $\begingroup$ doesn't convolution mean that only one of the signals can be real-time? $\endgroup$
    – endolith
    May 27, 2017 at 1:25
  • $\begingroup$ 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? $\endgroup$ May 27, 2017 at 1:39
  • $\begingroup$ 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? $\endgroup$
    – endolith
    May 27, 2017 at 2:10
  • $\begingroup$ @endolith but if we buffer the signals then they won't be infinitely long. We could convolve buffers as they are being passed? $\endgroup$ May 27, 2017 at 2:22
  • $\begingroup$ yes you could do that $\endgroup$
    – endolith
    May 27, 2017 at 2:31

2 Answers 2

3
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.