A noise reduction utility using frequency-domain noise-gating.
csound -U dnoise [flags] -i noisefile -o outputfilename inputfilename
dnoise [flags] -i noisefile -o outputfilename inputfilename
-i filename – name of input soundfile containing the noise reference
-o filename – output soundfile name
-N num – number of bandpass filters. The default value is 1024.
-w num – filter overlap factor: 0, 1, (2), or 3. -w should not be used if -M is specified.
-M num – analysis window length. The default value is N-1. -M should not be used if -w is specified.
-L num – synthesis window length. The default value is M
-D num – decimation factor. The default value is M / 8.
-b time – begin time in noise reference soundfile. The default value is 0.
-B sampnum – starting sample in noise reference soundfile. The default value is 0.
-e time – end time in noise reference soundfile. The default value is end of file.
-E sampnum – final sample in noise reference soundfile. The default value is end of file.
-t num – threshold above noise reference in dB. The default value is 30.
-S num – sharpness of noise-gate turnoff in the range 1 to 5. The default value is 1.
-n num – number of FFT frames to average. The default value is 5.
-m num – minimum gain of noise-gate when off, in dB. The default value is -40.
-A – AIFF format output
-W – WAV format output
-J – IRCAM format output
-h – skip soundfile header. Not valid for AIFF or WAV output.
-8 – 8-bit unsigned character sound samples
-c – 8-bit signed character sound samples
-a – alaw sound samples
-u – ulaw sound samples
-s – short integer sound samples
-l – long integer sound samples
-f – float sound samples. (New in Csound 3.47) Floats also supported for WAV files.
-V – verbose status information
-R – continually rewrite header while writing soundfile (WAV/AIFF)
-- filename – output to log file filename
-H1 – generates a rotating line progress report. Can also be written -H.
-H2 – generates a "." every time a buffer is written
-H3 – reports the size in seconds of the output
-H4 – sounds a bell for every buffer of the output written
dnoise is a noise reduction utility using frequency-domain noise-gating. This method of noise reduction work best in with hiss type noise. The algorithm used in dnoise is based on one proposed by Moorer and Berger1. The dnoise algorithm differs from the original in that it uses the weighted overlap-add formulation for short-time Fourier analysis-resynthesis, in place of the recursive formula suggested by Moorer and Berger. The gain in each frequency bin is computed independently according to:
gain = g0 + (1-g0) * [avg / (avg + th*th*nref)]sh
where avg and nref are the mean squared signal and noise respectively. This also is slightly different than in Moorer and Berger. The critical parameters th and g0 are specified in dB and internally converted to decimal values. The nref values are computed at the start of the program on the basis of a noise reference soundfile, specified in the command line with -i, which contains noise without signal. The average values are computed over a rectangular window of m FFT frames looking both ahead and behind the current time. This corresponds to a temporal extent of m*D/R, which is typically (m*N/8)/R. The default settings of N, M, and D should be appropriate for most uses. A sample rate higher than 16 kHz may require a higher N.
Moorer, James A., and Berger, Mark, "Linear-Phase Bandsplitting: Theory and Applications," Journal of the Audio Engineering Society, Volume 34, Issue 3 (1996), pp. 143-152.
John ffitch (Adaptation for Csound)
New in Csound 4.10