Reducing noise using a plurality of recording copies
Reply #22 – 2013-03-29 14:21:21
And I can download a freeware/open source subsample shifting plug-in where? ;-) Place a subsample shifted sinc waveform (generate it in some maths package like Octave) into fb2k's convolution plug-in (other free convolution methods are available). Full upsampling is just a way of getting access to the sinc interpolation in a commonly implemented manner, but it's hopelessly inefficient for the job at hand, because a) most of the new samples are not needed, and so do not need to be calculated, and b) the subsequent downsampling will probably impose unnecessary band-limiting (throwing away samples is all that's needed, if you use some implementation that insists on generating them in the first place). Cheers, David. EDIT: sub-sample delays attached. 20000+0.1 sample delay: [attachment=7466:sync40k_0.1.wav] 20000+0.9 sample delay: [attachment=7467:sync40k_0.9.wav] Both are 32-bit 44.1kHz mono wave files (though the sample rate is irrelevant), 40001 samples long. No windowing, accurate to something like 20-bits (can be made arbitrarily accurate with suitable length and windowing). Convolve some audio with one or the other - it should sound fine. Convolve some audio with one then the other, remove the 40001 sample delay, subtract the original, and you'll get silence (depending on the accuracy of the convolution calculation; the residual is -85dB in Cool Edit Pro with 16-bit files), proving that 20000+0.1+20000+0.9 sample delay - 40001 sample delay = transparent. trivial to generate...x=-20000:20000; d=0.1; w=sin(pi.*(x-d))./(pi.*(x-d)); %w=w.*hanning(length(w))'; % uncomment to window wavwrite(w,44100,32,'sync40 0.1.wav') Note: Cool Edit Pro's own resampling uses about 320 samples at 256 quality, and 1000 at 999 quality (for 16-bit signals), and about 1.5x that for 32-bit signals. Using 40001 samples in this example is overkill but meant there was absolutely no need to window. Most people would use multiplication in the frequency domain , rather than convolution in the time domain, to speed the whole thing up considerably.