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:
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.