			      SoX: Sound eXchange
			      ===================

SoX (Sound eXchange) is the Swiss Army knife of sound processing tools: it
can convert sound files between many different file formats & audio devices,
and can apply many sound effects & transformations, as well as doing basic
analysis and providing input to more capable analysis and plotting tools.

SoX is licensed under the GNU GPL and GNU LGPL.  To be precise, the 'sox'
and 'soxi' programs are distributed under the GPL, while the library
'libsox' (in which most of SoX's functionality resides) is dual-licensed.
Note that some optional components of libsox are GPL only: if you use these,
you must use libsox under the GPL.  See INSTALL for the list of optional
components and their licences.

If this distribution is of source code (as opposed to pre-built binaries),
then you will need to compile and install SoX as described in the 'INSTALL'
file.

Changes between this release and previous releases of SoX can be found in
the 'ChangeLog' file; a summary of the file formats and effects supported in
this release can be found below.  Detailed documentation for using SoX can
be found in the distributed 'man' pages:

  o  sox(1)
  o  soxi(1)
  o  soxformat(7)
  o  libsox(3)

or in plain text or PDF files for those systems without man.

The majority of SoX features and fixes are contributed by SoX users - thank
you very much for making SoX a success!  There are several new features
wanted for SoX, listed on the feature request tracker at the SoX project
home-page:

		    http://sourceforge.net/projects/sox

users are encouraged to implement them!

Please submit bug reports, new feature requests, and patches to the relevant
tracker at the above address, or by email:

		   mailto:sox-devel@lists.sourceforge.net

Also accessible via the project home-page is the SoX users' discussion
mailing list which you can join to discuss all matters SoX with other SoX
users; the mail address for this list is:

		   mailto:sox-users@lists.sourceforge.net

The current release handles the following audio file formats:


  o  Raw files in various binary formats
  o  Raw textual data
  o  Amiga 8svx files
  o  Apple/SGI AIFF files
  o  SUN .au files
    o  PCM, u-law, A-law
    o  G7xx ADPCM files (read only)
    o  mutant DEC .au files
    o  NeXT .snd files
  o  AVR files
  o  CDDA (Compact Disc Digital Audio format)
  o  CVS and VMS files (continuous variable slope)
  o  Grandstream ring-tone files
  o  GSM files
  o  HTK files
  o  LPC-10 files
  o  Macintosh HCOM files
  o  Amiga MAUD files
  o  AMR-WB & AMR-NB (with optional libamrwb & libamrnb libraries)
  o  MP2/MP3 (with optional libmad, libtwolame and libmp3lame libraries)
  o  Opus files (read only; with optional Opus libraries)

  o  Ogg Vorbis files (with optional Ogg Vorbis libraries)
  o  FLAC files (with optional libFLAC)
  o  IRCAM SoundFile files
  o  NIST SPHERE files
  o  Turtle beach SampleVision files
  o  Sounder & Soundtool (DOS) files
  o  Yamaha TX-16W sampler files
  o  SoundBlaster .VOC files
  o  Dialogic/OKI ADPCM files (.VOX)
  o  Microsoft .WAV files
    o  PCM, floating point
    o  u-law, A-law, MS ADPCM, IMA (DMI) ADPCM
    o  GSM
    o  RIFX (big endian)
  o  WavPack files (with optional libwavpack library)
  o  Psion (palmtop) A-law WVE files and Record voice notes
  o  Maxis XA Audio files
    o  EA ADPCM (read support only, for now)
  o  Pseudo formats that allow direct playing/recording from most audio devices
  o  The "null" pseudo-file that reads and writes from/to nowhere


The audio effects/tools included in this release are as follows:

  o  Tone/filter effects
    o  allpass: RBJ all-pass biquad IIR filter
    o  bandpass: RBJ band-pass biquad IIR filter
    o  bandreject: RBJ band-reject biquad IIR filter
    o  band: SPKit resonator band-pass IIR filter
    o  bass: Tone control: RBJ shelving biquad IIR filter
    o  equalizer: RBJ peaking equalisation biquad IIR filter
    o  firfit+: FFT convolution FIR filter using given freq. response (W.I.P.)
    o  highpass: High-pass filter: Single pole or RBJ biquad IIR
    o  hilbert: Hilbert transform filter (90 degrees phase shift)
    o  lowpass: Low-pass filter: single pole or RBJ biquad IIR
    o  sinc: Sinc-windowed low/high-pass/band-pass/reject FIR
    o  treble: Tone control: RBJ shelving biquad IIR filter

  o  Production effects
    o  chorus: Make a single instrument sound like many
    o  delay: Delay one or more channels
    o  echo: Add an echo
    o  echos: Add a sequence of echos
    o  flanger: Stereo flanger
    o  overdrive: Non-linear distortion
    o  phaser: Phase shifter
    o  repeat: Loop the audio a number of times
    o  reverb: Add reverberation
    o  reverse: Reverse the audio (to search for Satanic messages ;-)
    o  tremolo: Sinusoidal volume modulation

  o  Volume/level effects
    o  compand: Signal level compression/expansion/limiting
    o  contrast: Phase contrast volume enhancement
    o  dcshift: Apply or remove DC offset
    o  fade: Apply a fade-in and/or fade-out to the audio
    o  gain: Apply gain or attenuation; normalise/equalise/balance/headroom
    o  loudness: Gain control with ISO 226 loudness compensation
    o  mcompand: Multi-band compression/expansion/limiting
    o  norm: Normalise to 0dB (or other)
    o  vol: Adjust audio volume

  o  Editing effects
    o  pad: Pad (usually) the ends of the audio with silence
    o  silence: Remove portions of silence from the audio
    o  splice: Perform the equivalent of a cross-faded tape splice
    o  trim: Cuts portions out of the audio
    o  vad: Voice activity detector

  o  Mixing effects
    o  channels: Auto mix or duplicate to change number of channels
    o  divide+: Divide sample values by those in the 1st channel (W.I.P.)
    o  remix: Produce arbitrarily mixed output channels
    o  swap: Swap pairs of channels

  o  Pitch/tempo effects
    o  bend: Bend pitch at given times without changing tempo
    o  pitch: Adjust pitch (= key) without changing tempo
    o  speed: Adjust pitch & tempo together
    o  stretch: Adjust tempo without changing pitch (simple alg.)
    o  tempo: Adjust tempo without changing pitch (WSOLA alg.)

  o  Mastering effects
    o  dither: Add dither noise to increase quantisation SNR
    o  rate: Change audio sampling rate

  o  Specialised filters/mixers
    o  deemph: ISO 908 CD de-emphasis (shelving) IIR filter
    o  earwax: Process CD audio to best effect for headphone use
    o  noisered: Filter out noise from the audio
    o  oops: Out Of Phase Stereo (or `Karaoke') effect
    o  riaa: RIAA vinyl playback equalisation

  o  Analysis `effects'
    o  noiseprof: Produce a DFT profile of the audio (use with noisered)
    o  spectrogram: graph signal level vs. frequency & time (needs `libpng')
    o  stat: Enumerate audio peak & RMS levels, approx. freq., etc.
    o  stats: Multichannel aware `stat'

  o  Miscellaneous effects
    o  ladspa: Apply LADSPA plug-in effects e.g. CMT (Computer Music Toolkit)
    o  synth: Synthesise/modulate audio tones or noise signals
    o  newfile: Create a new output file when an effects chain ends.
    o  restart: Restart 1st effects chain when multiple chains exist.

  o  Low-level signal processing effects
    o  biquad: 2nd-order IIR filter using externally provided coefficients
    o  downsample: Reduce sample rate by discarding samples
    o  fir: FFT convolution FIR filter using externally provided coefficients
    o  upsample: Increase sample rate by zero stuffing

  + Experimental or incomplete effect; may change in future.

Multiple audio files can be combined (and then further processed with
effects) using any one of the following combiner methods:

  o  concatenate
  o  mix
  o  merge: E.g. two mono files to one stereo file
  o  sequence: For playing multiple audio files/streams
