OK, let's have a go at drawing some of this together.
The current version of convolver takes a single (possible multi-channel) filter file and convolves it with the input stream, channel by channel.
The convolution is probably as fast as it's going to get without moving to another FFT package. On a 2GHz Pentium M or a 3.2GHz Pentium 4 and a long filter, convolver convolves at roughly 20 times real time speed (1.5s to convolve 2 x 65536 x 10 x 44.1KHz samples) -- calculate optimum attenuation convolves 10 filter-lengths' worth of noise, if you would like to report your experience. There are currently two builds up (VC++ 2003 and Intel C++). I'll see if VC++ 2005 or FFTW are faster in due course, but the results on the net are equivocal. Can anyone report how this compares with the likes of BruteFir, or
There is clearly a demand for a more flexible approach.
I suggest the following and would welcome comments:
- allow the user to specify a list of mono impulse files (of equal length, or zero-pad to the maximum length?)
- for each filter allow the user to specify a list of (up to eight?) input channels and scaling factors to which the filter will be applied.
- for each filter, input and scaling factor combination, allow the user to specify an output channel, to which the convolved output will be sent. Where an output file has more than one input filter and scaling factor, sum the scaled outputs
- where an output channel has no convolved input specified, introduce a delay to sync with the convolved outputs
Questions:
- would such a framework be flexible enough to do the job?
- Have I missed any considerations?
- would it be preferable to have the plug-in generate its own filters (eg, high, low mid-band pass, rather than read user-provided filters)?
What would those filters be?
This would obviously not be suitable for room correction, or generate specific cross-overs for their particular setup, but would make it easier for users who don't want to have to generate their own filters. Perhaps the answer is to do both, but in separate plug-ins, to avoid having an overly-complex interface.
- is there a requirement to be able to use stereo impulse files? While theoretically, you should record mono responses, it has been suggested to me that a stereo response file may sound good in some circumstances.
Over to you.