shithub: sox

Download patch

ref: 5cf04f8704d8e00c536968a138354a4f7c891392
parent: 020d604efc5487276d19f271962ac0c76d9d4f0a
author: cbagwell <cbagwell>
date: Sun Sep 26 15:14:14 EDT 1999

Adding AVR support and a few clean ups from Jan Paul Schmidt.

--- a/Makefile.ami
+++ b/Makefile.ami
@@ -16,8 +16,8 @@
 ## rewrite this makefile for 'smake'.
 ##
 
-FSRC	= 8svx.c aiff.c alsa.c au.c auto.c cdr.c cvsd.c dat.c g711.c g721.c \
-	  g723_24.c g723_40.c g72x.c gsm.c hcom.c maud.c oss.c raw.c \
+FSRC	= 8svx.c aiff.c alsa.c au.c auto.c avr.c cdr.c cvsd.c dat.c g711.c  \
+	  g721.c g723_24.c g723_40.c g72x.c gsm.c hcom.c maud.c oss.c raw.c \
 	  sbdsp.c sf.c smp.c sndrtool.c sunaudio.c tx16w.c voc.c wav.c wve.c
 
 ESRC	= avg.c band.c chorus.c copy.c cut.c deemphas.c dyn.c echo.c echos.c \
@@ -49,8 +49,8 @@
 FILES     = $(MISC) $(HEADERS) $(SOURCES) $(AMIGA) $(DOS) $(VMS) \
 	    $(SKEL) $(TESTS)
 
-FOBJ	= 8svx.o aiff.o alsa.o au.o auto.o cdr.o cvsd.o dat.o g711.o g721.o \
-	  g723_24.o g723_40.o g72x.o gsm.o hcom.o maud.o oss.o raw.o \
+FOBJ	= 8svx.o aiff.o alsa.o au.o auto.o avr.o cdr.o cvsd.o dat.o g711.o \
+	  g721.o g723_24.o g723_40.o g72x.o gsm.o hcom.o maud.o oss.o raw.o \
 	  sbdsp.o sf.o smp.o sndrtool.o sunaudio.o tx16w.o voc.o wav.o wve.o
 
 EOBJ	= avg.o band.o chorus.o copy.o cut.o deemphas.o dyn.o echo.o echos.o \
--- a/Makefile.dos
+++ b/Makefile.dos
@@ -10,8 +10,8 @@
 # Need object files to know what libst.lib depends on.  All .c files
 # are compiled from default rules of make.
 
-FOBJ	= 8svx.obj aiff.obj alsa.obj au.obj auto.obj cdr.obj cvsd.obj dat.obj \
-	  g711.obj g721.obj g723_24.obj g723_40.obj g72x.obj gsm.obj \
+FOBJ	= 8svx.obj aiff.obj alsa.obj au.obj auto.obj avr.obj cdr.obj cvsd.obj \
+	  dat.obj g711.obj g721.obj g723_24.obj g723_40.obj g72x.obj gsm.obj \
 	  hcom.obj maud.obj oss.obj raw.obj sbdsp.obj sf.obj smp.obj \
 	  sndrtool.obj sunaudio.obj tx16w.obj voc.obj wav.obj wve.obj
 
--- a/Makefile.os9
+++ b/Makefile.os9
@@ -13,7 +13,7 @@
 CC		=	cc
 
 FOBJ	= $(RDIR)/8svx.r $(RDIR)/aiff.r $(RDIR)/alsa.r $(RDIR)/au.r 
-	  $(RDIR)/auto.r \
+	  $(RDIR)/auto.r $(RDIR)/avr.r \
 	  $(RDIR)/cdr.r $(RDIR)/cvsd.r $(RDIR)/dat.r $(RDIR)/g711.r \
 	  $(RDIR)/g721.r $(RDIR)/g723_24.r $(RDIR)/g723_40.r \
 	  $(RDIR)/g72x.r $(RDIR)/gsm.r $(RDIR)/hcom.r $(RDIR)/maud.r \
--- a/Makefile.unx
+++ b/Makefile.unx
@@ -27,8 +27,8 @@
 
 ##############################################################################
 
-FSRC	= 8svx.c aiff.c alsa.c au.c auto.c cdr.c cvsd.c dat.c g711.c g721.c \
-	  g723_24.c g723_40.c g72x.c gsm.c hcom.c maud.c oss.c raw.c \
+FSRC	= 8svx.c aiff.c alsa.c au.c auto.c avr.c cdr.c cvsd.c dat.c g711.c \
+	  g721.c g723_24.c g723_40.c g72x.c gsm.c hcom.c maud.c oss.c raw.c \
 	  sbdsp.c sf.c smp.c sndrtool.c sunaudio.c tx16w.c voc.c wav.c wve.c
 
 ESRC	= avg.c band.c chorus.c copy.c cut.c deemphas.c dyn.c echo.c echos.c \
@@ -68,8 +68,8 @@
 
 ##############################################################################
 
-FOBJ	= 8svx.o aiff.o alsa.o au.o auto.o cdr.o cvsd.o dat.o g711.o g721.o \
-	  g723_24.o g723_40.o g72x.o gsm.o hcom.o maud.o oss.o raw.o \
+FOBJ	= 8svx.o aiff.o alsa.o au.o auto.o avr.o cdr.o cvsd.o dat.o g711.o \
+	  g721.o g723_24.o g723_40.o g72x.o gsm.o hcom.o maud.o oss.o raw.o \
 	  sbdsp.o sf.o smp.o sndrtool.o sunaudio.o tx16w.o voc.o wav.o wve.o
 
 EOBJ	= avg.o band.o chorus.o copy.o cut.o deemphas.o dyn.o echo.o echos.o \
--- a/README
+++ b/README
@@ -26,6 +26,7 @@
   o NeXT .snd files
   o Soundtool (DOS) files
   o Psion (palmtop) A-law files
+  o AVR files
 
 The sound effects include:
 
--- a/sox.1
+++ b/sox.1
@@ -225,7 +225,7 @@
 if that header doesn't seem right,
 the program exits with an appropriate message.
 Currently, raw (no header) binary and textual data, 
-Amiga 8SVX, Apple/SGI AIFF, SPARC .AU (w/header), NeXT .SND,
+Amiga 8SVX, Apple/SGI AIFF, SPARC .AU (w/header), AVR, NeXT .SND,
 CD-R, CVSD, GSM 06.10, Mac HCOM, Sound Tools MAUD, OSS device drivers,
 Turtle Beach .SMP, Sound Blaster, Sndtool, and Sounder,
 Sun Audio device driver,
@@ -256,6 +256,12 @@
 These can be dealt with using the 
 .B .ul
 format (see below).
+.TP 10
+.B .avr
+Audio Visual Research
+.br
+The AVR format is produced by a number of commercial packages
+on the Mac.
 .TP 10
 .B .cdr
 CD-R
--- a/sox.txt
+++ b/sox.txt
@@ -171,11 +171,11 @@
        that header doesn't seem right, the program exits with  an
        appropriate  message.   Currently,  raw (no header) binary
        and textual data, Amiga 8SVX, Apple/SGI	AIFF,  SPARC  .AU
-       (w/header),  NeXT  .SND,	 CD-R, CVSD, GSM 06.10, Mac HCOM,
-       Sound Tools MAUD, OSS device drivers, Turtle  Beach  .SMP,
-       Sound  Blaster,	Sndtool,  and  Sounder,	 Sun Audio device
-       driver, Yamaha TX-16W Sampler, IRCAM  Sound  Files,   Cre-
-       ative  Labs  VOC,  Psion	 .WVE, and Microsoft RIFF/WAV are
+       (w/header),  AVR,  NeXT	.SND,  CD-R, CVSD, GSM 06.10, Mac
+       HCOM, Sound Tools MAUD, OSS device drivers,  Turtle  Beach
+       .SMP,  Sound  Blaster,  Sndtool,	 and  Sounder,	Sun Audio
+       device driver, Yamaha TX-16W Sampler, IRCAM  Sound  Files,
+       Creative	 Labs VOC, Psion .WVE, and Microsoft RIFF/WAV are
        supported.
 
 
@@ -212,50 +212,50 @@
 		 These	can  be	 dealt	with using the .ul format
 		 (see below).
 
+       .avr	 Audio Visual Research
+		 The AVR format is produced by a number	 of  com-
+		 mercial packages on the Mac.
+
        .cdr	 CD-R
-		 CD-R files are used in mastering  music  Compact
+		 CD-R  files  are used in mastering music Compact
 		 Disks.	 The file format is, as you might expect,
-		 raw stereo raw unsigned samples at 44khz.   But,
+		 raw  stereo raw unsigned samples at 44khz.  But,
 		 there's some blocking/padding oddity in the for-
 		 mat, so it needs its own handler.
 
        .cvs	 Continuously Variable Slope Delta modulation
-		 Used to compress speech audio	for  applications
+		 Used  to  compress speech audio for applications
 		 such as voice mail.
 
        .dat	 Text Data files
-		 These	files contain a textual representation of
-		 the sample data.   There  is  one  line  at  the
+		 These files contain a textual representation  of
+		 the  sample  data.   There  is	 one  line at the
 		 beginning that contains the sample rate.  Subse-
-		 quent lines contain two numeric data items:  the
-		 time  since  the beginning of the sample and the
+		 quent	lines contain two numeric data items: the
+		 time since the beginning of the sample	 and  the
 		 sample value.	Values are normalized so that the
-		 maximum  and  minimum	are 1.00 and -1.00.  This
+		 maximum and minimum are 1.00  and  -1.00.   This
 		 file format can be used to create data files for
 		 external programs such as FFT analyzers or graph
-		 routines.  SoX can also convert a file	 in  this
-		 format	 back into one of the other file formats.
+		 routines.   SoX  can also convert a file in this
+		 format back into one of the other file	 formats.
 
        .gsm	 GSM 06.10 Lossy Speech Compression
-		 A standard for compressing speech which is  used
-		 in  the Global Standard for Mobil telecommunica-
-		 tions (GSM).  Its good for its purpose,  shrink-
-		 ing  audio data size, but it will introduce lots
-		 of noise when a given sound  sample  is  encoded
+		 A  standard for compressing speech which is used
+		 in the Global Standard for Mobil  telecommunica-
+		 tions	(GSM).	Its good for its purpose, shrink-
+		 ing audio data size, but it will introduce  lots
+		 of  noise  when  a given sound sample is encoded
 		 and decoded multiple times.  This format is used
-		 by some voice mail applications.  It  is  rather
-		 CPU  intensive.   GSM	in  sox	 is  optional and
-		 requires access to an external GSM library.   To
-		 see  if  there is support for gsm run sox -h and
-		 look for it under the	list  of  supported  file
+		 by  some  voice mail applications.  It is rather
+		 CPU intensive.	  GSM  in  sox	is  optional  and
+		 requires  access to an external GSM library.  To
+		 see if there is support for gsm run sox  -h  and
+		 look  for  it	under  the list of supported file
 		 formats.
 
-       .hcom	 Macintosh  HCOM  files.   These are (apparently)
-		 Mac FSSD files with some variant of Huffman com-
-		 pression.   The Macintosh has wacky file formats
-		 and this format handler apparently doesn't  han-
-		 dle all the ones it should.  Mac users will need
-		 your usual arsenal of file  converters	 to  deal
+       .hcom	 Macintosh HCOM files.	 These	are  (apparently)
+		 Mac  FSSD  files  with	 some  variant of Huffman
 
 
 
@@ -268,63 +268,63 @@
 SoX(1)							   SoX(1)
 
 
-		 with an HCOM file under Unix or DOS.
+		 compression.  The Macintosh has wacky file  for-
+		 mats  and this format handler apparently doesn't
+		 handle all the ones it should.	 Mac  users  will
+		 need  your  usual  arsenal of file converters to
+		 deal with an HCOM file under Unix or DOS.
 
        .maud	 An Amiga format
 		 An IFF-conform sound file type, registered by MS
-		 MacroSystem Computer GmbH, published along  with
-		 the  "Toccata"	 sound-card on the Amiga.  Allows
-		 8bit linear, 16bit linear, A-Law, u-law in  mono
+		 MacroSystem  Computer GmbH, published along with
+		 the "Toccata" sound-card on the  Amiga.   Allows
+		 8bit  linear, 16bit linear, A-Law, u-law in mono
 		 and stereo.
 
        ossdsp	 OSS /dev/dsp device driver
 		 This is a psuedo-file type and can be optionally
-		 compiled into Sox.  Run sox -h	 to  see  if  you
-		 have  support	for  this  file	 type.	When this
-		 driver is used it allows you to open up the  OSS
-		 /dev/dsp  file	 and configure it to use the same
-		 data type as passed in to  Sox.   It  works  for
-		 both  playing and recording sound samples.  When
-		 playing sound files it attempts to  set  up  the
-		 OSS  driver  to use the same format as the input
-		 file.	It is suggested to  always  override  the
+		 compiled  into	 Sox.	Run  sox -h to see if you
+		 have support for  this	 file  type.   When  this
+		 driver	 is used it allows you to open up the OSS
+		 /dev/dsp file and configure it to use	the  same
+		 data  type  as	 passed	 in to Sox.  It works for
+		 both playing and recording sound samples.   When
+		 playing  sound	 files	it attempts to set up the
+		 OSS driver to use the same format as  the  input
+		 file.	 It  is	 suggested to always override the
 		 output values to use the highest quality samples
-		 your sound card can handle.  Example: -t  ossdsp
+		 your  sound card can handle.  Example: -t ossdsp
 		 -w -s /dev/dsp
 
        .sf	 IRCAM Sound Files.
-		 SoundFiles  are  used by academic music software
-		 such as the  CSound  package,	and  the  MixView
+		 SoundFiles are used by academic  music	 software
+		 such  as  the	CSound	package,  and the MixView
 		 sound sample editor.
 
        .smp	 Turtle Beach SampleVision files.
-		 SMP  files  are  for use with the PC-DOS package
-		 SampleVision by  Turtle  Beach	 Softworks.  This
-		 package  is  for  communication  to several MIDI
-		 samplers. All sample rates are supported by  the
-		 package,  although  not all are supported by the
-		 samplers themselves. Currently loop  points  are
+		 SMP files are for use with  the  PC-DOS  package
+		 SampleVision  by  Turtle  Beach  Softworks. This
+		 package is for	 communication	to  several  MIDI
+		 samplers.  All sample rates are supported by the
+		 package, although not all are supported  by  the
+		 samplers  themselves.	Currently loop points are
 		 ignored.
 
        sunau	 Sun /dev/audio device driver
 		 This is a psuedo-file type and can be optionally
-		 compiled into Sox.  Run sox -h	 to  see  if  you
-		 have  support	for  this  file	 type.	When this
-		 driver is used it allows you to open  up  a  Sun
+		 compiled  into	 Sox.	Run  sox -h to see if you
+		 have support for  this	 file  type.   When  this
+		 driver	 is  used  it allows you to open up a Sun
 		 /dev/audio file and configure it to use the same
-		 data type as passed in to  Sox.   It  works  for
-		 both  playing and recording sound samples.  When
-		 playing sound files it attempts to  set  up  the
+		 data  type  as	 passed	 in to Sox.  It works for
+		 both playing and recording sound samples.   When
+		 playing  sound	 files	it attempts to set up the
 		 audio driver to use the same format as the input
-		 file.	It is suggested to  always  override  the
+		 file.	 It  is	 suggested to always override the
 		 output values to use the highest quality samples
-		 your hardware can handle.  Example: -t sunau  -w
-		 -s /dev/audio or -t sunau -U -c 1 /dev/audio for
-		 older sun equipment.
 
 
 
-
 			  June 28, 1999				5
 
 
@@ -334,60 +334,60 @@
 SoX(1)							   SoX(1)
 
 
+		 your  hardware can handle.  Example: -t sunau -w
+		 -s /dev/audio or -t sunau -U -c 1 /dev/audio for
+		 older sun equipment.
+
        .txw	 Yamaha TX-16W sampler.
-		 A file format from a  Yamaha  sampling	 keyboard
-		 which	wrote  IBM-PC format 3.5" floppies.  Han-
+		 A  file  format  from a Yamaha sampling keyboard
+		 which wrote IBM-PC format 3.5"	 floppies.   Han-
 		 dles reading of files which do not have the sam-
-		 ple  rate  field  set	to one of the expected by
-		 looking at some other bytes in	 the  attack/loop
-		 length	 fields,  and  defaulting to 33kHz if the
+		 ple rate field set to one  of	the  expected  by
+		 looking  at  some other bytes in the attack/loop
+		 length fields, and defaulting to  33kHz  if  the
 		 sample rate is still unknown.
 
        .vms	 More info to come.
-		 Used to compress speech audio	for  applications
+		 Used  to  compress speech audio for applications
 		 such as voice mail.
 
        .voc	 Sound Blaster VOC files.
-		 VOC  files  are  multi-part  and contain silence
-		 parts, looping, and different sample  rates  for
-		 different  chunks.   On input, the silence parts
-		 are filled out, loops are rejected,  and  sample
-		 data	with  a	 new  sample  rate  is	rejected.
-		 Silence with a different sample rate  is  gener-
-		 ated  appropriately.	On output, silence is not
+		 VOC files are	multi-part  and	 contain  silence
+		 parts,	 looping,  and different sample rates for
+		 different chunks.  On input, the  silence  parts
+		 are  filled  out, loops are rejected, and sample
+		 data  with  a	new  sample  rate  is	rejected.
+		 Silence  with	a different sample rate is gener-
+		 ated appropriately.  On output, silence  is  not
 		 detected, nor are impossible sample rates.
 
        .wav	 Microsoft .WAV RIFF files.
-		 These appear to be very similar  to  IFF  files,
-		 but  not  the	same.	They are the native sound
+		 These	appear	to  be very similar to IFF files,
+		 but not the same.  They  are  the  native  sound
 		 file format of Windows.  (Obviously, Windows was
-		 of  such  incredible  importance to the computer
-		 industry that it just had to have its own  sound
+		 of such incredible importance	to  the	 computer
+		 industry  that it just had to have its own sound
 		 file format.)	Normally .wav files have all for-
-		 matting information in their headers, and so  do
-		 not  need  any	 format	 options specified for an
-		 input file. If any are, they will  override  the
-		 file  header,	and  you  will	be warned to this
+		 matting  information in their headers, and so do
+		 not need any format  options  specified  for  an
+		 input	file.  If any are, they will override the
+		 file header, and you  will  be	 warned	 to  this
 		 effect.  You had better know what you are doing!
-		 Output	 format	 options will cause a format con-
-		 version, and the  .wav	 will  written	appropri-
-		 ately.	  Note	that it is possible to write data
-		 of a type that cannot be specified by	the  .wav
-		 header,  and you will be warned that you a writ-
-		 ing a bad file !  Sox currently  can  read  PCM,
-		 ULAW,	ALAW,  MS  ADPCM, and IMA (or DVI) ADPCM.
-		 It can output all of these  formats  except  the
+		 Output format options will cause a  format  con-
+		 version,  and	the  .wav  will written appropri-
+		 ately.	 Note that it is possible to  write  data
+		 of  a	type that cannot be specified by the .wav
+		 header, and you will be warned that you a  writ-
+		 ing  a	 bad  file !  Sox currently can read PCM,
+		 ULAW, ALAW, MS ADPCM, and IMA	(or  DVI)  ADPCM.
+		 It  can  output  all of these formats except the
 		 ADPCM styles.
 
        .wve	 Psion 8-bit alaw
-		 These	are  8-bit a-law 8khz sound files used on
+		 These are 8-bit a-law 8khz sound files	 used  on
 		 the Psion palmtop portable computer.
 
        .raw	 Raw files (no header).
-		 The sample rate, size	(byte,	word,  etc),  and
-		 style	(signed,  unsigned,  etc.)  of the sample
-		 file must be  given.	The  number  of	 channels
-		 defaults to 1.
 
 
 
@@ -400,63 +400,63 @@
 SoX(1)							   SoX(1)
 
 
+		 The  sample  rate,  size  (byte, word, etc), and
+		 style (signed, unsigned, etc.)	  of  the  sample
+		 file  must  be	 given.	  The  number of channels
+		 defaults to 1.
+
        .ub, .sb, .uw, .sw, .ul
-		 These	are  several  suffices	which  serve as a
-		 shorthand for raw files with a	 given	size  and
-		 style.	  Thus, ub, sb, uw, sw, and ul correspond
-		 to "unsigned  byte",  "signed	byte",	"unsigned
-		 word",	 "signed  word",  and "ulaw" (byte).  The
-		 sample rate defaults to 8000 hz if  not  explic-
+		 These are several  suffices  which  serve  as	a
+		 shorthand  for	 raw  files with a given size and
+		 style.	 Thus, ub, sb, uw, sw, and ul  correspond
+		 to  "unsigned	byte",	"signed	 byte", "unsigned
+		 word", "signed word", and  "ulaw"  (byte).   The
+		 sample	 rate  defaults to 8000 hz if not explic-
 		 itly set, and the number of channels (as always)
-		 defaults to 1.	 There are lots of Sparc  samples
-		 floating  around  in u-law format with no header
+		 defaults  to 1.  There are lots of Sparc samples
+		 floating around in u-law format with  no  header
 		 and fixed at a sample rate of 8000 hz.	 (Certain
 		 sound management software cheerfully ignores the
-		 headers.)  Similarly, most Mac sound  files  are
-		 in  unsigned  byte  format with a sample rate of
+		 headers.)   Similarly,	 most Mac sound files are
+		 in unsigned byte format with a	 sample	 rate  of
 		 11025 or 22050 hz.
 
-       .auto	 This is a ``meta-type'':  specifying  this  type
-		 for  an input file triggers some code that tries
-		 to guess the real  type  by  looking  for  magic
-		 words	in  the	 header.   If  the  type can't be
-		 guessed, the program exits with  an  error  mes-
-		 sage.	 The  input  must  be a plain file, not a
+       .auto	 This  is  a  ``meta-type'': specifying this type
+		 for an input file triggers some code that  tries
+		 to  guess  the	 real  type  by looking for magic
+		 words in the  header.	 If  the  type	can't  be
+		 guessed,  the	program	 exits with an error mes-
+		 sage.	The input must be a  plain  file,  not	a
 		 pipe.	This type can't be used for output files.
 
 EFFECTS
        Only one effect from the palette may be applied to a sound
-       sample.	To do multiple effects you'll need to run sox  in
+       sample.	 To do multiple effects you'll need to run sox in
        a pipeline.
 
        avg [ -l | -r ]
-		 Reduce	 the  number of channels by averaging the
-		 samples, or duplicate channels to  increase  the
-		 number	 of channels.  Valid combinations are 1 -
-		 2, 1 - 4, 2 - 4, 4 - 2, 4 - 1, 2 - 1. The -l  or
-		 -r  option  is	 not  really averaging but either
-		 duplicates or leaves  just  the  left	or  right
-		 channel,  depending  on  if  your  increasing or
+		 Reduce the number of channels by  averaging  the
+		 samples,  or  duplicate channels to increase the
+		 number of channels.  Valid combinations are 1	-
+		 2,  1 - 4, 2 - 4, 4 - 2, 4 - 1, 2 - 1. The -l or
+		 -r option is not  really  averaging  but  either
+		 duplicates  or	 leaves	 just  the  left or right
+		 channel, depending  on	 if  your  increasing  or
 		 decreasing the number of output channels.
 
        band [ -n ] center [ width ]
-		 Apply	a  band-pass   filter.	  The	frequency
+		 Apply	 a   band-pass	 filter.   The	frequency
 		 response drops logarithmically 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
+		 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 instru-
-		 mental	 music.	  The  -n (for noise) option uses
+		 mental music.	The -n (for  noise)  option  uses
 		 the alternate mode for un-pitched signals.  Band
-		 introduces  noise  in	the  shape of the filter,
-		 i.e. peaking at the center  frequency	and  set-
-		 tling around it.
 
 
 
-
-
 			  June 28, 1999				7
 
 
@@ -466,33 +466,37 @@
 SoX(1)							   SoX(1)
 
 
+		 introduces noise in the  shape	 of  the  filter,
+		 i.e.  peaking	at  the center frequency and set-
+		 tling around it.
+
        chorus gain-in gain-out delay decay speed deptch
 
 	      -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  mil-
-		 liseconds  and	 the  decay (relative to gain-in)
-		 with a modulation speed in  Hz	 using	depth  in
+		 Add a chorus to a sound sample.  Each	quadtuple
+		 delay/decay/speed/depth  gives the delay in mil-
+		 liseconds and the decay  (relative  to	 gain-in)
+		 with  a  modulation  speed  in Hz using depth in
 		 milliseconds.	The modulation is either sinodial
 		 (-s) or triangular (-t).  Gain-out is the volume
 		 of the output.
 
        copy	 Copy the input file to the output file.  This is
-		 the default effect if both files have	the  same
+		 the  default  effect if both files have the same
 		 sampling rate.
 
        cut loopnumber
 		 Extract loop #N from a sample.
 
-       deemph	 Apply	a  treble  attenuation shelving filter to
+       deemph	 Apply a treble attenuation  shelving  filter  to
 		 samples  in  audio  cd	 format.   The	frequency
-		 response  of pre-emphasized recordings is recti-
-		 fied.	The filtering is defined in the	 standard
+		 response of pre-emphasized recordings is  recti-
+		 fied.	 The filtering is defined in the standard
 		 document ISO 908.
 
        echo gain-in gain-out delay decay [ delay decay ... ]
 		 Add echoing to a sound sample.	 Each delay/decay
-		 part gives the delay  in  milliseconds	 and  the
+		 part  gives  the  delay  in milliseconds and the
 		 decay (relative to gain-in) of that echo.  Gain-
 		 out is the volume of the output.
 
@@ -499,27 +503,23 @@
        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  to  gain-in)	 of  that
+		 and  the  decay  (relative  to	 gain-in) of that
 		 echo.	Gain-out is the volume of the output.
 
        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	millisec-
-		 onds  and the decay (relative to gain-in) with a
+		 Add a flanger to a sound  sample.   Each  triple
+		 delay/decay/speed  gives  the delay in millisec-
+		 onds and the decay (relative to gain-in) with	a
 		 modulation  speed  in	Hz.   The  modulation  is
-		 either	 sinodial (-s) or triangular (-t).  Gain-
+		 either sinodial (-s) or triangular (-t).   Gain-
 		 out is the volume of the output.
 
        highp center
-		 Apply	a  high-pass   filter.	  The	frequency
-		 response  drops logarithmically with center fre-
-		 quency in the middle of the drop.  The slope  of
+		 Apply	 a   high-pass	 filter.   The	frequency
+		 response drops logarithmically with center  fre-
+		 quency	 in the middle of the drop.  The slope of
 		 the filter is quite gentle.
 
-       lowp center
-		 Apply a low-pass filter.  The frequency response
-		 drops logarithmically with center  frequency  in
-		 the middle of the drop.  The slope of the filter
 
 
 
@@ -532,30 +532,34 @@
 SoX(1)							   SoX(1)
 
 
+       lowp center
+		 Apply a low-pass filter.  The frequency response
+		 drops	logarithmically	 with center frequency in
+		 the middle of the drop.  The slope of the filter
 		 is quite gentle.
 
        map	 Display a list of loops in a sample, and miscel-
 		 laneous loop info.
 
-       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 of noise to the sound file  at  the
+       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 of noise to the sound file at the
 		 output bit depth.
 
        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	millisec-
-		 onds  and the decay (relative to gain-in) with a
+		 Add a phaser to a  sound  sample.   Each  triple
+		 delay/decay/speed  gives  the delay in millisec-
+		 onds and the decay (relative to gain-in) with	a
 		 modulation  speed  in	Hz.   The  modulation  is
-		 either	 sinodial  (-s)	 or triangular (-t).  The
+		 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	 Select	 the  left  or	right channel of a stereo
-		 sample, or one of four	 channels  in  a  quadro-
+       pick	 Select the left or right  channel  of	a  stereo
+		 sample,  or  one  of  four channels in a quadro-
 		 phonic sample.
 
        polyphase [ -w < num / ham > ]
@@ -564,31 +568,27 @@
 
 		 [ -cutoff #  ]
 		 Translate input sampling rate to output sampling
-		 rate via polyphase interpolation,  a  DSP  algo-
-		 rithm.	  This	method	is  slow and uses lots of
+		 rate  via  polyphase  interpolation, a DSP algo-
+		 rithm.	 This method is slow  and  uses	 lots  of
 		 RAM, but gives much better results then rate.
-		 -w < nut / ham > : select either a  Nuttal  (~90
-		 dB  stopband)	or Hamming (~43 dB stopband) win-
+		 -w  <	nut / ham > : select either a Nuttal (~90
+		 dB stopband) or Hamming (~43 dB  stopband)  win-
 		 dow.  Warning: Nuttall windows require 2x length
 		 than Hamming windows.	Default is nut.
-		 -width	 long  / short / # : specify the width of
-		 the filter.  long is 1024 samples; short is  128
-		 samples.   Alternatively, an exact number can be
+		 -width long / short / # : specify the	width  of
+		 the  filter.  long is 1024 samples; short is 128
+		 samples.  Alternatively, an exact number can  be
 		 used.	Default is long.
-		 -cutoff # : specify the filter cutoff	frequency
-		 in  terms  of	fraction of bandwidth.	If upsam-
-		 pling, then this is the fraction of the  orignal
+		 -cutoff  # : specify the filter cutoff frequency
+		 in terms of fraction of  bandwidth.   If  upsam-
+		 pling,	 then this is the fraction of the orignal
 		 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  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
 
-
-
 			  June 28, 1999				9
 
 
@@ -598,18 +598,20 @@
 SoX(1)							   SoX(1)
 
 
-		 Common Multiple of the two sampling rates.  This
-		 is the default effect if the two files have dif-
-		 ferent sampling rates and  the	 preview  options
-		 was  specified.   This	 is  fast  but noisy: the
-		 spectrum of the original sound will  be  shifted
-		 upwards and duplicated faintly when up-translat-
-		 ing 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 of Sox's
-		 rate changing effects to ues, you will	 want  to
-		 read  a  detailed  analysis  of  all  of them at
+       rate	 Translate input sampling rate to output sampling
+		 rate via linear interpolation to the Least  Com-
+		 mon Multiple of the two sampling rates.  This is
+		 the default effect if the two files have differ-
+		 ent  sampling	rates and the preview options was
+		 specified.  This is fast but noisy: the spectrum
+		 of  the  original  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 of  Sox's
+		 rate  changing	 effects to ues, you will want to
+		 read a detailed  analysis  of	all  of	 them  at
 		 http://eakaw2.et.tu-dresden.de/~andreas/resam-
 		 ple/resample.html
 
@@ -616,45 +618,43 @@
        resample [ rolloff [ beta ] ]
 		 Translate input sampling rate to output sampling
 		 rate  via  simulated  analog  filtration.   This
-		 method	 is slower than rate, but gives much bet-
+		 method is slower than rate, but gives much  bet-
 		 ter results.  rolloff refers to the cut-off fre-
-		 quency	 of  the  low pass filter and is given in
-		 terms of the Nyquist  frequency  for  the  lower
-		 sample	 rate.	 rolloff therefor should be some-
-		 thing between 0. and 1., in  practice	0.8-0.95.
-		 beta  trades stop band rejection against transi-
-		 tion width from passband to stop  band.   Larger
+		 quency of the low pass filter and  is	given  in
+		 terms	of  the	 Nyquist  frequency for the lower
+		 sample rate.  rolloff therefor should	be  some-
+		 thing	between	 0. and 1., in practice 0.8-0.95.
+		 beta trades stop band rejection against  transi-
+		 tion  width  from passband to stop band.  Larger
 		 beta means a slower transition and greater stop-
 		 band rejection.  beta should be at least greater
-		 than  2.   The default is rollof 0.8, beta 17.5,
-		 which is rather  conservative	with  respect  to
-		 aliasing.   Lower beta and higher rolloff values
-		 preserve more high frequency signal energy,  but
-		 introduce  measurable	artifacts.   This  is the
-		 default effect if the two files  have	different
+		 than 2.  The default is rollof 0.8,  beta  17.5,
+		 which	is  rather  conservative  with respect to
+		 aliasing.  Lower beta and higher rolloff  values
+		 preserve  more high frequency signal energy, but
+		 introduce measurable  artifacts.   This  is  the
+		 default  effect  if the two files have different
 		 sampling rates.
 
        reverb gain-out delay [ delay ... ]
-		 Add  reverbation  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
+		 Add reverbation 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 rever-
 		 bation.  Gain-out is the volume of the output.
 
-       reverse	 Reverse the sound sample  completely.	 Included
+       reverse	 Reverse  the  sound sample completely.	 Included
 		 for finding Satanic subliminals.
 
        split	 Turn a mono sample into a stereo sample by copy-
-		 ing the input channel	to  the	 left  and  right
+		 ing  the  input  channel  to  the left and right
 		 channels.
 
-       stat [ debug | -v ]
-		 Do  a	statistical  check on the input file, and
-		 print results on the standard error file.   stat
 
 
 
+
 			  June 28, 1999			       10
 
 
@@ -664,49 +664,52 @@
 SoX(1)							   SoX(1)
 
 
-		 may  copy  the file untouched from input to out-
-		 put, if you select an output file.  The  "Volume
-		 Adjustment:"  field  in the statistics gives you
-		 the argument to the -v number	which  will  make
+       stat [ debug | -v ]
+		 Do a statistical check on the	input  file,  and
+		 print	results on the standard error file.  stat
+		 may copy the file untouched from input	 to  out-
+		 put,  if you select an output file.  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.
-		 There is an  optional	parameter  -v  that  will
+		 There	is  an	optional  parameter  -v that will
 		 print out the "Volume Adjustment:" field's value
-		 and return.  This could be of use in scripts  to
-		 auto  convert	the  volume.  There is an also an
-		 optional parameter debug  that	 will  place  sox
-		 into  debug mode and 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
+		 and  return.  This could be of use in scripts to
+		 auto convert the volume.  There is  an	 also  an
+		 optional  parameter  debug  that  will place sox
+		 into debug mode and 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.
 
        swap [ 1 2 3 4 ]
-		 Swap  channels in multi-channel sound files.  In
-		 files with more than 2 channels you may  specify
+		 Swap channels in multi-channel sound files.   In
+		 files	with more than 2 channels you may specify
 		 the order that the channels should be rearranged
 		 in.
 
        vibro speed  [ depth ]
-		 Add the world-famous  Fender  Vibro-Champ  sound
+		 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.
+		 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.
 
-       Sox enforces certain effects.  If the two files have  dif-
+       Sox  enforces certain effects.  If the two files have dif-
        ferent sampling rates, the requested effect must be one of
-       copy, or rate, If the two files have different numbers  of
+       copy,  or rate, If the two files have different numbers of
        channels, the avg effect must be requested.
 
 BUGS
-       The  syntax  is horrific.  It's very tempting to include a
-       default system that allows an effect name as  the  program
-       name  and just pipes a sound sample from standard input to
-       standard output, but the problem of inputting  the  sample
+       The syntax is horrific.	It's very tempting to  include	a
+       default	system	that allows an effect name as the program
+       name and just pipes a sound sample from standard input  to
+       standard	 output,  but the problem of inputting the sample
        rates makes this unworkable.
 
-       Please  report  any  bugs  found in this version of sox to
+       Please report any bugs found in this  version  of  sox  to
        Chris Bagwell (cbagwell@sprynet.com)
 
 FILES
@@ -714,13 +717,10 @@
        play(1), rec(1)
 
 NOTICES
-       The  echoplex  effect  is:  Copyright  (C)  1989	 by   Jef
-       Poskanzer.
+       The   echoplex  effect  is:  Copyright  (C)  1989  by  Jef
 
-       Permission  to  use,  copy,  modify,  and  distribute this
 
 
-
 			  June 28, 1999			       11
 
 
@@ -730,21 +730,21 @@
 SoX(1)							   SoX(1)
 
 
-       software and its documentation for any purpose and without
-       fee  is	hereby granted, provided that the above copyright
-       notice appear in all copies and that both  that	copyright
-       notice  and  this  permission  notice appear in supporting
-       documentation.  This software is provided "as is"  without
+       Poskanzer.
+
+       Permission to use, copy, modify, and distribute this soft-
+       ware and its documentation for any purpose and without fee
+       is hereby  granted,  provided  that  the	 above	copyright
+       notice  appear  in all copies and that both that copyright
+       notice and this permission  notice  appear  in  supporting
+       documentation.	This software is provided "as is" without
        express or implied warranty.
 
-       The  version  of	 Sox that accompanies this manual page is
-       support by Chris Bagwell	 (cbagwell@sprynet.com).   Please
+       The version of Sox that accompanies this	 manual	 page  is
+       support	by  Chris Bagwell (cbagwell@sprynet.com).  Please
        refer any questions regarding it to this address.  You may
-       obtain  the  latest  version   at   the	 the   web   site
+       obtain	the   latest   version	 at   the  the	web  site
        http://home.sprynet.com/~cbagwell/sox.html
-
-
-
 
 
 
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -40,7 +40,7 @@
 
 # Sources.
 
-FSRC	= 8svx.c aiff.c au.c auto.c cdr.c cvsd.c dat.c g711.c g721.c \
+FSRC	= 8svx.c aiff.c au.c auto.c avr.c cdr.c cvsd.c dat.c g711.c g721.c \
 	  g723_24.c g723_40.c g72x.c gsm.c hcom.c maud.c raw.c \
 	  sbdsp.c sf.c smp.c sndrtool.c tx16w.c voc.c wav.c wve.c
 
@@ -61,7 +61,7 @@
 
 # Objects.
 
-FOBJ	= 8svx.o aiff.o au.o auto.o cdr.o cvsd.o dat.o g711.o g721.o \
+FOBJ	= 8svx.o aiff.o au.o auto.o avr.o cdr.o cvsd.o dat.o g711.o g721.o \
 	  g723_24.o g723_40.o g72x.o gsm.o hcom.o maud.o raw.o \
 	  sbdsp.o sf.o smp.o sndrtool.o tx16w.o voc.o wav.o wve.o
 
--- a/src/aiff.c
+++ b/src/aiff.c
@@ -56,9 +56,7 @@
 };
 
 double read_ieee_extended();
-LONG rawread(P3(ft_t, LONG *, LONG));
 void aiffwriteheader(P2(ft_t, LONG));
-void rawwrite(P3(ft_t, LONG *, LONG));
 void write_ieee_extended(P2(ft_t, double));
 double ConvertFromIeeeExtended();
 void ConvertToIeeeExtended(P2(double, char *));
--- a/src/au.c
+++ b/src/au.c
@@ -59,8 +59,6 @@
 };
 
 void auwriteheader(P2(ft_t ft, ULONG data_size));
-LONG rawread(P3(ft_t, LONG *, LONG));
-void rawwrite(P3(ft_t,LONG *, LONG));
 
 void austartread(ft) 
 ft_t ft;
--- a/src/auto.c
+++ b/src/auto.c
@@ -57,6 +57,9 @@
 	else if (strncmp(header, "SOUND", 5) == 0) {
 		type = "sndt";
 	}
+	else if (strncmp(header, "2BIT", 4) == 0) {
+		type = "avr";
+	}
 	else if (header[0] == 0 && header[1] == 0) {
 		int rate = (header[2] & 0xff) + ((header[3] & 0xff) << 8);
 		if (rate >= 4000 && rate <= 25000)
--- a/src/cdr.c
+++ b/src/cdr.c
@@ -31,9 +31,6 @@
 	LONG	samples;	/* number of samples written */
 } *cdr_t;
 
-LONG rawread(P3(ft_t, LONG *, LONG));
-void rawwrite(P3(ft_t, LONG *, LONG));
-
 /*
  * Do anything required before you start reading samples.
  * Read file header. 
--- a/src/handlers.c
+++ b/src/handlers.c
@@ -58,12 +58,22 @@
 
 char *autonames[] = {
 	"auto",
-	(char *) 0,
+	(char *) 0
 };
 
 extern void autostartread();
 extern void autostartwrite();
 
+char *avrnames[] = {
+	"avr",
+	(char *) 0
+};
+
+extern void avrstartread();
+extern void avrstartwrite();
+extern void avrwrite();
+extern void avrstopwrite();
+
 char *cdrnames[] = {
 	"cdr",
 	(char *) 0
@@ -154,13 +164,9 @@
 	"raw",
 	(char *) 0
 };
-extern void rawstartread();
-extern LONG rawread();
-extern void rawstopread();
-extern void rawstartwrite();
-extern void rawwrite();
-extern void rawstopwrite();
 
+/* raw prototypes are defined in st.h since they are used globally. */
+
 #if	defined(BLASTER) || defined(SBLAST)
 char *sbdspnames[] = {
 	"sbdsp",
@@ -333,6 +339,9 @@
 	{autonames, FILE_STEREO,
 		autostartread, nothing_success, nothing,/* Guess from header */
 		autostartwrite, nothing, nothing},	 /* patched run time */
+	{avrnames, FILE_STEREO,
+		avrstartread, rawread, nothing,		/* AVR format */
+		avrstartwrite, avrwrite, avrstopwrite}, /* relies on raw */
 	{cdrnames, FILE_STEREO,
 		cdrstartread, cdrread, cdrstopread,	      /* CD-R format */
 		cdrstartwrite, cdrwrite, cdrstopwrite},
--- a/src/maud.c
+++ b/src/maud.c
@@ -33,8 +33,6 @@
 };
 
 void maudwriteheader(P1(ft_t));
-LONG rawread(P3(ft_t, LONG *, LONG));
-void rawwrite(P3(ft_t, LONG *, LONG));
 
 /*
  * Do anything required before you start reading samples.
--- a/src/st.h
+++ b/src/st.h
@@ -250,6 +250,8 @@
 void rawstartwrite(P1(ft_t ft));
 void rawstopread(P1(ft_t ft));
 void rawstopwrite(P1(ft_t ft));
+LONG rawread(P3(ft_t ft, LONG *buf, LONG nsamp));
+void rawwrite(P3(ft_t ft, LONG *buf, LONG nsamp));
 
 /* Utilities to byte-swap values */
 unsigned short swapw(P1(unsigned short us));		/* Swap short */
--- a/src/wav.c
+++ b/src/wav.c
@@ -89,8 +89,6 @@
 
 static char *wav_format_str();
 
-LONG rawread(P3(ft_t, LONG *, LONG));
-void rawwrite(P3(ft_t, LONG *, LONG));
 void wavwritehdr(P1(ft_t));
 
 
--- a/src/wve.c
+++ b/src/wve.c
@@ -20,8 +20,6 @@
     };
 
 void wvewriteheader(P1(ft_t ft));
-LONG rawread(P3(ft_t, LONG *, LONG));
-void rawwrite(P3(ft_t, LONG *, LONG));
 
 void wvestartread(ft) 
 ft_t ft;