View Single Post
Old 11-22-2021, 11:50 AM   #14
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 15,721
Default

A solution:

Run two separate convolutions:

1) Short (the first thousand or so samples of the impulse response), runs in the realtime thread directly. It can be brute force + a short FFT if using _Div, or just a short FFT if you can accept a little latency.

2) The rest of the impulse response, processed in a worker thread at lower priority. This can be processed at a larger FFT size or using _Div depending on how short/long the short impulse response is.

The second impulse response, since it is the remainder of the impulse and does not include the beginning, can be delayed (allowing time for the data to be transferred to the worker thread, processed, and transferred back)...
Justin is offline   Reply With Quote