5

I am attempting to program an audio application in C# and need to implement a real-time convolution reverb processor. The method I am currently using is breaking down when using impulse responses of length above ~16,000 samples at 44.1kHz. I need to be able to use impulse responses of at least 2 seconds or 88,200 samples. Here is my best attempt to diagram the method I am using:

enter image description here

The chunk-size I am using is 2048 samples. I am using the NAudio Library for FFT, and the FFT of the impulse response is pre-calculated on load.

What is wrong with my method? I know that what I'm after is possible because I've used plenty of audio applications that accomplish it.

EDIT: Turns out there were two problems: The FFT library I was using was not fast enough and, furthermore, C# in general was not fast enough for this type of application. After switching to non-managed code (C++) and a a better FFT library (FFTW), the problem was resolved.

Madison Brown
  • 331
  • 3
  • 10
  • 1
    Is this the overlap-add method? I cant tell this from your explanation. If not, try considering overlap-add (http://en.wikipedia.org/wiki/Overlap%E2%80%93add_method) – Andreas H. Sep 27 '13 at 02:40
  • As far as I can tell, what I am doing is essentially the same as the overlap-add method; however, maybe the parameters i'm using (chunk size, amount of zero-padding) are not optimal? – Madison Brown Sep 27 '13 at 05:39

0 Answers0