1
$\begingroup$

I am implementing a software to auralize a virtual scene but am kind of a newbie to DSP. The focus should be the calculation of the IR which is frequency dependant. But this means that the renderer of the sound should be able to convolute reverb in a frequency dependant way (in realtime possibly). A IR has a set of Reflections. A reflection is a tuple of delay (double) and decay for each frequency band to a decay in dB (hash_map from freqband to double).

Now I want to convolute this IR with my input signal in the most efficient manner. What I intend to do is using the FFT to get the frequency spectrum and then apply a reverb function to this signal. The two main conceptual problems for me here are:

  1. How do I apply delay in the frequency spectrum? (Is it even necessary to do this in the frequency spectrum?)

  2. Is there a common method to apply such a reverb function to a signal? And if there is, do I need to have phase information modelled?

What I was thinking about was splitting the IR into several frequency responses dependant on the frequency band and then apply it to the frequency spectrum of the input signal. But then again this involves problem 1 and somehow includes phases because I would not know otherwise if I need to add or subtract.

$\endgroup$
1
$\begingroup$

There are basically two different methods to create reverb: you can store (simulated or measured) room impulses and apply it by convolution. Reverb impulse response are very, typically thousands of tabs. This makes direct convolution impractical and the method choice is overlap add or related FFT-framed algorithms. This will induce latency and and is difficult to update.

The alternative would be a parametric algorithm. Typical building blocks include tap-delay lines, schroeder allpass filters, comb filters and feedback delay networks. Most of these blocks can be tied to some meaningful room acoustical parameter: reverb time as a function of frequency, refection density, mean free path length, etc. They also can be updated quickly and continuously. However they have a tendency to sound metallic and artificial.

Building good sounding reverb is hard. Many a thesis has been written on the topic and commercial reverb algorithms and/or devices often take hundreds of hours of development + tuning. I recommend doing some research and then deciding how deep you want to go in.

$\endgroup$
  • $\begingroup$ In preprocessing I calculate transfer matrices for several points in space in "delay, decay (freq dependant)" pairs. Would it be appropriate to use this transfer matrices and feed them to a FDN and then additionally calculate a few early reflections up to a certain point to calculate the early reverb using direct convolution? And if I would do that, is it realistic to make the decay freq dependant without inducing too much latency? I don't want into too fancy dsp stuff but it kind of affects the model I choose for the rest of my system. Thank you. $\endgroup$ – Telefonica Sep 6 '15 at 13:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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