1
$\begingroup$

I have some optimization questions about real time partioned convolution by multiplication in the frequency domain. Now my process looks as follows:

Initialization:

  • a symmetric FIR impulse response is divided into blocks and converted to complex (ir, 0, ir+1, 0, ir+2, 0, ...) and the FFTs are executed by zero padding to block lenght*2

Processing:

  • for every new block the least two audio signal blocks are also converted to complex and the FFT is made
  • the buffered FFTs of the impulse response are complex multiplicated (positive and negative frequencies) with the buffered signal FFTs and accumulated
  • the audio signal is converted back by IFFT, the right half of the IFFT is used for the output

The above process works very well and the performance is already good, much faster than direct convolution. But I'm sure that it isn't optimized. However, my questions are:

  1. Both FFTs are mirrored at n/2 (positive and negative frequencies). The values of the mirrored sides are identical but not always the sign (I think the cause is if it's a sine or cosine wave). How can I avoid the half of the complex multiplications ? Can I fill the mirrored right side by myself ? But what about the sign ? The result shouldn't be phase shifted (linear phase).
  2. What do I have to do and what are the advantages by using a real to complex FFT and complex to real IFFT, where can I find an easy/short and not oversized coding example (c/c++ would be perfect, but doesn't matter) ? Is this maybe the solution for my first question ?

Thanks in advance, any help would be great !

Best regards, Andreas

0 Answers 0