Re: Impulse Response
Posted: Tue Jan 19, 2016 1:11 pm
Hello guys, sorry for being here rarely lately - I'm in the middle of exam period, so not much time for Flowstone, sadly.
The reverb works suberB. The CPU usage is also not crazy high. Yes, the memins are currently implemented very badly in ASM module. 3.0.9 will surely provide considerable improvement in this area, namely the memrefin input. I also have several ideas how to improve loading of impulses even in current version. Instead of doing the stuff in green via greenFFT and then appending arrays, I think the better solution would be to create mem and then fill it with data using streams connected to analyser prim. I've done it that way in my project and it worked much faster. Hopefully I'll find time doing that soon.
Also there is an easy way to adapt the CPU usage to impulse length - just add a selector after each sub-convolver which would turn it off if impulse isn't long enough. Similarly the Impulse FFT preprocessing can be limited to only the needed parts via trigger blocker.
As for the longest IR, I recommend 20-30seconds maximum. With above-described smart-bypass mechanisms it wouldn't even affect CPU usage nor loading times (except schematic loading time). Also consider that many users use higher sample-rates!!! so 5seconds @44kHz would only correspond to 2.5seconds @ 96kHz.
@Spogg
Convolution (reverb) works by multiplying spectra (in frequency domain): Dry x IR = Wet
Similarly, if you have a dry signal and recorded wet signal you can calculate the IR by dividing the spectra: Wet / Dry = IR, which is called deconvolution.
Both are done in frequency domain, so you need a dry signal, which contains all frequency elements. Otherwise you get division by zero during deconvolution. Sine sweep is the best choice, since it is guaranteed to contain all frequencies.
It is possible to download free deconvolver online, as well as sine sweep. Or you may generate your own. Deconvolving them should be a matter of loading the wet file and dry file and clicking "start" and "save result" - it's not a rocket science.
Mathematically speaking Impulse response is a reverberation the room/device has when it is excited by an impulse (single sample click). Naturally, you can generate similar click via. hand clap, starting pistol or blowing up a baloon. However, the IR will have the frequency footprint of the used "device" imprinted on it. The same is true when using a speaker and deconvolution, but modern speakers have much flatter frequency response than any of above-mentioned. In the end of the day, the IR you end up with is actually a convolution of 4 IR's really - speaker IR x room IR x microphone IR x soundcard IR. That is normal and there is no way to avoid it.
As for the Flowstone reverb, perhaps we can simply add a stereo-shaper tool in front and after the convolver. By stereo shaper, I mean something that does: Lout=L*a+R*b; Rout=L*c+R*d;
By calculating the paropriate a,b,c and d you can widen/narrow the stereo field, rotate it, switch between LR and MS configurations, etc. It's more of a matter of making the GUI intuitive. Perhaps when I'll have more time messing with it...
The reverb works suberB. The CPU usage is also not crazy high. Yes, the memins are currently implemented very badly in ASM module. 3.0.9 will surely provide considerable improvement in this area, namely the memrefin input. I also have several ideas how to improve loading of impulses even in current version. Instead of doing the stuff in green via greenFFT and then appending arrays, I think the better solution would be to create mem and then fill it with data using streams connected to analyser prim. I've done it that way in my project and it worked much faster. Hopefully I'll find time doing that soon.
Also there is an easy way to adapt the CPU usage to impulse length - just add a selector after each sub-convolver which would turn it off if impulse isn't long enough. Similarly the Impulse FFT preprocessing can be limited to only the needed parts via trigger blocker.
As for the longest IR, I recommend 20-30seconds maximum. With above-described smart-bypass mechanisms it wouldn't even affect CPU usage nor loading times (except schematic loading time). Also consider that many users use higher sample-rates!!! so 5seconds @44kHz would only correspond to 2.5seconds @ 96kHz.
@Spogg
Convolution (reverb) works by multiplying spectra (in frequency domain): Dry x IR = Wet
Similarly, if you have a dry signal and recorded wet signal you can calculate the IR by dividing the spectra: Wet / Dry = IR, which is called deconvolution.
Both are done in frequency domain, so you need a dry signal, which contains all frequency elements. Otherwise you get division by zero during deconvolution. Sine sweep is the best choice, since it is guaranteed to contain all frequencies.
It is possible to download free deconvolver online, as well as sine sweep. Or you may generate your own. Deconvolving them should be a matter of loading the wet file and dry file and clicking "start" and "save result" - it's not a rocket science.
Mathematically speaking Impulse response is a reverberation the room/device has when it is excited by an impulse (single sample click). Naturally, you can generate similar click via. hand clap, starting pistol or blowing up a baloon. However, the IR will have the frequency footprint of the used "device" imprinted on it. The same is true when using a speaker and deconvolution, but modern speakers have much flatter frequency response than any of above-mentioned. In the end of the day, the IR you end up with is actually a convolution of 4 IR's really - speaker IR x room IR x microphone IR x soundcard IR. That is normal and there is no way to avoid it.
As for the Flowstone reverb, perhaps we can simply add a stereo-shaper tool in front and after the convolver. By stereo shaper, I mean something that does: Lout=L*a+R*b; Rout=L*c+R*d;
By calculating the paropriate a,b,c and d you can widen/narrow the stereo field, rotate it, switch between LR and MS configurations, etc. It's more of a matter of making the GUI intuitive. Perhaps when I'll have more time messing with it...