BUG! [speakers off...] what happens if I load a 32bit float (IEEE) file as the impulse file? -> answer: blown tweeter fuses dammit... I need to get new fuses
- Added Wet/Dry mixer setting
Can you add a cross channel feature?
The input signal to the convolver is not dithereds o why should the impulse response be?
If the impulse response is dithered should the output dithering be disabled?
QuoteCan you add a cross channel feature? I don't think this is worth the hassle at all, and I can't see many if any practical situations in which this would be useful.You can crossmix after the convolver BTW. If there's a need for a crossmixer I'll make one.
Copyright © 20003 Gian-Carlo Pascutto
Further applications of crossmixed FIR convolution include playback of binaural material over loudspeakers (probably requires rather exact listener location, so probably not very useful)
and probably some kinds of cancellation of room-interaction with loudspeakers (you need to generate the inverse convolution function to cancel out the effects).
By the way, Garf, I note in the Readme.txt that you wrote it 18000 years in the future:QuoteCopyright © 20003 Gian-Carlo PascuttoJust thought I'd point it out.
BTW, can I ask why you do an FFT in your plugin? Is it simply to measure the approximate effective scaling of the impulse response and automatically adjust the gain?
Getting a bit technical, division works perfectly in the Fourier domain to deconvolve in the time domain (albeit that highly attenuated frequencies when amplified back to the original level tend to be very noisy - it's division by a small number represented in a fixed-point scale).
For simple frequency equalization, tone sweeps (chirps) can work and can contain more energy per frequency than a single Dirac delta function pulse.From a prior life when I was heavily into research about clipped digital correlation or noisy analogue signals, I also remember techniques like chirp-Z are possible for some similar analysis (equivalent to correlation) and might be adaptable.One nice technique, also used in radar and time-domain reflectometry, is the use of pseudorandom noise, which has a white spectrum, just like a delta function, but much higher average energy. You can either cross-correlate the received signal with the known pseudrandom input signal and determine the time signature or you can take the Fourier transform of the correlation function to determine the power spectrum. I suspect a similar technique could be adapted to deriving impulse responses and inverse convolution functions from relatively noisy measurements. A correlation function is closely related to an impulse response. Similar ideas are used in spread-spectrum communications techniques like Code Division Multiple Access (CDMA).
The convolution works entirely in the frequency domain. It already does what you describe halfway....This is what I tried. I made several restrictions, one that it was restricted to zero phase filters (no complex components), and that any boost was forcedly limited to 30dB (to prevent overamplification of noise). But even reversing simple equalization didn't work all that well. It needs further experimentation.But I will try crossmix convolution first.
Ah, seeing that you use FFTs to actually perform the convolution, they're bound to be windowed FFTs - presumably using lapping transform windows? The mathematics about convolution in time being equivalent to multiplication in frequency domain may well break down somewhat for windowed/blocked FFTs.
I'm guessing that zero-phase (cosine) filters might end up beating with non-zero-phase filters in the original impulse response that you EQ'd?
Lexicon, TC, & Waves units do not use impulses to achieve reverb, yet these companies include pre-delay in all their reverb units as it is considered essential.It seems, however, you have already made up your mind though. I was just hoping you could make this great plugin perfect, thats all.Thanks again for your plugin.