Quefumas / gensound

Pythonic audio processing and generation framework
Apache License 2.0
81 stars 6 forks source link

Stereo Convolution #9

Closed Quefumas closed 3 years ago

Quefumas commented 4 years ago
  1. What does SciPy convolve actually do when convolving two stereo signals?
  2. What would we like it to do?

I've noticed some impulse responses are Stereo, which is cool and all, except that I'm not sure what's supposed to happen when convolving a stereo signal with a stereo impulse response. For example, suppose each of L/R undergoes convolution and outputs a stereo reverb, and then both these stereo outputs are mixed together - won't it cancel the original panning completely? What would we actually want to happen using such an impulse response anyway? Perhaps use Reaper to check.

Quefumas commented 4 years ago

Relevant links: http://polaron.de/Thafknar/AboutImpulseResponsesAndConvolution.html, https://www.liquidsonics.com/knowledge-base/reverb-processing-topologies/.

We should probably opt for what is termed in the 2nd URL as "parallel stereo" as the default behaviour.

After some experiments and searches, I still couldn't figure out how SciPy performs stereo-on-stereo convolution (documentation is lacking). Also, when trying to implement parallel stereo manually, the results sounded odd and not exactly the same as the convolutional reverb from ReaVerb. I'm not sure if it's because of extra processing done there, but convolution should be pretty straightforward.

Quefumas commented 3 years ago

Implemented as "parallel stereo", working on each track separately.