squash is a crude digital signal amplitude dynamic expander and
compressor.  I may eventually improve some of its features, yet squash
has been quite useful in its current implementation.  squash first
breaks its input signal into fixed-length windows with the useful and
popular overlap-add method.  squash then compares the average
amplitude of the window (rms) with a user-supplied noise threshold.
The window will receive the specified noise multiplier if the window
rms is below this threshold; otherwise, the window is scaled by the
difference between its own rms value and the supplied rms threshold
multiplied by the supplied amplitude adjustment ratio.  Signal
expansion occurs when this adjustment ratio is (e > 1.); compression
occurs when this ratio is (e <= 1.).

here is a typical usage:

	% fromsf waffle.snd | squash -R44100 -N1024 -D128 -t.000001 -m.1 \
	  -e.5 | tosf pancake.snd

this usage will compress the signal by a logrithmic factor of two.

squash requires 32-bit floating-point input to the file stdin.  Output
is channelled through the file stdout.  Diagnostic output is available
through the usage of the -d flag on a calling commandline. 

	% squash -h

	will provide a usage summary for squash
