1. A method for producing a denoised output waveform from a noisy waveform, comprising the steps of: providing the noisy waveform as an input waveform; determining a frequency domain noise shape associated with the input waveform; calculating a wavelet domain noise shape from the frequency domain noise shape; calculating a discrete wavelet transform of the input waveform to form a wavelet domain waveform; estimating the noise statistics from the wavelet domain waveform; calculating a threshold from the estimated noise statistics and the wavelet domain noise shape; applying the threshold to the wavelet domain waveform to form a denoised wavelet domain waveform; and calculating an inverse discrete wavelet transform of the denoised wavelet domain waveform to form a denoised waveform.