forked from sox_ng/sox_ng
3683 lines
129 KiB
Groff
3683 lines
129 KiB
Groff
'\" t
|
|
'\" The line above instructs most `man' programs to invoke tbl
|
|
'\"
|
|
'\" Separate paragraphs; not the same as PP which resets indent level.
|
|
.de SP
|
|
.if t .sp .5
|
|
.if n .sp
|
|
..
|
|
'\"
|
|
'\" Replacement em dash for nroff (default is too short).
|
|
.ie n .ds m " -
|
|
.el .ds m \(em
|
|
'\"
|
|
'\" Placeholder macro for if longer nroff arrow is needed.
|
|
.ds RA \(->
|
|
'\"
|
|
'\" Decimal point set slightly raised
|
|
.if t .ds d \v'-.15m'.\v'+.15m'
|
|
.if n .ds d .
|
|
'\"
|
|
'\" Enclosure macro for examples
|
|
'\" From groff-1.23 CW is undeclared by default but nroff is CW anyway
|
|
.if n .ftr CW R
|
|
.de XE
|
|
.SP
|
|
.nf
|
|
.ft CW
|
|
..
|
|
.de XX
|
|
.ft R
|
|
.SP
|
|
.fi
|
|
..
|
|
.TH SOXEFFECT_NG 7 "December 05, 2024" "SoX" "Sound eXchange_ng"
|
|
.SH NAME
|
|
soxeffect_ng \- Effects supported by sox_ng and libsox_ng
|
|
.SH SYNOPSIS
|
|
In addition to converting, playing and recording audio files, SoX can
|
|
be used to invoke a number of audio effects. Multiple effects may
|
|
be applied by specifying them one after the other at the end of the SoX
|
|
command line, forming an `effects chain'.
|
|
Note that applying multiple effects in real time (i.e. when playing audio)
|
|
may require a high performance computer.
|
|
.SP
|
|
Some of the SoX effects are primarily intended to be applied to a single
|
|
instrument or `voice'. To facilitate this, the \fBremix\fR effect and
|
|
the global SoX option \fB\-M\fR can be used to isolate then recombine
|
|
tracks from a multitrack recording.
|
|
.SH MULTIPLE EFFECTS CHAINS
|
|
A single effects chain is made up of one or more effects. Audio from
|
|
the input runs through the chain until either the end of the input file
|
|
is reached or an effect terminates the chain.
|
|
.SP
|
|
SoX supports running multiple effects chains over the input audio.
|
|
In this case, when one chain indicates that it is done processing audio,
|
|
the audio data is sent through the next effects chain. This
|
|
continues until either no more effects chains exist or the input has
|
|
reached the end of the file.
|
|
.SP
|
|
Effects chains can be separated by placing a
|
|
.B :
|
|
(colon) after an effect;
|
|
any following effects are a part of a new effects chain.
|
|
.SP
|
|
It is important to place the effect that stops the chain
|
|
as the first effect in the chain because any samples
|
|
that are buffered by effects to the left of the terminating effect
|
|
will be discarded. The amount of samples discarded is related to the
|
|
.B \-\-buffer
|
|
option and it should be kept small, relative to the sample rate, if
|
|
the terminating effect cannot be first. Further information on
|
|
stopping effects can be found in the
|
|
.B Stopping SoX
|
|
section.
|
|
.SP
|
|
There are a few pseudo-effects that can help when using multiple effects chains.
|
|
These include
|
|
.BR newfile ,
|
|
which starts writing to a new output file before moving to the
|
|
next effects chain, and
|
|
.BR restart ,
|
|
which moves back to the first effects chain. Pseudo-effects
|
|
must be specified as the first effect in a chain and as the only
|
|
effect in a chain (i.e. they must have a
|
|
.B :
|
|
before and after them).
|
|
.SP
|
|
Here is an example of multiple effects chains. It splits the
|
|
input file into multiple files, each of 30 seconds in length and
|
|
each output filename will have unique number in its name,
|
|
as documented in the
|
|
.B Output Files
|
|
section.
|
|
.XE
|
|
sox_ng in.au out.au trim 0 30 : newfile : restart
|
|
.XX
|
|
.SH COMMON NOTATION AND PARAMETERS
|
|
In the descriptions that follow,
|
|
[square brackets] are used to denote parameters that are optional,
|
|
{braces} to denote those that are both optional and repeatable,
|
|
<angle brackets> to denote those that are repeatable but not
|
|
optional and pipe characters `|' separate options from which to choose
|
|
one of several alternatives.
|
|
Where applicable, default values for optional parameters are shown
|
|
(in parentheses).
|
|
.SP
|
|
The following parameters are used with, and have the same meaning for,
|
|
several effects:
|
|
.TP
|
|
\fIfrequency\fR
|
|
A frequency in Hz or, if followed by \fBk\fR, in kHz or,
|
|
if preceded by \fB%\fR, in semitones relative to A (440Hz);
|
|
alternatively, scientific note names (e.g. E2) may be used.
|
|
.TP
|
|
\fIgain\fR
|
|
A power gain in dB.
|
|
Zero gives no gain, less than zero gives an attenuation
|
|
and greater than zero amplifies.
|
|
.TP
|
|
\fIduration\fR
|
|
See \fBTime Specifications\fR below.
|
|
.TP
|
|
\fIposition\fR
|
|
A position within the audio stream; the syntax is
|
|
[\fB=\fR\^|\^\fB\-\fR\^|\^\fB+\fR]\fItimespec\fR, where \fItimespec\fR is a
|
|
time specification (see below). The optional first character indicates
|
|
whether the \fItimespec\fR is to be interpreted relative to the start
|
|
(\fB=\fR) or end (\fB\-\fR) of the audio or relative to the previous
|
|
\fIposition\fR (\fB+\fR) if the effect accepts multiple positional arguments.
|
|
The audio length
|
|
must be known for end-relative locations to work, though some effects do accept
|
|
\fB\-0\fR for the end of the audio even if the length is unknown.
|
|
Which of \fB=\fR, \fB\-\fR and \fB+\fR is the default depends on the effect
|
|
and is shown in its syntax as, e.g., \fIposition\fR(+).
|
|
.SP
|
|
Examples: `=2:00' is two minutes into the audio stream,
|
|
`\-100s' is one hundred samples before the end of the audio,
|
|
`+0:12+10s' is twelve seconds and ten samples after the previous position
|
|
and
|
|
`\-0.5+1s' is one sample less than half a second before the end of the audio.
|
|
.TP
|
|
\fIwidth\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]
|
|
Used to specify the bandwidth of a filter. A number of different
|
|
methods to specify the width are available (though not all for every effect).
|
|
One of the characters shown may be appended to select the desired method
|
|
as follows:
|
|
.SP
|
|
.ne 5
|
|
.TS
|
|
center;
|
|
cI cI lI
|
|
cB c l.
|
|
\ Method Notes
|
|
h Hz \
|
|
k kHz \
|
|
b Hz Old non-frequency-warped response
|
|
o octaves \
|
|
q Q-factor See [2]
|
|
s slope \
|
|
.TE
|
|
.SP
|
|
For each effect that uses this parameter, the default method (if no
|
|
character is appended) is the one that is listed first in the first line of
|
|
the effect's description.
|
|
.SH TIME SPECIFICATIONS
|
|
A \fItimespec\fR can be given in one the following two forms:
|
|
.TP
|
|
[[\fIhours\fB:\fR]\fIminutes\fB:\fR]\fIseconds\fR[\fB.\fIfrac\fR][\fBt\fR]
|
|
For example, a time specification of `1:30.5' corresponds to
|
|
one minute, thirty and \(12 seconds.
|
|
The component values do not have to be normalized; e.g.
|
|
`1:23:45', `83:45', `79:0285', `1:0:1425', `1::1425' and `5025'
|
|
are all equivalent.
|
|
.TP
|
|
\fIsamples\fBs\fR
|
|
Specifies the number of samples directly, as in `8000s'. For large sample
|
|
counts, \fIe notation\fR is supported: `1.7e6s' is the same as `1700000s'.
|
|
.PP
|
|
Time specifications can also be chained with \fB+\fR or \fB\-\fR into a new
|
|
time specification where the right part is added to or subtracted from the
|
|
total so far.
|
|
For example, `3:00\-200s' means two hundred samples less than three minutes.
|
|
.PP
|
|
If a \fItime specification\fR is a plain whole number with no \fBt\fP or \fBs\fR
|
|
suffix, whether it is taken as a number of seconds or a number of samples
|
|
depends on the effect in question. At present, it always means seconds
|
|
except for the \fIduration\fR parameters of the \fBsilence\fP effect.
|
|
.SH SUPPORTED EFFECTS
|
|
To see whether SoX has support for an optional effect, enter
|
|
.B sox_ng \-h
|
|
and look for its name in the \fBEFFECTS\fR list;
|
|
a categorized list of the effects can be found in the
|
|
accompanying README file.
|
|
.TP
|
|
\fBallpass\fR [\fB\-1\fR\^|\^\fB2\fR] \fIfrequency \fR[\fIwidth\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]
|
|
Apply a two-pole all-pass filter with central frequency \fIfrequency\fR
|
|
and filter width \fIwidth\fR.
|
|
An all-pass filter changes the
|
|
audio's frequency to phase relationship without changing its frequency
|
|
to amplitude relationship. The filter is described in detail in [1].
|
|
.SP
|
|
\fB-1\fR or \fB-2\fR use an experimental 1-pole or 2-pole filter,
|
|
in which case \fIwidth\fR does not apply.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBband\fR [\fB\-n\fR] \fIfrequency\fR [\fIwidth\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]
|
|
Apply a band-pass filter.
|
|
The frequency response drops logarithmically
|
|
around the center
|
|
.IR frequency .
|
|
The
|
|
.I width
|
|
parameter gives the slope of the drop:
|
|
the frequencies at
|
|
.I frequency
|
|
+
|
|
.I width
|
|
and
|
|
.I frequency
|
|
\-
|
|
.I width
|
|
will have half their original amplitudes.
|
|
Its default value is half of the center frequency.
|
|
.SP
|
|
.B band
|
|
defaults to a mode oriented to pitched audio,
|
|
i.e. voice, singing or instrumental music.
|
|
The \fB\-n\fR (for noise) option uses the alternate mode
|
|
for unpitched audio (e.g. percussion),
|
|
though
|
|
\fB\-n\fR introduces a power gain of about 11dB in the filter, so beware
|
|
of output clipping.
|
|
.B band
|
|
introduces noise in the shape of the filter,
|
|
peaking at the
|
|
center
|
|
frequency and settling around it.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.SP
|
|
See \fBsinc\fR for a band-pass filter with steeper shoulders.
|
|
.TP
|
|
\fBbandpass\fR\^|\^\fBbandreject\fR [\fB\-c\fR] \fIfrequency width\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR\^|\^\fBb\fR]
|
|
Apply a two-pole Butterworth band-pass or band-reject filter with
|
|
central frequency \fIfrequency\fR, and (3dB-point) bandwidth \fIwidth\fR.
|
|
The
|
|
.B \-c
|
|
option applies only to
|
|
.B bandpass
|
|
and selects a constant skirt gain (peak gain = Q) instead of the
|
|
default, a constant 0dB peak gain.
|
|
The filters roll off at 6dB per octave (20dB per decade)
|
|
and are described in detail in [1].
|
|
.SP
|
|
These effects support the \fB\-\-plot\fR global option.
|
|
.SP
|
|
See \fBsinc\fR for a band-pass filter with steeper shoulders.
|
|
.TP
|
|
\fBbass\fR\^|\^\fBtreble \fIgain\fR [\fIfrequency\fR [\fIwidth\fR[\fBs\fR\^|\^\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]]
|
|
Boost or cut the bass (lower) or treble (upper) frequencies of the audio
|
|
using a two-pole shelving filter with a response similar to that
|
|
of a standard hifi's tone controls. This is also
|
|
known as shelving equalization.
|
|
.SP
|
|
\fIgain\fR gives the gain at 0Hz for \fBbass\fR or, for \fBtreble\fR,
|
|
whichever is the lower of \(ap22kHz and the Nyquist frequency.
|
|
Its useful range is about \-20 (for a large cut) to +20 (for a large boost).
|
|
Beware of
|
|
.B Clipping
|
|
when using a positive \fIgain\fR.
|
|
.SP
|
|
The filter can be fine-tuned using the following optional parameters:
|
|
.SP
|
|
\fIfrequency\fR sets the filter's central frequency and so can be
|
|
used to extend or reduce the frequency range to be boosted or
|
|
cut.
|
|
The default values are 100Hz for \fBbass\fR and 3kHz for \fBtreble\fR.
|
|
.SP
|
|
\fIwidth\fR
|
|
determines how
|
|
steep the filter's shelf transition is. In addition to the common
|
|
width specification methods,
|
|
`slope' (the default) may be used.
|
|
Its useful range is
|
|
about 0\*d3 for a gentle slope to 1 (the maximum) for a steep slope;
|
|
and its default value is 0\*d5.
|
|
.SP
|
|
The filters are described in detail in [1].
|
|
.SP
|
|
These effects support the \fB\-\-plot\fR global option.
|
|
.SP
|
|
See \fBequalizer\fR for a peaking equalization effect.
|
|
.TP
|
|
\fBbend\fR [\fB\-f \fIframe-rate\fR(25)] [\fB\-o \fIoversampling\fR(16)]
|
|
{\fIstart-position(+)\fB,\fIcents\fB,\fIend-position(+)\fR}
|
|
.SP
|
|
Changes the pitch by specified amounts at specified times without changing
|
|
the duration.
|
|
Each given triple: \fIstart-position\fB,\fIcents\fB,\fIend-position\fR
|
|
specifies one bend.
|
|
\fIcents\fR is the number of cents (100 cents = 1 semitone) by which to
|
|
bend the pitch. The other values specify the points in time at which to start
|
|
and end bending the pitch.
|
|
During each bend, the frequency changes logarithmically,
|
|
i.e. by the same number of cents per second.
|
|
.SP
|
|
The pitch bending algorithm uses the Discrete Fourier Transform (DFT)
|
|
at a particular frame rate and oversampling rate.
|
|
The
|
|
.B \-f
|
|
(from 10 to 80)
|
|
and
|
|
.B \-o
|
|
(from 4 to 32)
|
|
parameters may be used to adjust these parameters and thus control the
|
|
smoothness of the changes in pitch.
|
|
.SP
|
|
For example, an initial tone is generated, then bent three times, yielding
|
|
four different notes in total:
|
|
.XE
|
|
.ne 2
|
|
play_ng \-n synth 2.5 sin 667 gain 1 \e
|
|
bend .35,180,.25 .15,740,.53 0,\-520,.3
|
|
.XX
|
|
Here, the first \fBbend\fR runs from 0.35 to 0.6 seconds and the second one from 0.75
|
|
to 1.28 seconds.
|
|
Note that the clipping that is produced in this example is deliberate;
|
|
to remove it, use
|
|
.B gain\ \-5
|
|
in place of
|
|
.BR gain\ 1 .
|
|
.SP
|
|
See \fBpitch\fR.
|
|
.TP
|
|
\fBbiquad \fIb0 b1 b2 a0 a1 a2\fR
|
|
Apply a biquad Infinite Impulse Response filter
|
|
with the given coefficients, where \fIb*\fR and \fIa*\fR are
|
|
the numerator and denominator coefficients respectively.
|
|
.SP
|
|
See http://en.wikipedia.org/wiki/Digital_biquad_filter (where a0 = 1).
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBcentercut \fR[\fB\-a\ \fIgain\fR] [\fB\-b\fR] [\fB\-w \fIsize\fR]
|
|
Remove the center from a stereo file leaving the far left and right parts of
|
|
the stereo file intact and the center in a third channel.
|
|
.SP
|
|
The \fB\-a\fR option is \fIgain-out\fR for all channels, default 1\*d0..
|
|
.SP
|
|
The \fB\-b\fR option moves the bass (below 200Hz) out of the center
|
|
into the sides for those who want karaoke.
|
|
.SP
|
|
The \fB\-w\fR option changes the window size from its default of 8192
|
|
sample frames to a power of two from 4 to 32768.
|
|
.SP
|
|
A stereo equivalent of the \fBoops\fR effect is
|
|
.XE
|
|
sox_ng in.wav centercut remix 1 2
|
|
.XX
|
|
.SP
|
|
The keymap for the \fB\-a\fR option is \fBcentercut.gain\fR.
|
|
.SP
|
|
See also \fBoops\fR.
|
|
.TP
|
|
\fBchannels \fIchannels\fR
|
|
Invoke a simple algorithm to change the number of channels in
|
|
the audio signal to the given number:
|
|
mixing if decreasing the number of channels or duplicating if
|
|
increasing the number of channels.
|
|
.SP
|
|
The
|
|
.B channels
|
|
effect is invoked automatically if SoX's \fB\-c\fR option specifies a
|
|
number of channels that is different to that of the input file(s).
|
|
Alternatively, if this effect is given explicitly, SoX's
|
|
.B \-c
|
|
option need not be given. For example, the following two commands are
|
|
equivalent:
|
|
.XE
|
|
.ne 2
|
|
sox_ng input.wav \-c 1 output.wav bass \-b 24
|
|
sox_ng input.wav output.wav bass \-b 24 channels 1
|
|
.XX
|
|
though the second form is more flexible as it allows the effects to
|
|
be ordered arbitrarily.
|
|
.SP
|
|
For example, when making a stereo file quadraphonic,
|
|
the left and right channels are copied into the third and fourth and
|
|
when mixing a four-channel file down to stereo, the left channel is
|
|
the mix of the first and third and the right of the second and fourth.
|
|
.SP
|
|
See
|
|
.B remix
|
|
for an effect that allows channels to be mixed and selected arbitrarily.
|
|
.TP
|
|
\fBchorus [\fB\-n\fR\^|\^\fBl\fR\^|\^\fBq\fR] [\fB\-s\fR\^|\^\fBt\fR] [\fIgain-in [gain-out\fR {\fIdelay [decay [speed [depth [\fB\-s\fR\^|\^\fBt\fR]]]]}]]
|
|
Add a chorus effect to the audio. This can make a single voice sound
|
|
like a chorus but can also be applied to instrumentation.
|
|
.SP
|
|
Chorus resembles an \fBecho\fR effect with a short delay but,
|
|
while \fBecho\fR's delay is constant, \fBchorus\fR' delay
|
|
varies by a sinusoidal or triangular modulation.
|
|
.SP
|
|
See [3] for further discussion of the chorus effect.
|
|
.SP
|
|
The \fB\-l\fR flag makes \fBchorus\fR do linear interpolation between samples
|
|
when the offset into the delay line is not a whole number,
|
|
which is about 15% slower but makes it considerably less noisy and
|
|
\fB\-q\fR asks for quadratic interpolation which is
|
|
about 40% slower but makes it even less noisy.
|
|
\fB\-n\fR explicitly asks for no interpolation, the default, fast and fuzzy.
|
|
.SP
|
|
\fB\-s\fR or \fB\-t\fR before the stages change the default wave type
|
|
for all of them.
|
|
.SP
|
|
All parameters are all optional and, if missing, assume the following values:
|
|
.SP
|
|
.TS
|
|
lb lb lb lb
|
|
l c c le.
|
|
Parameter Range Default Description
|
|
gain-in -1-1 0.5 T{
|
|
Proportion of input
|
|
.br
|
|
delivered clean to the adder
|
|
T}
|
|
gain-out -1-1 1 Final volume adjustment
|
|
delay 0-1000 40-60 Fixed delay in milliseconds
|
|
decay -1-1 0.5 Volume of delayed output
|
|
speed 0-192k 0.25 Modulation frequency
|
|
depth 0-1000 2 Extra delay in milliseconds
|
|
wave -s\^|\^-t -s Sinusoidal/triangular modulation
|
|
.TE
|
|
.SP
|
|
There are keymaps for \fBgain_in\fR and \fBgain_out\fR.
|
|
.SP
|
|
Each delay ranges from the fixed \fIdelay\fR to \fIdelay\fR\ \(pl\ \fIdepth\fR.
|
|
.SP
|
|
\fIGain-out\fR is then applied to the sum of the input scaled by \fIgain-in\fP
|
|
and the outputs from the delays scaled by their \fIdecay\fRs.
|
|
.SP
|
|
For internal reasons regarding the speed of \fBchorus\fR,
|
|
there is a limit of 256 chorus stages.
|
|
.SP
|
|
A typical delay is around 40ms to 60ms; the modulation speed is best
|
|
near 0\*d25Hz and the modulation depth around 2ms.
|
|
For example, a single delay:
|
|
.XE
|
|
play_ng guitar1.wav chorus 0.7 0.9 55 0.4 0.25 2 \-t
|
|
.XX
|
|
Two delays of the original samples:
|
|
.XE
|
|
.ne 2
|
|
play_ng guitar1.wav chorus 0.6 0.9 50 0.4 0.25 2 \-t \e
|
|
60 0.32 0.4 1.3 \-s
|
|
.XX
|
|
A fuller-sounding chorus (with three additional delays):
|
|
.XE
|
|
.ne 2
|
|
play_ng guitar1.wav chorus 0.5 0.9 50 0.4 0.25 2 \-t \e
|
|
60 0.32 0.4 2.3 \-t 40 0.3 0.3 1.3 \-s
|
|
.XX
|
|
\fBflanger\fR can do everything that \fBchorus\fR does except multiple stages
|
|
but works in floating point internally instead of integers so is slower
|
|
without a floating point processor:
|
|
.XE
|
|
chorus -l gain-in gain-out delay decay speed depth -wave
|
|
.XX
|
|
is equivalent to
|
|
.XE
|
|
flanger delay depth 0 100\(mudecay\(digain-in speed wave 0 \e
|
|
vol gain-out\(di(gain-in\(pldecay)
|
|
.XX
|
|
For a flow diagram of how \fBchorus\fR works,
|
|
say \fBsox_ng \-h chorus\fR.
|
|
.TP
|
|
\fBcompand \fIattack1\fB,\fIdecay1\fR{\fB,\fIattack\fB,\fIdecay\fR}
|
|
[\fIsoft-knee-dB\fB:\fR]\fIin-dB1\fR[\fB,\fIout-dB1\fR]{\fB,\fIin-dB\fB,\fIout-dB\fR}
|
|
.br
|
|
[\fIgain\fR [\fIinitial-volume-dB\fR [\fIdelay\fR]]]
|
|
.SP
|
|
Compand (compress or expand) the dynamic range of the audio.
|
|
.SP
|
|
The
|
|
.I attack
|
|
and
|
|
.I decay
|
|
parameters (in seconds) determine the time over which the
|
|
instantaneous level of the input signal is averaged to determine its
|
|
volume; attacks refer to increases in volume and decays refer to
|
|
decreases.
|
|
For most situations, the attack time (its response to the music getting
|
|
louder) should be shorter than the decay time because the human ear is more
|
|
sensitive to sudden loud music than sudden soft music.
|
|
When more than one pair of attack/decay parameters is specified,
|
|
each input channel is companded separately and the number of
|
|
pairs must agree with the number of input channels.
|
|
Typical values are 0\*d3,0\*d8 seconds.
|
|
.SP
|
|
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. If
|
|
omitted, the value of
|
|
.I out-dB1
|
|
defaults to the same value as
|
|
.IR in-dB1 ;
|
|
levels below
|
|
.I in-dB1
|
|
are not companded but may have gain applied to them.
|
|
The point `0,0' is assumed but may be overridden by
|
|
`0,\fIout-dBn\fR'.
|
|
If the list is preceded by a
|
|
.I soft-knee-dB
|
|
value, then the points at where adjacent line segments on the
|
|
transfer function meet are rounded by the amount given.
|
|
Typical values for the transfer function are `6:\-70,\-60,\-20'.
|
|
.SP
|
|
The third (optional) parameter is an additional gain in dB to be applied
|
|
at all points on the transfer function and allows easy adjustment
|
|
of the overall gain.
|
|
.SP
|
|
The fourth (optional) parameter is an initial level to be assumed for
|
|
each channel when companding starts. This lets you 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 operate: it is quite probable that in such an event, the output would
|
|
be severely clipped while the compander gain adjusts itself.
|
|
A typical value (for audio which is initially quiet) is
|
|
.B \-90
|
|
dB.
|
|
.SP
|
|
The fifth (optional) parameter is a delay in seconds. The input signal
|
|
is analyzed immediately to control the compander, 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
|
|
operate in a predictive rather than a reactive mode.
|
|
A typical value is 0\*d2 seconds.
|
|
.SP
|
|
.TS
|
|
center;
|
|
c8 c8 c.
|
|
* * *
|
|
.TE
|
|
.SP
|
|
The following example might be used to make a piece of music with both
|
|
quiet and loud passages suitable for listening to in a noisy environment
|
|
such as a moving vehicle:
|
|
.XE
|
|
sox_ng asz.wav asz-car.wav compand 0.3,1 6:\-70,\-60,\-20 \-5 \-90 0.2
|
|
.XX
|
|
The transfer function (`6:\-70,...') says that very soft sounds (below
|
|
\-70dB) remain unchanged. This stops the compander from
|
|
boosting the volume on `silent' passages such as between movements.
|
|
However, sounds in the range \-60dB to 0dB (maximum
|
|
volume) are boosted so that the 60dB dynamic range of the
|
|
original music is compressed 3-to-1 into a 20dB range, which is
|
|
wide enough to enjoy the music but narrow enough to get around the
|
|
road noise. The `6:' selects 6dB soft-knee companding.
|
|
The \-5\ dB output gain is needed to avoid clipping (the number is
|
|
inexact and was derived by experimentation).
|
|
The \-90\ dB for the initial volume will work fine for a clip that starts
|
|
with near silence and the delay of 0\*d2 seconds makes
|
|
the compander react more quickly to sudden volume changes.
|
|
.SP
|
|
In the next example, \fBcompand\fR is used as a noise-gate for when the
|
|
noise is at a lower level than the signal:
|
|
.XE
|
|
play_ng in.au compand .1,.2 \-inf,\-50.1,\-inf,\-50,\-50 0 \-90 .1
|
|
.XX
|
|
Here is another noise-gate, this time for when the
|
|
noise is at a higher level than the signal (making it, in some ways,
|
|
similar to a squelch effect):
|
|
.XE
|
|
play_ng in.au compand .1,.1 \-45.1,\-45,\-inf,0,\-inf 45 \-90 .1
|
|
.XX
|
|
This effect supports the \fB\-\-plot\fR global option (for the transfer function).
|
|
.SP
|
|
For a flow diagram of how \fBcompand\fR works,
|
|
say \fBsox_ng \-h compand\fR.
|
|
.SP
|
|
See
|
|
.B mcompand
|
|
for a multiple-band companding effect.
|
|
.TP
|
|
\fBcontrast \fR[\fIamount\fR(75)]
|
|
Comparable with compression, this effect modifies an audio signal to
|
|
make it sound louder.
|
|
.I amount
|
|
controls the amount of the enhancement and is a number in the range 0\-100.
|
|
Note that
|
|
.I amount
|
|
= 0 still gives a significant contrast enhancement.
|
|
.SP
|
|
There is a keymap for \fIamount\fR.
|
|
.SP
|
|
See the
|
|
.B compand
|
|
and
|
|
.B mcompand
|
|
effects.
|
|
.TP
|
|
\fBdcshift \fIshift\fR [\fIlimiter\-gain\fR]
|
|
Apply a DC shift to the audio. This can be useful to remove a known DC
|
|
offset (caused perhaps by a hardware problem in the recording chain)
|
|
from the audio. The effect of a DC offset is reduced headroom and
|
|
hence volume.
|
|
The
|
|
.B stat
|
|
or
|
|
.B stats
|
|
effect can be used to determine if a signal has a DC offset.
|
|
.SP
|
|
The given \fIdcshift\fR value is a floating point number in the range
|
|
of \(+-2 that indicates the amount to shift the audio (which is in the
|
|
range of \(+-1).
|
|
.SP
|
|
An optional
|
|
.I limiter\-gain
|
|
can be specified as well. It should have a value much less than 1
|
|
(e.g. 0\*d05 or 0\*d02) and is used only on peaks to prevent clipping.
|
|
.SP
|
|
An alternative approach to removing a DC offset (albeit with a short delay)
|
|
is to use the
|
|
.B highpass
|
|
filter effect at a frequency of say 10Hz, as illustrated in the following
|
|
example:
|
|
.XE
|
|
sox_ng \-n dc.wav synth 5 sin %0 50
|
|
sox_ng dc.wav fixed.wav highpass 10
|
|
.XX
|
|
.TP
|
|
\fBdeemph\fR
|
|
Apply Compact Disc (IEC 60908) de-emphasis with a treble attenuation shelving
|
|
filter.
|
|
.SP
|
|
Pre-emphasis was applied in the mastering of some CDs issued in the early
|
|
1980s. These included many classical music albums, as well as now
|
|
sought-after issues of albums by The Beatles, Pink Floyd and others.
|
|
Pre-emphasis should be removed at playback time by a de-emphasis
|
|
filter in the playback device. However, not all modern CD players have
|
|
this filter and very few PC CD drives have it; playing pre-emphasized
|
|
audio without the correct de-emphasis filter results in audio that sounds harsh
|
|
and is far from what its creators intended.
|
|
.SP
|
|
With the
|
|
.B deemph
|
|
effect, it is possible to apply the necessary de-emphasis to audio that
|
|
has been extracted from a pre-emphasized CD and then either burn the
|
|
de-emphasized audio to a new CD (which will then play correctly on any
|
|
CD player) or simply play the correctly de-emphasized audio files on the
|
|
PC. For example:
|
|
.XE
|
|
sox_ng track1.wav track1\-deemph.wav deemph
|
|
.XX
|
|
and then burn track1-deemph.wav to CD, or
|
|
.XE
|
|
play_ng track1\-deemph.wav
|
|
.XX
|
|
or simply
|
|
.XE
|
|
play_ng track1.wav deemph
|
|
.XX
|
|
The de-emphasis filter is implemented as a biquad and requires the input
|
|
audio sample rate to be either 44.1kHz or 48kHz. Its maximum deviation
|
|
from the ideal response is only 0\*d06dB (up to 20kHz).
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBdelay\fR {\fIposition(=)\fR}
|
|
Delay zero or more audio channels such that they start at the given
|
|
\fIposition\fR.
|
|
.SP
|
|
For example,
|
|
.B delay 1\*d5 +1 3000s
|
|
delays the first channel by 1\*d5 seconds, the second channel by 2\*d5
|
|
seconds (one second more than the previous channel), the third channel
|
|
by 3000 samples and leaves other channels undelayed.
|
|
The following (one long) command plays a chime sound:
|
|
.XE
|
|
.ne 3
|
|
play_ng \-n synth \-j 3 sin %3 sin %\-2 sin %\-5 sin %\-9 \e
|
|
sin %\-14 sin %\-21 fade h .01 2 1.5 delay \e
|
|
1.3 1 .76 .54 .27 remix \- fade h 0 2.7 2.5 norm \-1
|
|
.XX
|
|
and this an arpeggiated guitar chord:
|
|
.XE
|
|
.ne 2
|
|
play_ng \-n synth pl G2 pl B2 pl D3 pl G3 pl D4 pl G4 \e
|
|
delay 0 .05 .1 .15 .2 .25 remix \- fade 0 4 .1 norm \-1
|
|
.XX
|
|
With no parameters it does nothing.
|
|
To delay all channels by the same amount, use the \fBpad\fP effect.
|
|
.TP
|
|
\fBdither\fR [\fB\-S\fR\^|\^\fB\-s\fR\^|\^\fB\-f \fIfilter\fR] [\fB\-a\fR] [\fB\-p \fIprecision\fR]
|
|
Apply dithering to the audio.
|
|
Dithering deliberately adds a small amount of noise to the signal in
|
|
order to mask audible quantization effects that can occur if the output
|
|
sample size is less than 24 bits. With no options, this effect
|
|
adds TPDF white noise.
|
|
.SP
|
|
The
|
|
.B \-S
|
|
option selects a slightly `sloped' TPDF, biased towards higher
|
|
frequencies. It can be used at any sampling rate but, below \(~~22kHz,
|
|
plain TPDF is probably better and, above \(~~ 37kHz, noise-shaping
|
|
(if available) is probably better.
|
|
.SP
|
|
The \fB\-s\fR option enables noise-shaping with the \fBshibata\fR filter
|
|
(the same as \fB\-f\ shibata\fR)
|
|
and with the
|
|
.B \-f
|
|
option it is possible to select a particular noise-shaping filter from
|
|
the following list:
|
|
.nh
|
|
\fBlipshitz\fR, \fBf-weighted\fR, \fBmodified-e-weighted\fR,
|
|
\fBimproved-e-weighted\fR, \fBgesemann\fR, \fBshibata\fR, \fBlow-shibata\fR,
|
|
\fBhigh-shibata\fR, \fBshibata-\fR(\fBA\fR\^|\^\fBB\fR)(\fB0\fR\^|\^\fB1\fR\^|\^\fB2\fR\^|\^\fB3\fR\^|\^\fB4\fR\^|\^\fB5\fR\^|\^\fB6\fR) and \fBshibata-A-saturated\fR.
|
|
.hy
|
|
The latter \fBshibata-\fR ones use the new shaper coefficients
|
|
from Naoki Shibata's \fBSSRC\fR package, described at https://shibatch.org/ssrc
|
|
.SP
|
|
The filter types are distinguished by the following properties:
|
|
audibility of noise, level of (inaudible, but in some circumstances
|
|
problematic) shaped high frequency noise and processing speed
|
|
and they are available for the following sample rates:
|
|
.SP
|
|
.ne 8
|
|
.TS
|
|
center;
|
|
lI lI
|
|
l l.
|
|
Filter Sample rates
|
|
lipshitz 44100
|
|
e- and f-weighted 48000
|
|
gesemann 44100, 48000
|
|
shibata 8000, 11025, 16000, 22050
|
|
\ 32000, 37800, 44100, 48000
|
|
low-shibata 44100, 48000
|
|
high-shibata 44100
|
|
shibaba-A0 and A1 8000, 11025, 22050, 44100,
|
|
\ 48000, 88200, 96000, 192000
|
|
shibata-A2 44100, 48000, 88200, 96000, 192000
|
|
shibata-A3 to A6 44100, 48000
|
|
shibata-B0 to B6 44100, 48000
|
|
shibata-A-saturated 8000, 11025, 22050
|
|
.TE
|
|
.SP
|
|
The
|
|
.B \-a
|
|
option enables a mode where dithering (and noise-shaping if applicable)
|
|
are automatically enabled only when needed. The most likely use for
|
|
this is when applying fade in or out to an already dithered file, so
|
|
that the redithering applies only to the faded portions. However, auto
|
|
dithering is not foolproof, so the fades should be checked carefully
|
|
for any noise modulation; if this occurs, then either redither the whole
|
|
file or use \fBtrim\fP and \fBfade\fR and concatenate the results.
|
|
.SP
|
|
The
|
|
.B \-p
|
|
option overrides the target precision in bits and can be from 1 to 24.
|
|
.SP
|
|
If the SoX global option
|
|
.B \-R
|
|
option is not given, the pseudo-random number generator used to
|
|
generate the white noise is reseeded, i.e. the generated noise
|
|
will be different on every invocation.
|
|
.SP
|
|
If the target precision is 1-bit, the \fBsdm\fR effect is applied
|
|
automatically with default settings. Invoke it manually to control its
|
|
options.
|
|
.SP
|
|
See the above section on \fBDithering\fR.
|
|
.TP
|
|
\fBdolbyb\fR [\fB\-e\fR\^|\^\fBd\fR] [\fB\-u\ \fIupsamp\fR] [\fB\-h\fR] [\fB\-t\ \fIgain\fR(1.0)] [\fB\-a\ prec\fR(-5.0)] [\fB\-f\ \fR{\fB1\fR\^|\^\fB2\fR\^|\^\fB3\fR\^|\^\fB4\fR}]
|
|
\fBdolbyb\fR is a Dolby B decoder/encoder based on dolbybcsoftwaredecode
|
|
which simulates the operation of a Dolby\ B en/decoder's electronic circuit.
|
|
.SP
|
|
By default, \fBdolbyb\fR applies Dolby\ B decoding to its input signal;
|
|
with \fB\-e\fR it does Dolby\ B encoding. \fB\-d\fR is also accepted
|
|
but only for symmetry, as it is the default mode of operation.
|
|
.SP
|
|
\fB\-u\fR sets the upsampling ratio to use in the sliding filter.
|
|
Digital filtering only works well if the sample rate is well above
|
|
the cutoff frequency of the filter. For Dolby\ B's sliding filter,
|
|
that frequency can be as high as 34kHz and this does not work well
|
|
if the sample rate is only 44.1Khz. To get around this, it upsamples
|
|
the audio to a higher rate when it passes through this filter.
|
|
By default, \fB\-u0\fR, the upsampling rate is set automatically
|
|
so that the upper sample rate is at least 200Khz;
|
|
upsampling can be switched off with \fB\-u1\fR.
|
|
.SP
|
|
If \fB\-h\fR is given, upsampling is used throughout the effect
|
|
from when the audio enters to when it leaves, not just in the sliding filter.
|
|
As \fBdolbyb\fR's up/downsampling algorithm is simple
|
|
(repeating and averaging samples) you may obtain higher quality results
|
|
by upsampling with \fBrate\fR before \fBdolbyb\ \-u1\fR and
|
|
downsampling it afterwards.
|
|
.SP
|
|
\fB\-t\fR ("threshold") adjusts the gain when the audio is fed
|
|
to the Dolby gain control circuits.
|
|
When a tape deck is encoding or decoding a magnetic tape,
|
|
it knows the signal level at the tape heads but with audio files
|
|
the maximum signal level may not accurately represent the tape's
|
|
maximum flux density (200nWb/m for cassette tapes), giving erroneous results.
|
|
The \fB\-t\fR option adjusts the volume level at which
|
|
the sliding filter reacts to overcome this.
|
|
Its default value is 1.0, which assumes that the maximum amplitude
|
|
of the signal represents the maximum recording level on tape;
|
|
higher values assume that it was recorded too quietly and values
|
|
below 1.0 are for when it was recorded too loud.
|
|
.SP
|
|
To begin with, when you have little idea of what level to use,
|
|
try a wide range of levels like 5, 10, 15 and 20.
|
|
If the result sounds muffled, the threshold is too low and
|
|
if it seems to have too much treble, the threshold is too high.
|
|
Once you know the approximate level, you can try more closely-spaced levels
|
|
and listen carefully to find the best level possible.
|
|
Logic would suggest listening to where tracks fade out, to see if
|
|
the treble increases, but this method doesn't seem to work well
|
|
and the best way seems to be to see how low the level can be set
|
|
before the results sound dull and muffled, then choose a level
|
|
a bit higher than this; you can just about hear the difference
|
|
between results that differ in threshold setting by about 2.
|
|
.SP
|
|
In decode mode, the program has to use trial and error to get the
|
|
right output sample values. \fB\-a\fR sets how accurate it
|
|
needs to be before it is considered OK. A figure of 0.0\ dB would
|
|
mean an accuracy of about 1 sample value. The default is -5.0\ dB,
|
|
which is accurate to less than one sample value.
|
|
.SP
|
|
The keymap for \fIgain\fR is \fRdolbyb.gain\fB. For example:
|
|
.XE
|
|
play_ng -V -k D:dolbyb.gain+2 -k d:dolbyb.gain-2 in.wav
|
|
.XX
|
|
lets you adjust the Threshold Gain in \(pl/\(mi 2dB steps;
|
|
to see what the new value is as you proceed, use `\-V`.
|
|
.SP
|
|
\fB\-f\fR selects one of four types of filter to use.
|
|
The program originally simulated an analog circuit for a Dolby\ B
|
|
noise reducer. However, too much filtering in the side path was
|
|
altering the phase of the side path audio, which caused problems
|
|
when the side path was recombined with the main signal. Basically
|
|
signals don't add together very well if there is too much difference
|
|
in the phase.
|
|
To fix this, there are now 4 filter modes with hopefully less of a
|
|
phase change:
|
|
.RS
|
|
.TP
|
|
.B \-f1
|
|
is the original method.
|
|
.TP
|
|
.B \-f2
|
|
is a newer method that seems to work better than 1.
|
|
.TP
|
|
.B \-f3
|
|
is another rearrangement which in practice doesn't seem to
|
|
be any better than 1.
|
|
.TP
|
|
.B \-f4
|
|
seems to work best, hence it is the default mode.
|
|
.PP
|
|
For further detail on these parameters and advice on
|
|
digitizing and processing Dolby\ B-encoded tapes, consult
|
|
the wiki pages at https://codeberg.org/sox_ng/libdolbyb
|
|
.RE
|
|
.TP
|
|
\fBdop\fR
|
|
DSD over PCM. 1-bit DSD data is packed into 24-bit samples for
|
|
transport over non-DSD-aware links.
|
|
.TP
|
|
\fBdownsample\fR [\fIfactor\fR(2)]
|
|
Downsample the signal by an integer factor: Only the first of
|
|
each \fIfactor\fR samples is retained, the others are discarded.
|
|
.SP
|
|
No decimation filter is applied. If the input is not a properly
|
|
band-limited baseband signal, aliasing will occur. This may be
|
|
desirable, e.g., for frequency translation.
|
|
.SP
|
|
The new lower sample rate propagates forward in the effects chain but,
|
|
unless you specify the new sample rate with \fB\-r\fP before the output filename
|
|
or with a final (no-op) \fBrate\fR effect, it will be resampled back up to the
|
|
original sample rate.
|
|
.SP
|
|
For a general resampling effect with antialiasing, see \fBrate\fR.
|
|
See \fBupsample\fR.
|
|
.TP
|
|
\fBearwax\fR
|
|
This effect takes a 44.1kHz stereo signal and adds audio cues that,
|
|
when listened to on headphones, move the sound stage from inside your head
|
|
to outside and in front of you, as if listening to loudspeakers.
|
|
.SP
|
|
To see how \fBearwax\fR works, say \fBsox_ng \-h earwax\fR.
|
|
.TP
|
|
\fBecho \fIgain-in gain-out\fR <\fIdelay decay\fR>
|
|
Add echoes to the audio.
|
|
In nature, echoes are reflected sound and digital echo
|
|
effects emulate this and are often used to help fill
|
|
out the sound of a single instrument or vocal.
|
|
.SP
|
|
\fIGain-in\fR controls how much of the input signal is delivered clean
|
|
to the output,
|
|
\fIdelay\fR is the time difference in milliseconds
|
|
between the original signal and its reflection,
|
|
\fIdecay\fR is the loudness of the reflected signal and
|
|
\fIgain-out\fR is a final volume adjustment of the result.
|
|
.SP
|
|
There are keymaps for \fIgain_in\fR and \fIgain_out\fR.
|
|
.SP
|
|
There is no limit to the number of delay/decay pairs you can use
|
|
and gains and decays can be negative or greater than 1 if you wish.
|
|
.SP
|
|
\fBecho\fP extends the length of the signal by the maximum delay time.
|
|
.SP
|
|
For example,
|
|
this makes it sound as if there are twice as many instruments as are
|
|
actually playing:
|
|
.XE
|
|
play_ng lead.aiff echo 0.8 0.88 60 0.4
|
|
.XX
|
|
If the delay is very short, it sound like a metallic robot:
|
|
music:
|
|
.XE
|
|
play_ng lead.aiff echo 0.8 0.88 6 0.4
|
|
.XX
|
|
A longer delay sounds like an open air concert in the mountains:
|
|
.XE
|
|
play_ng lead.aiff echo 0.8 0.9 1000 0.3
|
|
.XX
|
|
One mountain more, and:
|
|
.XE
|
|
play_ng lead.aiff echo 0.8 0.9 1000 0.3 1800 0.25
|
|
.XX
|
|
For a flow diagram of how \fBecho\fR works,
|
|
say \fBsox_ng \-h echo\fR.
|
|
.TP
|
|
\fBechos \fIgain-in gain-out\fR <\fIdelay decay\fR>
|
|
.SP
|
|
Echos stands for `Echo in Sequel' and adds a sequence of echoes to the audio.
|
|
That is, the first echo takes the input,
|
|
the second the input and the first echo,
|
|
the third the input and the output of the second echo and so on.
|
|
A single \fBechos\fR has the same effect as a single \fBecho\fR.
|
|
Each
|
|
.I "delay decay"
|
|
pair gives the delay in milliseconds (with a minimum of one sample)
|
|
and the decay of that echo.
|
|
\fIGain-out\fR is a final volume multiplier applied to the sum of
|
|
the input\ \(mu\ \fIgain-in\fR and the delays' outputs\ \(mu
|
|
their respective decays, and there are keymaps for both.
|
|
.SP
|
|
There are keymaps for \fIgain_in\fR and \fIgain_out\fR.
|
|
.SP
|
|
\fBechos\fP extends the length of the signal by the maximum delay time.
|
|
.SP
|
|
For example:
|
|
.SP
|
|
The sample is bounced twice in symmetric echos:
|
|
.XE
|
|
play_ng lead.aiff echos 0.8 0.7 700 0.25 700 0.3
|
|
.XX
|
|
The sample is bounced twice in asymmetric echos:
|
|
.XE
|
|
play_ng lead.aiff echos 0.8 0.7 700 0.25 900 0.3
|
|
.XX
|
|
The sample sounds as if it were played in a garage:
|
|
.XE
|
|
play_ng lead.aiff echos 0.8 0.7 40 0.25 63 0.3
|
|
.XX
|
|
For a flow diagram of how \fBechos\fR works,
|
|
say \fBsox_ng \-h echos\fR.
|
|
.TP
|
|
\fBequalizer \fIfrequency width\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR] \fIgain\fR
|
|
Apply a two-pole peaking equalization filter.
|
|
With this filter, the signal level at and around a selected frequency
|
|
can be increased or decreased while, unlike band-pass and band-reject
|
|
filters, the level at all other frequencies is unchanged.
|
|
.SP
|
|
\fIfrequency\fR gives the filter's central frequency in Hz,
|
|
\fIwidth\fR gives its bandwidth
|
|
and \fIgain\fR the required gain
|
|
or attenuation in dB.
|
|
Beware of
|
|
.B Clipping
|
|
when using a positive \fIgain\fR.
|
|
.SP
|
|
In order to produce complex equalization curves, this effect
|
|
can be given several times, each with a different central frequency.
|
|
.SP
|
|
The filter is described in detail in [1].
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBfade\fR [\fItype\fR] \fIfade-in-length\fR [\fIstop-position(=)\fR [\fIfade-out-length\fR]]
|
|
Apply a fade effect to the beginning, end, or both of the audio.
|
|
.SP
|
|
An optional \fItype\fR can be specified to select the shape of the fade
|
|
curve:
|
|
\fBq\fR for quarter of a sine wave, \fBh\fR for half a sine
|
|
wave, \fBt\fR for linear (`triangular') slope, \fBl\fR for logarithmic,
|
|
\fBp\fR for inverted parabola and \fBs\fR for square-law.
|
|
The default is logarithmic.
|
|
.SP
|
|
A fade-in starts from the first sample and ramps the signal level from 0
|
|
to full volume over the time given as \fIfade-in-length\fR. Specify 0 if
|
|
no fade-in is wanted.
|
|
.SP
|
|
For a fade-out, the audio is truncated at
|
|
.I stop-position
|
|
and the signal level is ramped from full volume down to 0 over an
|
|
interval of \fIfade-out-length\fR before the \fIstop-position\fR. If
|
|
.I fade-out-length
|
|
is not specified, it defaults to the same value as
|
|
\fIfade-in-length\fR.
|
|
No fade-out is performed if
|
|
.I stop-position
|
|
is not specified.
|
|
If the audio length can be determined from the input file header and any
|
|
previous effects, then `\-0' (or, for historical reasons, `0') may
|
|
be specified for
|
|
.I stop-position
|
|
to indicate the usual case of a fade out that ends at the end of the input
|
|
audio stream.
|
|
.SP
|
|
See the
|
|
.B splice
|
|
effect.
|
|
.TP
|
|
\fBfir\fR [\fIcoefs-file\fR\^|\^\fIcoef\fR <\fIcoef\fR>]
|
|
Use SoX's FFT convolution engine with given Finite Impulse Response filter
|
|
coefficients.
|
|
If a single argument is given, it is the name of a file
|
|
containing the filter coefficients (white space separated; may contain
|
|
`#' comments). If the filename is `\-' or if no argument is
|
|
given, the coefficients are read from the `standard input' (stdin);
|
|
otherwise, coefficients may be given on the command line.
|
|
Examples:
|
|
.XE
|
|
sox_ng in.au out.au fir .0195 \-.082 .234 .891 \-.145 .043
|
|
|
|
sox_ng in.au out.au fir coefs.txt
|
|
.XX
|
|
.ne 6
|
|
with \f(CWcoefs.txt\fR containing
|
|
.XE
|
|
# HP filter: freq=10000
|
|
1.2311233052619888e\-01
|
|
\-4.4777096106211783e\-01
|
|
5.1031563346705155e\-01
|
|
\-6.6502926320995331e\-02
|
|
.XX
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBfirfit\fR [\fIknots-file\fR\^|\^<\fIfreq gain\fR>]
|
|
Use SoX's FFT convolution engine to make a filter whose frequency response
|
|
approximates a spline passing through a series of frequency/gain pairs.
|
|
If a single argument is given, it is the name of a file
|
|
containing the knots (white space separated; may contain
|
|
`#' comments). If the given filename is `\-' or if no argument is
|
|
given, the knots are read from the `standard input' (stdin);
|
|
otherwise, knots may be given on the command line.
|
|
.SP
|
|
\fIGains\fR are in dB and the knot frequencies must be in increasing order.
|
|
.SP
|
|
Examples:
|
|
.XE
|
|
sox_ng in.au out.au firfit 20 0 10000 -3
|
|
.XX
|
|
gives a gentle low-pass filter and
|
|
.XE
|
|
sox_ng in.au out.au firfit knots.txt
|
|
.XX
|
|
with knots.txt containing
|
|
.XE
|
|
# Approximate telephone response
|
|
300 -100
|
|
400 -10
|
|
480 0
|
|
2800 0
|
|
3000 -10
|
|
3400 -100
|
|
.XX
|
|
approximates the response of a carbon microphone telephone.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBflanger\fR [\-n\^|\^l\^|\^q] [\-s\^|\^t] [\fIdelay\fR(0) [\fIdepth\fR(2) [\fIregen\fR(0) [\fIwidth\fR(71) [\fIspeed\fR(0\*d5) [\fIshape\fR(sine)] [\fIphase\fR(25) [\fIinterp\fR(linear)]]]]]]]
|
|
Apply a flanging effect to the audio.
|
|
See [3] for a detailed description of flanging.
|
|
.SP
|
|
The parameters give the base delay and the added swept delay in milliseconds,
|
|
the percentage of regeneration (the delayed signal feedback),
|
|
\fIwidth\fR the percentage of delayed signal that is mixed with the original,
|
|
\fIspeed\fR the number of sweeps per second,
|
|
the shape of the swept wave (\fBsine\fR or \fBtriangle\fR),
|
|
the percentage of phase shift of the swept wave in multichannel flanges
|
|
(0 = 100 = the same phase on each channel) and
|
|
the type of digital delay line interpolation
|
|
(\fBnone\fR, \fBlinear\fR or \fBquadratic\fR).
|
|
.SP
|
|
\fBsine\fR, \fBtriangle\fR, \fBnone\fR, \fBlinear\fR and \fBquadratic\fR can be abbreviated.
|
|
.SP
|
|
The input and the delay's output are mixed and balanced so they
|
|
don't clip, so a \fIwidth\fR of 100 gives 50:50 mixing; to obtain only
|
|
the delayed output and none of the input, specify \fIwidth\fR as \fBinf\fR.
|
|
.SP
|
|
Despite containing a delay, \fBflanger\fR does not extend the length
|
|
of the signal so, if you also want the last dregs of the delayed output
|
|
and feedback, \fBpad\fR the signal beforehand.
|
|
.SP
|
|
\fBsine\fR, \fBtriangle\fR, \fBnone\fR, \fBlinear\fR and \fBquadratic\fR can be abbreviated
|
|
and
|
|
.BR \-s ,
|
|
.BR \-t ,
|
|
.BR \-n ,
|
|
.B \-l
|
|
and
|
|
.B \-q
|
|
are alternative ways to set the waveshape and the interpolation type
|
|
without having to specify the rest of the parameters.
|
|
.SP
|
|
For a flow diagram of how \fBflanger\fR works,
|
|
say \fBsox_ng \-h flanger\fR.
|
|
.TP
|
|
\fBgain \fR[\fB\-e\fR\^|\^\fBB\fR\^|\^\fBb\fR\^|\^\fBr\fR] [\fB\-n\fR] [\fB\-l\fR\^|\^\fBh\fR] [\fIgain-dB\fR(0)]
|
|
Apply amplification or attenuation to the audio signal or, in some
|
|
cases, to some of its channels.
|
|
Note that use of any of
|
|
.BR \-e ,
|
|
.BR \-B ,
|
|
.BR \-b ,
|
|
.B \-r
|
|
and
|
|
.B \-n
|
|
requires temporary file space to store the audio to be processed, so may
|
|
be unsuitable for use with streamed audio.
|
|
.SP
|
|
Without other options,
|
|
.I gain-dB
|
|
adjusts the signal power level by the given number of dB:
|
|
positive amplifies (beware of clipping), negative attenuates.
|
|
With other options, the
|
|
.I gain-dB
|
|
amplification or attenuation is applied after the processing due to those options.
|
|
.SP
|
|
With the
|
|
.B \-e
|
|
option, the levels of the audio channels of a multichannel file are equalized,
|
|
i.e. gain is applied to all channels other than that with the highest peak
|
|
level so that all channels attain the same peak level
|
|
(but, without also giving
|
|
.BR \-n ,
|
|
the audio is not normalized).
|
|
.SP
|
|
The
|
|
.B \-B
|
|
(balance) option is similar to
|
|
.BR \-e ,
|
|
but with
|
|
.BR \-B,
|
|
the RMS level is used instead of the peak level.
|
|
.B \-B
|
|
might be used to correct stereo imbalance caused by an imperfect record
|
|
turntable cartridge.
|
|
Note that, unlike
|
|
.BR \-e ,
|
|
.B \-B
|
|
might cause some clipping.
|
|
.SP
|
|
.B \-b
|
|
is similar to
|
|
.B \-B
|
|
but has clipping protection, i.e. if necessary to prevent clipping
|
|
whilst balancing, attenuation is applied to all channels.
|
|
In conjunction with
|
|
.BR \-n ,
|
|
.B \-B
|
|
and
|
|
.B \-b
|
|
are synonymous.
|
|
.SP
|
|
The
|
|
.B \-r
|
|
option is used in conjunction with a prior invocation of
|
|
.B gain
|
|
with the
|
|
.B \-h
|
|
option\*msee below for details.
|
|
.SP
|
|
The
|
|
.B \-n
|
|
option normalizes the audio to 0dB FSD.
|
|
It is often used in conjunction with a negative
|
|
.I gain-dB
|
|
so that the audio is normalized to a given level below 0dB.
|
|
For example,
|
|
.XE
|
|
sox_ng in.au out.au gain \-n
|
|
.XX
|
|
normalizes to 0dB, and
|
|
.XE
|
|
sox_ng in.au out.au gain \-n \-3
|
|
.XX
|
|
normalizes to \-3dB.
|
|
.SP
|
|
The
|
|
.B \-l
|
|
option invokes a simple limiter. For example,
|
|
.XE
|
|
sox_ng in.au out.au gain \-l 6
|
|
.XX
|
|
applies 6dB of gain but never clips. Note that limiting more than a
|
|
few dBs more than occasionally in a piece of audio is not recommended
|
|
as it can cause audible distortion.
|
|
See the
|
|
.B compand
|
|
effect for a more capable limiter.
|
|
.SP
|
|
The
|
|
.B \-h
|
|
option is used to apply gain to provide headroom for subsequent
|
|
processing. For example, with
|
|
.XE
|
|
sox_ng in.au out.au gain \-h bass +6
|
|
.XX
|
|
6dB of attenuation is applied prior to the bass boosting effect,
|
|
ensuring that it does not clip. Of course, with \fBbass\fR, it is
|
|
obvious how much headroom is needed but, with other effects (e.g.
|
|
rate, dither), it is not always as clear. Another advantage of using
|
|
\fBgain \-h\fR rather than an explicit attenuation is that, if the
|
|
headroom is not used by subsequent effects, it can be reclaimed with
|
|
\fBgain \-r\fR, for example:
|
|
.XE
|
|
sox_ng in.au out.au gain \-h bass +6 rate 44100 gain \-r
|
|
.XX
|
|
The above effects chain guarantees never to clip nor amplify;
|
|
it attenuates if necessary to prevent clipping, but by only as
|
|
much as is needed to do so.
|
|
.SP
|
|
Output formatting (dithering and bit-depth reduction) also requires
|
|
headroom which cannot be reclaimed, e.g.
|
|
.XE
|
|
sox_ng in.au out.au gain \-h bass +6 rate 44100 gain \-rh dither
|
|
.XX
|
|
Here, the second
|
|
.B gain
|
|
invocation reclaims as much of the headroom as it can from the
|
|
preceding effects but retains as much headroom as is needed for
|
|
subsequent processing.
|
|
The SoX global option
|
|
.B \-G
|
|
can be given to automatically invoke \fBgain \-h\fR and \fBgain \-r\fR.
|
|
.SP
|
|
Note that \fBsynth\fR without the \fB\-n\fR option
|
|
incorporates the functionality of \fBgain\ -h\fR.
|
|
.SP
|
|
See the
|
|
.B norm
|
|
and
|
|
.B vol
|
|
effects.
|
|
.TP
|
|
\fBhighpass\fR [\fB\-1\fR\^|\^\fB2\fR] \fIfrequency\fR [\fRwidth\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR]]
|
|
Apply a high-pass filter with 3dB point \fIfrequency\fR.
|
|
The filter can be either single-pole (with
|
|
.BR \-1 ),
|
|
or double-pole (the default, or with
|
|
.BR \-2 ).
|
|
.I width
|
|
applies only to double-pole filters;
|
|
the default is Q = 0\*d707 and gives a Butterworth response. The filters
|
|
roll off at 6dB per pole per octave (20dB per pole per decade). The
|
|
double-pole filters are described in detail in [1].
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.SP
|
|
See \fBsinc\fR for filters with a steeper roll-off.
|
|
.TP
|
|
\fBhilbert\fR [\fB\-n \fItaps\fR]
|
|
Apply an odd-tap Hilbert transform filter, phase shifting the signal
|
|
by 90 degrees.
|
|
.SP
|
|
This is used in many matrix coding schemes and for analytic signal
|
|
generation. The process is often written as a multiplication by \fIi\fR
|
|
(or \fIj\fR), the imaginary unit.
|
|
.SP
|
|
An odd-tap Hilbert transform filter has a band-pass characteristic,
|
|
attenuating the lowest and highest frequencies. Its bandwidth can be
|
|
controlled by the number of filter taps which, by default, is chosen
|
|
for a cutoff frequency of about 75 Hz. For a cutoff frequency of about N Hz,
|
|
give the \fB\-n\fR option with the sample rate divided by N.
|
|
The number of taps can be from 3 to 1,073,741,823 but the maximum value
|
|
requires 56GB of physical RAM to complete within minutes rather than days
|
|
and 100,000,001 requires 18GB.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBladspa\fR [\fB\-l\fR] [\fB\-r\fR] \fImodule\fR [\fIplugin\fR] {\fIargument\fR}
|
|
Apply a LADSPA [5] (Linux Audio Developer's Simple Plugin API) plugin.
|
|
Despite the name, LADSPA is not Linux-specific and a wide range of
|
|
effects is available as LADSPA plugins, such as CMT [6] (the Computer
|
|
Music Toolkit) and Steve Harris's plugin collection [7]. The first
|
|
argument is the plugin module, the second the name of the plugin (a
|
|
module can contain more than one plugin) and any other arguments are
|
|
for the control ports of the plugin. Missing arguments are supplied by
|
|
default values if possible.
|
|
.SP
|
|
Normally, the number of input ports of the plugin must match the number
|
|
of input channels and the number of output ports determines the output
|
|
channel count. However, the
|
|
.B \-r
|
|
(replicate) option allows cloning a mono plugin to handle multichannel
|
|
input.
|
|
.SP
|
|
Some plugins introduce latency which SoX may optionally compensate for.
|
|
The
|
|
.B \-l
|
|
(latency compensation) option automatically compensates for latency
|
|
as reported by the plugin via an output control port named "latency".
|
|
.SP
|
|
If it is set, the environment variable \fBLADSPA_PATH\fP is used as
|
|
the search path for plugins.
|
|
See \fBLADSPA_PATH\fR in the section \fBENVIRONMENT\fR.
|
|
.TP
|
|
\fBloudness\fR [\fIgain\fR [\fIreference\fR]]
|
|
Loudness control is similar to the
|
|
.B gain
|
|
effect but provides equalization for the human auditory system. See
|
|
http://en.wikipedia.org/wiki/Loudness for a detailed description of
|
|
loudness. The gain is adjusted by the given
|
|
.I gain
|
|
parameter (usually negative) and the signal equalized according to ISO
|
|
226 w.r.t. a reference level of 65dB, though an alternative
|
|
.I reference
|
|
level may be given if the original audio has been equalized at some
|
|
other level.
|
|
A default gain of \-10dB is used if a
|
|
.I gain
|
|
value is not given.
|
|
.SP
|
|
See the
|
|
.B gain
|
|
effect.
|
|
.TP
|
|
\fBlowpass\fR [\fB\-1\fR\^|\^\fB2\fR] \fIfrequency\fR [\fRwidth\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR]]
|
|
Apply a low-pass filter.
|
|
See the description of the \fBhighpass\fR effect for details.
|
|
.TP
|
|
\fBmcompand\fR \fB\(dq\fIcompand-args\fB\(dq\fR {\fIfrequency \fB\(dq\fIcompand-args\fB\(dq\fR}
|
|
.SP
|
|
The quoted \fIcompand-args\fR are as for the \fBcompand\fR effect:
|
|
.br
|
|
\fIattack1\fB,\fIdecay1\fR{\fB,\fIattack\fB,\fIdecay\fR}
|
|
.br
|
|
[\fIsoft-knee-dB\fB:\fR]\fIin-dB1\fR[\fB,\fIout-dB1\fR]{\fB,\fIin-dB\fB,\fIout-dB\fR}
|
|
.br
|
|
[\fIgain\fR [\fIinitial-volume-dB\fR [\fIdelay\fR]]]
|
|
.SP
|
|
The multi-band compander is similar to the single-band compander but the
|
|
audio is first divided into bands using Linkwitz-Riley crossover filters
|
|
and a separately specifiable compander is run on each band. See the
|
|
\fBcompand\fR effect for the definition of its parameters. Compand
|
|
parameters are specified between double quotes and the crossover
|
|
frequency for that band is given by \fIcrossover-freq\fR; these can be
|
|
repeated to create multiple bands.
|
|
.SP
|
|
The following examples approximate Dolby A compression and decompression,
|
|
as used for tape noise reduction in professional recording studios:
|
|
.XE
|
|
.ne 6
|
|
# Dolby A compressor
|
|
sox_ng in.au dolbyA.au mcompand \e
|
|
".1,.1 4:-56,-46,-36,-26,-26,-20,-17,-15,-9,-9" 80 \e
|
|
".1,.1 4:-56,-46,-36,-26,-26,-20,-17,-15,-9,-9" 3k \e
|
|
".1,.1 4:-56,-46,-36,-26,-26,-20,-17,-15,-9,-9" 9k \e
|
|
".1,.1 4:-56,-42,-36,-23,-26,-18,-17,-14,-9,-9"
|
|
|
|
.ne 6
|
|
# Dolby A decompressor
|
|
sox_ng dolbyA.au out.au mcompand \e
|
|
".1,.1 4:-46,-56,-26,-36,-20,-26,-15,-17,-9,-9" 80 \e
|
|
".1,.1 4:-46,-56,-26,-36,-20,-26,-15,-17,-9,-9" 3k \e
|
|
".1,.1 4:-46,-56,-26,-36,-20,-26,-15,-17,-9,-9" 9k \e
|
|
".1,.1 4:-42,-56,-23,-36,-18,-26,-14,-17,-9,-9"
|
|
.XX
|
|
Real Dolby A probably compands each channel separately
|
|
but that is left as an exercise to interested readers.
|
|
.SP
|
|
See
|
|
.B compand
|
|
for a single-band companding effect.
|
|
.TP
|
|
\fBnoiseprof\fR [\fIprofile-file\fR]
|
|
Calculate a profile of the audio for use in noise reduction. See the
|
|
description of the \fBnoisered\fR effect for details.
|
|
.TP
|
|
\fBnoisered\fR [\fIprofile-file\fR [\fIamount\fR]]
|
|
Reduce noise in the audio signal by profiling and filtering. This
|
|
effect is moderately effective at removing consistent background noise
|
|
such as hiss or hum. To use it, first run SoX with the \fBnoiseprof\fR
|
|
effect on a section of audio that ideally would contain silence but in
|
|
fact contains noise\*msuch sections are typically found at the beginning
|
|
or the end of a recording. \fBnoiseprof\fR writes a noise
|
|
profile to \fIprofile-file\fR or to stdout if no \fIprofile-file\fR or
|
|
if `\-' is given. E.g.
|
|
.XE
|
|
sox_ng speech.wav \-n trim 0 1.5 noiseprof speech.noise-profile
|
|
.XX
|
|
To actually remove the noise, run SoX again, this time with the \fBnoisered\fR
|
|
effect;
|
|
.B noisered
|
|
reduces noise according to a noise profile generated by
|
|
.BR noiseprof ,
|
|
from
|
|
.I profile-file
|
|
if it is given
|
|
or from stdin if no \fIprofile-file\fR or if `\-' is given. E.g.
|
|
.XE
|
|
sox_ng speech.wav cleaned.wav noisered speech.noise-profile 0.3
|
|
.XX
|
|
How much noise should be removed is specified by
|
|
.IR amount \*ma
|
|
number between 0 and 1 with a default of 0\*d5. Higher numbers
|
|
remove more noise but present a greater likelihood of removing wanted
|
|
components of the audio signal. Before replacing an original recording
|
|
with a noise-reduced version, experiment with different
|
|
.I amount
|
|
values to find the optimal one for your audio; use headphones to check
|
|
that you are happy with the results, paying particular attention to quieter
|
|
sections of the audio.
|
|
.SP
|
|
On most systems, the two stages\*mprofiling and reduction\*mcan be combined
|
|
using a pipe, e.g.
|
|
.XE
|
|
sox_ng noisy.wav \-n trim 0 1 noiseprof | \e
|
|
play_ng noisy.wav noisered
|
|
.XX
|
|
.TP
|
|
\fBnorm\fR [\fIdB-level(0)\fR]
|
|
Normalize the audio.
|
|
.B norm
|
|
is just an alias for \fBgain \-n\fR; see the
|
|
.B gain
|
|
effect for details.
|
|
.TP
|
|
\fBoops\fR
|
|
Out Of Phase Stereo effect.
|
|
Mixes stereo to twin mono where each mono channel contains the
|
|
difference between the left and right stereo channels.
|
|
This is sometimes known as the `karaoke' effect as it often has the effect
|
|
of removing most or all of the vocals from a recording.
|
|
It is equivalent to \fBremix 1,2i 1,2i\fR.
|
|
.SP
|
|
See also \fBcentercut\fR.
|
|
.TP
|
|
\fBoverdrive\fR [\fIgain\fR(20) [\fIcolor\fR(20)]]
|
|
Non-linear distortion.
|
|
The \fIcolor\fR parameter controls the amount of even harmonic content
|
|
in the overdriven output. Both parameters range from 0 to 100.
|
|
.SP
|
|
There are keymaps for both \fIgain\fR and \fIcolor\fR.
|
|
.TP
|
|
\fBpad\fR { \fI[%]length\fR[\fB@\fIposition(=)\fR] }
|
|
Pad the audio with silence at the beginning, at the end or at any
|
|
specified points throughout the audio.
|
|
.I length
|
|
is the amount of silence to insert and
|
|
.I position
|
|
the position in the input audio stream at which to insert it.
|
|
Any number of lengths and positions may be specified, provided that
|
|
a specified position is not less that the previous one.
|
|
.I Position
|
|
is optional for the first and last lengths specified and
|
|
if omitted correspond to the beginning and the end of the audio respectively.
|
|
For example,
|
|
.B pad 1.5 1.5
|
|
adds 1\*d5 seconds of silence at each end of the audio, whilst
|
|
.B pad 4000s@3:00
|
|
inserts 4000 samples of silence 3 minutes into the audio.
|
|
If silence is wanted only at the end of the audio, either specify the end
|
|
position or specify a zero-length pad at the start.
|
|
.SP
|
|
If a pad specification starts with with a \fB%\fR sign, the output is padded
|
|
to a multiple of \fIlength\fR at the specified position. For example,
|
|
\fBpad 0 %10\fR adds silence at the end of the audio up to the next
|
|
multiple of 10 seconds.
|
|
.SP
|
|
See
|
|
.B delay
|
|
for an effect that can add silence at the beginning of
|
|
the audio on a channel-by-channel basis.
|
|
.TP
|
|
\fBphaser\fR [\fB\-n\fR\^|\^\fBl\fR\^|\^\fBq\fR] [\fB\-s\fR\^|\^\fBt\fR] [\fIgain-in\fR(.4) \fIgain-out\fR(.74) \fIdelay\fR(3) \fIregen\fR(.4) \fIspeed\fR(.5) [\fB\-s\fR\^|\^\fBt\fR]
|
|
Add a phasing effect to the audio.
|
|
See [3] for a detailed description of phasing.
|
|
.SP
|
|
\fIdelay\fR gives the maximum delay in milliseconds from 0 to 1000,
|
|
\fIregen\fR the amount of feedback from the delay from \(mi1 to \(pl1
|
|
and \fIspeed\fR the frequency of delay-time modulation wave in Hz.
|
|
.SP
|
|
The modulation is either sinusoidal (\fB\-s\fR, the default),
|
|
which is preferable for multiple instruments, or triangular
|
|
(\fB\-t\fR) which gives single instruments a sharper phasing effect.
|
|
\fIregen\fR can be from \(mi1 to \(pl1 but should usually be less than
|
|
0\*d5 to avoid clipping and \fIgain-out\fR is the final volume adjustment
|
|
from \(mi1 to \(pl1.
|
|
.SP
|
|
The \fB\-l\fR flag makes \fBphaser\fR do linear interpolation between samples
|
|
when the offset into the delay line is not a whole number,
|
|
which is about 15% slower but much less noisy and
|
|
\fB\-q\fR does quadratic interpolation, which is about 50% slower
|
|
but even less noisy.
|
|
\fB\-n\fR explicitly asks for no interpolation, the default, fast and fuzzy.
|
|
.SP
|
|
In sox_ng, \fB\-s\fR or \fB\-t\fR can be given at the start or the end;
|
|
to be compatible with earlier versions of SoX, supply all the parameters
|
|
with one of these at the end, use \fIgain-in\fR and \fIgain-out\fR from 0 to 1,
|
|
\fIdelay\fR from 0 to 5, \fIspeed\fR from 0\*d1 to 2
|
|
and don't use interpolation.
|
|
.SP
|
|
There are keymaps for \fIgain_in\fR, \fIgain_out\fR and \fIregen\fR.
|
|
.SP
|
|
Technically, the SoX \fBphaser\fP is not a phaser; it is a flanger.
|
|
A flanger does comb filtering with equidistant spacing
|
|
(e.g. 100Hz, 200Hz, 300Hz, 400Hz, ...), while a real phaser does
|
|
comb filtering with factored spacing
|
|
(e.g. 100Hz, 200Hz, 400Hz, 800Hz, ...) that sounds more harmonic.
|
|
.SP
|
|
For example:
|
|
.XE
|
|
play_ng snare.flac phaser 0.8 0.74 3 0.4 0.5 \-t
|
|
.XX
|
|
Gentler:
|
|
.XE
|
|
play_ng snare.flac phaser 0.9 0.85 4 0.23 1.3 \-s
|
|
.XX
|
|
A popular sound:
|
|
.XE
|
|
play_ng snare.flac phaser 0.89 0.85 1 0.24 2 \-t
|
|
.XX
|
|
More severe:
|
|
.XE
|
|
play_ng snare.flac phaser 0.6 0.66 3 0.6 2 \-t
|
|
.XX
|
|
For a flow diagram of how \fBphaser\fR works,
|
|
say \fBsox_ng \-h phaser\fR.
|
|
.TP
|
|
\fBpitch \fR[\fB\-q\fR] \fIshift\fR [\fIsegment\fR [\fIsearch\fR [\fIoverlap\fR]]]
|
|
Change the audio pitch but not the tempo.
|
|
.SP
|
|
.I shift
|
|
gives the pitch shift as positive or negative `cents' (i.e. 100ths of a
|
|
semitone).
|
|
.SP
|
|
Note that raising the pitch increases the sample rate and this can
|
|
make following effects slower, in particular \fBpitch\fR or \fBtempo\fR
|
|
themselves, whose running times are proportional to the sample rate times
|
|
the overlap, all squared.
|
|
This can be compensated for by following \fBpitch\fR with
|
|
a fast \fBrate\fR effect.
|
|
.SP
|
|
.B Pitch
|
|
and
|
|
.B tempo
|
|
share the same fundamental algorithm; see the \fBtempo\fR
|
|
effect for a description of the other parameters.
|
|
.SP
|
|
See the \fBbend\fR, \fBspeed\fR and \fBtempo\fR effects.
|
|
.TP
|
|
\fBrate\fR [\fB\-q\fR\^|\^\fBl\fR\^|\^\fBm\fR\^|\^\fBg\fR\^|\^\fBh\fR\^|\^\fBe\fR\^|\^\fBv\fR\^|\^\fBu\fR] [override-options] [\fIfrequency\fR]
|
|
Change the audio sampling rate (i.e. resample the audio) to any given
|
|
.I frequency
|
|
(even non-integer if this is supported by the output file format)
|
|
using a quality level defined as follows:
|
|
.SP
|
|
.ne 10
|
|
.TS
|
|
center;
|
|
cI cI cI cI lxI
|
|
cB c c c lx.
|
|
\ Quality T{
|
|
B/W
|
|
T} Rej dB T{
|
|
.na
|
|
Typical Use
|
|
.ad
|
|
T}
|
|
\-q T{
|
|
quick
|
|
T} n/a T{
|
|
\(~=30\^@\^Fs/4
|
|
T} T{
|
|
.na
|
|
playback on ancient hardware
|
|
.ad
|
|
T}
|
|
\-l low 80% 100 T{
|
|
.na
|
|
playback on old hardware
|
|
.ad
|
|
T}
|
|
\-m medium 95% 100 T{
|
|
.na
|
|
audio playback
|
|
.ad
|
|
T}
|
|
\-g generic 95% 100 T{
|
|
16-bit
|
|
T}
|
|
\-h high 95% 125 T{
|
|
.na
|
|
20-bit for 16-bit mastering
|
|
.ad
|
|
T}
|
|
\-e extreme 95% 150 T{
|
|
24-bit
|
|
T}
|
|
\-v T{
|
|
.na
|
|
very high
|
|
.ad
|
|
T} 95% 175 28-bit for 24-bit mastering
|
|
\-u T{
|
|
ultra
|
|
T} 95% 200 32-bit
|
|
.TE
|
|
.SP
|
|
These can also be selected with \fB\-Q\ \fIn\fR with \fIn\fR from 0 to 7.
|
|
.SP
|
|
B/W (bandwidth) is the percentage of the audio frequency band that is preserved and
|
|
.I Rej dB
|
|
is the level of noise rejection. Increasing levels of resampling
|
|
quality come at the expense of increasing amounts of time to process the
|
|
audio. If no quality option is given, the quality level used is `high'
|
|
when processing audio and `low' when playing it.
|
|
See \fBPlaying & Recording Audio\fR above.
|
|
.SP
|
|
The `quick' algorithm uses cubic interpolation; all others use
|
|
band-limited interpolation. By default, all algorithms have
|
|
a linear phase response; for `medium' and above,
|
|
the phase response is configurable (see below).
|
|
.SP
|
|
The
|
|
.B rate
|
|
effect is invoked automatically if SoX's \fB\-r\fR option specifies a
|
|
rate that is different to that of the input file(s). Alternatively, if
|
|
this effect is given explicitly, then SoX's
|
|
.B \-r
|
|
option need not be given. For example, the following two commands are
|
|
equivalent:
|
|
.XE
|
|
.ne 2
|
|
sox_ng input.wav \-r 48k output.wav bass \-b 24
|
|
sox_ng input.wav output.wav bass \-b 24 rate 48k
|
|
.XX
|
|
though the second command is more flexible as it allows
|
|
.B rate
|
|
options to be given, and allows the effects to be ordered arbitrarily.
|
|
.SP
|
|
A user notes that resampling tracks and then concatenating them
|
|
is more likely to create clicks at the joints than joining them first
|
|
and resampling the result, due to edge effects.
|
|
.SP
|
|
.ne 3
|
|
.B "Override Options"
|
|
.SP
|
|
The simple quality selection described above provides settings that
|
|
satisfy the needs of the vast majority of resampling tasks.
|
|
Occasionally, however, it may be desirable to fine-tune the resampler's
|
|
filter response; for qualities `medium' and above,
|
|
this can be achieved using the override options
|
|
in the following table:
|
|
.SP
|
|
.ne 6
|
|
.TS
|
|
center;
|
|
lB lx.
|
|
\-M/\-I/\-L Phase response=minimum/intermediate/linear
|
|
\-s Steep filter (bandwidth=99%)
|
|
\-a Allow aliasing/imaging above the pass band
|
|
\-b\ \fIwidth\fR Any bandwidth % (74\-99\*d7 or 85-99\*d7 with \B\-a\fR)
|
|
\-p\ \fIphase\fR T{
|
|
.na
|
|
Any phase response (0=minimum, 25=intermediate, 50=linear, 100=maximum)
|
|
.ad
|
|
T}
|
|
.TE
|
|
.SP
|
|
All resamplers use filters that can sometimes create `echo' (a.k.a.
|
|
`ringing') artefacts with transient signals such as those that occur
|
|
with `finger snaps' or other highly percussive sounds. Such artefacts are
|
|
much more noticeable to the human ear if they occur before the transient
|
|
(`pre-echo') than if they occur after it (`post-echo'). Note that the
|
|
frequency of any such artefacts is related to the smaller of the
|
|
original and new sampling rates but if this is at least 44\*d1kHz,
|
|
the artefacts will lie outside the range of human hearing.
|
|
.SP
|
|
A phase response setting may be used to control the distribution of any
|
|
transient echo between
|
|
`pre' and `post': with minimum phase, there is no pre-echo but the
|
|
longest post-echo; with linear phase, pre- and post-echo are in equal
|
|
amounts (in signal terms, but not in audibility); the intermediate
|
|
phase setting attempts to find the best compromise by selecting a small
|
|
length (and level) of pre-echo and a medium-length of post-echo.
|
|
.SP
|
|
A minimum, intermediate or linear phase response is selected using the
|
|
\fB\-M\fR, \fB\-I\fR and \fB\-L\fR options;
|
|
a custom phase response can be created with the
|
|
.B \-p
|
|
option. Note that phase responses between `linear' and `maximum'
|
|
(greater than 50) are rarely useful.
|
|
.SP
|
|
A resampler's bandwidth setting determines how much of the frequency
|
|
content of the original signal (w.r.t. the original sample rate when
|
|
upsampling or the new sample rate when downsampling) is preserved
|
|
during conversion. The term `pass band' is used to refer to all frequencies
|
|
up to the bandwidth point (e.g. for a 44\*d1kHz sampling rate and a
|
|
resampling bandwidth of 95%, the pass band represents frequencies from
|
|
0Hz (DC) to circa 21kHz). Increasing the resampler's bandwidth
|
|
results in a slower conversion and can increase transient echo
|
|
artefacts (and vice versa).
|
|
.SP
|
|
The
|
|
.B \-s
|
|
`steep filter' option changes the resampling bandwidth from the default of 95%
|
|
(based on the 3dB point) to 99%. The
|
|
.B \-b
|
|
option allows the bandwidth to be set to any value in the range
|
|
74\-99\*d7% but bandwidth values greater than 99% are not
|
|
recommended for normal use as they can cause excessive transient echo.
|
|
.SP
|
|
If the
|
|
.B \-a
|
|
option is given, aliasing/imaging above the pass band is allowed. For
|
|
example, with 44\*d1kHz sampling rate and a
|
|
resampling bandwidth of 95%, this means that frequency content above
|
|
21kHz can be distorted. However, since this is above the pass band (i.e.
|
|
above the highest frequency of interest/audibility), this may not be a
|
|
problem. The benefits of allowing aliasing/imaging are reduced processing time
|
|
and reduced (by almost half) transient echo artefacts.
|
|
.SP
|
|
The
|
|
.B \-d
|
|
option sets the bit-accuracy in the range 15 to 33, or
|
|
.B \-R
|
|
sets the bit-accuracy to obtain rejection of a specified number of dB.
|
|
.SP
|
|
Examples:
|
|
.XE
|
|
sox_ng input.wav \-b 16 output.wav rate \-s \-a 44100 dither \-s
|
|
.XX
|
|
is default (high) quality resampling with overrides for a steep filter,
|
|
to allow aliasing, at a 44\*d1kHz sample rate and noise-shaped dithering
|
|
to a 16-bit WAV file.
|
|
.XE
|
|
sox_ng input.wav \-b 24 output.aiff rate \-v \-I \-b 90 48k
|
|
.XX
|
|
is very high quality resampling with overrides for an intermediate phase,
|
|
a bandwidth of 90%, at a 48k sampling rate and storing the output
|
|
to a 24-bit AIFF file.
|
|
.SP
|
|
.ne 3
|
|
.B "Advanced Options"
|
|
.SP
|
|
The
|
|
.B \-i
|
|
option forces the use of a particular interpolator coefficient from -1 to 2.
|
|
.SP
|
|
The
|
|
.B \-c
|
|
option tries to limit the number of coefficients to a number of kilobytes;
|
|
its argument can be from 100 up.
|
|
.SP
|
|
The
|
|
.B \-B
|
|
option sets the percentage of the pass-band to preserve, from 53 to 95.
|
|
.SP
|
|
The
|
|
.B \-A
|
|
option sets the percentage of the bandwidth without aliasing, from 85 to 100.
|
|
.SP
|
|
.B \-f
|
|
sets zero pass-band roll-off instead of 0.01dB for -Q 0-2.
|
|
.SP
|
|
.B \-n
|
|
disables internal small-integer optimizations and
|
|
.SP
|
|
.B \-t
|
|
increases the irrational ratio accuracy.
|
|
.TP
|
|
\fBremix\fR [\fB\-a\fR\^|\^\fBm\fR] [\fB\-p\fR] <\fIout-spec\fR>
|
|
\fIout-spec\fR = \fB0\fR | \fIin-spec\fR{\fB,\fIin-spec\fR}
|
|
.br
|
|
\fIin-spec\fR = [\fIin-chan\fR]\^[\fB\-\fR[\fIin-chan2\fR]]\^[\fIvol-spec\fR]
|
|
.br
|
|
\fIvol-spec\fR = \fBp\fR\^|\^\fBi\fR\^|\^\fBv\^\fR[\fIvolume\fR]
|
|
.br
|
|
.SP
|
|
Select and mix input audio channels into output audio channels. Each output
|
|
channel is specified in turn by a given \fIout-spec\fR which is a list of
|
|
contributing input channels and volume specifications.
|
|
.SP
|
|
Note that this effect operates on the audio channels
|
|
within the SoX effects processing chain; it should not be confused with the
|
|
.B \-m
|
|
global option, where multiple files
|
|
are mix-combined before entering the effects chain.
|
|
.SP
|
|
An
|
|
.I out-spec
|
|
contains comma-separated input channel numbers and hyphen-delimited
|
|
channel number ranges; alternatively,
|
|
.B 0
|
|
may be given to create a silent output channel. For example,
|
|
.XE
|
|
sox_ng input.wav output.wav remix 6 7 8 0
|
|
.XX
|
|
creates an output file with four channels, where channels 1, 2, and 3 are
|
|
copies of channels 6, 7, and 8 in the input file, and channel 4 is silent.
|
|
Whereas
|
|
.XE
|
|
sox_ng input.wav output.wav remix 1\-3,7 3
|
|
.XX
|
|
creates a (somewhat bizarre) stereo output file where the left channel
|
|
is a mix-down of input channels 1, 2, 3 and 7 and the right channel is
|
|
a copy of input channel 3.
|
|
.SP
|
|
Where a range of channels is specified, the channel numbers to the left and
|
|
right of the hyphen are optional and default to 1 and to the number of input
|
|
channels respectively. Thus
|
|
.XE
|
|
sox_ng input.wav output.wav remix \-
|
|
.XX
|
|
performs a mix-down of all input channels to mono.
|
|
.SP
|
|
By default, where an output channel is mixed from multiple input
|
|
channels, each input channel is scaled by a factor of \(S1/\s-2n\s+2.
|
|
Custom mixing volumes can be set by following a given input channel or range
|
|
of input channels with a \fIvol-spec\fR (volume specification)
|
|
which is one of the letters \fBp\fR, \fBi\fR, or \fBv\fR,
|
|
followed by a volume number, the meaning of which depends on the given
|
|
letter:
|
|
.SP
|
|
.ne 7
|
|
.TS
|
|
center;
|
|
lI lI lxI
|
|
cb l lx.
|
|
Letter Volume number Notes
|
|
p power adjust in dB 0 = no change
|
|
i power adjust in dB T{
|
|
.na
|
|
As for \fBp\fR but invert the audio
|
|
.ad
|
|
T}
|
|
v voltage multiplier T{
|
|
.na
|
|
1 = no change;
|
|
0\*d5\ \(~=\ 6dB\ attenuation;
|
|
2\ \(~=\ 6dB\ gain;
|
|
\-1\ =\ invert
|
|
.ad
|
|
T}
|
|
.TE
|
|
.SP
|
|
If an \fIout-spec\fR includes at least one \fIvol-spec\fR then, by default,
|
|
\(S1/\s-2n\s+2 scaling is not applied to any other channels in the
|
|
same \fIout-spec\fR (though maybe in other \fIout-spec\fRs) though
|
|
the \fB\-a\fR (automatic)
|
|
option can be given to retain the automatic scaling in this case.
|
|
For example,
|
|
.XE
|
|
sox_ng input.wav output.wav remix 1,2 3,4v0.8
|
|
.XX
|
|
results in channel level multipliers of 0\*d5,0\*d5 and 1,0\*d8, whereas
|
|
.XE
|
|
sox_ng input.wav output.wav remix \-a 1,2 3,4v0.8
|
|
.XX
|
|
results in channel level multipliers of 0\*d5,0\*d5 and 0\*d5,0\*d8.
|
|
.SP
|
|
The \fB\-m\fR (manual) option disables all automatic volume adjustments, so
|
|
.XE
|
|
sox_ng input.wav output.wav remix \-m 1,2 3,4v0.8
|
|
.XX
|
|
results in channel level multipliers of 1,1 and 1,0\*d8.
|
|
.SP
|
|
The volume number is optional and omitting it corresponds to no volume
|
|
change; however, the only case in which this is useful is in conjunction
|
|
with
|
|
.BR i .
|
|
For example, if
|
|
.I input.wav
|
|
is stereo, then
|
|
.XE
|
|
sox_ng input.wav output.wav remix 1,2i
|
|
.XX
|
|
is a mono equivalent of the
|
|
.B oops
|
|
effect and
|
|
.XE
|
|
play file.mp3 remix 1,2 1i,2i
|
|
.XX
|
|
lets you get twice as much power from a mono speaker connected between
|
|
the left and right poles than you would from two connected the usual way,
|
|
(but mind it doesn't blow the amplifier, as it draws twice as much current).
|
|
.SP
|
|
If the \fB\-p\fR option is given, any automatic \(S1/\s-2n\s+2 scaling
|
|
is replaced by \(S1/\s-2\(srn\s+2 (`power') scaling; this gives a louder mix
|
|
but one that may occasionally clip.
|
|
.SP
|
|
One use of the
|
|
.B remix
|
|
effect is to split an audio file into a set of files, each containing
|
|
one of the constituent channels in order to perform subsequent
|
|
processing on individual audio channels. When more than a few
|
|
channels are involved, a script such as the following is useful:
|
|
.ne 8
|
|
.XE
|
|
#! /bin/sh
|
|
chans=\`soxi_ng \-c "$1"\`
|
|
while [ $chans \-ge 1 ]; do
|
|
chans0=\`printf %02i $chans\` # 2 digits hence up to 99 chans
|
|
out=\`echo "$1" | sed "s/\\(.*\\)\\.\\(.*\\)/\\1\-$chans0.\\2/"\`
|
|
sox_ng "$1" "$out" remix $chans
|
|
chans=\`expr $chans \- 1\`
|
|
done
|
|
.XX
|
|
If a file
|
|
.I input.wav
|
|
containing six audio channels were given, the script would produce six
|
|
output files:
|
|
.IR input-01.wav ,
|
|
\fIinput-02.wav\fR, ...,
|
|
.IR input-06.wav .
|
|
.SP
|
|
See the \fBswap\fR effect.
|
|
.TP
|
|
\fBrepeat\fR [\fIcount\fR(1)\^|\^\fB\-\fR]
|
|
Repeat the entire audio \fIcount\fR times, or once if \fIcount\fR is not given.
|
|
The special value \fB\-\fR requests infinite repetition.
|
|
It requires temporary file space to store the audio to be repeated.
|
|
Note that repeating once yields two copies: the original audio and the
|
|
repeated audio.
|
|
.TP
|
|
\fBreverb\fR [\fB\-w\fR] [\fIreverberance\fR(50%) [\fIHF-damping\fR(50%) [\fIroom-scale\fR(100%)
|
|
[\fIstereo-depth\fR(100%) [\fIpre-delay\fR(0ms) [\fIwet-gain\fR(0dB)]]]]]]
|
|
.SP
|
|
Add reverberation to the audio using the `freeverb' algorithm. A
|
|
reverberation effect is sometimes desirable for concert halls that are too
|
|
small or contain so many people that the hall's natural reverberance is
|
|
diminished. Applying a small amount of stereo reverb to a dry mono signal
|
|
usually makes it sound more natural. See [3] for a detailed description
|
|
of reverberation.
|
|
.SP
|
|
This effect increases the volume of the audio and continues to reverberate
|
|
after the input finishes so, to prevent clipping and
|
|
keep the audible part of the final reverberation,
|
|
a typical invocation might be:
|
|
.XE
|
|
play_ng dry.au gain \-3 pad 0 1 reverb
|
|
.XX
|
|
The
|
|
.B \-w
|
|
option can be given to select only the `wet' signal, thus allowing it to be
|
|
processed further, independently of the `dry' signal. E.g.
|
|
.XE
|
|
play_ng \-m in.au "|sox_ng in.au \-p reverse reverb \-w reverse"
|
|
.XX
|
|
for a reverse reverb effect.
|
|
.TP
|
|
\fBreverse\fR
|
|
Reverse the audio completely.
|
|
Requires temporary file space to store the audio to be reversed.
|
|
.TP
|
|
\fBriaa\fR
|
|
Apply RIAA vinyl playback equalization.
|
|
The sampling rate must be 44\*d1, 48, 88\*d2, 96 or 192kHz.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBsaturation\fR [\fItype\fR [\fIblend\fR [\fIoffset\fR [\fIdrive\^|\^color\^|\^threshold\fR]]]]
|
|
Add saturation, which can produce effects ranging from subtle warmth to
|
|
crunchy fuzz. The \fItype\fR parameter selects the saturation type:
|
|
\fBtanh\fR (the default), \fBsqrt\fR or \fBdiode\fR.
|
|
.SP
|
|
For all types, the \fIblend\fR parameter (default 1) controls the mixture
|
|
of wet and dry signals in the output, with 1 being fully wet. The
|
|
\fIoffset\fR parameter (default 0) adds a DC offset to the input to produce
|
|
asymmetric distortion. The offset is removed from the output, so that a zero
|
|
input level produces a zero output level, but when the input is non-zero the
|
|
output waveform is likely to be asymmetric.
|
|
.SP
|
|
The \fBtanh\fR saturation type uses the hyperbolic tangent function to
|
|
apply soft clipping. The \fIdrive\fR parameter (default 1) controls the
|
|
input gain and thus the amount of distortion.
|
|
.SP
|
|
The \fBsqrt\fR saturation type uses a mixture of two functions:
|
|
\fIx*sqrt(|x|)\fR and \fIsgn(x)*sqrt(|x|)\fR, which give different
|
|
tonal qualities to the output. The \fIcolor\fR parameter (default 0.5)
|
|
controls the mixture of these functions, with 0 being purely
|
|
\fIx*sqrt(|x|)\fR and 1 being purely \fIsgn(x)*sqrt(|x|)\fR.
|
|
.SP
|
|
The \fBdiode\fR saturation type models the effect of using a pair of
|
|
diodes to clip the signal when it exceeds a \fIthreshold\fR
|
|
(default 0.5). The \fIblend\fR parameter, by mixing the wet and dry
|
|
signals, effectively controls the amount of attenuation that occurs above
|
|
the threshold, from no attenuation when \fIblend\fR is 0 to complete
|
|
attenuation (hard clipping) when \fIblend\fR is 1.
|
|
.SP
|
|
There are keymaps for \fIblend\fR, \fIoffset\fR, \fIdrive\fR, \fIcolor\fR
|
|
and \fIthreshold\fR.
|
|
.SP
|
|
See the \fBoverdrive\fR effect for another kind of non-linear distortion.
|
|
When the \fIoffset\fR parameter is used to produce asymmetric distortion,
|
|
the \fBhighpass\fR effect can be used to rebalance the waveform's positive
|
|
and negative amplitude.
|
|
.TP
|
|
\fBsdm\fR [\fB\-f \fIfilter\fR] [\fB\-t \fIorder\fR] [\fB\-n \fInum\fR] [\fB-l \fIlatency\fR]
|
|
Apply a 1-bit sigma-delta modulator producing DSD output. The input
|
|
should be previously upsampled, e.g. with the \fBrate\fR effect, to a
|
|
high rate, 2\*d8224MHz for DSD64. The \fB\-f\fR option selects the
|
|
noise-shaping filter from the following list where the number indicates
|
|
the order of the filter:
|
|
.SP
|
|
.ne 5
|
|
.TS
|
|
center;
|
|
l l.
|
|
clans-4 sdm-4
|
|
clans-5 sdm-5
|
|
clans-6 sdm-6
|
|
clans-7 sdm-7
|
|
clans-8 sdm-8
|
|
.TE
|
|
.TP
|
|
\
|
|
The noise filter may be combined with a partial trellis/viterbi search
|
|
by supplying the following options:
|
|
.RS
|
|
.IP "\fB\-t \fIorder\fR"
|
|
Trellis order, max 32.
|
|
.IP "\fB\-n \fInum\fR"
|
|
Number of paths to consider, max 32.
|
|
.IP "\fB\-l \fIlatency\fR"
|
|
Output latency, max 2048.
|
|
.RE
|
|
.TP
|
|
\
|
|
The result of using these parameters is hard to predict and can include
|
|
high noise levels or instability. Caution is advised.
|
|
.TP
|
|
\fBsilence \fR[\fB\-l\fR] \fIabove-periods\fR [\fIduration threshold\fR[\fBd\fR\^|\^\fB%\fR]]
|
|
[\fIbelow-periods duration threshold\fR[\fBd\fR\^|\^\fB%\fR]]
|
|
.SP
|
|
Removes silence from the beginning, middle or end of the audio,
|
|
where `silence' is determined by a specified threshold.
|
|
.SP
|
|
The \fIabove-periods\fR value is used to indicate whether audio should be
|
|
trimmed at the beginning of the audio. A value of zero indicates that no
|
|
silence should be trimmed from the beginning in which case
|
|
\fIduration\fR and \fIthreshold\fR are omitted.
|
|
When a
|
|
non-zero \fIabove-periods\fR is specified,
|
|
you must also specify a \fIduration\fR and \fIthreshold\fR
|
|
and it trims audio until it finds non-silence.
|
|
It will normally be 1 when trimming silence from the beginning of the audio,
|
|
but it can be increased to higher values to trim all audio up to
|
|
the Nth non-silence period.
|
|
For example, if you have an audio file with two songs that
|
|
each contains 2 seconds of silence before the song, you could specify
|
|
an \fIabove-period\fR of 2 to strip out both silences and the first song.
|
|
.SP
|
|
\fIduration\fR indicates the
|
|
amount of time for which non-silence must be detected before it stops
|
|
trimming the silence before it.
|
|
By increasing \fIduration\fR, short bursts of quiet noise
|
|
can be treated as silence and trimmed off.
|
|
\fIduration\fR has the peculiarity that a bare
|
|
number is interpreted as a sample count, not as a number of seconds.
|
|
To specify seconds, either use the \fBt\fR suffix (as in \fB2t\fR),
|
|
a decimal point (as in \fB2.0\fR) or specify minutes too (as in \fB0:02\fR).
|
|
.SP
|
|
\fIthreshold\fR indicates the maximum sample value in any channel
|
|
is considered silence. For digital audio, a value of 0 may be fine but
|
|
for audio recorded from analog you may wish to increase the value
|
|
to include background noise.
|
|
\fIthreshold\fR numbers may be suffixed with
|
|
.B d
|
|
to indicate that the value is in decibels or
|
|
.B %
|
|
to indicate a percentage of the maximum possible sample value.
|
|
By default, it is in percent.
|
|
.SP
|
|
To trim silence from the end of the audio, specify
|
|
a \fIbelow-periods\fR count, which means
|
|
to remove all audio after the last onset of silence is detected.
|
|
Normally, this will be 1 but it can
|
|
be increased to leave shorter periods of silence
|
|
and the audio that follows them intact.
|
|
For example, if you have a track with 1 second of silence in the middle
|
|
and 1 second at the end, you could set \fIbelow-period\fR to 2
|
|
to leave the middle silence and what follows it
|
|
and remove from the final silence on.
|
|
.SP
|
|
When \fIbelow-periods\fR is given, its \fIduration\fR specifies
|
|
the length of silence that must exist before audio is not copied any more.
|
|
By specifying a higher \fIduration\fR, shorter silences that are wanted
|
|
can be left in the audio.
|
|
For example, if you have a song with 1 second of silence in the middle
|
|
and 2 seconds of silence at the end, a \fIduration\fR of 2
|
|
could be used to skip over the middle silence and trim the end
|
|
instead of starting trimming from half way through.
|
|
.SP
|
|
Unfortunately, the length of the silence at the end has to be longer
|
|
than any preceding silence for this to work
|
|
so you must know the length of the silence at the end.
|
|
.SP
|
|
A more reliable way to trim silence from the end is to use
|
|
the \fBsilence\fR effect in combination with the \fBreverse\fR effect.
|
|
By first reversing the audio, you can use the \fIabove-periods\fR
|
|
to trim from what looks like the front of the file,
|
|
then reverse it again to get back to normal.
|
|
.SP
|
|
To remove silence from the middle of a file,
|
|
give a negative \fIbelow-periods\fR.
|
|
This value is then treated as positive value and is also used to indicate that the
|
|
effect should restart processing as specified by the
|
|
\fIabove-periods\fR, making it suitable for removing periods of
|
|
silence in the middle of the audio.
|
|
.SP
|
|
The
|
|
.B \-l
|
|
option indicates that \fIbelow-periods\fR' \fIduration\fR of `silent' audio
|
|
should be left intact at the beginning of each period of silence,
|
|
for example, if you want to remove long pauses between words
|
|
but do not want to remove the pauses completely.
|
|
.SP
|
|
The following example shows how this effect can be used to make a recording
|
|
that does not contain the silence that usually occurs between
|
|
pressing the record button and the start of the performance:
|
|
.XE
|
|
rec_ng \fIparameters filename other-effects\fR silence 1 5 2%
|
|
.XX
|
|
This example should remove the start of the recording until
|
|
there's a period of non-silence longer than 0.2s and louder than 0.1%,
|
|
then start searching for a silence that's longer than 1s and quieter than 3%
|
|
and remove it if found, leaving the first 1s of it in place,
|
|
then start copying again until a silence is found
|
|
that's longer than 1s and quieter than 3%, trim that to 1s and so on.
|
|
.XE
|
|
sox_ng in.au out.au silence -l 1 0.2 0.1% -1 1.0 3%
|
|
.XX
|
|
.TP
|
|
\fBsinc\fR [\fB\-a\fI att\fR\^|\^\fB\-b\fI beta\fR] [\fB\-p\fI phase\fR\^|\^\fB\-M\fR\^|\^\fB\-I\fR\^|\^\fB\-L\fR] \:[\fB\-t\fI tbw\fR\^|\^\fB\-n\fI taps\fR]
|
|
[\fIfreqHP\fR]\:[\fB\-\fIfreqLP\fR [\fB\-t\fR tbw\^|\^\fB\-n\fR taps]] [\fB\-r\fR]] [\fB\-d\fR]]
|
|
.SP
|
|
Apply a kaiser-windowed low-pass, high-pass, band-pass or band-reject filter
|
|
to the signal.
|
|
The \fIfreqHP\fR and \fIfreqLP\fR parameters give the frequencies of the
|
|
6dB points of a high-pass and low-pass filter that may be invoked
|
|
individually or together. If both are
|
|
given, \fIfreqHP\fR less than \fIfreqLP\fR creates a band-pass filter and
|
|
\fIfreqHP\fR greater than \fIfreqLP\fR creates a band-reject filter.
|
|
For example, the invocations
|
|
.XE
|
|
sinc 3k
|
|
sinc -4k
|
|
sinc 3k-4k
|
|
sinc 4k-3k
|
|
.XX
|
|
create a high-pass, low-pass, band-pass and band-reject filter
|
|
respectively.
|
|
.SP
|
|
The default stop band attenuation of 120dB can be overridden with
|
|
\fB\-a\fR; alternatively, the kaiser window's `beta' parameter can be
|
|
given directly with \fB\-b\fR.
|
|
.SP
|
|
The default transition bandwidth of 5% of the total band can be
|
|
overridden with \fB\-t\fR (and \fItbw\fR in Hertz); alternatively, the
|
|
number of filter taps can be given directly with \fB\-n\fR and is
|
|
limited to the range of 11\-1,073,741,823 though the maximum requires
|
|
56GB of physical RAM if it is to complete in minutes rather than days,
|
|
while 100,000,000 requires 8GB.
|
|
.SP
|
|
If both \fIfreqHP\fR and \fIfreqLP\fR are given, a \fB\-t\fR or
|
|
\fB\-n\fR option given to the left of the frequencies applies to both
|
|
frequencies; one of these options given to the right of the frequencies
|
|
applies only to \fIfreqLP\fR.
|
|
.SP
|
|
The
|
|
.BR \-p ,
|
|
.BR \-M ,
|
|
.B \-I
|
|
and
|
|
.B \-L
|
|
options control the filter's phase response; see the \fBrate\fR effect
|
|
for details.
|
|
.SP
|
|
The
|
|
.B \-r
|
|
option controls whether the filter should round the number of taps to the closest integer
|
|
instead of truncating it.
|
|
.SP
|
|
The
|
|
.B \-d
|
|
option specifies that, if a low-pass filter is being created and
|
|
the cutoff frequency is at or above the Nyquist frequency,
|
|
the \fBsinc\fP effect should be deleted from the effects chain
|
|
instead of failing.
|
|
.SP
|
|
This effect supports the \fB\-\-plot\fR global option.
|
|
.TP
|
|
\fBsoftvol\fR [\fIvolume\fR(1.0) [\fIdouble-time\fR(0) [\fIheadroom\fR(0)]]]
|
|
The soft volume effect applies a simple multiplier to the audio
|
|
ensuring that it does not clip. When a sample would have clipped
|
|
the volume multiplier is automatically reduced to compensate.
|
|
.SP
|
|
It is a simple compander with the advantages of running fast,
|
|
having no pre- or post-echo and reacting on the crests of the wave,
|
|
so its volume-reduction glitches don't add audible noise.
|
|
.SP
|
|
\fIvolume\fR sets the initial volume multiplier;
|
|
the default of 1.0 means no change.
|
|
.SP
|
|
\fIdouble-time\fR says that the volume should slowly increase at a rate
|
|
that makes it double every \fIdouble-time\fR seconds.
|
|
A good value for usual music is 10 and the default value of 0
|
|
says that the volume should not increase automatically.
|
|
.SP
|
|
\fIheadroom\fR is in dB and limits the loudest amplitude to
|
|
less than the 32-bit maximum.
|
|
This may be necessary when the final bit-depth reduction and/or dithering
|
|
make it clip.
|
|
A value of 0.1 is sufficient to protect down to a bit-depth of 8 with dithering.
|
|
.SP
|
|
There are keymaps for \fIvolume\fR, \fIdouble_time\fR and \fIheadroom\fR.
|
|
.SP
|
|
When playing sound in interactive mode, the `\fBv\fR' and `\fBV\fR' keys
|
|
reduce and increase the volume if there is a \fBsoftvol\fR
|
|
in the effects chain. If there are more than one, which one it adjusts
|
|
is probably random.
|
|
.TP
|
|
\fBspectrogram \fR[\fIoptions\fR]
|
|
Create a spectrogram of the audio. The audio is passed unmodified
|
|
through the SoX processing chain. This effect is optional\*mtype
|
|
\fBsox_ng \-\-help\fR and check the list of supported effects to see if
|
|
it has been included.
|
|
.SP
|
|
The spectrogram is rendered in a Portable Network Graphic (PNG) file
|
|
and shows time in the X axis, frequency in the Y axis and audio
|
|
signal magnitude in the Z axis, represented by the
|
|
color (or optionally the intensity) of the pixels in the X-Y plane.
|
|
If the audio signal contains multiple channels, these are shown
|
|
from top to bottom starting from channel 1, which is the left channel
|
|
for stereo audio.
|
|
.SP
|
|
For example, if `my.wav' is a stereo file, then
|
|
.XE
|
|
sox_ng my.wav \-n spectrogram
|
|
.XX
|
|
creates a spectrogram of the entire file in the file
|
|
`spectrogram.png'. More often though, analysis of a smaller portion
|
|
of the audio is required; e.g. with
|
|
.XE
|
|
sox_ng my.wav \-n remix 2 trim 20 30 spectrogram
|
|
.XX
|
|
the spectrogram shows information only from the second (right)
|
|
channel of thirty seconds of audio starting from twenty seconds
|
|
in. To analyze a small portion of the frequency domain, the
|
|
.B rate
|
|
effect may be used, e.g.
|
|
.XE
|
|
sox_ng my.wav \-n rate 6k spectrogram
|
|
.XX
|
|
allows detailed analysis of frequencies up to 3kHz (half the sampling
|
|
rate) i.e. where the human auditory system is most sensitive.
|
|
See also the \fR\-R\fR option below. With
|
|
.XE
|
|
sox_ng my.wav \-n trim 0 10 spectrogram \-x 600 \-y 200 \-z 100
|
|
.XX
|
|
the given options control the size of the spectrogram's X, Y & Z axes
|
|
(in this case, the spectrogram area of the produced image will be 600
|
|
by 200 pixels in size and the Z axis range will be 100 dB). Note that
|
|
the produced image includes axes, legends etc. and will be larger than the
|
|
specified spectrogram size unless the \fB\-r\fR option is given:
|
|
if each spectrogram is \fIx\fR\ \(mu\ \fIy\fR and there are \fIc\fR channels,
|
|
the image will be
|
|
\fIx\fR\ \(pl\ 144 by (\fIy\fR\ \(mu\ \fIc\fR)\ \(pl\ 78,
|
|
plus \fIc\fR\ \(mi\ 1 if \fB\-a\fR was not given,
|
|
and 20 pixels higher than this if you gave \fB\-t\fR\ \fITitle\fR.
|
|
A raw spectrogram will be \fIx\fR\ by\ \fIy\fR\ \(mu\ \fIc\fR.
|
|
.SP
|
|
In this example
|
|
.XE
|
|
sox_ng \-n \-n synth 6 tri 10k:14k spectrogram \-z 100 \-w kaiser
|
|
.XX
|
|
an analysis window with high dynamic range is selected to best
|
|
display the spectrogram of a swept triangular wave. For a similar
|
|
example, append the following to the `chime' command in the
|
|
description of the
|
|
.B delay
|
|
effect (above):
|
|
.XE
|
|
rate 2k spectrogram \-X 200 \-Z \-10 \-w kaiser
|
|
.XX
|
|
Options are also available to control the appearance (color set,
|
|
brightness, contrast etc.) and filename of the spectrogram; e.g. with
|
|
.XE
|
|
sox_ng my.wav \-n spectrogram \-m \-l \-o print.png
|
|
.XX
|
|
a spectrogram is created suitable for printing on a black and white
|
|
printer.
|
|
.SP
|
|
.B Options
|
|
.RS
|
|
.IP \fB\-x\ \fInum\fR
|
|
Change the (maximum) width (X axis) of the spectrogram from its default
|
|
value of 800 pixels to a given number between 100 and a million.
|
|
See \fB\-X\fR and \fB\-d\fR.
|
|
.IP \fB\-X\ \fInum\fR
|
|
X axis pixels per second; the default is auto-calculated to fit the
|
|
audio to the X axis size if its duration is known or given with \fR\-d\fR,
|
|
or 100 otherwise.
|
|
If given without a \fB\-x\fR option when the length of the audio is known,
|
|
this option determines the width of the spectrogram;
|
|
otherwise, it affects the duration of the spectrogram.
|
|
.I num
|
|
can be from 1 (low time resolution) to 5000 (high time resolution)
|
|
and need not be an integer. SoX
|
|
may make a slight adjustment to the given number for processing
|
|
quantization reasons; if so, SoX reports the actual number used
|
|
(viewable when the SoX global option
|
|
.B \-V
|
|
is in effect).
|
|
.SP
|
|
Note that the number of sample frames per pixel column is an integer,
|
|
so graphs whose number of samples is not a multiple of the number of columns
|
|
may render shorter than the file or with funny time legends.
|
|
.IP \fB\-y\ \fInum\fR
|
|
Sets the size of the Y axis per channel in pixels; this is the number of
|
|
frequency `bins' used in the Fourier analysis that produces the spectrogram.
|
|
By default the Y axis size is chosen automatically, depending on the
|
|
\fB-Y\fR height and the number of channels, with a minimum of 64.
|
|
.SP
|
|
The DFT size is set to 2\ \(mu\ (\fInum\fR\ \(mi\ 1) and if SoX was compiled
|
|
with FFTW, sizes of
|
|
2^a\ \(mu\ 3^b\ \(mu\ 5^c\ \(mu\ 7^d\ \(mu\ 11^e\ \(mu\ 13^f
|
|
where e\ \(pl\ f\ <\ 2 are said to be fastest. If it wasn't,
|
|
anything other than powers of two is a hundred of times slower
|
|
in which case heights of a power of two plus one will be faster.
|
|
.IP \fB\-Y\ \fInum\fR
|
|
Sets the total height of the spectrogram(s). The default value
|
|
is 550 pixels and the maximum is a million.
|
|
If \fInum\fR is not an exact multiple of the number of channels with \fB\-r\fR,
|
|
the actual total height of the spectrogram area will be a few pixel rows less.
|
|
For non-raw spectrograms instead, the height of the graph area will be
|
|
slightly less for the same reason, slightly more for the single-pixel row
|
|
between adjacent channel graphs if \fB\-a\fR wasn't given, and the overall
|
|
height of the image will be greater by the time axes (28) and by the
|
|
title (20) if present.
|
|
.IP \fB\-z\ \fInum\fR
|
|
Z axis (color) range in dB, default 120. This sets the dynamic range
|
|
of the spectrogram to be \-\fInum\fR\ dBFS to 0\ dBFS.
|
|
.I Num
|
|
may range from 20 to 180. Decreasing dynamic range effectively
|
|
increases the contrast of the spectrogram display and vice versa.
|
|
.IP \fB\-Z\ \fInum\fR
|
|
Sets the upper limit of the Z axis in dBFS.
|
|
A negative
|
|
.I num
|
|
effectively increases the brightness of the spectrogram display
|
|
and vice versa.
|
|
.IP \fB\-n\fR
|
|
Normalizes the upper limit of the Z axis so that the loudest pixels
|
|
are shown using the brightest color in the palette\*ma kind of
|
|
automatic \fB\-Z\fR flag.
|
|
.IP \fB\-q\ \fInum\fR
|
|
Sets the Z axis quantization, i.e. the number of different colors (or
|
|
intensities) in which to render Z axis
|
|
values. A small number (e.g. 4) gives a poster-like effect making
|
|
it easier to discern magnitude bands of similar level and
|
|
results in a smaller PNG file. The number given specifies the number of
|
|
colors to use in the Z axis range; two colors are reserved to
|
|
represent out-of-range values.
|
|
.IP \fB\-w\ \fIname\fR
|
|
Select a window function: \fBHann\fR (the default), \fBHamming\fR, \fBBartlett\fR, \fBRectangular\fR, \fBKaiser\fR or \fBDolph\fR.
|
|
The spectrogram is produced using the Discrete Fourier Transform (DFT)
|
|
algorithm and a significant parameter of this algorithm is the choice of
|
|
window function. By default, SoX uses the Hann window, which has good
|
|
all-round properties for frequency resolution and dynamic range. For better
|
|
frequency resolution but lower dynamic range, select a Hamming window;
|
|
for higher dynamic range but poorer frequency resolution, select a
|
|
Dolph window.
|
|
.IP \fB\-W\ \fInum\fR
|
|
Window adjustment parameter. This can be used to make small
|
|
adjustments to the Kaiser and Dolph windows. A positive number (up to
|
|
ten) increases its dynamic range, a negative number decreases it.
|
|
.IP \fB\-s\fR
|
|
Allow slack overlapping of DFT windows.
|
|
This can, in some cases, increase image sharpness and give greater adherence
|
|
to the
|
|
.B \-x
|
|
value but at the expense of a little spectral loss.
|
|
.IP \fB\-a\fR
|
|
Suppress the display of the axis lines. This is sometimes useful in
|
|
helping to discern artefacts at the spectrogram edges.
|
|
.IP \fB\-r\fR
|
|
Raw spectrogram: suppress the display of axes and legends.
|
|
.IP \fB\-g\fR
|
|
When there are many seconds, show them as MM:SS or HH:MM:SS.
|
|
.IP \fB\-m\fR
|
|
Creates a monochrome spectrogram (the default is color).
|
|
.IP \fB\-h\fR
|
|
Selects a high-color palette which is less visually pleasing than the default
|
|
color palette but it may make it easier to differentiate different levels.
|
|
If this option is used in conjunction with
|
|
.BR \-m ,
|
|
the result is hybrid monochrome/color palette.
|
|
.IP \fB\-p\ \fInum\fR
|
|
Permute the colors in a color or hybrid palette.
|
|
The
|
|
.I num
|
|
parameter, from 1 (the default) to 6, selects the permutation.
|
|
.IP \fB\-l\fR
|
|
Creates a `printer-friendly' spectrogram with a light background (the
|
|
default has a dark background).
|
|
.IP \fB\-A\fR
|
|
Selects an alternative, fixed color set. This is provided only for
|
|
compatibility with spectrograms produced by another package. It should
|
|
not normally be used as it has some problems, not least, a lack of
|
|
differentiation at the bottom end which results in masking of low-level
|
|
artefacts.
|
|
.IP \fB\-t\ \fItext\fR
|
|
Set the image title, the text to display above the spectrogram.
|
|
If you need it to be `chorus' or some other effect's name,
|
|
surround it by spaces inside double quotes.
|
|
.IP \fB\-c\ \fItext\fR
|
|
Set (or clear) the image comment, the text to display below and to the
|
|
left of the spectrogram.
|
|
.IP \fB\-o\ \fIfile\fR
|
|
The name of the spectrogram output PNG file, default `spectrogram.png'.
|
|
If `-' is given, the spectrogram is sent to the `standard output'
|
|
(stdout).
|
|
.IP \fB\-L\fR
|
|
Plot the frequency on a logarithmic axis.
|
|
.IP \fB\-R\ \fIL\fR:\fIH\fR
|
|
Specify the frequency range (from \fIL\fR to \fIH\fR).
|
|
.SP
|
|
By default, the lowest frequency is 0Hz for a linear graph or
|
|
1Hz for a logarithmic graph and the highest is the Nyquist frequency;
|
|
if a single frequency is given with no colon, it sets the low frequency.
|
|
.IP \fB\-i\fR
|
|
Interpolate vertically: where there are more output pixels than
|
|
frequency bins, use a weighted average of the bins above and below
|
|
the pixel's frequency and where there are more frequency bins than
|
|
pixels, average the bins that fall in this pixel row.
|
|
.RE
|
|
.TP
|
|
\
|
|
.B Advanced Options
|
|
.br
|
|
In order to process a smaller section of audio without affecting other
|
|
effects or the output signal (unlike when the
|
|
.B trim
|
|
effect is used), the following options may be used:
|
|
.RS
|
|
.IP \fB\-d\ \fIduration\fR
|
|
This option sets the X axis resolution such that audio with the given
|
|
.I duration
|
|
(a time specification) fits the selected (or default) X axis width.
|
|
It defaults, if the audio length is known, to the audio length minus
|
|
the start time.
|
|
For
|
|
example,
|
|
.XE
|
|
sox_ng input.mp3 output.wav \-n spectrogram \-d 1:00 stats
|
|
.XX
|
|
creates a spectrogram showing the first minute of the audio, while
|
|
the
|
|
.B stats
|
|
effect is applied to the entire audio signal.
|
|
.SP
|
|
See
|
|
.B \-X
|
|
for an alternative way of setting the X axis resolution.
|
|
.IP \fB\-S\ \fIposition(=)\fR
|
|
Start the spectrogram at the given point in the audio stream. For
|
|
example
|
|
.XE
|
|
sox_ng input.aiff output.wav spectrogram \-S 1:00
|
|
.XX
|
|
creates a spectrogram showing all but the first minute of the audio
|
|
(the output file, however, receives the entire audio stream).
|
|
.RE
|
|
.TP
|
|
\
|
|
For the ability to perform off-line processing of spectral data, see
|
|
.BR "stat \-freq".
|
|
.TP
|
|
\fBspeed \fIfactor\fR[\fBc\fR]
|
|
Adjust the audio speed (pitch and tempo together). \fIfactor\fR
|
|
is either the ratio of the new speed to the old speed (greater
|
|
than 1 speeds it up, less than 1 slows it down) or, if the
|
|
letter
|
|
\fBc\fR is appended, it's the number of cents (100ths of a semitone)
|
|
by which the pitch (and tempo) should be adjusted: greater than 0
|
|
increases, less than 0 decreases.
|
|
.SP
|
|
Technically, the speed effect only changes the sample rate information,
|
|
leaving the samples themselves untouched. The \fBrate\fR effect is invoked
|
|
automatically to resample to the output sample rate, using its default
|
|
quality/speed. For higher quality or higher speed
|
|
resampling, in addition to the \fBspeed\fR effect, specify
|
|
the \fBrate\fR effect with the desired quality option.
|
|
.SP
|
|
See the \fBbend\fR, \fBpitch\fR
|
|
and
|
|
.B tempo
|
|
effects.
|
|
.TP
|
|
\fBspeexdsp \fR[\fB\-agc\fR [\fItarget_level\fR(100)]] [\fB\-denoise\fR [\fImax_db\fR(15)]] [\fB\-dereverb\fR]
|
|
[\fB\-fps\fR \fIframes_per_second\fR(20)] [\fB\-spf\fR \fIsamples_per_frame\fR]
|
|
.SP
|
|
Use the Speex DSP library to improve perceived sound quality.
|
|
.SP
|
|
If no options are specified, the \fB\-agc\fR and \fB\-denoise\fR features are enabled.
|
|
.RS
|
|
.IP \fB\-agc\ \fR[\fItarget_level\fR]
|
|
Enable automatic gain control and optionally specify
|
|
a target volume level from 1 to 100.
|
|
.IP \fB\-denoise\ \fR[\fImax_db\fR]
|
|
Enable noise reduction and optionally specify the maximum attenuation
|
|
from 1 to 100.
|
|
.IP \fB\-dereverb\fR
|
|
Enable reverb reduction.
|
|
.IP \fB\-fps\ \fIframes_per_second\fR
|
|
Specify the number of frames per second from 1-100.
|
|
.IP \fB\-spf\ \fIsamples_per_frame\fR
|
|
Specify the number of samples per frame.
|
|
The default is derived from the \fB\-fps\fR setting
|
|
so that frames abut but do not overlap.
|
|
.RE
|
|
.TP
|
|
\fBsplice \fR [\fB\-h\fR\^|\^\fBt\fR\^|\^\fBq\fR] {\fIposition(=)\fR[\fB,\fIexcess\fR[\fB,\fIleeway\fR]]}
|
|
Splice audio sections together. This effect provides two things over
|
|
simple audio concatenation: a (usually short) cross-fade is applied at
|
|
the join and a wave similarity comparison is made to help determine the
|
|
best place at which to make the join.
|
|
.SP
|
|
One of the options
|
|
.BR \-h ,
|
|
.BR \-t ,
|
|
or
|
|
.B \-q
|
|
may be given to select the fade envelope as half cosine wave (the default),
|
|
triangular (a.k.a. linear), or quarter cosine wave (e.g. for a cross-fade of
|
|
correlated audio).
|
|
.SP
|
|
.ne 4
|
|
.TS
|
|
center;
|
|
cI lI lI lI
|
|
cB l l l.
|
|
\ Audio Fade level Transitions
|
|
\-h correlated constant gain smooth
|
|
\-t correlated constant gain abrupt
|
|
\-q uncorrelated constant power smooth
|
|
.TE
|
|
.SP
|
|
To perform a splice, first use the
|
|
.B trim
|
|
effect to select the audio sections to be joined together. As when
|
|
performing a tape splice, the end of the section to be spliced onto
|
|
should be trimmed with a small
|
|
.I excess
|
|
(default 0\*d005 seconds) after the ideal joining point. The
|
|
beginning of the audio section to splice on should be trimmed with the
|
|
same
|
|
.IR excess
|
|
before the ideal joining point plus an additional
|
|
.I leeway
|
|
(default 0\*d005 seconds).
|
|
SoX should then be invoked with the two
|
|
audio sections as input files and the
|
|
.B splice
|
|
effect given with the position at which to perform the splice\*mthis is
|
|
length of the first audio section (including the excess).
|
|
.SP
|
|
The following diagram uses the tape analogy to illustrate the splice
|
|
operation. The effect simulates the diagonal cuts and joins the two pieces:
|
|
.ne 14
|
|
.XE
|
|
length1 excess
|
|
-----------><--->
|
|
_________ : : _________________
|
|
\\ : : :\\ `
|
|
\\ : : : \\ `
|
|
\\: : : \\ `
|
|
* : : * - - *
|
|
\\ : : :\\ `
|
|
\\ : : : \\ `
|
|
_______________\\: : : \\_____`____
|
|
: : : :
|
|
<---> <----->
|
|
excess leeway
|
|
.XX
|
|
where * indicates the joining points.
|
|
.SP
|
|
For example, a long song begins with two verses which start (as
|
|
determined e.g. by using the
|
|
.B play_ng
|
|
command with the
|
|
.B trim
|
|
(\fIstart\fR) effect) at times 0:30\*d125 and 1:03\*d432.
|
|
The following commands cut out the first verse:
|
|
.XE
|
|
sox_ng too-long.wav part1.wav trim 0 30.130
|
|
.XX
|
|
(5 ms excess, after the first verse starts)
|
|
.XE
|
|
sox_ng too-long.wav part2.wav trim 1:03.422
|
|
.XX
|
|
(5 ms excess plus 5 ms leeway, before the second verse starts)
|
|
.XE
|
|
sox_ng part1.wav part2.wav just-right.wav splice 30.130
|
|
.XX
|
|
For another example, the SoX command
|
|
.XE
|
|
play_ng "|sox_ng \-n \-p synth 1 sin %1" "|sox_ng \-n \-p synth 1 sin %3"
|
|
.XX
|
|
generates and plays two notes, but there is a nasty click at the
|
|
transition; the click can be removed by splicing instead of
|
|
concatenating the audio, i.e. by appending \fBsplice 1\fR to the
|
|
command. Clicks at the beginning and end of the audio can be removed by
|
|
\fIpreceding\fR the splice effect with \fBfade q .01 2 .01\fR.
|
|
.SP
|
|
Provided your arithmetic is good enough, multiple splices can be
|
|
performed with a single
|
|
.B splice
|
|
invocation. For example, with a Bourne shell script `acpo':
|
|
.XE
|
|
#! /bin/sh
|
|
# Audio Copy and Paste Over
|
|
# acpo infile copy-start copy-stop paste-over-start outfile
|
|
# No chained time specifications allowed for the parameters
|
|
# (i.e. such that contain +/\-).
|
|
e=0.005 # Using default excess
|
|
l=$e # and leeway.
|
|
sox_ng "$1" piece.wav trim $2\-$e\-$l =$3+$e
|
|
sox_ng "$1" part1.wav trim 0 $4+$e
|
|
sox_ng "$1" part2.wav trim $4+$3\-$2\-$e\-$l
|
|
sox_ng part1.wav piece.wav part2.wav "$5" \e
|
|
splice $4+$e +$3\-$2+$e+$l+$e
|
|
.XX
|
|
two splices are used to `copy and paste' audio.
|
|
.SP
|
|
It is also possible to use this effect to perform general cross-fades,
|
|
e.g. to join two songs. In this case,
|
|
.I excess
|
|
would typically be a number of seconds, the
|
|
.B \-q
|
|
option would typically be given to select an `equal power' cross-fade and
|
|
.I leeway
|
|
should be zero (which is the default if
|
|
.B \-q
|
|
is given). For example, if f1.wav and f2.wav are audio files
|
|
to be cross-faded, then
|
|
.XE
|
|
sox_ng f1.wav f2.wav out.wav splice \-q $(soxi_ng \-D f1.wav),3
|
|
.XX
|
|
cross-fades the files where the point of equal loudness is 3 seconds
|
|
before the end of f1.wav, i.e. the total length of the cross-fade is
|
|
2 \(mu 3 = 6 seconds (\f(CW$(...)\fR is POSIX shell notation that is replaced
|
|
by the output of the enclosed command).
|
|
.TP
|
|
\fBstat\fR [\fB\-s \fIscale\fR] [\fB\-rms\fR] [\fB\-freq\fR] [\fB\-v\fR] [\fB\-d\fR] [\fB\-a\fR] [\fB\-h\fR]
|
|
Display time and frequency domain statistical information about the audio.
|
|
Audio is passed unmodified through the SoX processing chain.
|
|
.SP
|
|
The information is output to the `standard error' (stderr) stream and is
|
|
calculated (where
|
|
.I n
|
|
is the duration of the audio in samples,
|
|
.I c
|
|
is the number of audio channels,
|
|
.I r
|
|
is the audio sample rate and
|
|
.I x\s-2\dk\u\s0
|
|
represents the value (in the range \-1 to +1) of each successive
|
|
sample in the audio),
|
|
as follows:
|
|
.SP
|
|
.TS
|
|
center;
|
|
lI lx.
|
|
Samples read \fIn\fR\^\(mu\^\fIc\fR
|
|
Length (seconds) \fIn\fR\^\(di\^\fIr\fR
|
|
Scaled by See \fB\-s\fR below.
|
|
Maximum amplitude T{
|
|
max(\fIx\s-2\dk\u\s0\fR)
|
|
The maximum sample value in the audio; usually this will be a positive number.
|
|
T}
|
|
Minimum amplitude T{
|
|
min(\fIx\s-2\dk\u\s0\fR)
|
|
The minimum sample value in the audio; usually this will be a negative number.
|
|
T}
|
|
Midline amplitude \(12\^min(\fIx\s-2\dk\u\s0\fR)\^+\^\(12\^max(\fIx\s-2\dk\u\s0\fR)
|
|
Mean norm T{
|
|
\(S1/\s-2n\s+2\^\(*S\^\^\(br\^\fIx\s-2\dk\u\s0\fR\^\(br\^
|
|
The average of the absolute value of each sample in the audio.
|
|
T}
|
|
Mean amplitude T{
|
|
\(S1/\s-2n\s+2\^\(*S\^\fIx\s-2\dk\u\s0\fR
|
|
The average of each sample in the audio.
|
|
If this figure is non-zero, then it indicates the
|
|
presence of a DC offset which could be removed using the
|
|
\fBdcshift\fR effect.
|
|
T}
|
|
RMS amplitude T{
|
|
\(sr(\(S1/\s-2n\s+2\^\(*S\^\fIx\s-2\dk\u\s0\fR\(S2)
|
|
The level of a DC signal that would have the same power
|
|
as the audio's average power.
|
|
T}
|
|
Maximum delta max(\^\(br\^\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR\^\(br\^)
|
|
Minimum delta min(\^\(br\^\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR\^\(br\^)
|
|
Mean delta \(S1/\s-2n\-1\s+2\^\(*S\^\^\(br\^\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR\^\(br
|
|
RMS delta \(sr(\(S1/\s-2n\-1\s+2\^\(*S\^(\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR)\(S2)
|
|
EBUR128 Momentary T{
|
|
The maximum momentary loudness over 400ms
|
|
T}
|
|
EBUR128 Short Term T{
|
|
The maximum short term loudness over 3 seconds
|
|
T}
|
|
EBUR128 Integrated T{
|
|
The integrated loudness over the whole file
|
|
T}
|
|
EBUR128 True Peak T{
|
|
The maximum of the True Peak of each channel
|
|
T}
|
|
Rough frequency In Hz.
|
|
Volume Adjustment T{
|
|
The parameter to the \fBvol\fR
|
|
effect which would make the audio as loud as possible without clipping.
|
|
See the discussion on \fBClipping\fR
|
|
above for reasons why it is rarely a good idea actually to do this.
|
|
T}
|
|
.TE
|
|
.SP
|
|
Note that the delta measurements are not applicable to multichannel audio
|
|
and EBU\ R\ 128 (=ITU-R\ BS.1770) measurements are in
|
|
Loudness Units referenced to Full Scale (LUFS),
|
|
.SP
|
|
The
|
|
.B \-s
|
|
option can be used to scale the input data by a given factor.
|
|
The default value of
|
|
.I scale
|
|
is 2147483647 (the maximum value of a 32-bit signed integer)
|
|
as internal effects always work with those.
|
|
A lower value means that a different sample value should be
|
|
considered as the full-scale amplitude.
|
|
.SP
|
|
The
|
|
.B \-rms
|
|
option converts all average values to `root mean square'
|
|
format.
|
|
.SP
|
|
The
|
|
.B \-freq
|
|
option outputs the input's power spectrum (a 4096-point DFT) instead of the
|
|
statistics listed above. This should only be used with a single-channel
|
|
audio file.
|
|
.SP
|
|
The
|
|
.B \-v
|
|
option displays only the `Volume Adjustment' value.
|
|
.SP
|
|
The
|
|
.B \-d
|
|
option
|
|
displays a hex dump of the 32-bit signed PCM data
|
|
audio in SoX's internal buffer.
|
|
This is mainly used to help track down endian problems that
|
|
sometimes occur in cross-platform versions of SoX.
|
|
.SP
|
|
The
|
|
.B \-a
|
|
option
|
|
outputs the average power spectrum instead of
|
|
the power spectrum for each 4096-point DFT.
|
|
.SP
|
|
The
|
|
.B \-h
|
|
option
|
|
uses the "histogram algorithm" to calculate the integrated EBU R-128 loudness,
|
|
which requires less memory but is less accurate.
|
|
.SP
|
|
The
|
|
.B \-j
|
|
option
|
|
outputs the statistics in JSON format, e.g.:
|
|
.XE
|
|
{
|
|
"samples_read": 22699008,
|
|
"length": 236.448,
|
|
"scaled_by": 2.14748e+09,
|
|
"maximum_amplitude": 0.818604,
|
|
"minimum_amplitude": -0.532471,
|
|
"midline_amplitude": 0.143066,
|
|
"mean_norm": 0.0352694,
|
|
"mean_amplitude": 0.00180676,
|
|
"rms_amplitude": 0.056726,
|
|
"maximum_delta": 0.367126,
|
|
"minimum_delta": 0,
|
|
"mean_delta": 0.0177341,
|
|
"rms_delta": 0.0268538,
|
|
"rough_frequency": 3616,
|
|
"volume_adjustment": 1.22159
|
|
}
|
|
.XX
|
|
If \fB\-rms\fR was given, \f(CW"scaled_by"\fR will be \f(CW"scaled_by_rms"\fR
|
|
and if \fB\-e\fR was given, you also get
|
|
.XE
|
|
"ebur128_momentary": -30.3408,
|
|
"ebur128_short_term": -35.4501,
|
|
"ebur128_integrated": -21.3583,
|
|
.XX
|
|
Some fields may be absent if their values are incalculable (EBUR128 figures)
|
|
or would be infinite (like the RMS of silence).
|
|
.SP
|
|
As JSON uses scientific notation, it can shows the values
|
|
of very small numbers that the usual output shows as zero.
|
|
.SP
|
|
The most common use of \fBstat\fR is to measure the characteristics
|
|
of a single audio file, for which the syntax is:
|
|
.XE
|
|
sox_ng file.wav -n stat
|
|
.XX
|
|
where \fB\-n\fR means "No audio output is required."
|
|
.TP
|
|
\fBstats\fR [\fB\-b \fIbits\fR\^|\^\fB\-x \fIbits\fR\^|\^\fB\-s \fIscale\fR] [\fB\-w \fItime\fR] [\fB\-j\fR]
|
|
Display time domain statistical information about the audio channels;
|
|
audio is passed unmodified through the SoX processing chain.
|
|
Statistics are calculated and displayed for each audio channel and,
|
|
where applicable, an overall figure is also given.
|
|
.SP
|
|
For example, for a typical well-mastered stereo music file:
|
|
.XE
|
|
Overall Left Right
|
|
DC offset 0.000803 \-0.000391 0.000803
|
|
Min level \-0.750977 \-0.750977 \-0.653412
|
|
Max level 0.708801 0.708801 0.653534
|
|
Pk lev dB \-2.49 \-2.49 \-3.69
|
|
RMS lev dB \-19.41 \-19.13 \-19.71
|
|
RMS Pk dB \-13.82 \-13.82 \-14.38
|
|
RMS Tr dB \-85.25 \-85.25 \-82.66
|
|
Crest factor \- 6.79 6.32
|
|
Flat factor 0.00 0.00 0.00
|
|
Pk count 2 2 2
|
|
Bit-depth 16/16 16/16 16/16
|
|
Num samples 7.72M
|
|
Length s 174.973
|
|
Scale max 1.000000
|
|
Window s 0.050
|
|
.XX
|
|
.IR DC\ offset ,
|
|
.IR Min\ level ,
|
|
and
|
|
.I Max\ level
|
|
are shown, by default, in the range \(+-1.
|
|
If the
|
|
.B \-b
|
|
(bits) options is given, these three measurements are scaled to a signed integer
|
|
with the given number of bits from 2 to 32.
|
|
For example, for 16 bits, the scale would be \-32768 to +32767.
|
|
The
|
|
.B \-x
|
|
option behaves the same way as
|
|
.B \-b
|
|
except that the signed integer values are displayed in hexadecimal.
|
|
The
|
|
.B \-s
|
|
option scales the three measurements by a given floating point number.
|
|
.SP
|
|
.I Pk\ lev\ dB
|
|
and
|
|
.I RMS\ lev\ dB
|
|
are the standard peak and RMS levels measured in dBFS.
|
|
.I RMS\ Pk\ dB
|
|
and
|
|
.I RMS\ Tr\ dB
|
|
are peak and trough values of the RMS level measured over a short window
|
|
(default: 50ms).
|
|
That can be changed with the \fB\-w\fP option in seconds from 0.01 to 10.
|
|
.SP
|
|
.I Crest\ factor
|
|
is the ratio of peak to RMS level (note: not in dB).
|
|
.SP
|
|
.I Flat\ factor
|
|
is a measure of the flatness (i.e. consecutive samples with the same value) of the signal at
|
|
its peak levels (i.e. either
|
|
.I Min\ level
|
|
or
|
|
.IR Max\ level ).
|
|
.SP
|
|
.I Pk\ count
|
|
is the number of occasions (not the number of samples) that the signal attained either
|
|
.IR Min\ level ,
|
|
or
|
|
.IR Max\ level .
|
|
The primary goal of the Peak Count value is to answer the question
|
|
"has this audio been clipped?", quite possibly as a result of the
|
|
frowned-upon-by-some but common practice of 'brick wall limiting'
|
|
in modern mastering. The closer the "Peak Count" is to 1,
|
|
the higher the confidence that the audio has not been clipped.
|
|
.SP
|
|
The right-hand
|
|
.I Bit-depth
|
|
figure is the standard definition of bit-depth, i.e. that all bits other than
|
|
this number of the most significant bits are always zero.
|
|
The left-hand figure is the number of bits at the least significant end
|
|
of those most significant bits that would be sufficient
|
|
to represent all sample values accurately (including the sign bit).
|
|
.SP
|
|
In mathematical terms, the right-hand figure is the ordinal,
|
|
counting from the most significant bit,
|
|
of the least significant bit that is set to one in at least one sample.
|
|
The left-hand figure is the ordinal,
|
|
counting from the least significant repeated sign bit across all samples,
|
|
of the least significant bit that is set to one in at least one sample.
|
|
.SP
|
|
Bit-depths are not intended to be properties of the signal per se
|
|
but properties of its 2's-complement PCM encoding.
|
|
.SP
|
|
The primary use case of bit-depth measurement concerns manipulation of
|
|
PCM audio by simple bit shifting, to answer questions such as:
|
|
"Is it likely that this 24-bit PCM file was created
|
|
by simply converting a 16-bit PCM file to 24-bit?" or
|
|
"Can I losslessly shift all the samples in this PCM audio file
|
|
m-bits left or n-bits right?"
|
|
.SP
|
|
For multichannel audio, an overall figure for each of the above
|
|
measurements is given and derived from the channel figures as follows:
|
|
.IR DC\ offset :
|
|
maximum magnitude;
|
|
.IR Max\ level ,
|
|
.IR Pk\ lev\ dB ,
|
|
.IR RMS\ Pk\ dB ,
|
|
.IR Bit-depth :
|
|
maximum;
|
|
.IR Min\ level ,
|
|
.IR RMS\ Tr\ dB :
|
|
minimum;
|
|
.IR RMS\ lev\ dB ,
|
|
.IR Flat\ factor ,
|
|
.IR Pk\ count :
|
|
average;
|
|
.IR Crest\ factor :
|
|
not applicable.
|
|
.SP
|
|
.I Length\ s
|
|
is the duration in seconds of the audio and, unlike \fBstat\fP,
|
|
.I Num\ samples
|
|
is equal to the sample rate multiplied by
|
|
.IR Length .
|
|
.I Scale\ max
|
|
is the scaling applied to the first three measurements;
|
|
specifically, it is the maximum value that could apply to
|
|
.IR Max\ level .
|
|
.I Window\ s
|
|
is the length of the window used for the peak and trough RMS measurements.
|
|
.SP
|
|
The \fB\-j\fR option outputs JSON with three fields:
|
|
.RS
|
|
.TP
|
|
\f(CW"channel_count"\fR
|
|
An integer.
|
|
.TP
|
|
\f(CW"overall"\fR
|
|
An object with a member for each row of the first column of the usual output,
|
|
which are all numbers except for \f(CW"bit_depth"\fR, which is an array of two numbers.
|
|
.TP
|
|
\f(CW"channels"\fR
|
|
An array of objects with the per-channel values.
|
|
.RE
|
|
To know the overall and the channels' member names,
|
|
have a look at the output.
|
|
.SP
|
|
Like \fBstat\fR, the usual way to measure the characteristics
|
|
of a single audio file is:
|
|
.XE
|
|
sox_ng file.wav -n stats
|
|
.XX
|
|
.TP
|
|
\fBstretch [\fIfactor\fR [\fIwindow \fR[\fIfade \fR[\fIshift \fR[\fIfading\fR]]]]]
|
|
Change the audio duration but not its pitch by cross-fading between
|
|
short windows of samples.
|
|
This effect is broadly equivalent to the
|
|
.B tempo
|
|
effect with \fIfactor\fR inverted and
|
|
.I search
|
|
set to zero so, in general, its results are comparatively poor;
|
|
it is retained as it can sometimes outperform
|
|
.B tempo
|
|
for small
|
|
.IR factor s.
|
|
.SP
|
|
.I factor
|
|
determines the change in length: >1 lengthens and <1 shortens.
|
|
By default, it is 1 (no change)
|
|
.SP
|
|
.I window
|
|
is the length of the cross-fading window in milliseconds with a default of 20.
|
|
.SP
|
|
The
|
|
.I fade
|
|
option chooses the type of crossfading:
|
|
\fBlinear\fR and \fBhalf-cosine\fR give equal-gain crossfading and cannot clip;
|
|
\fBsqrt\fR and \fBquarter-cosine\fR give two kinds of equal-power crossfading.
|
|
.SP
|
|
The
|
|
.I shift
|
|
ratio can be from 0 to 1 and its default depends on the stretch factor:
|
|
1 when speeding up, 0\*d8 when slowing down.
|
|
.SP
|
|
The
|
|
.I fading
|
|
ratio, from 0 to 0\*d5, seems to be how much of each window is cross-faded
|
|
with the adjacent ones.
|
|
The default value depends on \fIfactor\fR and \fIshift\fR:
|
|
1\*d0\ \(mi\ (\fIfactor\fR\ \(mu\ \fIshift\fR) if speeding up,
|
|
1\*d0\ \(mi\ \fIshift\fR if slowing down, with a maximum of 0\*d5.
|
|
.SP
|
|
The duration of \fBstretch\fR's output is slightly longer than
|
|
the duration of the input multiplied by \fIfactor\fR as it has to empty
|
|
the delay line it uses; \fBtempo\fR is more precise.
|
|
.TP
|
|
\fBswap\fR
|
|
Swap stereo channels. If the input is not stereo, pairs of channels are
|
|
swapped and a possible odd last channel is passed through. E.g., for seven
|
|
channels, the output order will be 2, 1, 4, 3, 6, 5, 7.
|
|
.SP
|
|
See
|
|
.B remix
|
|
for an effect that allows arbitrary channel selection, ordering and mixing.
|
|
.nh
|
|
.na
|
|
.TP
|
|
\fBsynth\fR [\fB\-j\^\fR\^|\^\fBp \fIkey\fR] [\fB\-n\fR] \:[\fIlength\fR [\fIoffset\fR [\fIphase\fR [\fIp1\fR [\fIp2\fR [\fIp3\fR]]]]]] \:{\fItype\fR [\fIcombine\fR [\fIfixed\fR[\fB,\fIextra\fR[\fB,\fImix\fR]]]] \:[\fIfreq\fR[\fB:\fR\^|\^\fB+\fR\^|\^\fB/\fR\^|\^\fB\-\fIfreq2\fR] \:[\fIoffset\fR \:[\fIphase\fR \:[\fIp1\fR [\fIp2\fR [\fIp3\fR]]]]]]}
|
|
.ad
|
|
.hy
|
|
.SP
|
|
\fBsynth\fR generates fixed or swept frequency audio tones
|
|
with various wave shapes and wide-band noise of various colors.
|
|
Multiple synth effects can be cascaded to produce more complex
|
|
waveforms and at each stage it is possible to choose whether the generated
|
|
waveform is mixed with or modulated onto the output of the previous stage, and
|
|
the audio for each channel in a multichannel audio file can be synthesized
|
|
independently.
|
|
.SP
|
|
It generates audio at maximum volume (0dBFS), which means that there
|
|
is a high chance of clipping so,
|
|
in many cases, you will want to follow it with the \fBgain\fR
|
|
effect to prevent this from happening. (See
|
|
.B Clipping
|
|
above.)
|
|
.SP
|
|
Though this effect is used to generate audio, an input file must still
|
|
be given, the characteristics of which are used to set the
|
|
synthesized audio length, the number of channels and the sampling rate.
|
|
However, since the input file's audio is not normally needed, a `null
|
|
file' (with the special input filename \fB\-n\fR) is often given instead
|
|
and the length specified as a parameter to \fBsynth\fR or by some other
|
|
effect that has an associated length.
|
|
.SP
|
|
By default, the tuning used
|
|
with note notations is equal temperament; the
|
|
.B \-j
|
|
.I key
|
|
option selects just intonation, where
|
|
.I key
|
|
is a whole number of semitones relative to A (so for example, \-9
|
|
or 3 selects the key of C) or a note in scientific notation and
|
|
.B \-p
|
|
selects Pythagorean tuning.
|
|
.SP
|
|
By default, the
|
|
.B synth
|
|
effect incorporates the functionality of \fBgain \-h\fR (see the
|
|
.B gain
|
|
effect for details);
|
|
.BR synth 's
|
|
.B \-n
|
|
option may be given to disable this behavior.
|
|
.SP
|
|
\fIlength\fR is the length of audio to synthesize.
|
|
A value of 0 indicated to use the input length, which is also the default.
|
|
Note that, if the input is \fB\-n\fR and the \fIlength\fR is 0 or absent,
|
|
it continues generating audio until it is stopped in some other way.
|
|
.SP
|
|
\fItype\fR is one of
|
|
.RS
|
|
.TP
|
|
.B sine
|
|
A sinusoidal wave is the default type and ignores all the \fIp\fR parameters.
|
|
.TP
|
|
.B square
|
|
A square wave.
|
|
\fIp1\fR sets the percentage of each cycle that is `on' with a default of 50.
|
|
.XE
|
|
.ne 7
|
|
|_______ | +1
|
|
| | |
|
|
|_______|_______| 0
|
|
| | |
|
|
| |_______| -1
|
|
| |
|
|
0 p1 1
|
|
.XX
|
|
.TP
|
|
.B triangle
|
|
\fIp1\fR sets the percentage of each cycle that is `rising' with a default of 50.
|
|
.XE
|
|
.ne 7
|
|
| . | +1
|
|
| / \e |
|
|
|__/___\e__| 0
|
|
| / \e |
|
|
|/ \e| -1
|
|
| |
|
|
0 p1 1
|
|
.XX
|
|
.TP
|
|
.B sawtooth
|
|
A sawtooth wave. With a \fIphase\fR of 0 it starts at -1 and rises to 1,
|
|
and of 10 it starts at -0.9.
|
|
The offset makes no difference.
|
|
.XE
|
|
.ne 7
|
|
| /| +1
|
|
| / |
|
|
|__/__| 0
|
|
| / |
|
|
|/ | -1
|
|
0 1
|
|
.XX
|
|
.TP
|
|
.B trapezium
|
|
The trapezoidal wave starts at -1, rises linearly to 1, stays there,
|
|
falls linearly to -1, stays there and repeats.
|
|
\fIp1\fR sets the percentage of the cycle in which the wave is rising
|
|
with a default of 10,
|
|
\fIp2\fR sets the percentage through each cycle at which falling begins
|
|
with a default of 50 and
|
|
\fIp3\fR sets the percentage through each cycle at which falling ends
|
|
with a default of 60.
|
|
.XE
|
|
.ne 7
|
|
| ______ |+1
|
|
| / \e |
|
|
|__/________\e___________| 0
|
|
| / \e |
|
|
|/ \e_________|-1
|
|
| |
|
|
0 p1 p2 p3 1
|
|
.XX
|
|
.TP
|
|
.B exp
|
|
The exponential wave rises from -1 to 1 where it peaks and immediately
|
|
begins an exponential fall.
|
|
\fIp1\fR sets the position of the maximum with a default of 50.
|
|
\fIp2\fR sets the minimum amplitude in multiples of 2dB down from the maximum
|
|
with a default of 50 (100dB);
|
|
values below 50 raise the shoulders of the wave and values above 50
|
|
lower the shoulders, increasing the pointedness of the spike.
|
|
.XE
|
|
.ne 7
|
|
| | +1
|
|
| /\e |
|
|
| _' `_ | 0
|
|
| _- -_ |
|
|
|____---' `---____ | f(p2)
|
|
| |
|
|
0 p1 1
|
|
.XX
|
|
.TP
|
|
.B whitenoise
|
|
Random noise with equal power at every frequency.
|
|
All noise generators ignore the \fIfrequency\fR and \fIphase\fR parameters
|
|
but if a DC offset is given, the signal's amplitude is automatically adjusted
|
|
to prevent clipping so, for noise in the range 0 to 1, an offset of 0.5 would
|
|
give a signal ranging from 0\*d0 to 1\*d0 and -0.9 from -1.0 to -0.8
|
|
.SP
|
|
\fBnoise\fR is a handy alias for \fBwhitenoise\fR
|
|
.TP
|
|
.B tpdfnoise
|
|
Noise with a Triangular Probability Density Function.
|
|
.TP
|
|
.B pinknoise
|
|
Random noise with the power at each frequency inversely proportional to the frequency.
|
|
.TP
|
|
.B brownnoise
|
|
Random noise with the power at each frequency inversely proportional to the frequency squared.
|
|
.TP
|
|
.B pluck
|
|
A plucked string simulation in which an array of sample values
|
|
representing a taut string
|
|
is set in motion with a burst of noise and decayed over time.
|
|
.SP
|
|
A plucked note's \fIfrequency\fR can be from 27.5 to 4220Hz
|
|
and the sampling rate must be between 44100 and 48000Hz.
|
|
.SP
|
|
If a DC \fIoffset\fR is used, the amplitude is automatically adjusted
|
|
to prevent clipping.
|
|
.SP
|
|
\fIp1\fR affects the sustain with a default of 40 (2dB per second);
|
|
higher values give a slower decay and lower values a faster one.
|
|
.SP
|
|
\fIp2\fR and \fIp3\fR are tone controls for the initial excitation,
|
|
with default values of 20 and 90
|
|
and a special case when \fIp3\fR is exactly 100.
|
|
If the \fIphase\fR is non-zero, it uses a different kind of random numbers.
|
|
.RE
|
|
.TP
|
|
\
|
|
If the \fIoffset\fR, \fIphase\fR and \fIp\fR parameters are given
|
|
before the first \fItype\fR,
|
|
they set the default values for all the following stages.
|
|
.SP
|
|
\fIcombine\fR is one of
|
|
.RS
|
|
.TP
|
|
.B create
|
|
Puts each stage's output in a new output channel and is the default:
|
|
.TP
|
|
.B mix
|
|
Mixes the generated audio 50:50 with the input signal.
|
|
.TP
|
|
.B amod
|
|
Amplitude-modulates (multiplies) the input signal by the synthesized one
|
|
considered as a value from 0 (for the most negative value)
|
|
to 1 (for the most positive value).
|
|
.TP
|
|
.B fmod
|
|
Multiplies the input signal with the synthesized one (ring modulation).
|
|
.TP
|
|
.B vdelay
|
|
Mixes the input signal with a delayed version of it
|
|
using the synthesized signal to modulate the depth of the delay.
|
|
The following three-part option \fIfixed\fR[,\fIextra\fR[,\fImix\fR]] specifies
|
|
the fixed and additional parts of the delay in milliseconds
|
|
and what percentage of the output consists of the delayed signal
|
|
from 0 for all input signal to 100 for all delayed signal
|
|
with a default of 50 (half and half).
|
|
.SP
|
|
The synthesized signal's value from \-1 to +1 varies the delay
|
|
from \fIfixed\fR seconds to \fIfixed\fR\ +\ (0\ to\ \fIextra\fR) seconds.
|
|
.SP
|
|
It interpolates linearly between the input samples and can be used
|
|
to make precision phaser, flanger and chorus-like effects, vibrato
|
|
and frequency modulation (FM) synthesis (actually phase modulation,
|
|
as used in the Yamaha DX7).
|
|
.SP
|
|
.ne 2
|
|
A chorus-like effect:
|
|
.XE
|
|
sox_ng solo.au -d synth sine vdelay 50,2,50 .25 0 75
|
|
.XX
|
|
.ne 2
|
|
A flanger:
|
|
.XE
|
|
sox_ng solo.au -d synth triangle vdelay 0,2,41.52 0.5 0 0
|
|
.XX
|
|
.RE
|
|
.TP
|
|
\
|
|
\fIfreq\fR and \fIfreq2\fR are the frequencies at the beginning and end
|
|
of the synthesis and the default frequency is 440Hz.
|
|
.SP
|
|
If
|
|
.I freq2
|
|
is given,
|
|
.I length
|
|
must also have been given and the generated tone is swept between
|
|
the given frequencies. The two given frequencies must be separated by
|
|
one of the characters `:', `+', `/' and `\-', which
|
|
specify the sweep function as follows:
|
|
.RS
|
|
.IP \fB:\fR
|
|
Linear: the tone changes by a fixed number of hertz per second.
|
|
.IP \fB+\fR
|
|
Square: a second-order function is used to change the tone.
|
|
.IP \fB/\fR
|
|
Exponential: the tone changes by a fixed number of semitones per second.
|
|
.IP \fB\-\fR
|
|
Exponential: as `/', but the initial phase is always zero, and with stepped
|
|
(less smooth) frequency changes.
|
|
.RE
|
|
.TP
|
|
\
|
|
The frequency or frequency range is not used for the noise types.
|
|
.SP
|
|
\fIoffset\fR is the bias (DC offset) of the signal in percent; default=0.
|
|
.SP
|
|
\fIphase\fR is the phase shift as a percentage of 1 cycle with a default of 0
|
|
(not used for noise).
|
|
.SP
|
|
For example, the following produces a 3-second 48kHz
|
|
audio file containing a sine wave swept from 300 to 3300Hz:
|
|
.XE
|
|
sox_ng \-n output.wav synth 3 sine 300\-3300
|
|
.XX
|
|
Multiple channels can be synthesized by specifying the set of
|
|
parameters shown between curly braces multiple times;
|
|
the following puts the swept tone in the left channel and brown
|
|
noise in the right:
|
|
.XE
|
|
sox_ng \-n output.wav synth 3 sine 300\-3300 brownnoise
|
|
.XX
|
|
The following example shows how two synth effects can be cascaded
|
|
to create a more complex waveform:
|
|
.XE
|
|
.ne 2
|
|
play_ng \-n synth 0.5 sine 200\-500 synth 0.5 sine fmod 700\-100
|
|
.XX
|
|
The following could be used to help tune a guitar:
|
|
.XE
|
|
.ne 2
|
|
for n in E2 A2 D3 G3 B3 E4; do
|
|
play_ng \-n synth 4 pluck $n repeat 2; done
|
|
.XX
|
|
.nh
|
|
.\" Otherwise it may hyphenate overlap
|
|
.TP
|
|
\fBtempo \fR[\fB\-q\fR] [\fB\-m\fR\^|\^\fBs\fR\^|\^\fBl\fR] \fIfactor\fR [\fIsegment\fR(82) [\fIsearch\fR(14.68) [\fIoverlap\fR(12)]]]
|
|
.hy
|
|
Change the audio playback speed but not its pitch. This effect uses the
|
|
WSOLA (Waveform Similarity OverLap and Add) algorithm.
|
|
The audio is chopped up into segments which are then
|
|
shifted in the time domain and overlapped (cross-faded) at points where
|
|
their waveforms are most similar as determined by the measurement of `least
|
|
squares'.
|
|
.SP
|
|
By default, linear searches are used to find the best overlapping
|
|
points. If the optional
|
|
.B \-q
|
|
parameter is given, tree searches are used instead. This makes the effect
|
|
work more quickly, but the result may not sound as good. However, if you
|
|
must improve the processing speed, this generally reduces the sound quality
|
|
less than reducing the \fIsearch\fR or \fIoverlap\fR values.
|
|
.SP
|
|
The
|
|
.B \-m
|
|
option is used to optimize the default values of \fIsegment\fR, \fIsearch\fR and
|
|
\fIoverlap\fR for music processing.
|
|
.SP
|
|
The
|
|
.B \-s
|
|
option is used to optimize default values of \fIsegment\fR, \fIsearch\fR and
|
|
\fIoverlap\fR for speech processing.
|
|
.SP
|
|
The
|
|
.B \-l
|
|
option is used to optimize default values of \fIsegment\fR, \fIsearch\fR and
|
|
\fIoverlap\fR for `linear' processing that tends to cause more
|
|
noticeable distortion but may be useful when \fIfactor\fR is close to 1.
|
|
.SP
|
|
If \fB\-m\fR, \fB\-s\fR or \fB\-l\fR is specified,
|
|
the default value of \fIsegment\fR is based on \fIfactor\fR,
|
|
while default \fIsearch\fR and \fIoverlap\fR values are based on \fIsegment\fR.
|
|
Any values you provide override these default values.
|
|
.SP
|
|
.I factor
|
|
gives the ratio of new tempo to the old tempo, so 1.1 speeds the
|
|
tempo up by 10% and 0.9 slows it down by 10%.
|
|
.SP
|
|
The optional
|
|
.I segment
|
|
parameter selects the algorithm's segment size in milliseconds. If no other
|
|
flags are specified, the default value is 82, which is suited to
|
|
small changes in the tempo of music. For larger changes (e.g. a factor
|
|
of 2), 41 may give a better result.
|
|
The \fB\-m\fR, \fB\-s\fR, and \fB\-l\fR flags cause \fIsegment\fR's
|
|
default value to be adjusted automatically based on \fIfactor\fR.
|
|
.SP
|
|
The optional
|
|
.I search
|
|
parameter gives the audio length in milliseconds over which
|
|
the algorithm searches for overlapping points. If no other
|
|
flags are specified, the default value is 14.68. Larger values use
|
|
more processing time and may or may not produce better results.
|
|
A practical maximum is half the value of \fIsegment\fR. Search
|
|
can be reduced to cut processing time at the risk of degrading output
|
|
quality. The \fB\-m\fR, \fB\-s\fR and \fB\-l\fR flags cause
|
|
the search default to be adjusted automatically based on \fIsegment\fR.
|
|
.SP
|
|
The optional
|
|
.I overlap
|
|
parameter gives the segment overlap length in milliseconds.
|
|
Its default value is 12 but the \fB\-m\fR, \fB\-s\fR and \fB\-l\fR flags
|
|
automatically adjust it based on the segment size.
|
|
Increasing \fIoverlap\fR increases processing time but may increase quality.
|
|
A practical maximum for \fIoverlap\fR is a little less then \fIsearch\fR.
|
|
.SP
|
|
Note that lowering the tempo increases the sample rate and this can
|
|
make following effects slower, in particular \fBtempo\fR or \fBpitch\fR
|
|
themselves, whose running times are proportional to the sample rate times
|
|
the overlap, all squared.
|
|
This can be compensated for by following \fBtempo\fR with
|
|
a fast \fBrate\fR effect.
|
|
.SP
|
|
See \fBspeed\fR for an effect that changes tempo and pitch together,
|
|
\fBpitch\fR and \fBbend\fR for effects that change pitch only and
|
|
\fBstretch\fR for an effect that changes the tempo using a different algorithm.
|
|
.TP
|
|
\fBtreble \fIgain\fR [\fIfrequency\fR [\fIwidth\fR[\fBs\fR\^|\^\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]]
|
|
Apply a treble tone control effect.
|
|
See the description of the \fBbass\fR effect for details.
|
|
.TP
|
|
\fBtremolo \fIspeed\fR [\fIdepth\fR]
|
|
Apply a tremolo (low frequency sinusoidal amplitude modulation)
|
|
effect to the audio.
|
|
The frequency of the tremolo in Hz is given by \fIspeed\fR
|
|
and its \fIdepth\fR is a percentage with a default of 40.
|
|
.TP
|
|
\fBtrim\fR {\fIposition(+)\fR}
|
|
Cuts out portions of the audio. Any number of \fIposition\fRs may be
|
|
given; audio is not sent to the output until the first \fIposition\fR
|
|
is reached. The effect then alternates between copying and discarding
|
|
audio at each \fIposition\fR. Using a value of 0 for the first \fIposition\fR
|
|
parameter allows copying from the beginning of the audio.
|
|
.SP
|
|
For example,
|
|
.XE
|
|
sox_ng in.au out.au trim 0 10
|
|
.XX
|
|
copies the first ten seconds, while
|
|
.XE
|
|
play_ng in.au trim 12:34 =15:00 -2:00
|
|
.XX
|
|
and
|
|
.XE
|
|
play_ng in.au trim 12:34 2:26 -2:00
|
|
.XX
|
|
both play from 12 minutes 34 seconds into the audio up to 15 minutes in
|
|
(i.e. 2 minutes and 26 seconds long) then resume playing two
|
|
minutes before the end.
|
|
.SP
|
|
SoX has an internal speed hack which, when \fBtrim\fR is the first effect
|
|
and removes audio from the beginning, seeks in the audio file instead of
|
|
decoding it and throwing the data away but this is only used when
|
|
the input is a single file. To achieve fast gapless playing with
|
|
multiple files and trimming the first, you can use something like:
|
|
.XE
|
|
FMT='-t s32 -r 44100 -c2'
|
|
(sox file1.mp3 $FMT - trim 30 && sox file2.mp3 $FMT -) | play $FMT -
|
|
.XX
|
|
.TP
|
|
\fBupsample\fR [\fIfactor(2)\fR]
|
|
Upsample the signal by an integer factor: \fIfactor\fR\-1 zero-valued
|
|
samples are inserted between each pair of input samples. As a result,
|
|
the original spectrum is replicated into the new frequency space and
|
|
attenuated. This attenuation can be compensated for by adding
|
|
\fBvol\ \fIfactor\fR.
|
|
The \fBupsample\fR effect is typically used in combination with filtering effects.
|
|
.SP
|
|
For a general resampling effect with antialiasing, see \fBrate\fR.
|
|
See \fBdownsample\fR.
|
|
.TP
|
|
\fBvad \fR[\fIoptions\fR]
|
|
The Voice Activity Detector attempts to trim silence and quiet
|
|
background sounds from the ends of (fairly high resolution
|
|
i.e. 16-bit, 44\-48kHz) recordings of speech. The algorithm currently
|
|
uses a simple cepstral power measurement to detect voice, so may be
|
|
fooled by other things, especially music. The effect can trim only
|
|
from the front of the audio, so in order to trim from the back, the
|
|
.B reverse
|
|
effect must also be used. E.g.
|
|
.XE
|
|
play_ng speech.wav norm vad
|
|
.XX
|
|
to trim from the front,
|
|
.XE
|
|
play_ng speech.wav norm reverse vad reverse
|
|
.XX
|
|
to trim from the back and
|
|
.XE
|
|
play_ng speech.wav norm vad reverse vad reverse
|
|
.XX
|
|
to trim from both ends. The use of the
|
|
.B norm
|
|
effect is recommended, but remember that neither
|
|
.B reverse
|
|
nor
|
|
.B norm
|
|
is suitable for use with streamed audio.
|
|
.TP
|
|
\
|
|
.B Options
|
|
.br
|
|
Default values are shown in parentheses, the allowed range in square brackets.
|
|
.RS
|
|
.IP "\fB\-t\ \fInum\fR (7) [0 \- 20]"
|
|
The measurement level used to trigger activity detection. This might
|
|
need to be changed depending on the noise level, signal level and
|
|
other characteristics of the input audio.
|
|
.IP "\fB\-T \fInum\fR (0.25) [0.01 \- 1]"
|
|
The time constant (in seconds) used to help ignore short bursts of
|
|
sound.
|
|
.IP "\fB\-s \fInum\fR (1) [0.1 \- 4]"
|
|
The amount of audio (in seconds) to search for quieter/shorter bursts
|
|
of audio to include prior to the detected trigger point.
|
|
.IP "\fB\-g \fInum\fR (0.25) [0.1 \- 1]"
|
|
Allowed gap (in seconds) between quieter/shorter bursts of audio to
|
|
include prior to the detected trigger point.
|
|
.IP "\fB\-p \fInum\fR (0) [0 \- 4]"
|
|
The amount of audio (in seconds) to preserve before the trigger point
|
|
and any found quieter/shorter bursts.
|
|
.RE
|
|
.SP
|
|
There are keymaps on \fItrigger_level\fR, \fItrigger_time\fR and \fIgap\fR.
|
|
.TP
|
|
\
|
|
.B Advanced Options
|
|
.br
|
|
These allow fine tuning of the algorithm's internal parameters.
|
|
.RS
|
|
.IP "\fB\-b \fInum\fR (0.35) [0.1 \- 10]"
|
|
The algorithm uses adaptive noise estimation/reduction in
|
|
order to detect the start of the wanted audio.
|
|
This option sets the time in seconds for the initial noise estimate.
|
|
.IP "\fB\-N \fInum\fR (0.1) [0.1 \- 10]"
|
|
Time constant used by the adaptive noise estimator when the noise
|
|
level is increasing.
|
|
.IP "\fB\-n \fInum\fR (0.01) [0.001 \- 0.1]"
|
|
Time constant used by the adaptive noise estimator when the noise
|
|
level is decreasing.
|
|
.IP "\fB\-r \fInum\fR (1.35) [0 \- 2]"
|
|
Amount of noise reduction to use in the detection algorithm.
|
|
.IP "\fB\-f \fInum\fR (20) [5 \- 50]"
|
|
Frequency of the algorithm's processing/measurements.
|
|
.IP "\fB\-m \fInum\fR (0.1) [0.01 \- 1]"
|
|
Measurement duration. By default, it is twice the measurement period;
|
|
i.e. with 50% overlap, but if you set \fB-f\fR,
|
|
you also need to change \fB\-m\fR to 2 divided by its value
|
|
to keep a 50% overlap.
|
|
.IP "\fB\-M \fInum\fR (0.4) [0-1 \- 1]"
|
|
Time constant used to smooth spectral measurements.
|
|
.IP "\fB\-h \fIfreq\fR (50) [10 \-\^]"
|
|
`Brick-wall' frequency of the high-pass filter applied at the
|
|
detector algorithm's input.
|
|
.IP "\fB\-l \fIfreq\fR (6000) [1000 \-\^]"
|
|
`Brick-wall' frequency of the low-pass filter applied at the
|
|
detector algorithm's input.
|
|
.IP "\fB\-H \fIfreq\fR (150) [10 \-\^]"
|
|
`Brick-wall' frequency of the high-pass lifter used in the detector algorithm.
|
|
.IP "\fB\-L \fIfreq\fR (2000) [1000 \-\^]"
|
|
`Brick-wall' frequency of the low-pass lifter used in the detector algorithm.
|
|
.RE
|
|
.TP
|
|
\
|
|
See the
|
|
.B silence
|
|
effect.
|
|
.TP
|
|
\fBvol \fIgain\fR [\fItype\fR [\fIlimiter\-gain\fR]]
|
|
Apply amplification or attenuation to the audio signal.
|
|
Unlike
|
|
.BR \-v ,
|
|
which is used for balancing multiple input files as they enter the
|
|
SoX effects processing chain,
|
|
.B vol
|
|
is an effect like any other so can be applied anywhere in the processing chain
|
|
and several times if necessary.
|
|
.SP
|
|
The amount to change the volume is given by
|
|
.I gain
|
|
which is interpreted, according to the given \fItype\fR, as follows: if
|
|
.I type
|
|
is \fBamplitude\fR (or is omitted),
|
|
.I gain
|
|
is an amplitude ratio (voltage or linear),
|
|
if \fBpower\fR, a power ratio (wattage or voltage squared)
|
|
and if \fBdB\fR, a power change in dB.
|
|
.SP
|
|
When
|
|
.I type
|
|
is \fBamplitude\fR or \fBpower\fR, a
|
|
.I gain
|
|
of 1 leaves the volume unchanged,
|
|
less than 1 decreases it,
|
|
and greater than 1 increases it;
|
|
a negative
|
|
.I gain
|
|
inverts the audio signal in addition to adjusting its volume.
|
|
.SP
|
|
When
|
|
.I type
|
|
is \fBdB\fR, a
|
|
.I gain
|
|
of 0 leaves the volume unchanged,
|
|
less than 0 decreases it
|
|
and greater than 0 increases it.
|
|
.SP
|
|
See [4]
|
|
for a detailed discussion on electrical (and hence audio signal)
|
|
voltage and power ratios.
|
|
.SP
|
|
Beware of
|
|
.B Clipping
|
|
when the increasing the volume.
|
|
.SP
|
|
The
|
|
.I gain
|
|
and the
|
|
.I type
|
|
parameters can be concatenated if desired, e.g.
|
|
.BR "vol 10dB" .
|
|
.SP
|
|
An optional \fIlimiter\-gain\fR value can be specified and should be a
|
|
value much less
|
|
than 1 (e.g. 0\*d05 or 0\*d02) and is used only on peaks to prevent clipping.
|
|
Not specifying this parameter causes no limiter to be used. In verbose
|
|
mode, this effect displays the percentage of the audio that needed to be
|
|
limited.
|
|
.SP
|
|
There is a keymap on \fIvol.gain\fR, which is adjusted in the
|
|
units that were specified (amplitude, dB or power).
|
|
.SP
|
|
See
|
|
.B gain
|
|
for a volume-changing effect with different capabilities and
|
|
.B compand
|
|
for a dynamic range compression/expansion/limiting effect.
|
|
.SH REFERENCES
|
|
.TP
|
|
[1]
|
|
R. Bristow-Johnson,
|
|
.IR "Cookbook formulae for audio EQ biquad filter coefficients" ,
|
|
.br
|
|
https://www.w3.org/TR/audio-eq-cookbook
|
|
.TP
|
|
[2]
|
|
Wikipedia,
|
|
.IR "Q-factor" ,
|
|
.br
|
|
http://en.wikipedia.org/wiki/Q_factor
|
|
.TP
|
|
[3]
|
|
Scott Lehman,
|
|
.IR "Effects Explained" ,
|
|
.br
|
|
https://codeberg.org/sox_ng/Effects-Explained
|
|
.TP
|
|
[4]
|
|
Wikipedia,
|
|
.IR "Decibel" ,
|
|
.br
|
|
http://en.wikipedia.org/wiki/Decibel
|
|
.TP
|
|
[5]
|
|
Richard Furse,
|
|
.IR "Linux Audio Developer's Simple Plugin API" ,
|
|
.br
|
|
http://www.ladspa.org
|
|
.TP
|
|
[6]
|
|
Richard Furse,
|
|
.IR "Computer Music Toolkit" ,
|
|
.br
|
|
http://www.ladspa.org/cmt/overview.html
|
|
.TP
|
|
[7]
|
|
Steve Harris,
|
|
.IR "LADSPA plugins" ,
|
|
.br
|
|
http://plugin.org.uk
|
|
.SH SEE ALSO
|
|
.BR sox_ng (1).
|
|
.SH AUTHORS
|
|
Lance Norskog, Chris Bagwell and many other authors and contributors
|
|
listed in the README file that is distributed with the source code.
|