shithub: sox

Download patch

ref: 415d218a501c7bdb5bc25c8a2ed4dd8b1e65b8d8
parent: 316506882236733bd91786a33fc8a9594dd1d8ff
author: cbagwell <cbagwell>
date: Mon Sep 27 21:02:17 EDT 2004

Updating avg to make it more apparent to seperate nums with commas

--- a/sox.1
+++ b/sox.1
@@ -672,7 +672,7 @@
 in quad-channel files so select the exact channel to prevent this.
 
 The avg effect can also be invoked with up to 16 double-precision
-numbers, which specify the proportion (0.0 = 0% and 1.0 = 100%) 
+numbers, seperated by commas, which specify the proportion (0.0 = 0% and 1.0 = 100%) 
 of each input channel that is to be mixed into each output channel.
 In two-channel mode, 4 numbers are given: l->l, l->r, r->l, and r->r,
 respectively.
--- a/sox.txt
+++ b/sox.txt
@@ -525,14 +525,15 @@
 		 this.
 
 		 The  avg effect can also be invoked with up to 16 double-pre-
-		 cision numbers, which specify the proportion (0.0  =  0%  and
-		 1.0  =	 100%)	of each input channel that is to be mixed into
-		 each output channel.  In  two-channel	mode,  4  numbers  are
-		 given:	 l->l,	l->r,  r->l, and r->r, respectively.  In four-
-		 channel mode, the first 4 numbers give	 the  proportions  for
-		 the  left-front  output  channel, as follows: lf->lf, rf->lf,
-		 lb->lf, and rb->rf.  The next 4 give the  right-front	output
-		 in the same order, then left-back and right-back.
+		 cision numbers, seperated by commas, which specify  the  pro-
+		 portion  (0.0 = 0% and 1.0 = 100%) of each input channel that
+		 is to be mixed into  each  output  channel.   In  two-channel
+		 mode,	4  numbers  are	 given:	 l->l,	l->r,  r->l, and r->r,
+		 respectively.	In four-channel mode, the first 4 numbers give
+		 the  proportions  for	the left-front output channel, as fol-
+		 lows: lf->lf, rf->lf, lb->lf, and rb->rf.  The	 next  4  give
+		 the  right-front output in the same order, then left-back and
+		 right-back.
 
 		 It is also possible to use the 16 numbers to expand or reduce
 		 the channel count; just specify 0 for unused channels.
@@ -554,15 +555,15 @@
        band [ -n ] center [ width ]
 		 Apply a band-pass filter.  The frequency response drops loga-
 		 rithmically around the center frequency.  The width gives the
-		 slope	of  the	 drop.	 The frequencies at center + width and
-		 center - width will be half  of  their	 original  amplitudes.
-		 Band  defaults	 to  a	mode oriented to pitched signals, i.e.
-		 voice, singing, or instrumental music.	 The  -n  (for	noise)
+		 slope of the drop.  The frequencies at	 center	 +  width  and
+		 center	 -  width  will	 be half of their original amplitudes.
+		 Band defaults to a mode oriented  to  pitched	signals,  i.e.
+		 voice,	 singing,  or  instrumental music.  The -n (for noise)
 		 option uses the alternate mode for un-pitched signals.	 Warn-
-		 ing: -n introduces a power-gain of about 11dB in the  filter,
-		 so  beware  of output clipping.  Band introduces noise in the
+		 ing:  -n introduces a power-gain of about 11dB in the filter,
+		 so beware of output clipping.	Band introduces noise  in  the
 		 shape of the filter, i.e. peaking at the center frequency and
-		 settling  around  it.	 See filter for a bandpass effect with
+		 settling around it.  See filter for a	bandpass  effect  with
 		 steeper shoulders.
 
        bandpass frequency bandwidth
@@ -574,11 +575,11 @@
        chorus gain-in gain-out delay decay speed depth
 
 	      -s | -t [ delay decay speed depth -s | -t ... ]
-		 Add  a	 chorus	  to   a   sound   sample.    Each   quadtuple
-		 delay/decay/speed/depth  gives	 the delay in milliseconds and
+		 Add   a   chorus   to	 a   sound   sample.   Each  quadtuple
+		 delay/decay/speed/depth gives the delay in  milliseconds  and
 		 the decay (relative to gain-in) with a modulation speed in Hz
-		 using	depth in milliseconds.	The modulation is either sinu-
-		 soidal (-s) or triangular (-t).  Gain-out is  the  volume  of
+		 using depth in milliseconds.  The modulation is either	 sinu-
+		 soidal	 (-s)  or  triangular (-t).  Gain-out is the volume of
 		 the output.
 
        compand attack1,decay1[,attack2,decay2...]
@@ -586,63 +587,63 @@
 	       in-dB1,out-dB1[,in-dB2,out-dB2...]
 
 	       [gain [initial-volume [delay ] ] ]
-		 Compand  (compress  or expand) the dynamic range of a sample.
-		 The attack and decay time specify the integration  time  over
+		 Compand (compress or expand) the dynamic range of  a  sample.
+		 The  attack  and decay time specify the integration time over
 		 which the absolute value of the input signal is integrated to
-		 determine its volume; attacks refer to	 increases  in	volume
-		 and  decays  refer to decreases.  Where more than one pair of
-		 attack/decay  parameters  are	specified,  each  channel   is
-		 treated  separately  and  the number of pairs must agree with
+		 determine  its	 volume;  attacks refer to increases in volume
+		 and decays refer to decreases.	 Where more than one  pair  of
+		 attack/decay	parameters  are	 specified,  each  channel  is
+		 treated separately and the number of pairs  must  agree  with
 		 the number of input channels.	The second parameter is a list
-		 of  points  on the compander’s transfer function specified in
-		 dB relative to the maximum possible  signal  amplitude.   The
-		 input	values	must be in a strictly increasing order but the
-		 transfer function does not have to be	monotonically  rising.
+		 of points on the compander’s transfer function	 specified  in
+		 dB  relative  to  the maximum possible signal amplitude.  The
+		 input values must be in a strictly increasing order  but  the
+		 transfer  function  does not have to be monotonically rising.
 		 The special value -inf may be used to indicate that the input
 		 volume	 should	 be  associated	 output	 volume.   The	points
-		 -inf,-inf  and 0,0 are assumed; the latter may be overridden,
+		 -inf,-inf and 0,0 are assumed; the latter may be  overridden,
 		 but the former may not.
 
-		 The third (optional) parameter is a post-processing  gain  in
-		 dB  which  is	applied after the compression has taken place;
-		 the fourth (optional) parameter is an initial	volume	to  be
-		 assumed  for  each channel when the effect starts.  This per-
-		 mits the user to supply a nominal level initially,  so	 that,
-		 for  example,	a  very	 large	gain is not applied to initial
-		 signal levels before the companding action has begun to oper-
-		 ate:  it  is quite probable that in such an event, the output
-		 would be severely clipped while the compander	gain  properly
-		 adjusts itself.
+		 The  third  (optional) parameter is a post-processing gain in
+		 dB which is applied after the compression  has	 taken	place;
+		 the  fourth  (optional)  parameter is an initial volume to be
+		 assumed for each channel when the effect starts.   This  per-
+		 mits  the  user to supply a nominal level initially, so that,
+		 for example, a very large gain is not applied to initial sig-
+		 nal levels before the companding action has begun to operate:
+		 it is quite probable that in such an event, the output	 would
+		 be severely clipped while the compander gain properly adjusts
+		 itself.
 
-		 The  fifth  (optional)	 parameter is a delay in seconds.  The
-		 input signal is analyzed immediately to control  the  compan-
-		 der,  but  it	is  delayed  before  being  fed	 to the volume
-		 adjuster.  Specifying a  delay	 approximately	equal  to  the
-		 attack/decay  times allows the compander to effectively oper-
+		 The fifth (optional) parameter is a delay  in	seconds.   The
+		 input	signal	is analyzed immediately to control the compan-
+		 der, but it  is  delayed  before  being  fed  to  the	volume
+		 adjuster.   Specifying	 a  delay  approximately  equal to the
+		 attack/decay times allows the compander to effectively	 oper-
 		 ate in a "predictive" rather than a reactive mode.
 
-       copy	 Copy the input file to the output file.  This is the  default
+       copy	 Copy  the input file to the output file.  This is the default
 		 effect if both files have the same sampling rate.
 
        dcshift shift [ limitergain ]
 		 DC Shift the audio data, with basic linear amplitude formula.
-		 This is most useful if your audio data tends to not  be  cen-
-		 tered	around	a value of 0.  Shifting it back will allow you
-		 to get the most volume	 adjustments  without  clipping	 audio
+		 This  is  most useful if your audio data tends to not be cen-
+		 tered around a value of 0.  Shifting it back will  allow  you
+		 to  get  the  most  volume adjustments without clipping audio
 		 data.
-		 The  first  option  is	 the  dcshift value.  It is a floating
+		 The first option is the dcshift  value.   It  is  a  floating
 		 point number that indicates the amount to shift.
-		 An option limtergain value can	 be  specified	as  well.   It
-		 should	 have  a  value much less then 1.0 and is used only on
+		 An  option  limtergain	 value	can  be specified as well.  It
+		 should have a value much less then 1.0 and is	used  only  on
 		 peaks to prevent clipping.
 
-       deemph	 Apply a treble attenuation  shelving  filter  to  samples  in
-		 audio	cd  format.   The frequency response of pre-emphasized
-		 recordings is rectified.  The filtering  is  defined  in  the
+       deemph	 Apply	a  treble  attenuation	shelving  filter to samples in
+		 audio cd format.  The frequency  response  of	pre-emphasized
+		 recordings  is	 rectified.   The  filtering is defined in the
 		 standard document ISO 908.
 
-       earwax	 Makes	sound  easier to listen to on headphones.  Adds audio-
-		 cues to samples in audio cd format so that when  listened  to
+       earwax	 Makes sound easier to listen to on headphones.	  Adds	audio-
+		 cues  to  samples in audio cd format so that when listened to
 		 on headphones the stereo image is moved from inside your head
 		 (standard for headphones) to outside and in front of the lis-
 		 tener (standard for speakers). See
@@ -649,13 +650,13 @@
 		 www.geocities.com/beinges for a full explanation.
 
        echo gain-in gain-out delay decay [ delay decay ... ]
-		 Add  echoing  to a sound sample.  Each delay/decay part gives
+		 Add echoing to a sound sample.	 Each delay/decay  part	 gives
 		 the delay in milliseconds and the decay (relative to gain-in)
 		 of that echo.	Gain-out is the volume of the output.
 
        echos gain-in gain-out delay decay [ delay decay ... ]
-		 Add  a sequence of echos to a sound sample.  Each delay/decay
-		 part gives the delay in milliseconds and the decay  (relative
+		 Add a sequence of echos to a sound sample.  Each  delay/decay
+		 part  gives the delay in milliseconds and the decay (relative
 		 to gain-in) of that echo.  Gain-out is the volume of the out-
 		 put.
 
@@ -669,52 +670,52 @@
 		 volume of the audio from 0 to full volume over fade-in-length
 		 seconds.  Specify 0 seconds if no fade-in is wanted.
 
-		 For  fade-outs, the audio data will be truncated at the stop-
+		 For fade-outs, the audio data will be truncated at the	 stop-
 		 time and the volume will be ramped from full volume down to 0
 		 starting at fade-out-length seconds before the stop-time.  If
-		 fade-out-length is not specified, it  defaults	 to  the  same
-		 value	as  fade-in-length.   No  fade-out is performed if the
+		 fade-out-length  is  not  specified,  it defaults to the same
+		 value as fade-in-length.  No fade-out	is  performed  if  the
 		 stop-time is not specified.
-		 All times can be specified in either periods of time or  sam-
-		 ple   counts.	  To  specify  time  periods  use  the	format
-		 hh:mm:ss.frac	format.	  To  specify  using  sample   counts,
-		 specify  the  number  of samples and append the letter ’s’ to
-		 the sample count (for example 8000s).
+		 All  times can be specified in either periods of time or sam-
+		 ple  counts.	To  specify  time  periods  use	  the	format
+		 hh:mm:ss.frac	format.	 To specify using sample counts, spec-
+		 ify the number of samples and append the letter  ’s’  to  the
+		 sample count (for example 8000s).
 		 An optional type can be specified to change the type of enve-
-		 lope.	 Choices are q for quarter of a sinewave, h for half a
-		 sinewave, t for linear slope, l for logarithmic,  and	p  for
+		 lope.	Choices are q for quarter of a sinewave, h for half  a
+		 sinewave,  t  for  linear slope, l for logarithmic, and p for
 		 inverted parabola.  The default is a linear slope.
 
        filter [ low ]-[ high ] [ window-len [ beta ] ]
-		 Apply	a  Sinc-windowed lowpass, highpass, or bandpass filter
+		 Apply a Sinc-windowed lowpass, highpass, or  bandpass	filter
 		 of given window length to the signal.	low refers to the fre-
 		 quency of the lower 6dB corner of the filter.	high refers to
 		 the frequency of the upper 6dB corner of the filter.
 
-		 A lowpass filter is obtained by leaving low  unspecified,  or
-		 0.   A	 highpass  filter is obtained by leaving high unspeci-
-		 fied, or 0, or greater than or	 equal	to  the	 Nyquist  fre-
+		 A  lowpass  filter is obtained by leaving low unspecified, or
+		 0.  A highpass filter is obtained by  leaving	high  unspeci-
+		 fied,	or  0,	or  greater  than or equal to the Nyquist fre-
 		 quency.
 
 		 The window-len, if unspecified, defaults to 128.  Longer win-
-		 dows give a sharper cutoff, smaller windows  a	 more  gradual
+		 dows  give  a	sharper cutoff, smaller windows a more gradual
 		 cutoff.
 
-		 The  beta,  if	 unspecified,  defaults to 16.	This selects a
+		 The beta, if unspecified, defaults to	16.   This  selects  a
 		 Kaiser window.	 You can select a Nuttall window by specifying
-		 anything  <=  2.0  here.   For	 more discussion of beta, look
+		 anything <= 2.0 here.	For  more  discussion  of  beta,  look
 		 under the resample effect.
 
 
        flanger gain-in gain-out delay decay speed < -s | -t >
 		 Add   a   flanger   to	  a   sound   sample.	 Each	triple
-		 delay/decay/speed  gives  the	delay  in milliseconds and the
-		 decay (relative to gain-in) with a modulation	speed  in  Hz.
-		 The  modulation  is  either sinodial (-s) or triangular (-t).
+		 delay/decay/speed gives the delay  in	milliseconds  and  the
+		 decay	(relative  to  gain-in) with a modulation speed in Hz.
+		 The modulation is either sinodial (-s)	 or  triangular	 (-t).
 		 Gain-out is the volume of the output.
 
        highp frequency
-		 Apply a single pole recursive	high-pass  filter.   The  fre-
+		 Apply	a  single  pole	 recursive high-pass filter.  The fre-
 		 quency response drops logarithmically with I frequency in the
 		 middle of the drop.  The slope of the filter is quite gentle.
 		 See filter for a highpass effect with sharper cutoff.
@@ -724,8 +725,8 @@
 
        lowp frequency
 		 Apply a single pole recursive low-pass filter.	 The frequency
-		 response drops logarithmically with frequency in  the	middle
-		 of  the  drop.	 The slope of the filter is quite gentle.  See
+		 response  drops  logarithmically with frequency in the middle
+		 of the drop.  The slope of the filter is quite	 gentle.   See
 		 filter for a lowpass effect with sharper cutoff.
 
        lowpass frequency
@@ -733,8 +734,8 @@
 
        mask	 Add "masking noise" to signal.	 This effect deliberately adds
 		 white noise to a sound in order to mask quantization effects,
-		 created by the process of  playing  a	sound  digitally.   It
-		 tends	to  mask buzzing voices, for example.  It adds 1/2 bit
+		 created  by  the  process  of	playing a sound digitally.  It
+		 tends to mask buzzing voices, for example.  It adds  1/2  bit
 		 of noise to the sound file at the output bit depth.
 
        mcompand "attack1,decay1[,attack2,decay2...]
@@ -743,48 +744,48 @@
 
 		[gain [initial-volume [delay ] ] ]" xover_freq
 
-		 Multi-band compander is similar to the single band  compander
-		 but  the  audio  file is first divided up into bands and then
-		 the compander is ran on each band.  See  the  compand	effect
+		 Multi-band  compander is similar to the single band compander
+		 but the audio file is first divided up into  bands  and  then
+		 the  compander	 is  ran on each band.	See the compand effect
 		 for definition of its options.	 Compand options are specified
-		 between double quotes and the crossover  frequency  for  that
-		 band  is  specefied  seperately  with xover_fre.  This can be
+		 between  double  quotes  and the crossover frequency for that
+		 band is specefied seperately with  xover_fre.	 This  can  be
 		 repeated multiple times to create multiple bands.
 
        pan direction
-		 Pan the sound of an audio file from one channel  to  another.
-		 This  is done by changing the volume of the input channels so
+		 Pan  the  sound of an audio file from one channel to another.
+		 This is done by changing the volume of the input channels  so
 		 that it fades out on one channel and fades-in on another.  If
-		 the  number of input channels is different then the number of
-		 output channels then this effect tries to intelligently  han-
-		 dle  this.  For instance, if the input contains 1 channel and
+		 the number of input channels is different then the number  of
+		 output	 channels then this effect tries to intelligently han-
+		 dle this.  For instance, if the input contains 1 channel  and
 		 the output contains 2 channels, then it will create the miss-
-		 ing  channel  itself.	 The direction is a value from -1.0 to
-		 1.0.  -1.0 represents far left and 1.0 represents far	right.
-		 Numbers  in between will start the pan effect without totally
+		 ing channel itself.  The direction is a value	from  -1.0  to
+		 1.0.	-1.0 represents far left and 1.0 represents far right.
+		 Numbers in between will start the pan effect without  totally
 		 muting the opposite channel.
 
        phaser gain-in gain-out delay decay speed < -s | -t >
-		 Add   a   phaser   to	 a   sound   sample.	Each	triple
-		 delay/decay/speed  gives  the	delay  in milliseconds and the
-		 decay (relative to gain-in) with a modulation	speed  in  Hz.
-		 The  modulation  is  either sinodial (-s) or triangular (-t).
-		 The decay should be less than 0.5 to avoid  feedback.	 Gain-
+		 Add	a   phaser   to	  a   sound   sample.	 Each	triple
+		 delay/decay/speed gives the delay  in	milliseconds  and  the
+		 decay	(relative  to  gain-in) with a modulation speed in Hz.
+		 The modulation is either sinodial (-s)	 or  triangular	 (-t).
+		 The  decay  should be less than 0.5 to avoid feedback.	 Gain-
 		 out is the volume of the output.
 
        pick [ -1 | -2 | -3 | -4 | -l | -r | -f | -b ]
-		 Pick  a subset of channels to be copied into the output file.
-		 This effect is just an alias of the "avg" effect but is  left
+		 Pick a subset of channels to be copied into the output	 file.
+		 This  effect is just an alias of the "avg" effect but is left
 		 here for historical reasons.
 
        pitch shift [ width interpole fade ]
-		 Change	 the  pitch  of file without affecting its duration by
+		 Change the pitch of file without affecting  its  duration  by
 		 cross-fading shifted samples.	shift is given in cents. Use a
 		 positive value to shift to treble, negative value to shift to
 		 bass.	Default shift is 0.  width of window is in ms. Default
-		 width	is  20ms.  Try	30ms to lower pitch, and 10ms to raise
+		 width is 20ms. Try 30ms to lower pitch,  and  10ms  to	 raise
 		 pitch.	 interpole option, can be "cubic" or "linear". Default
-		 is  "cubic".  The fade option, can be "cos", "hamming", "lin-
+		 is "cubic".  The fade option, can be "cos", "hamming",	 "lin-
 		 ear" or "trapezoid".  Default is "cos".
 
        polyphase [ -w < nut / ham > ]
@@ -792,68 +793,68 @@
 		 [  -width <  long  / short  / # > ]
 
 		 [ -cutoff #  ]
-		 Translate input sampling rate to  output  sampling  rate  via
-		 polyphase  interpolation,  a  DSP  algorithm.	This method is
+		 Translate  input  sampling  rate  to output sampling rate via
+		 polyphase interpolation, a DSP	 algorithm.   This  method  is
 		 slow and uses lots of RAM, but gives much better results than
 		 rate.
 
-		 -w  <	nut / ham > : select either a Nuttal (~90 dB stopband)
+		 -w < nut / ham > : select either a Nuttal (~90	 dB  stopband)
 		 or Hamming (~43 dB stopband) window.  Default is nut.
 
-		 -width long / short / # : specify the (approximate) width  of
-		 the  filter.	long  is  1024	samples; short is 128 samples.
+		 -width	 long / short / # : specify the (approximate) width of
+		 the filter.  long is 1024  samples;  short  is	 128  samples.
 		 Alternatively, an exact number can be used.  Default is long.
-		 The  short  option  is	 not  recommended, as it produces poor
+		 The short option is not  recommended,	as  it	produces  poor
 		 quality results.
 
-		 -cutoff # : specify the filter cutoff frequency in  terms  of
-		 fraction  of  frequency  bandwidth,  also know as the Nyquist
+		 -cutoff  #  : specify the filter cutoff frequency in terms of
+		 fraction of frequency bandwidth, also	know  as  the  Nyquist
 		 frequency.  Please see the resample effect for further infor-
 		 mation on Nyquist frequency.  If upsampling, then this is the
-		 fraction of the original signal that should go	 through.   If
-		 downsampling,	this  is the fraction of the signal left after
-		 downsampling.	Default is 0.95.   Remember  that  this	 is  a
+		 fraction  of  the original signal that should go through.  If
+		 downsampling, this is the fraction of the signal  left	 after
+		 downsampling.	 Default  is  0.95.   Remember	that this is a
 		 float.
 
 
-       rate	 Translate  input  sampling  rate  to output sampling rate via
-		 linear interpolation to the Least Common Multiple of the  two
-		 sampling  rates.  This is the default effect if the two files
-		 have different sampling rates and  the	 preview  options  was
+       rate	 Translate input sampling rate to  output  sampling  rate  via
+		 linear	 interpolation to the Least Common Multiple of the two
+		 sampling rates.  This is the default effect if the two	 files
+		 have  different  sampling  rates  and the preview options was
 		 specified.  This is fast but noisy: the spectrum of the orig-
-		 inal sound will be shifted  upwards  and  duplicated  faintly
+		 inal  sound  will  be	shifted upwards and duplicated faintly
 		 when up-translating by a multiple.
 
-		 Lerp-ing  is  acceptable  for cheap 8-bit sound hardware, but
-		 for CD-quality sound you should instead use  either  resample
-		 or  polyphase.	  If  you  are	wondering  which rate changing
-		 effects to use, you will want to read a detailed analysis  of
-		 all  of  them at http://eakaw2.et.tu-dresden.de/~wilde/resam-
+		 Lerp-ing is acceptable for cheap 8-bit	 sound	hardware,  but
+		 for  CD-quality  sound you should instead use either resample
+		 or polyphase.	If  you	 are  wondering	 which	rate  changing
+		 effects  to use, you will want to read a detailed analysis of
+		 all of them  at  http://eakaw2.et.tu-dresden.de/~wilde/resam-
 		 ple/resample.html
 
        repeat count
-		 Repeats the audio data count times.  Requires disk  space  to
+		 Repeats  the  audio data count times.	Requires disk space to
 		 store the data to be repeated.
 
        resample [ -qs | -q | -ql ] [ rolloff [ beta ] ]
-		 Translate  input  sampling  rate  to output sampling rate via
-		 simulated analog filtration.	This  method  is  slower  than
+		 Translate input sampling rate to  output  sampling  rate  via
+		 simulated  analog  filtration.	  This	method	is slower than
 		 rate, but gives much better results.
 
 		 By default, linear interpolation is used, with a window width
 		 about 45 samples at the lower of the two rate.	 This gives an
-		 accuracy  of  about 16 bits, but insufficient stopband rejec-
-		 tion in the case that you want to have rolloff	 greater  than
+		 accuracy of about 16 bits, but insufficient  stopband	rejec-
+		 tion  in  the case that you want to have rolloff greater than
 		 about 0.80 of the Nyquist frequency.
 
-		 The  -q*  options  will change the default values for rolloff
-		 and beta as well as use  quadratic  interpolation  of	filter
+		 The -q* options will change the default  values  for  rolloff
+		 and  beta  as	well  as use quadratic interpolation of filter
 		 coefficients, resulting in about 24 bits precision.  The -qs,
-		 -q, or -ql options specify increased accuracy at the cost  of
+		 -q,  or -ql options specify increased accuracy at the cost of
 		 lower execution speed.	 It is optional to specify rolloff and
 		 beta parameters when using the -q* options.
 
-		 Following is a table of the  reasonable  defaults  which  are
+		 Following  is	a  table  of the reasonable defaults which are
 		 built-in to SoX:
 
 		    Option  Window rolloff beta interpolation
@@ -865,67 +866,67 @@
 		    ------  ------ ------- ---- -------------
 
 		 -qs, -q, or -ql use window lengths of 45, 75, or 149 samples,
-		 respectively, at the lower  sample-rate  of  the  two	files.
+		 respectively,	at  the	 lower	sample-rate  of the two files.
 		 This means progressively sharper stop-band rejection, at pro-
 		 portionally slower execution times.
 
-		 rolloff refers to the cut-off frequency of the low pass  fil-
-		 ter  and  is  given in terms of the Nyquist frequency for the
-		 lower sample rate.  rolloff  therefore	 should	 be  something
-		 between  0.0 and 1.0, in practice 0.8-0.95.  The defaults are
+		 rolloff  refers to the cut-off frequency of the low pass fil-
+		 ter and is given in terms of the Nyquist  frequency  for  the
+		 lower	sample	rate.	rolloff	 therefore should be something
+		 between 0.0 and 1.0, in practice 0.8-0.95.  The defaults  are
 		 indicated above.
 
-		 The Nyquist frequency is equal to (sample rate /  2).	 Logi-
-		 cally,	 this  is  because  the A/D converter needs at least 2
+		 The  Nyquist  frequency is equal to (sample rate / 2).	 Logi-
+		 cally, this is because the A/D converter  needs  at  least  2
 		 samples to detect 1 cycle at the Nyquist frequency.  Frequen-
-		 cies  higher  then  the Nyquist will actually appear as lower
-		 frequencies to the A/D	 converter  and	 is  called  aliasing.
+		 cies higher then the Nyquist will actually  appear  as	 lower
+		 frequencies  to  the  A/D  converter  and is called aliasing.
 		 Normally, A/D converts run the signal through a highpass fil-
 		 ter first to avoid these problems.
 
-		 Similar problems will happen in software  when	 reducing  the
-		 sample	 rate  of  an  audio  file  (frequencies above the new
-		 Nyquist frequency  can	 be  aliased  to  lower	 frequencies).
-		 Therefore,  a	good resample effect will remove all frequency
+		 Similar  problems  will  happen in software when reducing the
+		 sample rate of an  audio  file	 (frequencies  above  the  new
+		 Nyquist  frequency  can  be  aliased  to  lower frequencies).
+		 Therefore, a good resample effect will remove	all  frequency
 		 information above the new Nyquist frequency.
 
 		 The rolloff refers to how close to the Nyquist frequency this
-		 cutoff	 is,  with  closer  being better.  When increasing the
+		 cutoff is, with closer being  better.	 When  increasing  the
 		 sample rate of an audio file you would not expect to have any
-		 frequencies  exist  that  are	past the original Nyquist fre-
-		 quency.  Because of resampling properties, it	is  common  to
+		 frequencies exist that are past  the  original	 Nyquist  fre-
+		 quency.   Because  of	resampling properties, it is common to
 		 have aliasing data created that is above the old Nyquist fre-
-		 quency.  In that case the rolloff refers to how close to  the
+		 quency.   In that case the rolloff refers to how close to the
 		 original Nyquist frequency to use a highpass filter to remove
 		 this false data, with closer also being better.
 
 		 The beta parameter determines the type of filter window used.
-		 Any  value  greater than 2.0 is the beta for a Kaiser window.
-		 Beta <= 2.0 selects a Nuttall window.	 If  unspecified,  the
+		 Any value greater than 2.0 is the beta for a  Kaiser  window.
+		 Beta  <=  2.0	selects a Nuttall window.  If unspecified, the
 		 default is a Kaiser window with beta 16.
 
-		 In  the  case of Kaiser window (beta > 2.0), lower betas pro-
-		 duce a somewhat faster transition from passband to  stopband,
-		 at  the  cost	of  noticeable artifacts.  A beta of 16 is the
+		 In the case of Kaiser window (beta > 2.0), lower  betas  pro-
+		 duce  a somewhat faster transition from passband to stopband,
+		 at the cost of noticeable artifacts.  A beta  of  16  is  the
 		 default, beta less than 10 is not recommended.	 If you want a
-		 sharper  cutoff,  don’t  use  low beta’s, use a longer sample
-		 window.  A Nuttall  window  is	 selected  by  specifying  any
+		 sharper cutoff, don’t use low beta’s,	use  a	longer	sample
+		 window.   A  Nuttall  window  is  selected  by specifying any
 		 ’beta’ <= 2, and the Nuttall window has somewhat steeper cut-
-		 off than the default Kaiser window.  You  will	 probably  not
-		 need  to  use	the beta parameter at all, unless you are just
-		 curious about comparing the effects  of  Nuttall  vs.	Kaiser
+		 off  than  the	 default Kaiser window.	 You will probably not
+		 need to use the beta parameter at all, unless	you  are  just
+		 curious  about	 comparing  the	 effects of Nuttall vs. Kaiser
 		 windows.
 
-		 This  is  the	default effect if the two files have different
-		 sampling rates.  Default parameters are, as indicated	above,
-		 Kaiser	 window	 of  length  45, rolloff 0.80, beta 16, linear
+		 This is the default effect if the two	files  have  different
+		 sampling  rates.  Default parameters are, as indicated above,
+		 Kaiser window of length 45, rolloff  0.80,  beta  16,	linear
 		 interpolation.
 
-		 NOTE: -qs is only slightly  slower,  but  more	 accurate  for
+		 NOTE:	-qs  is	 only  slightly	 slower, but more accurate for
 		 16-bit or higher precision.
 
-		 NOTE:	In  many  cases	 of  up-sampling,  no interpolation is
-		 needed, as exact filter coefficients can  be  computed	 in  a
+		 NOTE: In many	cases  of  up-sampling,	 no  interpolation  is
+		 needed,  as  exact  filter  coefficients can be computed in a
 		 reasonable amount of space.  To be precise, this is done when
 
 			    input_rate < output_rate
@@ -933,13 +934,13 @@
 		   output_rate/gcd(input_rate,output_rate) <= 511
 
        reverb gain-out reverbe-time delay [ delay ... ]
-		 Add reverberation to a sound sample.  Each delay is given  in
+		 Add  reverberation to a sound sample.	Each delay is given in
 		 milliseconds and its feedback is depending on the reverb-time
-		 in milliseconds.  Each delay should be in the range  of  half
-		 to  quarter  of reverb-time to get a realistic reverberation.
+		 in  milliseconds.   Each delay should be in the range of half
+		 to quarter of reverb-time to get a  realistic	reverberation.
 		 Gain-out is the volume of the output.
 
-       reverse	 Reverse the sound sample completely.	Included  for  finding
+       reverse	 Reverse  the  sound  sample completely.  Included for finding
 		 Satanic subliminals.
 
        silence above_periods [ duration threshold[ d | % ]
@@ -947,99 +948,99 @@
 	       [ below_periods duration
 
 		 threshold[ d | % ]]
-		 Removes  silence  from	 the beginning or end of a sound file.
+		 Removes silence from the beginning or end of  a  sound	 file.
 		 Silence is anything below a specified threshold.
 		 When trimming silence from the beginning of a sound file, you
-		 specify  a  duration  of  audio that is above a given silence
+		 specify a duration of audio that is  above  a	given  silence
 		 threshold before audio data is processed.  You can also spec-
-		 ify  the  count of periods of none-silence you want to detect
-		 before processing audio data.	Specify a period of 0  if  you
+		 ify the count of periods of none-silence you want  to	detect
+		 before	 processing  audio data.  Specify a period of 0 if you
 		 do not want to trim data from the front of the sound file.
-		 When  optionally  trimming  silence  form  the end of a sound
-		 file, you specify the duration of audio that must be below  a
-		 given	threshold  before  stopping  to process audio data.  A
-		 count of periods that occur below the threshold may  also  be
-		 specified.   If  this	options are not specified then data is
+		 When optionally trimming silence form	the  end  of  a	 sound
+		 file,	you specify the duration of audio that must be below a
+		 given threshold before stopping to  process  audio  data.   A
+		 count	of  periods that occur below the threshold may also be
+		 specified.  If this options are not specified	then  data  is
 		 not trimmed from the end of the audio file.  If below_periods
-		 is  negative,	it  is treated as a positive value and is also
-		 used to indicate the  effect  should  restart	processing  as
+		 is negative, it is treated as a positive value	 and  is  also
+		 used  to  indicate  the  effect  should restart processing as
 		 specified by the above_periods, making it suitable for remov-
 		 ing periods of silence in the middle of a sound file.
-		 Duration counts may be in the format of time,	hh:mm:ss.frac,
+		 Duration  counts may be in the format of time, hh:mm:ss.frac,
 		 or in the exact count of samples.
 		 Threshold may be suffixed with d, or % to indicated the value
-		 is in decibels or a percentage of max	value  of  the	sample
+		 is  in	 decibels  or  a percentage of max value of the sample
 		 value.	 A value of ’0%’ will look for total silence.
 
        speed [ -c ] factor
-		 Speed	up  or down the sound, as a magnetic tape with a speed
-		 control.  It affects both pitch and time.  A  factor  of  1.0
+		 Speed up or down the sound, as a magnetic tape with  a	 speed
+		 control.   It	affects	 both  pitch and time. A factor of 1.0
 		 means no change, and is the default.  2.0 doubles speed, thus
-		 time length is cut by a half and pitch is one octave  higher.
-		 0.5  halves  speed  thus time length doubles and pitch is one
-		 octave lower.	If the optional -c parameter is used then  the
+		 time  length is cut by a half and pitch is one octave higher.
+		 0.5 halves speed thus time length doubles and	pitch  is  one
+		 octave	 lower.	 If the optional -c parameter is used then the
 		 factor is specified in "cents".
 
        stat [ -s n ] [-rms ] [ -v ] [ -d ]
-		 Do  a	statistical check on the input file, and print results
-		 on the standard error file.  Audio data is passed  unmodified
-		 from  input  to  output  file	unless	used along with the -e
+		 Do a statistical check on the input file, and	print  results
+		 on  the standard error file.  Audio data is passed unmodified
+		 from input to output file  unless  used  along	 with  the  -e
 		 option.
 
-		 The "Volume Adjustment:" field in the	statistics  gives  you
-		 the  argument	to the -v number which will make the sample as
+		 The  "Volume  Adjustment:"  field in the statistics gives you
+		 the argument to the -v number which will make the  sample  as
 		 loud as possible without clipping.
 
 		 The option -v will print out the "Volume Adjustment:" field’s
-		 value	only  and  return.  This could be of use in scripts to
+		 value only and return.	 This could be of use  in  scripts  to
 		 auto convert the volume.
 
-		 The -s n option is used to scale the input data  by  a	 given
-		 factor.   The default value of n is the max value of a signed
-		 long variable (0x7fffffff).   Internal	 effects  always  work
-		 with  signed  long PCM data and so the value should relate to
+		 The  -s  n  option is used to scale the input data by a given
+		 factor.  The default value of n is the max value of a	signed
+		 long  variable	 (0x7fffffff).	 Internal  effects always work
+		 with signed long PCM data and so the value should  relate  to
 		 this fact.
 
-		 The -rms option will convert all  output  average  values  to
+		 The  -rms  option  will  convert all output average values to
 		 root mean square format.
 
-		 There	is also an optional parameter -d that will print out a
-		 hex dump of the sound file from the internal buffer  that  is
-		 in  32-bit  signed  PCM  data.	 This is mainly only of use in
-		 tracking down endian problems that creep in to SoX on	cross-
+		 There is also an optional parameter -d that will print out  a
+		 hex  dump  of the sound file from the internal buffer that is
+		 in 32-bit signed PCM data.  This is mainly  only  of  use  in
+		 tracking  down endian problems that creep in to SoX on cross-
 		 platform versions.
 
 
        stretch factor [window fade shift fading]
-		 Time  stretch file by a given factor. Change duration without
-		 affecting the pitch.  factor of  stretching:  >1.0  lengthen,
-		 <1.0  shorten	duration.   window  size  is in ms. Default is
-		 20ms. The fade option, can be "lin".  shift  ratio,  in  [0.0
-		 1.0].	Default depends on stretch factor. 1.0 to shorten, 0.8
+		 Time stretch file by a given factor. Change duration  without
+		 affecting  the	 pitch.	  factor of stretching: >1.0 lengthen,
+		 <1.0 shorten duration.	 window size  is  in  ms.  Default  is
+		 20ms.	The  fade  option, can be "lin".  shift ratio, in [0.0
+		 1.0]. Default depends on stretch factor. 1.0 to shorten,  0.8
 		 to lengthen.  The fading ratio, in [0.0 0.5]. The amount of a
 		 fade’s default depends on factor and shift.
 
        swap [ 1 2 | 1 2 3 4 ]
-		 Swap  channels in multi-channel sound files.  Optionally, you
-		 may specify the channel order you would like the  output  in.
-		 This  defaults	 to output channel 2 and then 1 for stereo and
+		 Swap channels in multi-channel sound files.  Optionally,  you
+		 may  specify  the channel order you would like the output in.
+		 This defaults to output channel 2 and then 1 for  stereo  and
 		 2, 1, 4, 3 for quad-channels.	An interesting feature is that
-		 you  may  duplicate  a	 given channel by overwriting another.
-		 This is done by repeating an output channel  on  the  command
-		 line.	 For  example,	swap 2 2 will overwrite channel 1 with
-		 channel 2’s data; creating a stereo file with	both  channels
+		 you may duplicate a given  channel  by	 overwriting  another.
+		 This  is  done	 by repeating an output channel on the command
+		 line.	For example, swap 2 2 will overwrite  channel  1  with
+		 channel  2’s  data; creating a stereo file with both channels
 		 containing the same audio data.
 
        synth [ length ] type mix [ freq [ -freq2 ]
 
 	     [ off ] [ ph ] [ p1 ] [ p2 ] [ p3 ]
-		 The  synth  effect will generate various types of audio data.
+		 The synth effect will generate various types of  audio	 data.
 		 Although this effect is used to generate audio data, an input
-		 file  must  be specified.  The length of the input audio file
+		 file must be specified.  The length of the input  audio  file
 		 determines the length of the output audio file.
 		 <length>  length  in  sec  or	hh:mm:ss.frac,	0=inputlength,
 		 default=0
-		 <type>	 is  sine,  square,  triangle, sawtooth, trapetz, exp,
+		 <type> is sine, square,  triangle,  sawtooth,	trapetz,  exp,
 		 whitenoise, pinknoise, brownnoise, default=sine
 		 <mix> is create, mix, amod, default=create
 		 <freq> frequency at beginning in Hz, not used	for noise..
@@ -1047,66 +1048,66 @@
 		 <freq/2> can be given as %%n, where ’n’ is the number of half
 		 notes in respect to A (440Hz)
 		 <off> Bias (DC-offset)	 of signal in percent, default=0
-		 <ph> phase shift 0..100 shift phase  0..2*Pi,	not  used  for
+		 <ph>  phase  shift  0..100  shift phase 0..2*Pi, not used for
 		 noise..
-		 <p1>  square:	Ton/Toff,  triangle+trapetz: rising slope time
+		 <p1> square: Ton/Toff, triangle+trapetz:  rising  slope  time
 		 (0..100)
 		 <p2> trapetz: ON time (0..100)
 		 <p3> trapetz: falling slope position (0..100)
 
        trim start [ length ]
-		 Trim can trim off unwanted audio data from the beginning  and
-		 end  of  the  audio  file.  Audio samples are not sent to the
+		 Trim  can trim off unwanted audio data from the beginning and
+		 end of the audio file.	 Audio samples are  not	 sent  to  the
 		 output stream until the start location is reached.
-		 The optional length parameter tells the number of samples  to
-		 output	 after	the  start  sample and is used to trim off the
-		 back side of the audio data.  Using a	value  of  0  for  the
+		 The  optional length parameter tells the number of samples to
+		 output after the start sample and is used  to	trim  off  the
+		 back  side  of	 the  audio  data.  Using a value of 0 for the
 		 start parameter will allow trimming off the back side only.
-		 Both  options can be specified using either an amount of time
-		 and an exact count of samples.	  The  format  for  specifying
-		 lengths  in  time  is hh:mm:ss.frac.  A start value of 1:30.5
-		 will not start until 1 minute, thirty and  1/2	 seconds  into
-		 the  audio  data.  The format for specifying sample counts is
-		 the number of samples with the letter ’s’ appended to it.   A
-		 value	of  8000s will wait until 8000 samples are read before
+		 Both options can be specified using either an amount of  time
+		 and  an  exact	 count	of samples.  The format for specifying
+		 lengths in time is hh:mm:ss.frac.  A start  value  of	1:30.5
+		 will  not  start  until 1 minute, thirty and 1/2 seconds into
+		 the audio data.  The format for specifying sample  counts  is
+		 the  number of samples with the letter ’s’ appended to it.  A
+		 value of 8000s will wait until 8000 samples are  read	before
 		 starting to process audio data.
 
        vibro speed  [ depth ]
-		 Add the world-famous Fender Vibro-Champ  sound	 effect	 to  a
-		 sound	sample by using a sine wave as the volume knob.	 Speed
-		 gives the Hertz value of the wave.  This must	be  under  30.
-		 Depth	gives  the  amount  the volume is cut into by the sine
+		 Add  the  world-famous	 Fender	 Vibro-Champ sound effect to a
+		 sound sample by using a sine wave as the volume knob.	 Speed
+		 gives	the  Hertz  value of the wave.	This must be under 30.
+		 Depth gives the amount the volume is cut  into	 by  the  sine
 		 wave, ranging 0.0 to 1.0 and defaulting to 0.5.
 
        vol gain [ type [ limitergain ] ]
-		 The vol effect is much like the command line option  -v.   It
-		 allows	 you  to adjust the volume of an input file and allows
-		 you to specify	 the  adjustment  in  relation	to  amplitude,
-		 power,	 or  dB.  If type is not specified then it defaults to
+		 The  vol  effect is much like the command line option -v.  It
+		 allows you to adjust the volume of an input file  and	allows
+		 you  to  specify  the	adjustment  in	relation to amplitude,
+		 power, or dB.	If type is not specified then it  defaults  to
 		 amplitude.
-		 When type is amplitude then a linear change of the  amplitude
-		 is  performed	based  on the gain.  Therefore, a value of 1.0
-		 will keep the volume the same, 0.0 to < 1.0  will  cause  the
-		 volume	 to decrease and values of > 1.0 will cause the volume
-		 to increase.  Beware of clipping audio data when the gain  is
+		 When  type is amplitude then a linear change of the amplitude
+		 is performed based on the gain.  Therefore, a	value  of  1.0
+		 will  keep  the  volume the same, 0.0 to < 1.0 will cause the
+		 volume to decrease and values of > 1.0 will cause the	volume
+		 to  increase.	Beware of clipping audio data when the gain is
 		 greater then 1.0.  A negative value performs the same adjust-
 		 ment while also changing the phase.
-		 When type is power then a value of 1.0 also means  no	change
+		 When  type  is power then a value of 1.0 also means no change
 		 in volume.
-		 When  type  is	 dB  the amplitude is changed logarithmically.
+		 When type is dB the  amplitude	 is  changed  logarithmically.
 		 0.0 is constant while +6 doubles the amplitude.
-		 An optional limitergain value can be specified and should  be
+		 An  optional limitergain value can be specified and should be
 		 a value much less then 1.0 (ie 0.05 or 0.02) and is used only
-		 on peaks to prevent clipping.	Not specifying this  parameter
-		 will  cause  no  limiter  to  be used.	 In verbose mode, this
-		 effect will display the percentage of audio data that	needed
+		 on  peaks to prevent clipping.	 Not specifying this parameter
+		 will cause no limiter to be  used.   In  verbose  mode,  this
+		 effect	 will display the percentage of audio data that needed
 		 to be limited.
 
 BUGS
-       The  syntax  is	horrific.   Thats the breaks when trying to handle all
+       The syntax is horrific.	Thats the breaks when  trying  to  handle  all
        things from the command line.
 
-       Please report any bugs found in this version of SoX  to	Chris  Bagwell
+       Please  report  any  bugs found in this version of SoX to Chris Bagwell
        (cbagwell@users.sourceforge.net)
 
 FILES
@@ -1114,9 +1115,9 @@
        play(1), rec(1), soxexam(1)
 
 NOTICES
-       The  version  of	 SoX  that  accompanies this manual page is support by
+       The version of SoX that accompanies this	 manual	 page  is  support  by
        Chris Bagwell (cbagwell@users.sourceforge.net).	Please refer any ques-
-       tions  regarding it to this address.  You may obtain the latest version
+       tions regarding it to this address.  You may obtain the latest  version
        at the the web site http://sox.sourceforge.net/
 
 AUTHOR
--- a/src/avg.c
+++ b/src/avg.c
@@ -45,7 +45,7 @@
 #define MIX_LEFT_BACK   8
 #define MIX_RIGHT_BACK  9
 
-#define CLIP_LEVEL      ((double)(((unsigned)1 << 31) - 1))
+#define ST_AVG_USAGE "usage: avg [ -l | -r | -f | -b | -1 | -2 | -3 | -4 | n,n,n...,n ]"
 
 /*
  * Process options
@@ -64,7 +64,7 @@
     /* Parse parameters.  Since we don't yet know the number of */
     /* input and output channels, we'll record the information for */
     /* later. */
-    if (n) {
+    if (n == 1) {
         if(!strcmp(argv[0], "-l"))
             avg->mix = MIX_LEFT;
         else if (!strcmp(argv[0], "-r"))
@@ -83,7 +83,7 @@
             avg->mix = MIX_RIGHT_BACK;
         else if (argv[0][0] == '-' && !isdigit((int)argv[0][1])
                 && argv[0][1] != '.') {
-            st_fail("Usage: avg [ -l | -r | -f | -b | -1 | -2 | -3 | -4 | n,n,n...,n ]");
+            st_fail(ST_AVG_USAGE);
             return (ST_EOF);
         }
         else {
@@ -104,9 +104,14 @@
             avg->num_pans = commas + 1;
         }
     }
-    else {
+    else if (n == 0) {
         avg->mix = MIX_CENTER;
     }
+    else {
+        st_fail(ST_AVG_USAGE);
+        return ST_EOF;
+    }
+
     return (ST_SUCCESS);
 }
 
@@ -522,10 +527,10 @@
             samp = 0.0;
             for (i = 0; i < ichan; i++)
                 samp += ibuf[i] * avg->sources[i][j];
-            if (samp < -CLIP_LEVEL)
-                samp = -CLIP_LEVEL;
-            else if (samp > CLIP_LEVEL)
-                samp = CLIP_LEVEL;
+            if (samp < ST_SAMPLE_MIN)
+                samp = ST_SAMPLE_MIN;
+            else if (samp > ST_SAMPLE_MAX)
+                samp = ST_SAMPLE_MAX;
             obuf[j] = samp;
         }
     }