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;