wav: remove code duplication in read_samples()
[sox.git] / sox.1
blob4cdab5a5843a6a386eb96ef80fc64a91f0108027
1 '\" t
2 '\" The line above instructs most `man' programs to invoke tbl
3 '\"
4 '\" Separate paragraphs; not the same as PP which resets indent level.
5 .de SP
6 .if t .sp .5
7 .if n .sp
8 ..
9 '\"
10 '\" Replacement em-dash for nroff (default is too short).
11 .ie n .ds m " - 
12 .el .ds m \(em
13 '\"
14 '\" Placeholder macro for if longer nroff arrow is needed.
15 .ds RA \(->
16 '\"
17 '\" Decimal point set slightly raised
18 .if t .ds d \v'-.15m'.\v'+.15m'
19 .if n .ds d .
20 '\"
21 '\" Enclosure macro for examples
22 .de EX
23 .SP
24 .nf
25 .ft CW
27 .de EE
28 .ft R
29 .SP
30 .fi
32 .TH SoX 1 "December 31, 2014" "sox" "Sound eXchange"
33 .SH NAME
34 SoX \- Sound eXchange, the Swiss Army knife of audio manipulation
35 .SH SYNOPSIS
36 .nf
37 \fBsox\fR [\fIglobal-options\fR] [\fIformat-options\fR] \fIinfile1\fR
38         [[\fIformat-options\fR] \fIinfile2\fR] ... [\fIformat-options\fR] \fIoutfile\fR
39         [\fIeffect\fR [\fIeffect-options\fR]] ...
40 .SP
41 \fBplay\fR [\fIglobal-options\fR] [\fIformat-options\fR] \fIinfile1\fR
42         [[\fIformat-options\fR] \fIinfile2\fR] ... [\fIformat-options\fR]
43         [\fIeffect\fR [\fIeffect-options\fR]] ...
44 .SP
45 \fBrec\fR [\fIglobal-options\fR] [\fIformat-options\fR] \fIoutfile\fR
46         [\fIeffect\fR [\fIeffect-options\fR]] ...
47 .fi
48 .SH DESCRIPTION
49 .SS Introduction
50 SoX reads and writes audio files in most popular formats and can
51 optionally apply effects to them. It can combine multiple input
52 sources, synthesise audio, and, on many systems, act as a general
53 purpose audio player or a multi-track audio recorder. It also has
54 limited ability to split the input into multiple output files.
55 .SP
56 All SoX functionality is available using just the \fBsox\fR command.
57 To simplify playing and recording audio, if SoX is invoked as
58 \fBplay\fR, the output file is automatically set to be the default sound
59 device, and if invoked as \fBrec\fR, the default sound device is used as an
60 input source.
61 Additionally, the
62 .BR soxi (1)
63 command provides a convenient way to just query audio file header information.
64 .SP
65 The heart of SoX is a library called libSoX.  Those interested in
66 extending SoX or using it in other programs should refer to the libSoX
67 manual page:
68 .BR libsox (3).
69 .SP
70 SoX is a command-line audio processing tool, particularly suited to making
71 quick, simple edits and to batch processing.
72 If you need an interactive, graphical audio editor, use
73 .BR audacity (1).
74 .TS
75 center;
76 c8 c8 c.
77 *       *       *
78 .TE
79 .DT
80 .SP
81 The overall SoX processing chain can be summarised as follows:
82 .TS
83 center;
85 Input(s) \*(RA Combiner \*(RA Effects \*(RA Output(s)
86 .TE
87 .DT
88 .SP
89 Note however, that on the SoX command line, the positions of the
90 Output(s) and the Effects are swapped w.r.t. the logical flow just
91 shown.  Note also that whilst options pertaining to files are placed
92 before their respective file name, the opposite is true for effects.
93 To show how this works in practice, here is a selection of examples of
94 how SoX might be used.  The simple
95 .EX
96    sox recital.au recital.wav
97 .EE
98 translates an audio file in Sun AU format to a Microsoft WAV file, whilst
99 .EX
100    sox recital.au \-b 16 recital.wav channels 1 rate 16k fade 3 norm
102 performs the same format translation, but also applies four effects
103 (down-mix to one channel, sample rate change, fade-in, nomalize),
104 and stores the result at a bit-depth of 16.
106    sox \-r 16k \-e signed \-b 8 \-c 1 voice-memo.raw voice-memo.wav
108 converts `raw' (a.k.a. `headerless') audio to a self-describing file format,
110    sox slow.aiff fixed.aiff speed 1.027
112 adjusts audio speed,
114    sox short.wav long.wav longer.wav
116 concatenates two audio files, and
118    sox \-m music.mp3 voice.wav mixed.flac
120 mixes together two audio files.
122    play \(dqThe Moonbeams/Greatest/*.ogg\(dq bass +3
124 plays a collection of audio files whilst applying a bass boosting effect,
126    play \-n \-c1 synth sin %\-12 sin %\-9 sin %\-5 sin %\-2 fade h 0.1 1 0.1
128 plays a synthesised `A minor seventh' chord with a pipe-organ sound,
130    rec \-c 2 radio.aiff trim 0 30:00
132 records half an hour of stereo audio, and
134    play \-q take1.aiff & rec \-M take1.aiff take1\-dub.aiff
136 (with POSIX shell and where supported by hardware)
137 records a new track in a multi-track recording.  Finally,
139 .ne 3
140    rec \-r 44100 \-b 16 \-e signed-integer \-p \\
141         silence 1 0.50 0.1% 1 10:00 0.1% | \\
142         sox \-p song.ogg silence 1 0.50 0.1% 1 2.0 0.1% : \\
143         newfile : restart
145 records a stream of audio such as LP/cassette and splits in to multiple
146 audio files at points with 2 seconds of silence.  Also, it does not start
147 recording until it detects audio is playing and stops after it sees
148 10 minutes of silence.
150 N.B.  The above is just an overview of SoX's capabilities; detailed
151 explanations of how to use \fIall\fR SoX parameters, file formats, and
152 effects can be found below in this manual, in
153 .BR soxformat (7),
154 and in
155 .BR soxi (1).
156 .SS File Format Types
157 SoX can work with `self-describing' and `raw' audio files.
158 `self-describing' formats (e.g. WAV, FLAC, MP3) have a header that
159 completely describes the signal and encoding attributes of the audio
160 data that follows. `raw' or `headerless' formats do not contain this
161 information, so the audio characteristics of these must be described
162 on the SoX command line or inferred from those of the input file.
164 The following four characteristics are used to describe the format of
165 audio data such that it can be processed with SoX:
167 sample rate
168 The sample rate in samples per second (`Hertz' or `Hz').
169 Digital telephony traditionally uses a sample rate of 8000\ Hz (8\ kHz),
170 though these days, 16 and even 32\ kHz are becoming more common. Audio
171 Compact Discs use 44100\ Hz (44\*d1\ kHz). Digital Audio Tape and many
172 computer systems use 48\ kHz. Professional audio systems often use 96
173 kHz.
175 sample size
176 The number of bits used to store each sample.  Today, 16-bit is
177 commonly used. 8-bit was popular in the early days of computer
178 audio. 24-bit is used in the professional audio arena. Other sizes are
179 also used.
181 data encoding
182 The way in which each audio sample is represented (or `encoded').  Some
183 encodings have variants with different byte-orderings or bit-orderings.
184 Some compress the audio data so that the stored audio data takes up less
185 space (i.e. disk space or transmission bandwidth) than the other format
186 parameters and the number of samples would imply.  Commonly-used
187 encoding types include floating-point, \(*m-law, ADPCM, signed-integer
188 PCM, MP3, and FLAC.
190 channels
191 The number of audio channels contained in the file.  One (`mono') and
192 two (`stereo') are widely used.  `Surround sound' audio typically
193 contains six or more channels.
195 The term `bit-rate' is a measure of the amount of storage occupied by an
196 encoded audio signal over a unit of time.  It can depend on all of the
197 above and is typically denoted as a number of kilo-bits per second
198 (kbps).  An A-law telephony signal has a bit-rate of 64 kbps. MP3-encoded
199 stereo music typically has a bit-rate of 128\-196 kbps. FLAC-encoded
200 stereo music typically has a bit-rate of 550\-760 kbps.
202 Most self-describing formats also allow textual `comments' to be
203 embedded in the file that can be used to describe the audio in some way,
204 e.g. for music, the title, the author, etc.
206 One important use of audio file comments is to convey `Replay Gain'
207 information.  SoX supports applying Replay Gain information (for certain
208 input file formats only; currently, at least FLAC and Ogg Vorbis), but not
209 generating it.  Note that by default, SoX copies input file comments
210 to output files that support comments, so output files may contain
211 Replay Gain information if some was present in the input file.  In this
212 case, if anything other than a simple format conversion was performed
213 then the output file Replay Gain information is likely to be incorrect
214 and so should be recalculated using a tool that supports this (not SoX).
217 .BR soxi (1)
218 command can be used to display information from audio file headers.
219 .SS Determining & Setting The File Format
220 There are several mechanisms available for SoX to use to determine or set the
221 format characteristics of an audio file.  Depending on the circumstances,
222 individual characteristics may be determined or set using different mechanisms.
224 To determine the format of an input file, SoX will use, in order of
225 precedence and as given or available:
226 .IP 1. 4
227 Command-line format options.
228 .IP 2. 4
229 The contents of the file header.
230 .IP 3. 4
231 The filename extension.
233 To set the output file format, SoX will use, in order of
234 precedence and as given or available:
235 .IP 1. 4
236 Command-line format options.
237 .IP 2. 4
238 The filename extension.
239 .IP 3. 4
240 The input file format characteristics, or the closest
241 that is supported by the output file type.
243 For all files, SoX will exit with an error
244 if the file type cannot be determined. Command-line format options may
245 need to be added or changed to resolve the problem.
246 .SS Playing & Recording Audio
248 .B play
250 .B rec
251 commands are provided so that basic playing and
252 recording is as simple as
254    play existing-file.wav
258    rec new-file.wav
260 These two commands are functionally equivalent to
262    sox existing-file.wav \-d
266    sox \-d new-file.wav
268 Of course, further options and effects (as described below) can be
269 added to the commands in either form.
271 center;
272 c8 c8 c.
273 *       *       *
277 Some systems provide more than one type of (SoX-compatible) audio
278 driver, e.g. ALSA & OSS, or SUNAU & AO.
279 Systems can also have more than one audio device (a.k.a. `sound card').
280 If more than one audio driver has been
281 built-in to SoX, and the default selected by SoX when recording or playing
282 is not the one that is wanted, then the
283 .B AUDIODRIVER
284 environment variable can be used to override the default.  For example
285 (on many systems):
287    set AUDIODRIVER=oss
288    play ...
291 .B AUDIODEV
292 environment variable can be used to override the default audio device,
293 e.g.
295    set AUDIODEV=/dev/dsp2
296    play ...
297    sox ... \-t oss
301    set AUDIODEV=hw:soundwave,1,2
302    play ...
303    sox ... \-t alsa
305 Note that the way of setting environment variables varies from system
306 to system\*mfor some specific examples, see `SOX_OPTS' below.
308 When playing a file with a sample rate that is not supported by the
309 audio output device, SoX will automatically invoke the \fBrate\fR effect
310 to perform the necessary sample rate conversion.  For
311 compatibility with old hardware, the
312 default \fBrate\fR quality level is set to `low'. This
313 can be changed by explicitly specifying the \fBrate\fR
314 effect with a different quality level, e.g.
316    play ... rate \-m
318 or by using the
319 .B \-\-play\-rate\-arg
320 option (see below).
322 center;
323 c8 c8 c.
324 *       *       *
328 On some systems, SoX allows audio playback volume to be adjusted whilst
329 using
330 .BR play .
331 Where supported, this is achieved by tapping the `v' & `V' keys during
332 playback.
334 To help with setting a suitable recording level, SoX includes a peak-level
335 meter which can be invoked (before making the actual recording) as follows:
337    rec \-n
339 The recording level should be adjusted (using the system-provided mixer
340 program, not SoX) so that the meter is \fIat most occasionally\fR full
341 scale, and never `in the red' (an exclamation mark is shown).
342 See also \fB\-S\fR below.
343 .SS Accuracy
344 Many file formats that compress audio discard some of the audio signal
345 information whilst doing so. Converting to such a format and then converting
346 back again will not produce an exact copy of the original audio.  This
347 is the case for many formats used in telephony (e.g. A-law, GSM) where
348 low signal bandwidth is more important than high audio fidelity, and for
349 many formats used in portable music players (e.g. MP3, Vorbis) where
350 adequate fidelity can be retained even with the large compression ratios
351 that are needed to make portable players practical.
353 Formats that discard audio signal information are called `lossy'.
354 Formats that do not are called `lossless'.  The term `quality' is used as a
355 measure of how closely the original audio signal can be reproduced when
356 using a lossy format.
358 Audio file conversion with SoX is lossless when it can be, i.e. when not
359 using lossy compression, when not reducing the sampling rate or number
360 of channels, and when the number of bits used in the destination format
361 is not less than in the source format.  E.g.  converting from an 8-bit
362 PCM format to a 16-bit PCM format is lossless but converting from an
363 8-bit PCM format to (8-bit) A-law isn't.
365 .B N.B.
366 SoX converts all audio files to an internal uncompressed
367 format before performing any audio processing. This means that
368 manipulating a file that is stored in a lossy format can cause further
369 losses in audio fidelity.  E.g. with
371    sox long.mp3 short.mp3 trim 10
373 SoX first decompresses the input MP3 file, then applies the
374 .B trim
375 effect, and finally creates the output MP3 file by re-compressing the
376 audio\*mwith a possible reduction in fidelity above that which
377 occurred when the input file was created.
378 Hence, if what is ultimately desired is lossily compressed audio, it is
379 highly recommended to perform all audio processing using lossless file
380 formats and then convert to the lossy format only at the final stage.
382 .B N.B.
383 Applying multiple effects with a single SoX invocation will,
384 in general, produce more accurate results than those produced using
385 multiple SoX invocations.
386 .SS Dithering
387 Dithering is a technique used to maximise the dynamic range of audio
388 stored at a particular bit-depth. Any distortion introduced by
389 quantisation is decorrelated by adding a small amount of white noise
390 to the signal.  In most cases, SoX can determine whether the selected
391 processing requires dither and will add it during output formatting if
392 appropriate.
394 Specifically, by default, SoX automatically adds TPDF dither
395 when the output bit-depth is less than 24 and any
396 of the following are true:
397 .IP \(bu 4
398 bit-depth reduction has been specified explicitly using a command-line
399 option
400 .IP \(bu 4
401 the output file format supports only bit-depths lower than that of the
402 input file format
403 .IP \(bu 4
404 an effect has increased effective bit-depth within the internal
405 processing chain
407 For example, adjusting volume with
408 .B vol 0.25
409 requires two additional bits in which to losslessly store its results
410 (since 0\*d25 decimal equals 0\*d01 binary).  So if the input file
411 bit-depth is 16, then SoX's internal representation will utilise 18
412 bits after processing this volume change.  In order to store the
413 output at the same depth as the input, dithering is used to remove the
414 additional bits.
416 Use the
417 .B \-V
418 option to see what processing SoX has automatically added. The
419 .B \-D
420 option may be given to override automatic dithering.  To invoke
421 dithering manually (e.g. to select a noise-shaping curve), see the
422 .B dither
423 effect.
424 .SS Clipping
425 Clipping is distortion that occurs when an audio signal level (or
426 `volume') exceeds the range of the chosen representation.  In most
427 cases, clipping is undesirable and so should be corrected by adjusting
428 the level prior to the point (in the processing chain) at which it
429 occurs.
431 In SoX, clipping could occur, as you might expect, when using the
432 .B vol
434 .B gain
435 effects to increase the audio volume. Clipping could also occur with many
436 other effects, when converting one format to another, and even when
437 simply playing the audio.
439 Playing an audio file often involves resampling, and processing by
440 analogue components can introduce a small DC offset and/or
441 amplification, all of which can produce distortion if the audio signal
442 level was initially too close to the clipping point.
444 For these reasons, it is usual to make sure that an audio
445 file's signal level has some `headroom', i.e. it does not exceed a particular
446 level below the maximum possible level for the given representation.
447 Some standards bodies recommend as much as 9dB headroom, but in most cases,
448 3dB (\(~~ 70% linear) is enough.  Note that this wisdom
449 seems to have been lost in modern music production; in fact, many CDs,
450 MP3s, etc.  are now mastered at levels \fIabove\fR 0dBFS i.e. the
451 audio is clipped as delivered.
453 SoX's
454 .B stat
456 .B stats
457 effects can assist in determining the signal level in an audio file. The
458 .B gain
460 .B vol
461 effect can be used to prevent clipping, e.g.
463    sox dull.wav bright.wav gain \-6 treble +6
465 guarantees that the treble boost will not clip.
467 If clipping occurs at any point during processing,
468 SoX will display a warning message to that effect.
470 See also
471 .B \-G
472 and the
473 .B gain
475 .B norm
476 effects.
477 .SS Input File Combining
478 SoX's input combiner can be configured (see OPTIONS below) to
479 combine multiple files using any of the
480 following methods: `concatenate', `sequence', `mix', `mix-power',
481 `merge', or `multiply'.
482 The default method is `sequence' for
483 .BR play ,
484 and `concatenate' for
485 .B rec
487 .BR sox .
489 For all methods other than `sequence', multiple input files must have
490 the same sampling rate. If necessary, separate SoX invocations can be
491 used to make sampling rate adjustments prior to combining.
493 If the `concatenate' combining method is selected (usually, this will be
494 by default) then the input files must also have the same number of
495 channels.  The audio from each input will be concatenated in the order
496 given to form the output file.
498 The `sequence' combining method is selected automatically for
499 .BR play .
500 It is similar to `concatenate' in that the audio from each input file is
501 sent serially to the output file. However, here the output file may be
502 closed and reopened at the corresponding transition between input
503 files. This may be just what is needed when sending different types of
504 audio to an output device, but is not generally useful when the output is a
505 normal file.
507 If either the `mix' or `mix-power' combining method is selected then two or
508 more input files must be given and will be mixed together to form the
509 output file.  The number of channels in each input file need not be the
510 same, but SoX will issue a warning if they are not and some
511 channels in the output file will not contain audio from every input
512 file.  A mixed audio file cannot be un-mixed without reference to the
513 original input files.
515 If the `merge' combining method is selected then two or
516 more input files must be given and will be merged together to form the
517 output file.  The number of channels in each input file need not be the
518 same.  A merged audio file comprises all of the channels from all of the
519 input files. Un-merging is possible using multiple
520 invocations of SoX with the
521 .B remix
522 effect.
523 For example, two mono files could be merged to form one stereo file. The
524 first and second mono files would become the left and right channels of
525 the stereo file.
527 The `multiply' combining method multiplies the sample values of
528 corresponding channels (treated as numbers in the interval \-1 to +1).
529 If the number of channels in the input files is not the same, the
530 missing channels are considered to contain all zero.
532 When combining input files, SoX applies any specified effects
533 (including, for example, the
534 .B vol
535 volume adjustment effect) after the audio has been combined. However, it
536 is often useful to be able to set the volume of (i.e. `balance') the
537 inputs individually, before combining takes place.
539 For all combining methods, input
540 file volume adjustments can be made manually using the
541 .B \-v
542 option (below) which can be given for one or more input files. If it is
543 given for only some of the input files then the others receive no volume
544 adjustment.  In some circumstances, automatic volume
545 adjustments may be applied (see below).
547 The \fB\-V\fR option (below) can be used to show the input file volume
548 adjustments that have been selected (either manually or automatically).
550 There are some special considerations that need to made when mixing
551 input files:
553 Unlike the other methods, `mix' combining has the
554 potential to cause clipping in the combiner if no balancing is
555 performed.  In this case, if manual volume adjustments are not given,
556 SoX will try to ensure that clipping does not occur by automatically
557 adjusting the
558 volume (amplitude) of each input signal by a factor of \(S1/\s-2n\s+2,
559 where n is the number of input files.  If this results in audio that is
560 too quiet or otherwise unbalanced then the input file volumes can be
561 set manually as described above. Using the
562 .B norm
563 effect on the mix is another alternative.
565 If mixed audio seems loud enough at some points but
566 too quiet in others then dynamic range compression should be applied to
567 correct this\*msee the
568 .B compand
569 effect.
571 With the `mix-power' combine method, the
572 mixed volume is approximately equal to that of one of the input signals.
573 This is achieved by balancing using a factor of
574 \(S1/\s-2\(srn\s+2 instead of \(S1/\s-2n\s+2.
575 Note that this balancing factor does not guarantee that clipping will not occur,
576 but the number of clips will usually be low and the resultant
577 distortion is generally imperceptible.
578 .SS Output Files
579 SoX's default behaviour is to take one or more input files and
580 write them to a single output file.
582 This behaviour can be changed by specifying the pseudo-effect `newfile'
583 within the effects list.  SoX will then enter multiple output mode.
585 In multiple output mode, a new file is created when the effects
586 prior to the `newfile' indicate they are done.
587 The effects chain listed after `newfile'
588 is then started up and its output is saved to the new file.
590 In multiple output mode, a unique number will automatically be appended
591 to the end of all filenames.  If the filename has an extension
592 then the number is inserted before the extension.  This behaviour can
593 be customized by placing a %n anywhere in the filename where the
594 number should be substituted.  An optional number can be placed after
595 the % to indicate a minimum fixed width for the number.
597 Multiple output mode is not very useful unless an effect that will
598 stop the effects chain early is
599 specified before the `newfile'. If end of file is
600 reached before the effects chain stops itself then no new file
601 will be created as it would be empty.
603 The following is an example of splitting the first 60 seconds of an input
604 file into two 30 second files and ignoring the rest.
606    sox song.wav ringtone%1n.wav trim 0 30 : newfile : trim 0 30
607 .SS Stopping SoX
608 Usually SoX will complete its processing and exit automatically once
609 it has read all available audio data from the input files.
611 If desired, it can be terminated earlier by sending an
612 interrupt signal to the process (usually by pressing the
613 keyboard interrupt key which is normally Ctrl-C).  This is a natural requirement
614 in some circumstances, e.g. when using SoX to make a recording.  Note
615 that when using SoX to play multiple files, Ctrl-C behaves slightly
616 differently: pressing it once causes SoX to skip to the next file;
617 pressing it twice in quick succession causes SoX to exit.
619 Another option to stop processing early is to use an effect that
620 has a time period or sample count to determine the stopping
621 point. The trim effect is an example of this.  Once all
622 effects chains have stopped then SoX will also stop.
623 .SH FILENAMES
624 Filenames can be simple file names, absolute or relative path names,
625 or URLs (input files only).  Note that URL support requires that
626 .BR wget (1)
627 is available.
629 Note:
630 Giving SoX an input or output filename that is the same as a SoX
631 effect-name will not work since SoX will treat it as an effect
632 specification.  The only work-around to this is to avoid such
633 filenames. This is generally not difficult since most audio
634 filenames have a filename `extension', whilst effect-names do not.
635 .SS Special Filenames
636 The following special filenames may be used in certain circumstances
637 in place of a normal filename on the command line:
639 \fB\-\fR
640 SoX can be used in simple pipeline operations by using the special
641 filename `\-' which,
642 if used as an input filename, will cause
643 SoX will read audio data from `standard input' (stdin),
644 and which,
645 if used as the output filename, will cause
646 SoX will send audio data to `standard output' (stdout).
647 Note that when using this option for the output file, and sometimes
648 when using it for an input file, the file-type (see
649 .B \-t
650 below) must also be given.
652 \fB\(dq\^|\^\fIprogram \fR[\fIoptions\fR] ...\fB\(dq\fR
653 This can be used in place of an input filename to specify the
654 the given program's standard output (stdout) be used as an input file.
655 Unlike
656 .B \-
657 (above), this can be used for several inputs to one SoX command.  For
658 example, if `genw' generates mono WAV formatted signals to its
659 standard output, then the following command makes a stereo file
660 from two generated signals:
662    sox \-M "|genw \-\-imd \-" "|genw \-\-thd \-" out.wav
664 For headerless (raw) audio,
665 .B \-t
666 (and perhaps other format options) will need to be given, preceding the input
667 command.
669 \fB\(dq\fIwildcard-filename\fB\(dq\fR
670 Specifies that filename `globbing' (wild-card matching) should be performed
671 by SoX instead of by the shell.  This allows a single set of file options to be
672 applied to a group of files.  For example, if the current directory contains
673 three `vox' files, file1.vox, file2.vox, and file3.vox, then
675    play \-\-rate 6k *.vox
677 will be expanded by the `shell' (in most environments) to
679    play \-\-rate 6k file1.vox file2.vox file3.vox
681 which will treat only the first vox file as having a sample rate of 6k.
682 With
684    play \-\-rate 6k "*.vox"
686 the given sample rate option will be applied to all three vox files.
688 \fB\-p\fR, \fB\-\-sox\-pipe\fR
689 This can be used in place of an output filename to specify that
690 the SoX command should be used as in input pipe to another SoX command.
691 For example, the command:
693    play "|sox \-n \-p synth 2" "|sox \-n \-p synth 2 tremolo 10" stat
695 plays two `files' in succession, each with different effects.
697 .B \-p
698 is in fact an alias for `\fB\-t sox \-\fR'.
700 \fB\-d\fR, \fB\-\-default\-device\fR
701 This can be used in place of an input or output filename to specify that
702 the default audio device (if one has been built into SoX) is to be used.
703 This is akin to invoking
704 .B rec
706 .B play
707 (as described above).
709 \fB\-n\fR, \fB\-\-null\fR
710 This can be used in place of an input or output filename to specify that
711 a `null file' is to be used.  Note that here, `null file' refers to a
712 SoX-specific mechanism and is not related to any operating-system
713 mechanism with a similar name.
715 Using a null file to input audio is equivalent to
716 using a normal audio file that contains an infinite amount
717 of silence, and as such is not generally useful unless used
718 with an effect that specifies a finite time length
719 (such as \fBtrim\fR or \fBsynth\fR).
721 Using a null file to output audio amounts to discarding the audio
722 and is useful mainly with effects that produce information about the
723 audio instead of affecting it (such as \fBnoiseprof\fR or \fBstat\fR).
725 The sampling rate associated with a null file
726 is by default 48\ kHz, but, as with a normal
727 file, this can be overridden if desired using command-line format
728 options (see below).
729 .SS Supported File & Audio Device Types
731 .BR soxformat (7)
732 for a list and description of the supported file formats and audio device
733 drivers.
734 .SH OPTIONS
735 .SS Global Options
736 These options can be specified on the command line at any point
737 before the first effect name.
740 .B SOX_OPTS
741 environment variable can be used to provide alternative default values for
742 SoX's global options.
743 For example:
745    SOX_OPTS="\-\-buffer 20000 \-\-play\-rate\-arg \-hs \-\-temp /mnt/temp"
747 Note that setting SOX_OPTS can potentially create unwanted changes in
748 the behaviour of scripts or other programs that invoke SoX.  SOX_OPTS
749 might best be used for things (such as in the given example) that reflect the
750 environment in which SoX is being run.  Enabling options such as
751 .B \-\-no\-clobber
752 as default might be handled better using a shell alias
753 since a shell alias will not affect operation in scripts etc.
755 One way to ensure that a script cannot be affected by SOX_OPTS is to
756 clear SOX_OPTS at the start of the script, but this of course loses
757 the benefit of SOX_OPTS carrying some system-wide default options.  An
758 alternative approach is to explicitly invoke SoX with default
759 option values, e.g.
761    SOX_OPTS="\-V \-\-no-clobber"
762    ...
763    sox \-V2 \-\-clobber $input $output ...
765 Note that the way to set environment variables varies from system
766 to system. Here are some examples:
768 Unix bash:
770    export SOX_OPTS="\-V \-\-no-clobber"
772 Unix csh:
774    setenv SOX_OPTS "\-V \-\-no-clobber"
776 MS-DOS/MS-Windows:
778    set SOX_OPTS=\-V \-\-no-clobber
780 MS-Windows GUI: via Control Panel : System : Advanced : Environment
781 Variables
783 Mac OS X GUI: Refer to Apple's Technical Q&A QA1067 document.
785 \fB\-\-buffer\fR \fBBYTES\fR, \fB\-\-input\-buffer\fR \fBBYTES\fR
786 Set the size in bytes of the buffers used for processing audio (default 8192).
787 .B \-\-buffer
788 applies to input, effects, and output processing;
789 .B \-\-input\-buffer
790 applies only to input processing (for which it overrides
791 .B \-\-buffer
792 if both are given).
794 Be aware that large values for
795 .B \-\-buffer
796 will cause SoX to be become slow to respond to requests to terminate or to skip
797 the current input file.
799 \fB\-\-clobber\fR
800 Don't prompt before overwriting an existing file with the same name as that
801 given for the output file.  This is the default behaviour.
803 \fB\-\-combine concatenate\fR\^|\^\fBmerge\fR\^|\^\fBmix\fR\^|\^\fBmix\-power\fR\^|\^\fBmultiply\fR\^|\^\fBsequence\fR
804 Select the input file combining method;
805 for some of these, short options are available:
806 .B \-m
807 selects `mix',
808 .B \-M
809 selects `merge', and
810 .B \-T
811 selects `multiply'.
813 See \fBInput File Combining\fR above for a description of the different
814 combining methods.
816 \fB\-D\fR, \fB\-\-no\-dither\fR
817 Disable automatic dither\*msee `Dithering' above.  An example of why this
818 might occasionally be useful is if a file has been converted from 16 to
819 24 bit with the intention of doing some processing on it, but in fact
820 no processing is needed after all and the original 16 bit file has
821 been lost, then, strictly speaking, no dither is needed if converting the
822 file back to 16 bit.  See also the
823 .B stats
824 effect for how to determine the actual bit depth of the audio within a
825 file.
827 \fB\-\-effects\-file \fIFILENAME\fR
828 Use FILENAME to obtain all effects and their arguments.
829 The file is parsed as if the values were specified on the
830 command line.  A new line can be used in place of the special \fB:\fR
831 marker to separate effect chains.  For convenience, such markers at the
832 end of the file are normally ignored; if you want to specify an empty
833 last effects chain, use an explicit \fB:\fR by itself on the last line
834 of the file.  This option causes any effects specified on the command
835 line to be discarded.
837 \fB\-G\fR, \fB\-\-guard\fR
838 Automatically invoke the
839 .B gain
840 effect to guard against clipping. E.g.
842    sox \-G infile \-b 16 outfile rate 44100 dither \-s
844 is shorthand for
846    sox infile \-b 16 outfile gain \-h rate 44100 gain \-rh dither \-s
848 See also
849 .BR \-V,
850 .BR \-\-norm,
851 and the
852 .B gain
853 effect.
855 \fB\-h\fR, \fB\-\-help\fR
856 Show version number and usage information.
858 \fB\-\-help\-effect \fINAME\fR
859 Show usage information on the specified effect.  The name
860 \fBall\fR can be used to show usage on all effects.
862 \fB\-\-help\-format \fINAME\fR
863 Show information about the specified file format.  The name
864 \fBall\fR can be used to show information on all formats.
866 \fB\-\-i\fR, \fB\-\-info\fR
867 Only if given as the first parameter to
868 .BR sox ,
869 behave as
870 .BR soxi (1).
872 \fB\-m\fR\^|\^\fB\-M\fR
873 Equivalent to \fB\-\-combine mix\fR and \fB\-\-combine merge\fR, respectively.
875 .B \-\-magic
876 If SoX has been built with the optional `libmagic' library then this
877 option can be given to enable its use in helping to detect audio file types.
879 \fB\-\-multi\-threaded\fR | \fB\-\-single\-threaded\fR
880 By default, SoX is `single threaded'.
881 If the \fB\-\-multi\-threaded\fR option is given however then SoX
882 will process audio channels for most multi-channel
883 effects in parallel on hyper-threading/multi-core architectures. This
884 may reduce processing time, though sometimes it may be necessary to use
885 this option in conjunction with a larger buffer size than is the default
886 to gain any benefit from multi-threaded processing
887 (e.g. 131072; see \fB\-\-buffer\fR above).
889 \fB\-\-no\-clobber\fR
890 Prompt before overwriting an existing file with the same name as that
891 given for the output file.
893 .B N.B.
894 Unintentionally overwriting a file is easier than you might think, for
895 example, if you accidentally enter
897    sox file1 file2 effect1 effect2 ...
899 when what you really meant was
901    play file1 file2 effect1 effect2 ...
903 then, without this option, file2 will be overwritten.  Hence, using
904 this option is recommended. SOX_OPTS (above), a `shell'
905 alias, script, or batch file may be an appropriate way of permanently
906 enabling it.
908 \fB\-\-norm\fR[\fB=\fIdB-level\fR]
909 Automatically invoke the
910 .B gain
911 effect to guard against clipping and to normalise the audio. E.g.
913    sox \-\-norm infile \-b 16 outfile rate 44100 dither \-s
915 is shorthand for
917    sox infile \-b 16 outfile gain \-h rate 44100 gain \-nh dither \-s
919 Optionally, the audio can be normalized to a given level (usually)
920 below 0 dBFS:
922    sox \-\-norm=\-3 infile outfile
925 See also
926 .BR \-V,
927 .BR \-G,
928 and the
929 .B gain
930 effect.
932 \fB\-\-play\-rate\-arg ARG\fR
933 Selects a quality option to be used when the `rate' effect is automatically
934 invoked whilst playing audio.  This option is typically set via the
935 .B SOX_OPTS
936 environment variable (see above).
938 \fB\-\-plot gnuplot\fR\^|\^\fBoctave\fR\^|\^\fBoff\fR
939 If not set to
940 .B off
941 (the default if
942 .B \-\-plot
943 is not given), run in a mode that can be used, in conjunction with the
944 gnuplot program or the GNU Octave program, to assist with the selection
945 and configuration of many of the transfer-function based effects.
946 For the first given effect that supports the selected plotting program,
947 SoX will output commands to plot the effect's transfer function, and
948 then exit without actually processing any audio.  E.g.
950    sox \-\-plot octave input-file \-n highpass 1320 > highpass.plt
951    octave highpass.plt
954 \fB\-q\fR, \fB\-\-no\-show\-progress\fR
955 Run in quiet mode when SoX wouldn't otherwise do so.
956 This is the opposite of the \fB\-S\fR option.
958 \fB\-R\fR
959 Run in `repeatable' mode.  When this option is given, where
960 applicable, SoX will embed a fixed time-stamp in the output file (e.g.
961 \fBAIFF\fR) and will `seed' pseudo random number generators (e.g.
962 \fBdither\fR) with a fixed number, thus ensuring that successive SoX
963 invocations with the same inputs and the same parameters yield the
964 same output.
966 \fB\-\-replay\-gain track\fR\^|\^\fBalbum\fR\^|\^\fBoff\fR
967 Select whether or not to apply replay-gain adjustment to input files.
968 The default is
969 .B off
971 .B sox
973 .BR rec ,
974 .B album
976 .B play
977 where (at least) the first two input files are tagged with the same Artist and
978 Album names, and
979 .B track
981 .B play
982 otherwise.
984 \fB\-S\fR, \fB\-\-show\-progress\fR
985 Display input file format/header information, and processing progress as
986 input file(s) percentage complete, elapsed time, and remaining time (if
987 known; shown in brackets), and the number of samples written to the
988 output file.  Also shown is a peak-level meter, and an indication if
989 clipping has occurred.  The peak-level meter shows up to two channels
990 and is calibrated for digital audio as follows (right channel shown):
991 .ne 8
993 center;
994 cI lI cI lI
995 c l c l.
996 dB FSD  Display dB FSD  Display
997 \-25    \-      \-11    ====
998 \-23    T{
1000 T}      \-9     ====\-
1001 \-21    =\-     \-7     =====
1002 \-19    ==      \-5     =====\-
1003 \-17    ==\-    \-3     ======
1004 \-15    ===     \-1     =====!
1005 \-13    ===\-
1009 A three-second peak-held value of headroom in dBs will be shown to the right
1010 of the meter if this is below 6dB.
1012 This option is enabled by default when using
1013 SoX to play or record audio.
1015 \fB\-T\fR\fR
1016 Equivalent to \fB\-\-combine multiply\fR.
1018 \fB\-\-temp\fI DIRECTORY\fR
1019 Specify that any temporary files should be created in the given
1020 .IR DIRECTORY .
1021 This can be useful if there are permission or free-space problems with the
1022 default location. In this case, using `\fB\-\-temp .\fR' (to use the
1023 current directory) is often a good solution.
1025 \fB\-\-version\fR
1026 Show SoX's version number and exit.
1027 .IP \fB\-V\fR[\fIlevel\fR]
1028 Set verbosity. This is particularly useful for seeing how any automatic
1029 effects have been invoked by SoX.
1031 SoX displays messages on the console (stderr) according to the following
1032 verbosity levels:
1035 .IP 0
1036 No messages are shown at all; use the exit status to determine
1037 if an error has occurred.
1038 .IP 1
1039 Only error messages are shown.  These are generated if
1040 SoX cannot complete the requested commands.
1041 .IP 2
1042 Warning messages are also shown.  These are generated if
1043 SoX can complete the requested commands,
1044 but not exactly according to the requested command parameters,
1045 or if clipping occurs.
1046 .IP 3
1047 Descriptions of
1048 SoX's processing phases are also shown.
1049 Useful for seeing exactly how
1050 SoX is processing your audio.
1051 .IP "4 and above"
1052 Messages to help with debugging
1053 SoX are also shown.
1056 By default, the verbosity level is set to 2 (shows errors and
1057 warnings). Each occurrence of the \fB\-V\fR option increases the
1058 verbosity level by 1.  Alternatively, the verbosity level can be set
1059 to an absolute number by specifying it immediately after the
1060 .BR \-V ,
1061 e.g.
1062 .B \-V0
1063 sets it to 0.
1065 .SS Input File Options
1066 These options apply only to input files and may precede only input
1067 filenames on the command line.
1069 \fB\-\-ignore\-length\fR
1070 Override an (incorrect) audio length given in an audio file's header. If
1071 this option is given then SoX will keep reading audio until it reaches
1072 the end of the input file.
1074 \fB\-v\fR, \fB\-\-volume\fR \fIFACTOR\fR
1075 Intended for use when combining multiple input files, this option
1076 adjusts the volume of the file that follows it on the command line by a
1077 factor of \fIFACTOR\fR. This allows it to be `balanced' w.r.t. the other
1078 input files.  This is a linear (amplitude) adjustment, so a number less
1079 than 1 decreases the volume and a number greater than 1 increases it.  If a
1080 negative number is given then in addition to the volume adjustment,
1081 the audio signal will be inverted.
1083 See also the
1084 .BR norm ,
1085 .BR vol ,
1087 .B gain
1088 effects, and see \fBInput File Combining\fR above.
1089 .SS Input & Output File Format Options
1090 These options apply to the input or output file whose name they
1091 immediately precede on the command line and are used mainly when
1092 working with headerless file formats or when specifying a format
1093 for the output file that is different to that of the input file.
1095 \fB\-b\fR \fIBITS\fR, \fB\-\-bits\fR \fIBITS\fR
1096 The number of bits (a.k.a. bit-depth or sometimes word-length) in each
1097 encoded sample.  Not applicable to complex encodings such as MP3 or GSM.
1098 Not necessary with encodings that have a fixed number of bits, e.g.
1099 A/\(*m-law, ADPCM.
1101 For an input file, the most common use for this option is to inform
1102 SoX of the number of bits per sample in a `raw' (`headerless') audio
1103 file.  For example
1105    sox \-r 16k \-e signed \-b 8 input.raw output.wav
1107 converts a particular `raw' file to a self-describing `WAV' file.
1109 For an output file, this option can be used (perhaps along with
1110 .BR \-e )
1111 to set the output encoding size.  By default (i.e. if this option is
1112 not given), the output encoding size will (providing it is supported
1113 by the output file type) be set to the input encoding size.  For
1114 example
1116    sox input.cdda \-b 24 output.wav
1118 converts raw CD digital audio (16-bit, signed-integer) to a
1119 24-bit (signed-integer) `WAV' file.
1121 \fB\-c\fR \fICHANNELS\fR, \fB\-\-channels\fR \fICHANNELS\fR
1122 The number of audio channels in the audio file. This can be any number
1123 greater than zero.
1125 For an input file, the most common use for this option is to inform
1126 SoX of the number of channels in a `raw' (`headerless') audio file.
1127 Occasionally, it may be useful to use this option with a `headered'
1128 file, in order to override the (presumably incorrect) value in the
1129 header\*mnote that this is only supported with certain file types.
1130 Examples:
1132    sox \-r 48k \-e float \-b 32 \-c 2 input.raw output.wav
1134 converts a particular `raw' file to a self-describing `WAV' file.
1136    play \-c 1 music.wav
1138 interprets the file data as belonging to a single channel regardless
1139 of what is indicated in the file header.  Note that if the file does
1140 in fact have two channels, this will result in the file playing at
1141 half speed.
1143 For an output file, this option provides a shorthand for specifying
1144 that the
1145 .B channels
1146 effect should be invoked in order to change (if necessary) the number
1147 of channels in the audio signal to the number given.  For
1148 example, the following two commands are equivalent:
1150 .ne 2
1151    sox input.wav \-c 1 output.wav bass \-b 24
1152    sox input.wav      output.wav bass \-b 24 channels 1
1154 though the second form is more flexible as it allows the effects to
1155 be ordered arbitrarily.
1157 \fB\-e \fIENCODING\fR, \fB\-\-encoding\fR \fIENCODING\fR
1158 The audio encoding type.  Sometimes needed with file-types that
1159 support more than one encoding type. For example, with raw, WAV, or
1160 AU (but not, for example, with MP3 or FLAC).
1161 The available encoding types are as follows:
1163 .IP \fBsigned-integer\fR
1164 PCM data stored as signed (`two's complement') integers.  Commonly used
1165 with a 16 or 24 \-bit encoding size.
1166 A value of 0 represents minimum signal power.
1167 .IP \fBunsigned-integer\fR
1168 PCM data stored as unsigned integers.  Commonly used
1169 with an 8-bit encoding size.  A value of 0 represents maximum signal
1170 power.
1171 .IP \fBfloating-point\fR
1172 PCM data stored as IEEE 753 single precision (32-bit) or double
1173 precision (64-bit) floating-point (`real') numbers.
1174 A value of 0 represents minimum signal power.
1175 .IP \fBa-law\fR
1176 International telephony standard for logarithmic encoding to 8 bits per
1177 sample.  It has a precision equivalent to roughly 13-bit PCM and is
1178 sometimes encoded with reversed bit-ordering (see the
1179 .B \-X
1180 option).
1181 .IP \fBu-law,\ mu-law\fR
1182 North American telephony standard for logarithmic encoding to 8 bits per
1183 sample.  A.k.a. \(*m-law.  It has a precision equivalent to roughly
1184 14-bit PCM and is
1185 sometimes encoded with reversed bit-ordering (see the
1186 .B \-X
1187 option).
1188 .IP \fBoki-adpcm\fR
1189 OKI (a.k.a. VOX, Dialogic, or Intel) 4-bit ADPCM;
1190 it has a precision equivalent to roughly 12-bit PCM.
1191 ADPCM is a form of audio compression that has a good
1192 compromise between audio quality and encoding/decoding speed.
1193 .IP \fBima-adpcm\fR
1194 IMA (a.k.a. DVI) 4-bit ADPCM;
1195 it has a precision equivalent to roughly 13-bit PCM.
1196 .IP \fBms-adpcm\fR
1197 Microsoft 4-bit ADPCM; it has a precision equivalent to roughly 14-bit
1198 PCM.
1199 .IP \fBgsm-full-rate\fR
1200 GSM is currently used for the vast majority of the world's digital
1201 wireless telephone calls.  It utilises several audio
1202 formats with different bit-rates and associated speech quality.
1203 SoX has support for GSM's original 13kbps `Full Rate' audio format.
1204 It is usually CPU-intensive to work with GSM audio.
1208 Encoding names can be abbreviated where this would not be ambiguous;
1209 e.g. `unsigned-integer' can be given as `un', but not `u' (ambiguous
1210 with `u-law').
1212 For an input file, the most common use for this option is to inform
1213 SoX of the encoding of a `raw' (`headerless') audio
1214 file (see the examples in
1215 .B \-b
1217 .B \-c
1218 above).
1220 For an output file, this option can be used (perhaps along with
1221 .BR \-b )
1222 to set the output encoding type  For example
1224    sox input.cdda \-e float output1.wav
1226    sox input.cdda \-b 64 \-e float output2.wav
1228 convert raw CD digital audio (16-bit, signed-integer) to
1229 floating-point `WAV' files (single & double precision respectively).
1231 By default (i.e. if this option is not given), the output encoding
1232 type will (providing it is supported by the output file type) be set
1233 to the input encoding type.
1235 \fB\-\-no\-glob\fR
1236 Specifies that filename `globbing' (wild-card matching) should not be
1237 performed by SoX on the following filename.  For example, if the current
1238 directory contains the two files `five-seconds.wav' and `five*.wav', then
1240    play \-\-no\-glob "five*.wav"
1242 can be used to play just the single file `five*.wav'.
1244 \fB\-r, \fB\-\-rate\fR \fIRATE\fR[\fBk\fR]
1245 Gives the sample rate in Hz (or kHz if appended with `k') of the file.
1247 For an input file, the most common use for this option is to inform
1248 SoX of the sample rate of a `raw' (`headerless') audio file (see the
1249 examples in
1250 .B \-b
1252 .B \-c
1253 above).
1254 Occasionally it may be useful to use this option with a `headered'
1255 file, in order to override the (presumably incorrect) value in the
1256 header\*mnote that this is only supported with certain file types.
1257 For example, if audio was recorded with a sample-rate of say 48k from
1258 a source that played back a little, say 1\*d5%, too slowly, then
1260    sox \-r 48720 input.wav output.wav
1262 effectively corrects the speed by changing only the file header (but see
1263 also the
1264 .B speed
1265 effect for the more usual solution to this problem).
1267 For an output file, this option provides a shorthand for specifying
1268 that the
1269 .B rate
1270 effect should be invoked in order to change (if necessary) the sample
1271 rate of the audio signal to the given value.  For example, the
1272 following two commands are equivalent:
1274 .ne 2
1275    sox input.wav \-r 48k output.wav bass \-b 24
1276    sox input.wav        output.wav bass \-b 24 rate 48k
1278 though the second form is more flexible as it allows
1279 .B rate
1280 options to be given, and allows the effects to be ordered arbitrarily.
1282 \fB\-t\fR, \fB\-\-type\fR \fIFILE-TYPE\fR
1283 Gives the type of the audio file.  For both input and output files,
1284 this option is commonly used to inform SoX of the type a `headerless'
1285 audio file (e.g. raw, mp3) where the actual/desired type cannot be
1286 determined from a given filename extension.  For example:
1288    another-command | sox \-t mp3 \- output.wav
1290    sox input.wav \-t raw output.bin
1292 It can also be used to override the type implied by an input filename
1293 extension, but if overriding with a type that has a header, SoX will
1294 exit with an appropriate error message if such a header is not
1295 actually present.
1298 .BR soxformat (7)
1299 for a list of supported file types.
1301 \fB\-L\fR, \fB\-\-endian little\fR
1303 \fB\-B\fR, \fB\-\-endian big\fR
1305 \fB\-x\fR, \fB\-\-endian swap\fR
1306 .if t .sp -.5
1307 .if n .sp -1
1310 These options specify whether the byte-order of the audio data is,
1311 respectively, `little endian', `big endian', or the opposite to that of
1312 the system on which SoX is being used.  Endianness applies only to data
1313 encoded as floating-point, or as signed or unsigned integers of 16 or
1314 more bits.  It is often necessary to specify one of these options for
1315 headerless files, and sometimes necessary for (otherwise)
1316 self-describing files.  A given endian-setting option may be ignored
1317 for an input file whose header contains a specific endianness
1318 identifier, or for an output file that is actually an audio device.
1320 .B N.B.
1321 Unlike other format characteristics, the endianness (byte, nibble, &
1322 bit ordering) of the input file is not automatically used for the output
1323 file; so, for example, when the following is run on a little-endian system:
1325    sox \-B audio.s16 trimmed.s16 trim 2
1327 trimmed.s16 will be created as little-endian;
1329    sox \-B audio.s16 \-B trimmed.s16 trim 2
1331 must be used to preserve big-endianness in the output file.
1334 .B \-V
1335 option can be used to check the selected orderings.
1337 \fB\-N\fR, \fB\-\-reverse\-nibbles\fR
1338 Specifies that the nibble ordering (i.e. the 2 halves of a byte) of the samples should be reversed;
1339 sometimes useful with ADPCM-based formats.
1341 .B N.B.
1342 See also N.B. in section on
1343 .B \-x
1344 above.
1346 \fB\-X\fR, \fB\-\-reverse\-bits\fR
1347 Specifies that the bit ordering of the samples should be reversed;
1348 sometimes useful with a few (mostly headerless) formats.
1350 .B N.B.
1351 See also N.B. in section on
1352 .B \-x
1353 above.
1354 .SS Output File Format Options
1355 These options apply only to the output file and may precede only the output
1356 filename on the command line.
1358 \fB\-\-add\-comment \fITEXT\fR
1359 Append a comment in the output file header (where applicable).
1361 \fB\-\-comment \fITEXT\fR
1362 Specify the comment text to store in the output file header (where
1363 applicable).
1365 SoX will provide a default comment if this option (or
1366 .BR \-\-comment\-file )
1367 is not given. To specify that no comment should be stored in the output file,
1369 .B "\-\-comment \(dq\(dq" .
1371 \fB\-\-comment\-file \fIFILENAME\fR
1372 Specify a file containing the comment text to store in the output
1373 file header (where applicable).
1375 \fB\-C\fR, \fB\-\-compression\fR \fIFACTOR\fR
1376 The compression factor for variably compressing output file formats.  If
1377 this option is not given then a default compression factor will apply.
1378 The compression factor is interpreted differently for different
1379 compressing file formats.  See the description of the file formats that
1380 use this option in
1381 .BR soxformat (7)
1382 for more information.
1383 .SH EFFECTS
1384 In addition to converting, playing and recording audio files, SoX can
1385 be used to invoke a number of audio `effects'.  Multiple effects may
1386 be applied by specifying them one after another at the end of the SoX
1387 command line, forming an `effects chain'.
1388 Note that applying multiple effects in real-time (i.e. when playing audio)
1389 is likely to require a high performance computer. Stopping other applications
1390 may alleviate performance issues should they occur.
1392 Some of the SoX effects are primarily intended to be applied to a single
1393 instrument or `voice'.  To facilitate this, the \fBremix\fR effect and
1394 the global SoX option \fB\-M\fR can be used to isolate then recombine
1395 tracks from a multi-track recording.
1396 .SS Multiple Effects Chains
1397 A single effects chain is made up of one or more effects.  Audio from
1398 the input runs through the chain until either the end of the input file
1399 is reached or an effect in the chain requests to terminate the chain.
1401 SoX supports running multiple effects chains over the input audio.
1402 In this case, when one chain indicates it is done processing audio,
1403 the audio data is then sent through the next effects chain.  This
1404 continues until either no more effects chains exist or the input has
1405 reached the end of the file.
1407 An effects chain is terminated by placing a
1408 .B :
1409 (colon) after an effect.  Any following effects are a part of a new effects chain.
1411 It is important to place the effect that will stop the chain
1412 as the first effect in the chain.  This is because any samples
1413 that are buffered by effects to the left of the terminating effect
1414 will be discarded.  The amount of samples discarded is related to the
1415 .B \-\-buffer
1416 option and it should be kept small, relative to the sample rate, if
1417 the terminating effect cannot be first.  Further information on
1418 stopping effects can be found in the
1419 .B Stopping SoX
1420 section.
1422 There are a few pseudo-effects that aid using multiple effects chains.
1423 These include
1424 .B newfile
1425 which will start writing to a new output file before moving to the
1426 next effects chain and
1427 .B restart
1428 which will move back to the first effects chain.  Pseudo-effects
1429 must be specified as the first effect in a chain and as the only
1430 effect in a chain (they must have a
1431 .B :
1432 before and after they are specified).
1434 The following is an example of multiple effects chains.  It will split the
1435 input file into multiple files of 30 seconds in length.  Each output filename
1436 will have unique number in its name as documented in the
1437 .B Output Files
1438 section.
1440    sox infile.wav output.wav trim 0 30 : newfile : restart
1442 .SS Common Notation And Parameters
1443 In the descriptions that follow,
1444 brackets [ ] are used to denote parameters that are optional, braces
1445 { } to denote those that are both optional and repeatable,
1446 and angle brackets < > to denote those that are repeatable but not
1447 optional.
1448 Where applicable, default values for optional parameters are shown in parenthesis ( ).
1450 The following parameters are used with, and have the same meaning for,
1451 several effects:
1453 \fIcenter\fR[\fBk\fR]
1455 .IR frequency .
1457 \fIfrequency\fR[\fBk\fR]
1458 A frequency in Hz, or, if appended with `k', kHz.
1460 \fIgain\fR
1461 A power gain in dB.
1462 Zero gives no gain; less than zero gives an attenuation.
1464 \fIposition\fR
1465 A position within the audio stream; the syntax is
1466 [\fB=\fR\^|\^\fB+\fR\^|\^\fB\-\fR]\fItimespec\fR, where \fItimespec\fR is a
1467 time specification (see below).  The optional first character indicates
1468 whether the \fItimespec\fR is to be interpreted relative to the start
1469 (\fB=\fR) or end (\fB\-\fR) of audio, or to the previous \fIposition\fR if
1470 the effect accepts multiple position arguments (\fB+\fR).  The audio length
1471 must be known for end-relative locations to work; some effects do accept
1472 \fB\-0\fR for end-of-audio, though, even if the length is unknown.  Which of
1473 \fB=\fR, \fB+\fR, \fB\-\fR is the default depends on the effect and is shown
1474 in its syntax as, e.g., \fIposition(+)\fR.
1476 Examples: \fB=2:00\fR (two minutes into the audio stream), \fB\-100s\fR (one
1477 hundred samples before the end of audio), \fB+0:12+10s\fR (twelve seconds
1478 and ten samples after the previous position), \fB\-0.5+1s\fR (one sample less
1479 than half a second before the end of audio).
1481 \fIwidth\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]
1482 Used to specify the band-width of a filter.  A number of different
1483 methods to specify the width are available (though not all for every effect).
1484 One of the characters shown may be appended to select the desired method
1485 as follows:
1486 .ne 5
1488 center;
1489 cI cI lI
1490 cB c l.
1491 \       Method  Notes
1492 h       Hz      \ 
1493 k       kHz     \ 
1494 o       Octaves \ 
1495 q       Q-factor        See [2]
1499 For each effect that uses this parameter, the default method (i.e. if no
1500 character is appended) is the one that it listed first in the first line of
1501 the effect's description.
1503 Most effects that expect an audio position or duration in a parameter,
1504 i.e. a \fBtime specification\fR, accept either of the following two forms:
1506 [[\fIhours\fB:\fR]\fIminutes\fB:\fR]\fIseconds\fR[\fB.\fIfrac\fR][\fBt\fR]
1507 A specification of `1:30\*d5' corresponds to one minute, thirty and
1508 \(12 seconds.  The \fBt\fR suffix is entirely optional (however, see the
1509 \fBsilence\fR effect for an exception).
1510 Note that the component values do not have to be normalized; e.g.,
1511 `1:23:45', `83:45', `79:0285', `1:0:1425', `1::1425' and `5025' all are
1512 legal and equivalent to each other.
1514 \fIsamples\fBs\fR
1515 Specifies the number of samples directly, as in `8000s'.  For large sample
1516 counts, \fIe notation\fR is supported: `1.7e6s' is the same as `1700000s'.
1518 Time specifications can also be chained with \fB+\fR or \fB\-\fR into a new
1519 time specification where the right part is added to or subtracted from the
1520 left, respectively: `3:00\-200s' means two hundred samples less than three
1521 minutes.
1523 To see if SoX has support for an optional effect, enter
1524 .B sox \-h
1525 and look for its name under the list: `EFFECTS'.
1526 .SS Supported Effects
1527 Note: a categorised list of the effects can be found in the
1528 accompanying `README' file.
1530 \fBallpass\fR \fIfrequency\fR[\fBk\fR]\fI width\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]
1531 Apply a two-pole all-pass filter with central frequency (in Hz)
1532 \fIfrequency\fR, and filter-width \fIwidth\fR.
1533 An all-pass filter changes the
1534 audio's frequency to phase relationship without changing its frequency
1535 to amplitude relationship.  The filter is described in detail in [1].
1537 This effect supports the \fB\-\-plot\fR global option.
1539 \fBband\fR [\fB\-n\fR] \fIcenter\fR[\fBk\fR]\fR [\fIwidth\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]
1540 Apply a band-pass filter.
1541 The frequency response drops logarithmically
1542 around the
1543 .I center
1544 frequency.
1546 .I width
1547 parameter gives the slope of the drop.
1548 The frequencies at
1549 .I center
1551 .I width
1553 .I center
1555 .I width
1556 will be half of their original amplitudes.
1557 .B band
1558 defaults to a mode oriented to pitched audio,
1559 i.e. voice, singing, or instrumental music.
1560 The \fB\-n\fR (for noise) option uses the alternate mode
1561 for un-pitched audio (e.g. percussion).
1562 .B Warning:
1563 \fB\-n\fR introduces a power-gain of about 11dB in the filter, so beware
1564 of output clipping.
1565 .B band
1566 introduces noise in the shape of the filter,
1567 i.e. peaking at the
1568 .I center
1569 frequency and settling around it.
1571 This effect supports the \fB\-\-plot\fR global option.
1573 See also \fBsinc\fR for a bandpass filter with steeper shoulders.
1575 \fBbandpass\fR\^|\^\fBbandreject\fR [\fB\-c\fR] \fIfrequency\fR[\fBk\fR]\fI width\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]
1576 Apply a two-pole Butterworth band-pass or band-reject filter with
1577 central frequency \fIfrequency\fR, and (3dB-point) band-width
1578 \fIwidth\fR.  The
1579 .B \-c
1580 option applies only to
1581 .B bandpass
1582 and selects a constant skirt gain (peak gain = Q) instead of the
1583 default: constant 0dB peak gain.
1584 The filters roll off at 6dB per octave (20dB per decade)
1585 and are described in detail in [1].
1587 These effects support the \fB\-\-plot\fR global option.
1589 See also \fBsinc\fR for a bandpass filter with steeper shoulders.
1591 \fBbandreject \fIfrequency\fR[\fBk\fR]\fI width\fR[\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]
1592 Apply a band-reject filter.
1593 See the description of the \fBbandpass\fR effect for details.
1595 \fBbass\fR\^|\^\fBtreble \fIgain\fR [\fIfrequency\fR[\fBk\fR]\fR [\fIwidth\fR[\fBs\fR\^|\^\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]]
1596 Boost or cut the bass (lower) or treble (upper) frequencies of the audio
1597 using a two-pole shelving filter with a response similar to that
1598 of a standard hi-fi's tone-controls.  This is also
1599 known as shelving equalisation (EQ).
1601 \fIgain\fR gives the gain at 0\ Hz (for \fBbass\fR), or whichever is
1602 the lower of \(ap22\ kHz and the Nyquist frequency (for \fBtreble\fR).  Its
1603 useful range is about \-20 (for a large cut) to +20 (for a large
1604 boost).
1605 Beware of
1606 .B Clipping
1607 when using a positive \fIgain\fR.
1609 If desired, the filter can be fine-tuned using the following
1610 optional parameters:
1612 \fIfrequency\fR sets the filter's central frequency and so can be
1613 used to extend or reduce the frequency range to be boosted or
1614 cut.  The default value is 100\ Hz (for \fBbass\fR) or 3\ kHz (for
1615 \fBtreble\fR).
1617 \fIwidth\fR
1618 determines how
1619 steep is the filter's shelf transition.  In addition to the common
1620 width specification methods described above,
1621 `slope' (the default, or if appended with `\fBs\fR') may be used.
1622 The useful range of `slope' is
1623 about 0\*d3, for a gentle slope, to 1 (the maximum), for a steep slope; the
1624 default value is 0\*d5.
1626 The filters are described in detail in [1].
1628 These effects support the \fB\-\-plot\fR global option.
1630 See also \fBequalizer\fR for a peaking equalisation effect.
1632 \fBbend\fR [\fB\-f \fIframe-rate\fR(25)] [\fB\-o \fIover-sample\fR(16)] { \fIstart-position(+)\fB,\fIcents\fB,\fIend-position(+)\fR }
1633 Changes pitch by specified amounts at specified times.
1634 Each given triple: \fIstart-position\fB,\fIcents\fB,\fIend-position\fR
1635 specifies one bend.
1636 \fIcents\fR is the number of cents (100 cents = 1 semitone) by which to
1637 bend the pitch. The other values specify the points in time at which to start
1638 and end bending the pitch, respectively.
1640 The pitch-bending algorithm utilises the Discrete Fourier Transform (DFT)
1641 at a particular frame rate and over-sampling rate.
1643 .B \-f
1645 .B \-o
1646 parameters may be used to adjust these parameters and thus control the
1647 smoothness of the changes in pitch.
1649 For example, an initial tone is generated, then bent three times, yielding
1650 four different notes in total:
1652 .ne 2
1653    play \-n synth 2.5 sin 667 gain 1 \\
1654         bend .35,180,.25  .15,740,.53  0,\-520,.3
1656 Here, the first bend runs from 0.35 to 0.6, and the second one from 0.75
1657 to 1.28 seconds.
1658 Note that the clipping that is produced in this example is deliberate;
1659 to remove it, use
1660 .B gain\ \-5
1661 in place of
1662 .BR gain\ 1 .
1664 See also \fBpitch\fR.
1666 \fBbiquad \fIb0 b1 b2 a0 a1 a2\fR
1667 Apply a biquad IIR filter with the given coefficients. Where b* and a* are
1668 the numerator and denominator coefficients respectively.
1670 See http://en.wikipedia.org/wiki/Digital_biquad_filter (where a0 = 1).
1672 This effect supports the \fB\-\-plot\fR global option.
1674 \fBchannels \fICHANNELS\fR
1675 Invoke a simple algorithm to change the number of channels in
1676 the audio signal to the given number
1677 .IR CHANNELS :
1678 mixing if decreasing the number of channels or duplicating if
1679 increasing the number of channels.
1682 .B channels
1683 effect is invoked automatically if SoX's \fB\-c\fR option specifies a
1684 number of channels that is different to that of the input file(s).
1685 Alternatively, if this effect is given explicitly, then SoX's
1686 .B \-c
1687 option need not be given.  For example, the following two commands are
1688 equivalent:
1690 .ne 2
1691    sox input.wav \-c 1 output.wav bass \-b 24
1692    sox input.wav      output.wav bass \-b 24 channels 1
1694 though the second form is more flexible as it allows the effects to
1695 be ordered arbitrarily.
1697 See also
1698 .B remix
1699 for an effect that allows channels to be mixed/selected arbitrarily.
1701 \fBchorus \fIgain-in gain-out\fR <\fIdelay decay speed depth \fB\-s\fR\^|\^\fB\-t\fR>
1702 Add a chorus effect to the audio.  This can make a single vocal sound
1703 like a chorus, but can also be applied to instrumentation.
1705 Chorus resembles an echo effect with a short delay, but
1706 whereas with echo the delay is constant, with chorus, it
1707 is varied using sinusoidal or triangular modulation.  The modulation
1708 depth defines the range the modulated delay is played before or after the
1709 delay. Hence the delayed sound will sound slower or faster, that is the delayed
1710 sound tuned around the original one, like in a chorus where some vocals are
1711 slightly off key.
1712 See [3] for more discussion of the chorus effect.
1714 Each four-tuple parameter
1715 delay/decay/speed/depth gives the delay in milliseconds
1716 and the decay (relative to gain-in) with a modulation
1717 speed in Hz using depth in milliseconds.
1718 The modulation is either sinusoidal (\fB\-s\fR) or triangular
1719 (\fB\-t\fR).  Gain-out is the volume of the output.
1721 A typical delay is around 40ms to 60ms; the modulation speed is best
1722 near 0\*d25Hz and the modulation depth around 2ms.
1723 For example, a single delay:
1725    play guitar1.wav chorus 0.7 0.9 55 0.4 0.25 2 \-t
1727 Two delays of the original samples:
1729 .ne 2
1730    play guitar1.wav chorus 0.6 0.9 50 0.4 0.25 2 \-t \\
1731          60 0.32 0.4 1.3 \-s
1733 A fuller sounding chorus (with three additional delays):
1735 .ne 2
1736    play guitar1.wav chorus 0.5 0.9 50 0.4 0.25 2 \-t \\
1737          60 0.32 0.4 2.3 \-t 40 0.3 0.3 1.3 \-s
1740 \fBcompand \fIattack1\fB,\fIdecay1\fR{\fB,\fIattack2\fB,\fIdecay2\fR}
1741 [\fIsoft-knee-dB\fB:\fR]\fIin-dB1\fR[\fB,\fIout-dB1\fR]{\fB,\fIin-dB2\fB,\fIout-dB2\fR}
1743 [\fIgain\fR [\fIinitial-volume-dB\fR [\fIdelay\fR]]]
1745 Compand (compress or expand) the dynamic range of the audio.
1748 .I attack
1750 .I decay
1751 parameters (in seconds) determine the time over which the
1752 instantaneous level of the input signal is averaged to determine its
1753 volume; attacks refer to increases in volume and decays refer to
1754 decreases.
1755 For most situations, the attack time (response to the music getting
1756 louder) should be shorter than the decay time because the human ear is more
1757 sensitive to sudden loud music than sudden soft music.
1758 Where more than one pair of attack/decay parameters are
1759 specified, each input channel is companded separately and the number of
1760 pairs must agree with the number of input channels.
1761 Typical values are
1762 .B 0\*d3,0\*d8
1763 seconds.
1765 The second parameter is a list of points on the compander's transfer
1766 function specified in dB relative to the maximum possible signal
1767 amplitude.  The input values must be in a strictly increasing order but
1768 the transfer function does not have to be monotonically rising.  If
1769 omitted, the value of
1770 .I out-dB1
1771 defaults to the same value as
1772 .IR in-dB1 ;
1773 levels below
1774 .I in-dB1
1775 are not companded (but may have gain applied to them).
1776 The point \fB0,0\fR is assumed but may be overridden (by
1777 \fB0,\fIout-dBn\fR).
1778 If the list is preceded by a
1779 .I soft-knee-dB
1780 value, then the points at where adjacent line segments on the
1781 transfer function meet will be rounded by the amount given.
1782 Typical values for the transfer function are
1783 .BR 6:\-70,\-60,\-20 .
1785 The third (optional) parameter is an additional gain in dB to be applied
1786 at all points on the transfer function and allows easy adjustment
1787 of the overall gain.
1789 The fourth (optional) parameter is an initial level to be assumed for
1790 each channel when companding starts.  This permits the user to supply a
1791 nominal level initially, so that, for example, a very large gain is not
1792 applied to initial signal levels before the companding action has begun
1793 to operate: it is quite probable that in such an event, the output would
1794 be severely clipped while the compander gain properly adjusts itself.
1795 A typical value (for audio which is initially quiet) is
1796 .B \-90
1799 The fifth (optional) parameter is a delay in seconds.  The input signal
1800 is analysed immediately to control the compander, but it is delayed
1801 before being fed to the volume adjuster.  Specifying a delay
1802 approximately equal to the attack/decay times allows the compander to
1803 effectively operate in a `predictive' rather than a reactive mode.
1804 A typical value is
1805 .B 0\*d2
1806 seconds.
1808 center;
1809 c8 c8 c.
1810 *       *       *
1814 The following example might be used to make a piece of music with both
1815 quiet and loud passages suitable for listening to in a noisy environment
1816 such as a moving vehicle:
1818    sox asz.wav asz-car.wav compand 0.3,1 6:\-70,\-60,\-20 \-5 \-90 0.2
1820 The transfer function (`6:\-70,...') says that very soft sounds (below
1821 \-70dB) will remain unchanged.  This will stop the compander from
1822 boosting the volume on `silent' passages such as between movements.
1823 However, sounds in the range \-60dB to 0dB (maximum
1824 volume) will be boosted so that the 60dB dynamic range of the
1825 original music will be compressed 3-to-1 into a 20dB range, which is
1826 wide enough to enjoy the music but narrow enough to get around the
1827 road noise.  The `6:' selects 6dB soft-knee companding.
1828 The \-5 (dB) output gain is needed to avoid clipping (the number is
1829 inexact, and was derived by experimentation).
1830 The \-90 (dB) for the initial volume will work fine for a clip that starts
1831 with near silence, and the delay of 0\*d2 (seconds) has the effect of causing
1832 the compander to react a bit more quickly to sudden volume changes.
1834 In the next example, compand is being used as a noise-gate for when the
1835 noise is at a lower level than the signal:
1837    play infile compand .1,.2 \-inf,\-50.1,\-inf,\-50,\-50 0 \-90 .1
1839 Here is another noise-gate, this time for when the
1840 noise is at a higher level than the signal (making it, in some ways,
1841 similar to squelch):
1843    play infile compand .1,.1 \-45.1,\-45,\-inf,0,\-inf 45 \-90 .1
1845 This effect supports the \fB\-\-plot\fR global option (for the transfer function).
1847 See also
1848 .B mcompand
1849 for a multiple-band companding effect.
1851 \fBcontrast \fR[\fIenhancement-amount\fR(75)]
1852 Comparable with compression, this effect modifies an audio signal to
1853 make it sound louder.
1854 .I enhancement-amount
1855 controls the amount of the enhancement and is a number in the range 0\-100.
1856 Note that
1857 .I enhancement-amount
1858 = 0 still gives a significant contrast enhancement.
1860 See also the
1861 .B compand
1863 .B mcompand
1864 effects.
1866 \fBdcshift \fIshift\fR [\fIlimitergain\fR]
1867 Apply a DC shift to the audio.  This can be useful to remove a DC
1868 offset (caused perhaps by a hardware problem in the recording chain)
1869 from the audio.  The effect of a DC offset is reduced headroom and
1870 hence volume.
1872 .B stat
1874 .B stats
1875 effect can be used to determine if a signal has a DC offset.
1877 The given \fIdcshift\fR value is a floating point number in the range
1878 of \(+-2 that indicates the amount to shift the audio (which is in the
1879 range of \(+-1).
1881 An optional
1882 .I limitergain
1883 can be specified as well.  It should have a value much less than 1
1884 (e.g. 0\*d05 or 0\*d02) and is used only on peaks to prevent clipping.
1886 center;
1887 c8 c8 c.
1888 *       *       *
1892 An alternative approach to removing a DC offset (albeit with a short delay)
1893 is to use the
1894 .B highpass
1895 filter effect at a frequency of say 10Hz, as illustrated in the following
1896 example:
1898    sox \-n dc.wav synth 5 sin %0 50
1899    sox dc.wav fixed.wav highpass 10
1902 \fBdeemph\fR
1903 Apply Compact Disc (IEC 60908) de-emphasis (a treble attenuation shelving
1904 filter).
1906 Pre-emphasis was applied in the mastering of some CDs issued in the early
1907 1980s.  These included many classical music albums, as well as now
1908 sought-after issues of albums by The Beatles, Pink Floyd and others.
1909 Pre-emphasis should be removed at playback time by a de-emphasis
1910 filter in the playback device.  However, not all modern CD players have
1911 this filter, and very few PC CD drives have it; playing pre-emphasised
1912 audio without the correct de-emphasis filter results in audio that sounds harsh
1913 and is far from what its creators intended.
1915 With the
1916 .B deemph
1917 effect, it is possible to apply the necessary de-emphasis to audio that
1918 has been extracted from a pre-emphasised CD, and then either burn the
1919 de-emphasised audio to a new CD (which will then play correctly on any
1920 CD player), or simply play the correctly de-emphasised audio files on the
1921 PC.  For example:
1923    sox track1.wav track1\-deemph.wav deemph
1925 and then burn track1-deemph.wav to CD, or
1927    play track1\-deemph.wav
1929 or simply
1931    play track1.wav deemph
1933 The de-emphasis filter is implemented as a biquad and requires the input
1934 audio sample rate to be either 44.1kHz or 48kHz.  Maximum deviation
1935 from the ideal response is only 0\*d06dB (up to 20kHz).
1937 This effect supports the \fB\-\-plot\fR global option.
1939 See also the \fBbass\fR and \fBtreble\fR shelving equalisation effects.
1941 \fBdelay\fR {\fIposition(=)\fR}
1942 Delay one or more audio channels such that they start at the given
1943 \fIposition\fR.
1944 For example,
1945 .B delay 1\*d5 +1 3000s
1946 delays the first channel by 1\*d5 seconds, the second channel by 2\*d5
1947 seconds (one second more than the previous channel), the third channel
1948 by 3000 samples, and leaves any other channels that may be
1949 present un-delayed.
1950 The following (one long) command plays a chime sound:
1952 .ne 3
1953    play \-n synth \-j 3 sin %3 sin %\-2 sin %\-5 sin %\-9 \\
1954         sin %\-14 sin %\-21 fade h .01 2 1.5 delay \\
1955         1.3 1 .76 .54 .27 remix \- fade h 0 2.7 2.5 norm \-1
1957 and this plays a guitar chord:
1959 .ne 2
1960    play \-n synth pl G2 pl B2 pl D3 pl G3 pl D4 pl G4 \\
1961         delay 0 .05 .1 .15 .2 .25 remix \- fade 0 4 .1 norm \-1
1964 \fBdither\fR [\fB\-S\fR\^|\^\fB\-s\fR\^|\^\fB\-f \fIfilter\fR] [\fB\-a\fR] [\fB\-p \fIprecision\fR]
1965 Apply dithering to the audio.
1966 Dithering deliberately adds a small amount of noise to the signal in
1967 order to mask audible quantization effects that can occur if the output
1968 sample size is less than 24 bits.  With no options, this effect will
1969 add triangular (TPDF) white noise.  Noise-shaping (only for certain
1970 sample rates) can be selected with
1971 .BR \-s .
1972 With the
1973 .B \-f
1974 option, it is possible to select a particular noise-shaping filter from
1975 the following list: lipshitz, f-weighted, modified-e-weighted,
1976 improved-e-weighted, gesemann, shibata, low-shibata, high-shibata.  Note
1977 that most filter types are available only with 44100Hz sample rate.  The
1978 filter types are distinguished by the following properties: audibility
1979 of noise, level of (inaudible, but in some circumstances, otherwise
1980 problematic) shaped high frequency noise, and processing speed.
1982 See http://sox.sourceforge.net/SoX/NoiseShaping for graphs of the different
1983 noise-shaping curves.
1986 .B \-S
1987 option selects a slightly `sloped' TPDF, biased towards higher
1988 frequencies.  It can be used at any sampling rate but below \(~~22k,
1989 plain TPDF is probably better, and above \(~~ 37k, noise-shaping
1990 (if available) is probably better.
1993 .B \-a
1994 option enables a mode where dithering (and noise-shaping if applicable)
1995 are automatically enabled only when needed.  The most likely use for
1996 this is when applying fade in or out to an already dithered file, so
1997 that the redithering applies only to the faded portions.  However, auto
1998 dithering is not fool-proof, so the fades should be carefully checked
1999 for any noise modulation; if this occurs, then either re-dither the whole
2000 file, or use
2001 .BR trim ,
2002 .BR fade ,
2003 and concatencate.
2006 .B \-p
2007 option allows overriding the target precision.
2009 If the SoX global option
2010 .B \-R
2011 option is not given, then the pseudo-random number generator used to
2012 generate the white noise will be `reseeded', i.e. the generated noise
2013 will be different between invocations.
2015 This effect should not be followed by any other effect that
2016 affects the audio.
2018 See also the `Dithering' section above.
2020 \fBdownsample\fR [\fIfactor\fR(2)]
2021 Downsample the signal by an integer factor: Only the first out of
2022 each \fIfactor\fR samples is retained, the others are discarded.
2024 No decimation filter is applied.  If the input is not a properly
2025 bandlimited baseband signal, aliasing will occur.  This may be
2026 desirable, e.g., for frequency translation.
2028 For a general resampling effect with anti-aliasing, see \fBrate\fR.  See
2029 also \fBupsample\fR.
2031 \fBearwax\fR
2032 Makes audio easier to listen to on headphones.
2033 Adds `cues' to 44\*d1kHz stereo (i.e. audio CD format) audio so that
2034 when listened to on headphones the stereo image is
2035 moved from inside
2036 your head (standard for headphones) to outside and in front of the
2037 listener (standard for speakers).
2039 \fBecho \fIgain-in gain-out\fR <\fIdelay decay\fR>
2040 Add echoing to the audio.
2041 Echoes are reflected sound and can occur naturally amongst mountains
2042 (and sometimes large buildings) when talking or shouting; digital echo
2043 effects emulate this behaviour and are often used to help fill
2044 out the sound of a single instrument or vocal.  The time difference
2045 between the original signal and the reflection is the `delay' (time),
2046 and the loudness of the reflected signal is the `decay'.  Multiple echoes
2047 can have different delays and decays.
2049 Each given
2050 .I "delay decay"
2051 pair gives the delay in milliseconds
2052 and the decay (relative to gain-in) of that echo.
2053 Gain-out is the volume of the output.
2054 For example:
2055 This will make it sound as if there are twice as many instruments as are
2056 actually playing:
2058    play lead.aiff echo 0.8 0.88 60 0.4
2060 If the delay is very short, then it sound like a (metallic) robot playing
2061 music:
2063    play lead.aiff echo 0.8 0.88 6 0.4
2065 A longer delay will sound like an open air concert in the mountains:
2067    play lead.aiff echo 0.8 0.9 1000 0.3
2069 One mountain more, and:
2071    play lead.aiff echo 0.8 0.9 1000 0.3 1800 0.25
2074 \fBechos \fIgain-in gain-out\fR <\fIdelay decay\fR>
2075 Add a sequence of echoes to the audio.
2076 Each
2077 .I "delay decay"
2078 pair gives the delay in milliseconds
2079 and the decay (relative to gain-in) of that echo.
2080 Gain-out is the volume of the output.
2082 Like the echo effect, echos stand for `ECHO in Sequel', that is the first echos
2083 takes the input, the second the input and the first echos, the third the input
2084 and the first and the second echos, ... and so on.
2085 Care should be taken using many echos; a single echos
2086 has the same effect as a single echo.
2088 The sample will be bounced twice in symmetric echos:
2090    play lead.aiff echos 0.8 0.7 700 0.25 700 0.3
2092 The sample will be bounced twice in asymmetric echos:
2094    play lead.aiff echos 0.8 0.7 700 0.25 900 0.3
2096 The sample will sound as if played in a garage:
2098    play lead.aiff echos 0.8 0.7 40 0.25 63 0.3
2101 \fBequalizer \fIfrequency\fR[\fBk\fR]\fI width\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR] \fIgain\fR
2102 Apply a two-pole peaking equalisation (EQ) filter.
2103 With this filter, the signal-level at and around a selected frequency
2104 can be increased or decreased, whilst (unlike band-pass and band-reject
2105 filters) that at all other frequencies is unchanged.
2107 \fIfrequency\fR gives the filter's central frequency in Hz,
2108 \fIwidth\fR, the band-width,
2109 and \fIgain\fR the required gain
2110 or attenuation in dB.
2111 Beware of
2112 .B Clipping
2113 when using a positive \fIgain\fR.
2115 In order to produce complex equalisation curves, this effect
2116 can be given several times, each with a different central frequency.
2118 The filter is described in detail in [1].
2120 This effect supports the \fB\-\-plot\fR global option.
2122 See also \fBbass\fR and \fBtreble\fR for shelving equalisation effects.
2124 \fBfade\fR [\fItype\fR] \fIfade-in-length\fR [\fIstop-position(=)\fR [\fIfade-out-length\fR]]
2125 Apply a fade effect to the beginning, end, or both of the audio.
2127 An optional \fItype\fR can be specified to select the shape of the fade
2128 curve:
2129 \fBq\fR for quarter of a sine wave, \fBh\fR for half a sine
2130 wave, \fBt\fR for linear (`triangular') slope, \fBl\fR for logarithmic,
2131 and \fBp\fR for inverted parabola.  The default is logarithmic.
2133 A fade-in starts from the first sample and ramps the signal level from 0
2134 to full volume over the time given as \fIfade-in-length\fR.  Specify 0 if
2135 no fade-in is wanted.
2137 For fade-outs, the audio will be truncated at
2138 .I stop-position
2139 and the signal level will be ramped from full volume down to 0 over an
2140 interval of \fIfade-out-length\fR before the \fIstop-position\fR.  If
2141 .I fade-out-length
2142 is not specified, it defaults to the same value as
2143 \fIfade-in-length\fR.
2144 No fade-out is performed if
2145 .I stop-position
2146 is not specified.
2147 If the audio length can be determined from the input file header and any
2148 previous effects, then \fB\-0\fR (or, for historical reasons, \fB0\fR) may
2149 be specified for
2150 .I stop-position
2151 to indicate the usual case of a fade-out that ends at the end of the input
2152 audio stream.
2154 Any time specification may be used for \fIfade-in-length\fR and
2155 \fIfade-out-length\fR.
2157 See also the
2158 .B splice
2159 effect.
2161 \fBfir\fR [\fIcoefs-file\fR\^|\^\fIcoefs\fR]
2162 Use SoX's FFT convolution engine with given FIR filter
2163 coefficients.
2164 If a single argument is given then this is treated as the name of a file
2165 containing the filter coefficients (white-space separated; may contain
2166 `#' comments).  If the given filename is `\-', or if no argument is
2167 given, then the coefficients are read from the `standard input' (stdin);
2168 otherwise, coefficients may be given on the command line.
2169 Examples:
2171    sox infile outfile fir 0.0195 \-0.082 0.234 0.891 \-0.145 0.043
2174    sox infile outfile fir coefs.txt
2176 with coefs.txt containing
2178    # HP filter
2179    # freq=10000
2180      1.2311233052619888e\-01
2181     \-4.4777096106211783e\-01
2182      5.1031563346705155e\-01
2183     \-6.6502926320995331e\-02
2184    ...
2187 This effect supports the \fB\-\-plot\fR global option.
2189 \fBflanger\fR [\fIdelay depth regen width speed shape phase interp\fR]
2190 Apply a flanging effect to the audio.
2191 See [3] for a detailed description of flanging.
2193 All parameters are optional (right to left).
2194 .ne 15
2196 center;
2197 cI cI cI lI
2198 cI c c l.
2199 \       Range   Default Description
2200 delay   0 \- 30 0       Base delay in milliseconds.
2201 depth   0 \- 10 2       Added swept delay in milliseconds.
2202 regen   \-95 \- 95      0       T{
2204 Percentage regeneration (delayed signal feedback).
2206 width   0 \- 100        71      T{
2208 Percentage of delayed signal mixed with original.
2210 speed   0\*d1 \- 10     0\*d5   Sweeps per second (Hz).
2211 shape   \       sin     Swept wave shape: \fBsine\fR\^|\^\fBtriangle\fR.
2212 phase   0 \- 100        25      T{
2214 Swept wave percentage phase-shift for multi-channel (e.g. stereo) flange;
2215 0 = 100 = same phase on each channel.
2217 interp  \       lin     T{
2219 Digital delay-line interpolation: \fBlinear\fR\^|\^\fBquadratic\fR.
2224 \fBgain \fR[\fB\-e\fR\^|\^\fB\-B\fR\^|\^\fB\-b\fR\^|\^\fB\-r\fR] [\fB\-n\fR] [\fB\-l\fR\^|\^\fB\-h\fR] [\fIgain-dB\fR]
2225 Apply amplification or attenuation to the audio signal, or, in some
2226 cases, to some of its channels.
2227 Note that use of any of
2228 .BR \-e ,
2229 .BR \-B ,
2230 .BR \-b ,
2231 .BR \-r ,
2233 .B \-n
2234 requires temporary file space to store the audio to be processed, so may
2235 be unsuitable for use with `streamed' audio.
2237 Without other options,
2238 .I gain-dB
2239 is used to adjust the signal power level by the given number of dB:
2240 positive amplifies (beware of Clipping), negative attenuates.  With
2241 other options, the
2242 .I gain-dB
2243 amplification or attenuation is (logically) applied after the processing due to those options.
2245 Given the
2246 .B \-e
2247 option, the levels of the audio channels of a multi-channel file are `equalised', i.e.
2248 gain is applied to all channels other than that with the highest peak
2249 level, such that all channels attain the same peak level
2250 (but, without also giving
2251 .BR \-n ,
2252 the audio is not `normalised').
2255 .B \-B
2256 (balance) option is similar to
2257 .BR \-e ,
2258 but with
2259 .BR \-B,
2260 the RMS level is used instead of the peak level.
2261 .B \-B
2262 might be used to correct stereo imbalance caused by an imperfect record
2263 turntable cartridge.   Note
2264 that unlike
2265 .BR \-e ,
2266 .B \-B
2267 might cause some clipping.
2269 .B \-b
2270 is similar to
2271 .B \-B
2272 but has clipping protection, i.e.  if necessary to prevent clipping
2273 whilst balancing, attenuation is applied to all channels.
2274 Note, however, that in conjunction with
2275 .BR \-n ,
2276 .B \-B
2278 .B \-b
2279 are synonymous.
2282 .B \-r
2283 option is used in conjunction with a prior invocation of
2284 .B gain
2285 with the
2286 .B \-h
2287 option\*msee below for details.
2290 .B \-n
2291 option normalises the audio to 0dB FSD; it is often used in conjunction with a negative
2292 .I gain-dB
2293 to the effect that the audio is normalised to a given level below 0dB.
2294 For example,
2296    sox infile outfile gain \-n
2298 normalises to 0dB, and
2300    sox infile outfile gain \-n \-3
2302 normalises to \-3dB.
2305 .B \-l
2306 option invokes a simple limiter, e.g.
2308    sox infile outfile gain \-l 6
2310 will apply 6dB of gain but never clip.  Note that limiting more than a
2311 few dBs more than occasionally (in a piece of audio) is not recommended
2312 as it can cause audible distortion.
2313 See the
2314 .B compand
2315 effect for a more capable limiter.
2318 .B \-h
2319 option is used to apply gain to provide head-room for subsequent
2320 processing.  For example, with
2322    sox infile outfile gain \-h bass +6
2324 6dB of attenuation will be applied prior to the bass boosting effect
2325 thus ensuring that it will not clip.  Of course, with bass, it is
2326 obvious how much headroom will be needed, but with other effects (e.g.
2327 rate, dither) it is not always as clear.  Another advantage of using
2328 \fBgain \-h\fR rather than an explicit attenuation, is that if the
2329 headroom is not used by subsequent effects, it can be reclaimed with
2330 \fBgain \-r\fR, for example:
2332    sox infile outfile gain \-h bass +6 rate 44100 gain \-r
2334 The above effects chain guarantees never to clip nor amplify;
2335 it attenuates if necessary to prevent clipping, but by only as
2336 much as is needed to do so.
2338 Output formatting (dithering and bit-depth reduction) also requires
2339 headroom (which cannot be `reclaimed'), e.g.
2341    sox infile outfile gain \-h bass +6 rate 44100 gain \-rh dither
2343 Here, the second
2344 .B gain
2345 invocation, reclaims as much of the headroom as it can from the
2346 preceding effects, but retains as much headroom as is needed for
2347 subsequent processing.
2348 The SoX global option
2349 .B \-G
2350 can be given to automatically invoke \fBgain \-h\fR and \fBgain \-r\fR.
2352 See also the
2353 .B norm
2355 .B vol
2356 effects.
2358 \fBhighpass\fR\^|\^\fBlowpass\fR [\fB\-1\fR|\fB\-2\fR] \fIfrequency\fR[\fBk\fR]\fR [\fRwidth\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR]]
2359 Apply a high-pass or low-pass filter with 3dB point \fIfrequency\fR.
2360 The filter can be either single-pole (with
2361 .BR \-1 ),
2362 or double-pole (the default, or with
2363 .BR \-2 ).
2364 .I width
2365 applies only to double-pole filters;
2366 the default is Q = 0\*d707 and gives a Butterworth response.  The filters
2367 roll off at 6dB per pole per octave (20dB per pole per decade).  The
2368 double-pole filters are described in detail in [1].
2370 These effects support the \fB\-\-plot\fR global option.
2372 See also \fBsinc\fR for filters with a steeper roll-off.
2374 \fBhilbert\fR [\fB\-n \fItaps\fR]
2375 Apply an odd-tap Hilbert transform filter, phase-shifting the signal
2376 by 90 degrees.
2378 This is used in many matrix coding schemes and for analytic signal
2379 generation.  The process is often written as a multiplication by \fIi\fR
2380 (or \fIj\fR), the imaginary unit.
2382 An odd-tap Hilbert transform filter has a bandpass characteristic,
2383 attenuating the lowest and highest frequencies.  Its bandwidth can be
2384 controlled by the number of filter taps, which can be specified with
2385 \fB\-n\fR.  By default, the number of taps is chosen for a cutoff
2386 frequency of about 75 Hz.
2388 This effect supports the \fB\-\-plot\fR global option.
2390 \fBladspa\fR [\fB-l\fR\^|\^\fB-r\fR] \fImodule\fR [\fIplugin\fR] [\fIargument\fR ...]
2391 Apply a LADSPA [5] (Linux Audio Developer's Simple Plugin API) plugin.
2392 Despite the name, LADSPA is not Linux-specific, and a wide range of
2393 effects is available as LADSPA plugins, such as cmt [6] (the Computer
2394 Music Toolkit) and Steve Harris's plugin collection [7]. The first
2395 argument is the plugin module, the second the name of the plugin (a
2396 module can contain more than one plugin), and any other arguments are
2397 for the control ports of the plugin. Missing arguments are supplied by
2398 default values if possible.
2400 Normally, the number of input ports of the plugin must match the number
2401 of input channels, and the number of output ports determines the output
2402 channel count.  However, the
2403 .B \-r
2404 (replicate) option allows cloning a mono plugin to handle multi-channel
2405 input.
2407 Some plugins introduce latency which SoX may optionally compensate for.
2409 .B \-l
2410 (latency compensation) option automatically compensates for latency
2411 as reported by the plugin via an output control port named "latency".
2413 If found, the environment variable LADSPA_PATH will be used as search
2414 path for plugins.
2416 \fBloudness\fR [\fIgain\fR [\fIreference\fR]]
2417 Loudness control\*msimilar to the
2418 .B gain
2419 effect, but provides equalisation for the human auditory system.  See
2420 http://en.wikipedia.org/wiki/Loudness for a detailed description of
2421 loudness.  The gain is adjusted by the given
2422 .I gain
2423 parameter (usually negative) and the signal equalised according to ISO
2424 226 w.r.t. a reference level of 65dB, though an alternative
2425 .I reference
2426 level may be given if the original audio has been equalised for some
2427 other optimal level.
2428 A default gain of \-10dB is used if a
2429 .I gain
2430 value is not given.
2432 See also the
2433 .B gain
2434 effect.
2436 \fBlowpass\fR [\fB\-1\fR|\fB\-2\fR] \fIfrequency\fR[\fBk\fR]\fR [\fRwidth\fR[\fBq\fR\^|\^\fBo\fR\^|\^\fBh\fR\^|\^\fBk\fR]]
2437 Apply a low-pass filter.
2438 See the description of the \fBhighpass\fR effect for details.
2440 \fBmcompand\fR \(dq\fIattack1\fB,\fIdecay1\fR{\fB,\fIattack2\fB,\fIdecay2\fR}
2441 [\fIsoft-knee-dB\fB:\fR]\fIin-dB1\fR[\fB,\fIout-dB1\fR]{\fB,\fIin-dB2\fB,\fIout-dB2\fR}
2443 [\fIgain\fR [\fIinitial-volume-dB\fR [\fIdelay\fR]]]\(dq {\fIcrossover-freq\fR[\fBk\fR] \(dqattack1,...\(dq}
2445 The multi-band compander is similar to the single-band compander but the
2446 audio is first divided into bands using Linkwitz-Riley cross-over filters
2447 and a separately specifiable compander run on each band.  See the
2448 \fBcompand\fR effect for the definition of its parameters.  Compand
2449 parameters are specified between double quotes and the crossover
2450 frequency for that band is given by \fIcrossover-freq\fR; these can be
2451 repeated to create multiple bands.
2453 For example, the following (one long) command shows how multi-band
2454 companding is typically used in FM radio:
2456 .ne 8
2457    play track1.wav gain \-3 sinc 8000\- 29 100 mcompand \\
2458         \(dq0.005,0.1 \-47,\-40,\-34,\-34,\-17,\-33\(dq 100 \\
2459         \(dq0.003,0.05 \-47,\-40,\-34,\-34,\-17,\-33\(dq 400 \\
2460         \(dq0.000625,0.0125 \-47,\-40,\-34,\-34,\-15,\-33\(dq 1600 \\
2461         \(dq0.0001,0.025 \-47,\-40,\-34,\-34,\-31,\-31,\-0,\-30\(dq 6400 \\
2462         \(dq0,0.025 \-38,\-31,\-28,\-28,\-0,\-25\(dq \\
2463         gain 15 highpass 22 highpass 22 sinc \-n 255 \-b 16 \-17500 \\
2464         gain 9 lowpass \-1 17801
2466 The audio file is played with a simulated FM radio sound (or broadcast
2467 signal condition if the lowpass filter at the end is skipped).
2468 Note that the pipeline is set up with US-style 75us pre-emphasis.
2470 See also
2471 .B compand
2472 for a single-band companding effect.
2474 \fBnoiseprof\fR [\fIprofile-file\fR]
2475 Calculate a profile of the audio for use in noise reduction.  See the
2476 description of the \fBnoisered\fR effect for details.
2478 \fBnoisered\fR [\fIprofile-file\fR [\fIamount\fR]]
2479 Reduce noise in the audio signal by profiling and filtering.  This
2480 effect is moderately effective at removing consistent background noise
2481 such as hiss or hum.  To use it, first run SoX with the \fBnoiseprof\fR
2482 effect on a section of audio that ideally would contain silence but in
2483 fact contains noise\*msuch sections are typically found at the beginning
2484 or the end of a recording.  \fBnoiseprof\fR will write out a noise
2485 profile to \fIprofile-file\fR, or to stdout if no \fIprofile-file\fR or
2486 if `\-' is given.  E.g.
2488    sox speech.wav \-n trim 0 1.5 noiseprof speech.noise-profile
2490 To actually remove the noise, run SoX again, this time with the \fBnoisered\fR
2491 effect;
2492 .B noisered
2493 will reduce noise according to a noise profile (which was generated by
2494 .BR noiseprof ),
2495 from
2496 .IR profile-file ,
2497 or from stdin if no \fIprofile-file\fR or if `\-' is given.  E.g.
2499    sox speech.wav cleaned.wav noisered speech.noise-profile 0.3
2501 How much noise should be removed is specified by
2502 .IR amount \*ma
2503 number between 0 and 1 with a default of 0\*d5.  Higher numbers will
2504 remove more noise but present a greater likelihood of removing wanted
2505 components of the audio signal.  Before replacing an original recording
2506 with a noise-reduced version, experiment with different
2507 .I amount
2508 values to find the optimal one for your audio; use headphones to check
2509 that you are happy with the results, paying particular attention to quieter
2510 sections of the audio.
2512 On most systems, the two stages\*mprofiling and reduction\*mcan be combined
2513 using a pipe, e.g.
2515    sox noisy.wav \-n trim 0 1 noiseprof | play noisy.wav noisered
2518 \fBnorm\fR [\fIdB-level\fR]
2519 Normalise the audio.
2520 .B norm
2521 is just an alias for \fBgain \-n\fR; see the
2522 .B gain
2523 effect for details.
2525 \fBoops\fR
2526 Out Of Phase Stereo effect.
2527 Mixes stereo to twin-mono where each mono channel contains the
2528 difference between the left and right stereo channels.
2529 This is sometimes known as the `karaoke' effect as it often has the effect
2530 of removing most or all of the vocals from a recording.
2531 It is equivalent to \fBremix 1,2i 1,2i\fR.
2533 \fBoverdrive\fR [\fIgain\fR(20) [\fIcolour\fR(20)]]
2534 Non linear distortion.
2535 The \fIcolour\fR parameter controls the amount of even harmonic content
2536 in the over-driven output.
2538 \fBpad\fR { \fIlength\fR[\fB@\fIposition(=)\fR] }
2539 Pad the audio with silence, at the beginning, the end, or any
2540 specified points through the audio.
2541 .I length
2542 is the amount of silence to insert and
2543 .I position
2544 the position in the input audio stream at which to insert it.
2545 Any number of lengths and positions may be specified, provided that
2546 a specified position is not less that the previous one, and any time
2547 specification may be used for them.
2548 .I position
2549 is optional for the first and last lengths specified and
2550 if omitted correspond to the beginning and the end of the audio respectively.
2551 For example,
2552 .B pad 1\*d5 1\*d5
2553 adds 1\*d5 seconds of silence padding at each end of the audio, whilst
2554 .B pad 4000s@3:00
2555 inserts 4000 samples of silence 3 minutes into the audio.
2556 If silence is wanted only at the end of the audio, specify either the end
2557 position or specify a zero-length pad at the start.
2559 See also
2560 .B delay
2561 for an effect that can add silence at the beginning of
2562 the audio on a channel-by-channel basis.
2564 \fBphaser \fIgain-in gain-out delay decay speed\fR [\fB\-s\fR\^|\^\fB\-t\fR]
2565 Add a phasing effect to the audio.
2566 See [3] for a detailed description of phasing.
2568 delay/decay/speed gives the delay in milliseconds
2569 and the decay (relative to gain-in) with a modulation
2570 speed in Hz.
2571 The modulation is either sinusoidal (\fB\-s\fR) \*mpreferable for multiple
2572 instruments, or triangular
2573 (\fB\-t\fR) \*mgives single instruments a sharper phasing effect.
2574 The decay should be less than 0\*d5 to avoid
2575 feedback, and usually no less than 0\*d1.  Gain-out is the volume of the output.
2577 For example:
2579    play snare.flac phaser 0.8 0.74 3 0.4 0.5 \-t
2581 Gentler:
2583    play snare.flac phaser 0.9 0.85 4 0.23 1.3 \-s
2585 A popular sound:
2587    play snare.flac phaser 0.89 0.85 1 0.24 2 \-t
2589 More severe:
2591    play snare.flac phaser 0.6 0.66 3 0.6 2 \-t
2594 \fBpitch \fR[\fB\-q\fR] \fIshift\fR [\fIsegment\fR [\fIsearch\fR [\fIoverlap\fR]]]
2595 Change the audio pitch (but not tempo).
2597 .I shift
2598 gives the pitch shift as positive or negative `cents' (i.e. 100ths of a
2599 semitone).  See the
2600 .B tempo
2601 effect for a description of the other parameters.
2603 See also the \fBbend\fR, \fBspeed\fR,
2605 .B tempo
2606 effects.
2608 \fBrate\fR [\fB\-q\fR\^|\^\fB\-l\fR\^|\^\fB\-m\fR\^|\^\fB\-h\fR\^|\^\fB\-v\fR] [override-options] \fIRATE\fR[\fBk\fR]
2609 Change the audio sampling rate (i.e. resample the audio) to any given
2610 .I RATE
2611 (even non-integer if this is supported by the output file format)
2612 using a quality level defined as follows:
2613 .ne 10
2615 center;
2616 cI cI2w9 cI2w6 cIw6 lIw17
2617 cB c c c l.
2618 \       Quality T{
2620 Band-width
2621 T}      Rej dB  T{
2623 Typical Use
2625 \-q     T{
2627 quick
2628 T}      n/a     T{
2630 \(~=30 @ \ Fs/4
2631 T}      T{
2633 playback on ancient hardware
2635 \-l     low     80%     100     T{
2637 playback on old hardware
2639 \-m     medium  95%     100     T{
2641 audio playback
2643 \-h     high    95%     125     T{
2645 16-bit mastering (use with dither)
2647 \-v     T{
2649 very high
2650 T}      95%     175     24-bit mastering
2654 where
2655 .I Band-width
2656 is the percentage of the audio frequency band that is preserved and
2657 .I Rej dB
2658 is the level of noise rejection.  Increasing levels of resampling
2659 quality come at the expense of increasing amounts of time to process the
2660 audio.  If no quality option is given, the quality level used is `high'
2661 (but see `Playing & Recording Audio' above regarding playback).
2663 The `quick' algorithm uses cubic interpolation; all others use
2664 band-limited interpolation.  By default, all algorithms have
2665 a `linear' phase response; for `medium', `high' and
2666 `very high', the phase response is configurable (see below).
2669 .B rate
2670 effect is invoked automatically if SoX's \fB\-r\fR option specifies a
2671 rate that is different to that of the input file(s).  Alternatively, if
2672 this effect is given explicitly, then SoX's
2673 .B \-r
2674 option need not be given.  For example, the following two commands are
2675 equivalent:
2677 .ne 2
2678    sox input.wav \-r 48k output.wav bass \-b 24
2679    sox input.wav        output.wav bass \-b 24 rate 48k
2681 though the second command is more flexible as it allows
2682 .B rate
2683 options to be given, and allows the effects to be ordered arbitrarily.
2685 center;
2686 c8 c8 c.
2687 *       *       *
2691 Warning: technically detailed discussion follows.
2693 The simple quality selection described above provides settings that
2694 satisfy the needs of the vast majority of resampling tasks.
2695 Occasionally, however, it may be desirable to fine-tune the resampler's
2696 filter response; this can be achieved using
2697 .IR override\ options ,
2698 as detailed in the following table:
2699 .ne 6
2701 center;
2702 lB lw51.
2703 \-M/\-I/\-L     Phase response = minimum/intermediate/linear
2704 \-s     Steep filter (band-width = 99%)
2705 \-a     Allow aliasing/imaging above the pass-band
2706 \-b\ 74\-99\*d7 Any band-width %
2707 \-p\ 0\-100     T{
2709 Any phase response (0 = minimum, 25 = intermediate, 50 = linear, 100 = maximum)
2714 N.B.  Override options cannot be used with the `quick' or `low'
2715 quality algorithms.
2717 All resamplers use filters that can sometimes create `echo' (a.k.a.
2718 `ringing') artefacts with transient signals such as those that occur
2719 with `finger snaps' or other highly percussive sounds.  Such artefacts are
2720 much more noticeable to the human ear if they occur before the transient
2721 (`pre-echo') than if they occur after it (`post-echo').  Note that
2722 frequency of any such artefacts is related to the smaller of the
2723 original and new sampling rates but that if this is at least 44\*d1kHz,
2724 then the artefacts will lie outside the range of human hearing.
2726 A phase response setting may be used to control the distribution of any
2727 transient echo between
2728 `pre' and `post': with minimum phase, there is no pre-echo but the
2729 longest post-echo; with linear phase, pre and post echo are in equal
2730 amounts (in signal terms, but not audibility terms); the intermediate
2731 phase setting attempts to find the best compromise by selecting a small
2732 length (and level) of pre-echo and a medium lengthed post-echo.
2734 Minimum, intermediate, or linear phase response is selected using the
2735 .BR \-M ,
2736 .BR \-I ,
2738 .B \-L
2739 option; a custom phase response can be created with the
2740 .B \-p
2741 option.  Note that phase responses between `linear' and `maximum'
2742 (greater than 50) are rarely useful.
2744 A resampler's band-width setting determines how much of the frequency
2745 content of the original signal (w.r.t. the original sample rate when
2746 up-sampling, or the new sample rate when down-sampling) is preserved
2747 during conversion.  The term `pass-band' is used to refer to all frequencies
2748 up to the band-width point (e.g. for 44\*d1kHz sampling rate, and a
2749 resampling band-width of 95%, the pass-band represents frequencies from
2750 0Hz (D.C.) to circa 21kHz).  Increasing the resampler's band-width
2751 results in a slower conversion and can increase transient echo
2752 artefacts (and vice versa).
2755 .B \-s
2756 `steep filter' option changes resampling band-width from the default 95%
2757 (based on the 3dB point), to 99%.  The
2758 .B \-b
2759 option allows the band-width to be set to any value in the range
2760 74\-99\*d7 %, but note that band-width values greater than 99% are not
2761 recommended for normal use as they can cause excessive transient echo.
2763 If the
2764 .B \-a
2765 option is given, then aliasing/imaging above the pass-band is allowed.  For
2766 example, with 44\*d1kHz sampling rate, and a
2767 resampling band-width of 95%, this means that frequency content above
2768 21kHz can be distorted; however, since this is above the pass-band (i.e.
2769 above the highest frequency of interest/audibility), this may not be a
2770 problem.  The benefits of allowing aliasing/imaging are reduced processing time,
2771 and reduced (by almost half) transient echo artefacts.
2772 Note that if this option is given, then
2773 the minimum band-width allowable with
2774 .B \-b
2775 increases to 85%.
2777 Examples:
2779    sox input.wav \-b 16 output.wav rate \-s \-a 44100 dither \-s
2781 default (high) quality resampling; overrides: steep filter, allow
2782 aliasing; to 44\*d1kHz sample rate; noise-shaped dither to 16-bit WAV
2783 file.
2785    sox input.wav \-b 24 output.aiff rate \-v \-I \-b 90 48k
2787 very high quality resampling; overrides: intermediate phase, band-width 90%;
2788 to 48k sample rate; store output to 24-bit AIFF file.
2790 center;
2791 c8 c8 c.
2792 *       *       *
2797 .B pitch
2799 .B speed
2800 effects use the
2801 .B rate
2802 effect at their core.
2804 \fBremix\fR [\fB\-a\fR\^|\^\fB\-m\fR\^|\^\fB\-p\fR] <\fIout-spec\fR>
2805 \fIout-spec\fR  = \fIin-spec\fR{\fB,\fIin-spec\fR} | \fB0\fR
2807 \fIin-spec\fR   = [\fIin-chan\fR]\^[\fB\-\fR[\fIin-chan2\fR]]\^[\fIvol-spec\fR]
2809 \fIvol-spec\fR  = \fBp\fR\^|\^\fBi\fR\^|\^\fBv\^\fR[\fIvolume\fR]
2812 Select and mix input audio channels into output audio channels.  Each output
2813 channel is specified, in turn, by a given \fIout-spec\fR: a list of
2814 contributing input channels and volume specifications.
2816 Note that this effect operates on the audio
2817 .I channels
2818 within the SoX effects processing chain; it should not be confused with the
2819 .B \-m
2820 global option (where multiple
2821 .I files
2822 are mix-combined before entering the effects chain).
2825 .I out-spec
2826 contains comma-separated input channel-numbers and hyphen-delimited
2827 channel-number ranges; alternatively,
2828 .B 0
2829 may be given to create a silent output channel.  For example,
2831    sox input.wav output.wav remix 6 7 8 0
2833 creates an output file with four channels, where channels 1, 2, and 3 are
2834 copies of channels 6, 7, and 8 in the input file, and channel 4 is silent.
2835 Whereas
2837    sox input.wav output.wav remix 1\-3,7 3
2839 creates a (somewhat bizarre) stereo output file where the left channel
2840 is a mix-down of input channels 1, 2, 3, and 7, and the right channel is
2841 a copy of input channel 3.
2843 Where a range of channels is specified, the channel numbers to the left and
2844 right of the hyphen are optional and default to 1 and to the number of input
2845 channels respectively. Thus
2847    sox input.wav output.wav remix \-
2849 performs a mix-down of all input channels to mono.
2851 By default, where an output channel is mixed from multiple (n) input
2852 channels, each input channel will be scaled by a factor of \(S1/\s-2n\s+2.
2853 Custom mixing volumes can be set by following a given input channel or range
2854 of input channels with a \fIvol-spec\fR (volume specification).
2855 This is one of the letters \fBp\fR, \fBi\fR, or \fBv\fR,
2856 followed by a volume number, the meaning of which depends on the given
2857 letter and is defined as follows:
2859 center;
2860 lI lI lI
2861 c l l.
2862 Letter  Volume number   Notes
2863 p       power adjust in dB      0 = no change
2864 i       power adjust in dB      T{
2866 As `p', but invert the audio
2868 v       voltage multiplier      T{
2870 1 = no change, 0\*d5 \(~= 6dB attenuation, 2 \(~= 6dB gain, \-1 = invert
2875 If an
2876 .I out-spec
2877 includes at least one
2878 .I vol-spec
2879 then, by default, \(S1/\s-2n\s+2 scaling is not applied to any other channels in the
2880 same out-spec (though may be in other out-specs).
2881 The \-a (automatic)
2882 option however, can be given to retain the automatic scaling in this
2883 case.  For example,
2885    sox input.wav output.wav remix 1,2 3,4v0.8
2887 results in channel level multipliers of 0\*d5,0\*d5 1,0\*d8, whereas
2889    sox input.wav output.wav remix \-a 1,2 3,4v0.8
2891 results in channel level multipliers of 0\*d5,0\*d5 0\*d5,0\*d8.
2893 The \-m (manual) option disables all automatic volume adjustments, so
2895    sox input.wav output.wav remix \-m 1,2 3,4v0.8
2897 results in channel level multipliers of 1,1 1,0\*d8.
2899 The volume number is optional and omitting it corresponds to no volume
2900 change; however, the only case in which this is useful is in conjunction
2901 with
2902 .BR i .
2903 For example, if
2904 .I input.wav
2905 is stereo, then
2907    sox input.wav output.wav remix 1,2i
2909 is a mono equivalent of the
2910 .B oops
2911 effect.
2913 If the \fB\-p\fR option is given, then any automatic \(S1/\s-2n\s+2 scaling
2914 is replaced by \(S1/\s-2\(srn\s+2 (`power') scaling; this gives a louder mix
2915 but one that might occasionally clip.
2917 center;
2918 c8 c8 c.
2919 *       *       *
2923 One use of the
2924 .B remix
2925 effect is to split an audio file into a set of files, each containing
2926 one of the constituent channels (in order to perform subsequent
2927 processing on individual audio channels).  Where more than a few
2928 channels are involved, a script such as the following (Bourne shell
2929 script) is useful:
2931 #!/bin/sh
2932 chans=\`soxi \-c "$1"\`
2933 while [ $chans \-ge 1 ]; do
2934    chans0=\`printf %02i $chans\`   # 2 digits hence up to 99 chans
2935    out=\`echo "$1"|sed "s/\\(.*\\)\\.\\(.*\\)/\\1\-$chans0.\\2/"\`
2936    sox "$1" "$out" remix $chans
2937    chans=\`expr $chans \- 1\`
2938 done
2940 If a file
2941 .I input.wav
2942 containing six audio channels were given, the script would produce six
2943 output files:
2944 .IR input-01.wav ,
2945 \fIinput-02.wav\fR, ...,
2946 .IR input-06.wav .
2948 See also the \fBswap\fR effect.
2950 \fBrepeat\fR [\fIcount\fR(1)|\fB\-\fR]
2951 Repeat the entire audio \fIcount\fR times, or once if \fIcount\fR is not given.
2952 The special value \fB\-\fR requests infinite repetition.
2953 Requires temporary file space to store the audio to be repeated.
2954 Note that repeating once yields two copies: the original audio and the
2955 repeated audio.
2957 \fBreverb\fR [\fB\-w\fR|\fB\-\-wet-only\fR] [\fIreverberance\fR (50%) [\fIHF-damping\fR (50%)
2958 [\fIroom-scale\fR (100%) [\fIstereo-depth\fR (100%)
2960 [\fIpre-delay\fR (0ms) [\fIwet-gain\fR (0dB)]]]]]]
2962 Add reverberation to the audio using the `freeverb' algorithm.  A
2963 reverberation effect is sometimes desirable for concert halls that are too
2964 small or contain so many people that the hall's natural reverberance is
2965 diminished.  Applying a small amount of stereo reverb to a (dry) mono signal
2966 will usually make it sound more natural.  See [3] for a detailed description
2967 of reverberation.
2969 Note that this effect
2970 increases both the volume and the length of the audio, so to prevent clipping
2971 in these domains, a typical invocation might be:
2973    play dry.wav gain \-3 pad 0 3 reverb
2976 .B \-w
2977 option can be given to select only the `wet' signal, thus allowing it to be
2978 processed further, independently of the `dry' signal.  E.g.
2980    play \-m voice.wav "|sox voice.wav \-p reverse reverb \-w reverse"
2982 for a reverse reverb effect.
2984 \fBreverse\fR
2985 Reverse the audio completely.
2986 Requires temporary file space to store the audio to be reversed.
2988 \fBriaa\fR
2989 Apply RIAA vinyl playback equalisation.
2990 The sampling rate must be one of: 44\*d1, 48, 88\*d2, 96 kHz.
2992 This effect supports the \fB\-\-plot\fR global option.
2994 \fBsilence \fR[\fB\-l\fR] \fIabove-periods\fR [\fIduration threshold\fR[\fBd\fR\^|\^\fB%\fR]
2995 [\fIbelow-periods duration threshold\fR[\fBd\fR\^|\^\fB%\fR]]
2997 Removes silence from the beginning, middle, or end of the audio.
2998 `Silence' is determined by a specified threshold.
3000 The \fIabove-periods\fR value is used to indicate if audio should be
3001 trimmed at the beginning of the audio. A value of zero indicates no
3002 silence should be trimmed from the beginning. When specifying a
3003 non-zero \fIabove-periods\fR, it trims audio up until it finds
3004 non-silence. Normally, when trimming silence from beginning of audio
3005 the \fIabove-periods\fR will be 1 but it can be increased to higher
3006 values to trim all audio up to a specific count of non-silence
3007 periods. For example, if you had an audio file with two songs that
3008 each contained 2 seconds of silence before the song, you could specify
3009 an \fIabove-period\fR of 2 to strip out both silence periods and the
3010 first song.
3012 When \fIabove-periods\fR is non-zero, you must also specify a
3013 \fIduration\fR and \fIthreshold\fR. \fIduration\fR indicates the
3014 amount of time that non-silence must be detected before it stops
3015 trimming audio. By increasing the duration, burst of noise can be
3016 treated as silence and trimmed off.
3018 \fIthreshold\fR is used to indicate what sample value you should treat as
3019 silence.  For digital audio, a value of 0 may be fine but for audio
3020 recorded from analog, you may wish to increase the value to account
3021 for background noise.
3023 When optionally trimming silence from the end of the audio, you specify
3024 a \fIbelow-periods\fR count.  In this case, \fIbelow-period\fR means
3025 to remove all audio after silence is detected.
3026 Normally, this will be a value 1 of but it can
3027 be increased to skip over periods of silence that are wanted.  For example,
3028 if you have a song with 2 seconds of silence in the middle and 2 second
3029 at the end, you could set below-period to a value of 2 to skip over the
3030 silence in the middle of the audio.
3032 For \fIbelow-periods\fR, \fIduration\fR specifies a period of silence
3033 that must exist before audio is not copied any more.  By specifying
3034 a higher duration, silence that is wanted can be left in the audio.
3035 For example, if you have a song with an expected 1 second of silence
3036 in the middle and 2 seconds of silence at the end, a duration of 2
3037 seconds could be used to skip over the middle silence.
3039 Unfortunately, you must know the length of the silence at the
3040 end of your audio file to trim off silence reliably.  A workaround is
3041 to use the \fBsilence\fR effect in combination with the \fBreverse\fR effect.
3042 By first reversing the audio, you can use the \fIabove-periods\fR
3043 to reliably trim all audio from what looks like the front of the file.
3044 Then reverse the file again to get back to normal.
3046 To remove silence from the middle of a file, specify a
3047 \fIbelow-periods\fR that is negative.  This value is then
3048 treated as a positive value and is also used to indicate that the
3049 effect should restart processing as specified by the
3050 \fIabove-periods\fR, making it suitable for removing periods of
3051 silence in the middle of the audio.
3053 The option
3054 .B \-l
3055 indicates that \fIbelow-periods\fR \fIduration\fR length of audio
3056 should be left intact at the beginning of each period of silence.
3057 For example, if you want to remove long pauses between words
3058 but do not want to remove the pauses completely.
3060 \fIduration\fR is a time specification with the peculiarity that a bare
3061 number is interpreted as a sample count, not as a number of seconds.
3062 For specifying seconds, either use the \fBt\fR suffix (as in `2t') or
3063 specify minutes, too (as in `0:02').
3065 \fIthreshold\fR numbers may be suffixed with
3066 .B d
3067 to indicate the value is in decibels, or
3068 .B %
3069 to indicate a percentage of maximum value of the sample value
3070 (\fB0%\fR specifies pure digital silence).
3072 The following example shows how this effect can be used to start a recording
3073 that does not contain the delay at the start which usually occurs between
3074 `pressing the record button' and the start of the performance:
3076    rec \fIparameters filename other-effects\fR silence 1 5 2%
3080 \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]]
3082 Apply a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject filter
3083 to the signal.
3084 The \fIfreqHP\fR and \fIfreqLP\fR parameters give the frequencies of the
3085 6dB points of a high-pass and low-pass filter that may be invoked
3086 individually, or together.  If both are
3087 given, then \fIfreqHP\fR less than \fIfreqLP\fR creates a band-pass filter,
3088 \fIfreqHP\fR greater than \fIfreqLP\fR creates a band-reject filter.
3089 For example, the invocations
3091    sinc 3k
3092    sinc -4k
3093    sinc 3k-4k
3094    sinc 4k-3k
3096 create a high-pass, low-pass, band-pass, and band-reject filter
3097 respectively.
3099 The default stop-band attenuation of 120dB can be overridden with
3100 \fB\-a\fR; alternatively, the kaiser-window `beta' parameter can be
3101 given directly with \fB\-b\fR.
3103 The default transition band-width of 5% of the total band can be
3104 overridden with \fB\-t\fR (and \fItbw\fR in Hertz); alternatively, the
3105 number of filter taps can be given directly with \fB\-n\fR.
3107 If both \fIfreqHP\fR and \fIfreqLP\fR are given, then a \fB\-t\fR or
3108 \fB\-n\fR option given to the left of the frequencies applies to both
3109 frequencies; one of these options given to the right of the frequencies
3110 applies only to \fIfreqLP\fR.
3113 .BR \-p ,
3114 .BR \-M ,
3115 .BR \-I ,
3117 .B \-L
3118 options control the filter's phase response; see the \fBrate\fR effect
3119 for details.
3121 This effect supports the \fB\-\-plot\fR global option.
3123 \fBspectrogram \fR[\fIoptions\fR]
3124 Create a spectrogram of the audio; the audio is passed unmodified
3125 through the SoX processing chain.  This effect is optional\*mtype
3126 \fBsox \-\-help\fR and check the list of supported effects to see if
3127 it has been included.
3129 The spectrogram is rendered in a Portable Network Graphic (PNG) file,
3130 and shows time in the X-axis, frequency in the Y-axis, and audio
3131 signal magnitude in the Z-axis.  Z-axis values are represented by the
3132 colour (or optionally the intensity) of the pixels in the X-Y plane.
3133 If the audio signal contains multiple channels then these are shown
3134 from top to bottom starting from channel 1 (which is the left channel
3135 for stereo audio).
3137 For example, if `my.wav' is a stereo file, then with
3139    sox my.wav \-n spectrogram
3141 a spectrogram of the entire file will be created in the file
3142 `spectrogram.png'.  More often though, analysis of a smaller portion
3143 of the audio is required; e.g. with
3145    sox my.wav \-n remix 2 trim 20 30 spectrogram
3147 the spectrogram shows information only from the second (right)
3148 channel, and of thirty seconds of audio starting from twenty seconds
3149 in.  To analyse a small portion of the frequency domain, the
3150 .B rate
3151 effect may be used, e.g.
3153    sox my.wav \-n rate 6k spectrogram
3155 allows detailed analysis of frequencies up to 3kHz (half the sampling
3156 rate) i.e. where the human auditory system is most sensitive.
3157 With
3159    sox my.wav \-n trim 0 10 spectrogram \-x 600 \-y 200 \-z 100
3161 the given options control the size of the spectrogram's X, Y & Z axes
3162 (in this case, the spectrogram area of the produced image will be 600
3163 by 200 pixels in size and the Z-axis range will be 100 dB).  Note that
3164 the produced image includes axes legends etc. and so will be a little
3165 larger than the specified spectrogram size.  In this example:
3167    sox \-n \-n synth 6 tri 10k:14k spectrogram \-z 100 \-w kaiser
3169 an analysis `window' with high dynamic range is selected to best
3170 display the spectrogram of a swept triangular wave.  For a smilar
3171 example, append the following to the `chime' command in the
3172 description of the
3173 .B delay
3174 effect (above):
3176    rate 2k spectrogram \-X 200 \-Z \-10 \-w kaiser
3178 Options are also available to control the appearance (colour-set,
3179 brightness, contrast, etc.) and filename of the spectrogram; e.g. with
3181    sox my.wav \-n spectrogram \-m \-l \-o print.png
3183 a spectrogram is created suitable for printing on a `black and white'
3184 printer.
3186 .I Options:
3188 .IP \fB\-x\ \fInum\fR
3189 Change the (maximum) width (X-axis) of the spectrogram from its default
3190 value of 800 pixels to a given number between 100 and 200000.
3191 See also \fB\-X\fR and \fB\-d\fR.
3192 .IP \fB\-X\ \fInum\fR
3193 X-axis pixels/second; the default is auto-calculated to fit the given
3194 or known audio duration to the X-axis size, or 100 otherwise.  If
3195 given in conjunction with \fB\-d\fR, this option affects the width of
3196 the spectrogram; otherwise, it affects the duration of the
3197 spectrogram.
3198 .I num
3199 can be from 1 (low time resolution) to 5000 (high time resolution)
3200 and need not be an integer.  SoX
3201 may make a slight adjustment to the given number for processing
3202 quantisation reasons; if so, SoX will report the actual number used
3203 (viewable when the SoX global option
3204 .B \-V
3205 is in effect).
3206 See also \fB\-x\fR and \fB\-d\fR.
3207 .IP \fB\-y\ \fInum\fR
3208 Sets the Y-axis size in pixels (per channel); this is the number of
3209 frequency `bins' used in the Fourier analysis that produces the
3210 spectrogram.  N.B. it can be slow to produce the spectrogram if this
3211 number is not one more than a power of two (e.g. 129).  By default the
3212 Y-axis size is chosen automatically (depending on the number of
3213 channels).  See
3214 .B \-Y
3215 for alternative way of setting spectrogram height.
3216 .IP \fB\-Y\ \fInum\fR
3217 Sets the target total height of the spectrogram(s).  The default value
3218 is 550 pixels.  Using this option (and by default), SoX will choose a
3219 height for individual spectrogram channels that is one more than a
3220 power of two, so the actual total height may fall short of the given
3221 number.  However, there is also a minimum height per channel so if
3222 there are many channels, the number may be exceeded.
3224 .B \-y
3225 for alternative way of setting spectrogram height.
3226 .IP \fB\-z\ \fInum\fR
3227 Z-axis (colour) range in dB, default 120.  This sets the dynamic-range
3228 of the spectrogram to be \-\fInum\fR\ dBFS to 0\ dBFS.
3229 .I Num
3230 may range from 20 to 180.  Decreasing dynamic-range effectively
3231 increases the `contrast' of the spectrogram display, and vice versa.
3232 .IP \fB\-Z\ \fInum\fR
3233 Sets the upper limit of the Z-axis in dBFS.
3234 A negative
3235 .I num
3236 effectively increases the `brightness' of the spectrogram display,
3237 and vice versa.
3238 .IP \fB\-n\fR
3239 Sets the upper limit of the Z axis so that the loudest pixels
3240 are shown using the brightest colour in the palette - a kind of
3241 automatic \fB\-Z\fR flag.
3242 .IP \fB\-q\ \fInum\fR
3243 Sets the Z-axis quantisation, i.e. the number of different colours (or
3244 intensities) in which to render Z-axis
3245 values.  A small number (e.g. 4) will give a `poster'-like effect making
3246 it easier to discern magnitude bands of similar level.  Small numbers
3247 also usually
3248 result in small PNG files.  The number given specifies the number of
3249 colours to use inside the Z-axis range; two colours are reserved to
3250 represent out-of-range values.
3251 .IP \fB\-w\ \fIname\fR
3252 Window: Hann (default), Hamming, Bartlett, Rectangular, Kaiser or Dolph.  The
3253 spectrogram is produced using the Discrete Fourier Transform (DFT)
3254 algorithm.  A significant parameter to this algorithm is the choice of
3255 `window function'.  By default, SoX uses the Hann window which has good
3256 all-round frequency-resolution and dynamic-range properties.  For better
3257 frequency resolution (but lower dynamic-range), select a Hamming window;
3258 for higher dynamic-range (but poorer frequency-resolution), select a
3259 Dolph window.  Kaiser, Bartlett and Rectangular windows are also available.
3260 .IP \fB\-W\ \fInum\fR
3261 Window adjustment parameter.  This can be used to make small
3262 adjustments to the Kaiser or Dolph window shape.  A positive number (up to
3263 ten) increases its dynamic range, a negative number decreases it.
3264 .IP \fB\-s\fR
3265 Allow slack overlapping of DFT windows.
3266 This can, in some cases, increase image sharpness and give greater adherence
3267 to the
3268 .B \-x
3269 value, but at the expense of a little spectral loss.
3270 .IP \fB\-m\fR
3271 Creates a monochrome spectrogram (the default is colour).
3272 .IP \fB\-h\fR
3273 Selects a high-colour palette\*mless visually pleasing than the default
3274 colour palette, but it may make it easier to differentiate different levels.
3275 If this option is used in conjunction with
3276 .BR \-m ,
3277 the result will be a hybrid monochrome/colour palette.
3278 .IP \fB\-p\ \fInum\fR
3279 Permute the colours in a colour or hybrid palette.
3281 .I num
3282 parameter, from 1 (the default) to 6, selects the permutation.
3283 .IP \fB\-l\fR
3284 Creates a `printer friendly' spectrogram with a light background (the
3285 default has a dark background).
3286 .IP \fB\-a\fR
3287 Suppress the display of the axis lines.  This is sometimes useful in
3288 helping to discern artefacts at the spectrogram edges.
3289 .IP \fB\-r\fR
3290 Raw spectrogram: suppress the display of axes and legends.
3291 .IP \fB\-A\fR
3292 Selects an alternative, fixed colour-set.  This is provided only for
3293 compatibility with spectrograms produced by another package.  It should
3294 not normally be used as it has some problems, not least, a lack of
3295 differentiation at the bottom end which results in masking of low-level
3296 artefacts.
3297 .IP \fB\-t\ \fItext\fR
3298 Set the image title\*mtext to display above the spectrogram.
3299 .IP \fB\-c\ \fItext\fR
3300 Set (or clear) the image comment\*mtext to display below and to the
3301 left of the spectrogram.
3302 .IP \fB\-o\ \fIfile\fR
3303 Name of the spectrogram output PNG file, default `spectrogram.png'.
3304 If `-' is given, the spectrogram will be sent to standard output
3305 (stdout).
3309 .I Advanced Options:
3311 In order to process a smaller section of audio without affecting other
3312 effects or the output signal (unlike when the
3313 .B trim
3314 effect is used), the following options may be used.
3316 .IP \fB\-d\ \fIduration\fR
3317 This option sets the X-axis resolution such that audio with the given
3318 .I duration
3319 (a time specification) fits the selected (or default) X-axis width.  For
3320 example,
3322    sox input.mp3 output.wav \-n spectrogram \-d 1:00 stats
3324 creates a spectrogram showing the first minute of the audio, whilst
3327 .B stats
3328 effect is applied to the entire audio signal.
3330 See also
3331 .B \-X
3332 for an alternative way of setting the X-axis resolution.
3333 .IP \fB\-S\ \fIposition(=)\fR
3334 Start the spectrogram at the given point in the audio stream.  For
3335 example
3337    sox input.aiff output.wav spectrogram \-S 1:00
3339 creates a spectrogram showing all but the first minute of the audio
3340 (the output file, however, receives the entire audio stream).
3344 For the ability to perform off-line processing of spectral data, see the
3345 .B stat
3346 effect.
3348 \fBspeed \fIfactor\fR[\fBc\fR]
3349 Adjust the audio speed (pitch and tempo together).  \fIfactor\fR
3350 is either the ratio of the new speed to the old speed: greater
3351 than 1 speeds up, less than 1 slows down, or, if appended with the
3352 letter
3353 `c', the number of cents (i.e. 100ths of a semitone) by
3354 which the pitch (and tempo) should be adjusted: greater than 0
3355 increases, less than 0 decreases.
3357 Technically, the speed effect only changes the sample rate information,
3358 leaving the samples themselves untouched.  The \fBrate\fR effect is invoked
3359 automatically to resample to the output sample rate, using its default
3360 quality/speed.  For higher quality or higher speed
3361 resampling, in addition to the \fBspeed\fR effect, specify
3362 the \fBrate\fR effect with the desired quality option.
3364 See also the \fBbend\fR, \fBpitch\fR,
3366 .B tempo
3367 effects.
3369 \fBsplice \fR [\fB\-h\fR\^|\^\fB\-t\fR\^|\^\fB\-q\fR] { \fIposition(=)\fR[\fB,\fIexcess\fR[\fB,\fIleeway\fR]] }
3370 Splice together audio sections.  This effect provides two things over
3371 simple audio concatenation: a (usually short) cross-fade is applied at
3372 the join, and a wave similarity comparison is made to help determine the
3373 best place at which to make the join.
3375 One of the options
3376 .BR \-h ,
3377 .BR \-t ,
3379 .B \-q
3380 may be given to select the fade envelope as half-cosine wave (the default),
3381 triangular (a.k.a. linear), or quarter-cosine wave respectively.
3383 center;
3384 cI lI lI lI
3385 cB l l l.
3386 Type    Audio   Fade level      Transitions
3387 t       correlated      constant gain   abrupt
3388 h       correlated      constant gain   smooth
3389 q       uncorrelated    constant power  smooth
3393 To perform a splice, first use the
3394 .B trim
3395 effect to select the audio sections to be joined together.  As when
3396 performing a tape splice, the end of the section to be spliced onto
3397 should be trimmed with a small
3398 .I excess
3399 (default 0\*d005 seconds) of audio after the ideal joining point.  The
3400 beginning of the audio section to splice on should be trimmed with the
3401 same
3402 .IR excess
3403 (before the ideal joining point), plus an additional
3404 .I leeway
3405 (default 0\*d005 seconds).  Any time specification may be used for these
3406 parameters.  SoX should then be invoked with the two
3407 audio sections as input files and the
3408 .B splice
3409 effect given with the position at which to perform the splice\*mthis is
3410 length of the first audio section (including the excess).
3412 The following diagram uses the tape analogy to illustrate the splice
3413 operation.  The effect simulates the diagonal cuts and joins the two pieces:
3416       length1   excess
3417     -----------><--->
3418     _________   :   :  _________________
3419              \\  :   : :\\     `         
3420               \\ :   : : \\     `        
3421                \\:   : :  \\     `       
3422                 *   : :   * - - *      
3423                  \\  : :   :\\     `     
3424                   \\ : :   : \\     `    
3425     _______________\\: :   :  \\_____`____
3426                       :   :   :     :
3427                       <--->   <----->
3428                       excess  leeway
3431 where * indicates the joining points.
3433 For example, a long song begins with two verses which start (as
3434 determined e.g. by using the
3435 .B play
3436 command with the
3437 .B trim
3438 (\fIstart\fR) effect) at times 0:30\*d125 and 1:03\*d432.
3439 The following commands cut out the first verse:
3441    sox too-long.wav part1.wav trim 0 30.130
3443 (5 ms excess, after the first verse starts)
3445    sox too-long.wav part2.wav trim 1:03.422
3447 (5 ms excess plus 5 ms leeway, before the second verse starts)
3449    sox part1.wav part2.wav just-right.wav splice 30.130
3451 For another example, the SoX command
3453    play "|sox \-n \-p synth 1 sin %1" "|sox \-n \-p synth 1 sin %3"
3455 generates and plays two notes, but there is a nasty click at the
3456 transition; the click can be removed by splicing instead of
3457 concatenating the audio, i.e. by appending \fBsplice 1\fR to the
3458 command. (Clicks at the beginning and end of the audio can be removed by
3459 \fIpreceding\fR the splice effect with \fBfade q .01 2 .01\fR).
3461 Provided your arithmetic is good enough, multiple splices can be
3462 performed with a single
3463 .B splice
3464 invocation.  For example:
3466 #!/bin/sh
3467 # Audio Copy and Paste Over
3468 # acpo infile copy-start copy-stop paste-over-start outfile
3469 # No chained time specifications allowed for the parameters
3470 # (i.e. such that contain +/\-).
3471 e=0.005                      # Using default excess
3472 l=$e                         # and leeway.
3473 sox "$1" piece.wav trim $2\-$e\-$l =$3+$e
3474 sox "$1" part1.wav trim 0 $4+$e
3475 sox "$1" part2.wav trim $4+$3\-$2\-$e\-$l
3476 sox part1.wav piece.wav part2.wav "$5" \\
3477    splice $4+$e +$3\-$2+$e+$l+$e
3479 In the above Bourne shell script,
3480 two splices are used to `copy and paste' audio.
3482 center;
3483 c8 c8 c.
3484 *       *       *
3488 It is also possible to use this effect to perform general cross-fades,
3489 e.g. to join two songs.  In this case,
3490 .I excess
3491 would typically be an number of seconds, the
3492 .B \-q
3493 option would typically be given (to select an `equal power' cross-fade), and
3494 .I leeway
3495 should be zero (which is the default if
3496 .B \-q
3497 is given).  For example, if f1.wav and f2.wav are audio files
3498 to be cross-faded, then
3500    sox f1.wav f2.wav out.wav splice \-q $(soxi \-D f1.wav),3
3502 cross-fades the files where the point of equal loudness is 3 seconds
3503 before the end of f1.wav, i.e. the total length of the cross-fade is
3504 2 \(mu 3 = 6 seconds (Note: the $(...) notation is POSIX shell).
3506 \fBstat\fR [\fB\-s \fIscale\fR] [\fB\-rms\fR] [\fB\-freq\fR] [\fB\-v\fR] [\fB\-d\fR]
3507 Display time and frequency domain statistical information about the audio.
3508 Audio is passed unmodified through the SoX processing chain.
3510 The information is output to the `standard error' (stderr) stream and is
3511 calculated, where
3512 .I n
3513 is the duration of the audio in samples,
3514 .I c
3515 is the number of audio channels,
3516 .I r
3517 is the audio sample rate, and
3518 .I x\s-2\dk\u\s0
3519 represents the PCM value (in the range \-1 to +1 by default) of each successive
3520 sample in the audio,
3521 as follows:
3523 center;
3524 lI l l.
3525 Samples read    \fIn\fR\^\(mu\^\fIc\fR  \ 
3526 Length (seconds)        \fIn\fR\^\(di\^\fIr\fR
3527 Scaled by       \       See \-s below.
3528 Maximum amplitude       max(\fIx\s-2\dk\u\s0\fR)        T{
3529 The maximum sample value in the audio; usually this will be a positive number.
3531 Minimum amplitude       min(\fIx\s-2\dk\u\s0\fR)        T{
3532 The minimum sample value in the audio; usually this will be a negative number.
3534 Midline amplitude       \(12\^min(\fIx\s-2\dk\u\s0\fR)\^+\^\(12\^max(\fIx\s-2\dk\u\s0\fR)
3535 Mean norm       \(S1/\s-2n\s+2\^\(*S\^\^\(br\^\fIx\s-2\dk\u\s0\fR\^\(br\^       T{
3536 The average of the absolute value of each sample in the audio.
3538 Mean amplitude  \(S1/\s-2n\s+2\^\(*S\^\fIx\s-2\dk\u\s0\fR       T{
3539 The average of each sample in the audio.  If this figure is non-zero, then it indicates the
3540 presence of a D.C. offset (which could be removed using the
3541 .B dcshift
3542 effect).
3544 RMS amplitude   \(sr(\(S1/\s-2n\s+2\^\(*S\^\fIx\s-2\dk\u\s0\fR\(S2)     T{
3545 The level of a D.C. signal that would have the same power
3546 as the audio's average power.
3548 Maximum delta   max(\^\(br\^\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR\^\(br\^)
3549 Minimum delta   min(\^\(br\^\fIx\s-2\dk\u\s0\fR\^\-\^\fIx\s-2\dk\-1\u\s0\fR\^\(br\^)
3550 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\^
3551 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)
3552 Rough frequency \       In Hz.
3553 Volume Adjustment       \       T{
3554 The parameter to the
3555 .B vol
3556 effect which would make the audio as loud as possible without clipping.
3557 Note: See the discussion on
3558 .B Clipping
3559 above for reasons why it is rarely a good idea actually to do this.
3564 Note that the delta measurements are not applicable for multi-channel audio.
3567 .B \-s
3568 option can be used to scale the input data by a given factor.
3569 The default value of
3570 .I scale
3571 is 2147483647 (i.e. the maximum value of a 32-bit signed integer).
3572 Internal effects
3573 always work with signed long PCM data and so the value should relate to this
3574 fact.
3577 .B \-rms
3578 option will convert all output average values to `root mean square'
3579 format.
3582 .B \-v
3583 option displays only the `Volume Adjustment' value.
3586 .B \-freq
3587 option calculates the input's power spectrum (4096 point DFT) instead of the
3588 statistics listed above.  This should only be used with a single channel
3589 audio file.
3592 .B \-d
3593 option
3594 displays a hex dump of the 32-bit signed PCM data
3595 audio in SoX's internal buffer.
3596 This is mainly used to help track down endian problems that
3597 sometimes occur in cross-platform versions of SoX.
3599 See also the
3600 .B stats
3601 effect.
3603 \fBstats\fR [\fB\-b \fIbits\fR\^|\^\fB\-x \fIbits\fR\^|\^\fB\-s \fIscale\fR] [\fB\-w \fIwindow-time\fR]
3604 Display time domain statistical information about the audio channels;
3605 audio is passed unmodified through the SoX processing chain.
3606 Statistics are calculated and displayed for each audio channel and,
3607 where applicable, an overall figure is also given.
3609 For example, for a typical well-mastered stereo music file:
3611 center;
3613 .ft CW
3614              Overall     Left      Right
3615 DC offset   0.000803 \-0.000391  0.000803
3616 Min level  \-0.750977 \-0.750977 \-0.653412
3617 Max level   0.708801  0.708801  0.653534
3618 Pk lev dB      \-2.49     \-2.49     \-3.69
3619 RMS lev dB    \-19.41    \-19.13    \-19.71
3620 RMS Pk dB     \-13.82    \-13.82    \-14.38
3621 RMS Tr dB     \-85.25    \-85.25    \-82.66
3622 Crest factor       \-      6.79      6.32
3623 Flat factor     0.00      0.00      0.00
3624 Pk count           2         2         2
3625 Bit-depth      16/16     16/16     16/16
3626 Num samples    7.72M
3627 Length s     174.973
3628 Scale max   1.000000
3629 Window s       0.050
3630 .ft R
3634 .IR DC\ offset ,
3635 .IR Min\ level ,
3637 .I Max\ level
3638 are shown, by default, in the range \(+-1.
3639 If the
3640 .B \-b
3641 (bits) options is given, then these three measurements will be scaled to a signed integer
3642 with the given number of bits; for example, for 16 bits, the scale would be \-32768 to +32767.
3644 .B \-x
3645 option behaves the same way as
3646 .B \-b
3647 except that the signed integer values are displayed in hexadecimal.
3649 .B \-s
3650 option scales the three measurements by a given floating-point number.
3652 .I Pk\ lev\ dB
3654 .I RMS\ lev\ dB
3655 are standard peak and RMS level measured in dBFS.
3656 .I RMS\ Pk\ dB
3658 .I RMS\ Tr\ dB
3659 are peak and trough values for RMS level measured over a short window (default 50ms).
3661 .I Crest\ factor
3662 is the standard ratio of peak to RMS level (note: not in dB).
3664 .I Flat\ factor
3665 is a measure of the flatness (i.e. consecutive samples with the same value) of the signal at
3666 its peak levels (i.e. either
3667 .IR Min\ level ,
3669 .IR Max\ level ).
3670 .I Pk\ count
3671 is the number of occasions (not the number of samples) that the signal attained either
3672 .IR Min\ level ,
3674 .IR Max\ level .
3676 The right-hand
3677 .I Bit-depth
3678 figure is the standard definition of bit-depth i.e. bits less
3679 significant than the given number are fixed at zero.  The left-hand
3680 figure is the number of most significant bits that are fixed at zero (or
3681 one for negative numbers) subtracted from the right-hand figure (the
3682 number subtracted is directly related to
3683 .IR Pk\ lev\ dB ).
3685 For multi-channel audio, an overall figure for each of the above
3686 measurements is given and derived from the channel figures as follows:
3687 .IR DC\ offset :
3688 maximum magnitude;
3689 .IR Max\ level ,
3690 .IR Pk\ lev\ dB ,
3691 .IR RMS\ Pk\ dB ,
3692 .IR Bit-depth :
3693 maximum;
3694 .IR Min\ level ,
3695 .IR RMS\ Tr\ dB :
3696 minimum;
3697 .IR RMS\ lev\ dB ,
3698 .IR Flat\ factor ,
3699 .IR Pk\ count :
3700 average;
3701 .IR Crest\ factor :
3702 not applicable.
3704 .I Length\ s
3705 is the duration in seconds of the audio, and
3706 .I Num\ samples
3707 is equal to the sample-rate multiplied by
3708 .IR Length .
3709 .I Scale\ Max
3710 is the scaling applied to the first three measurements;
3711 specifically, it is the maximum value that could apply to
3712 .IR Max\ level .
3713 .I Window\ s
3714 is the length of the window used for the peak and trough RMS measurements.
3716 See also the
3717 .B stat
3718 effect.
3720 \fBswap\fR
3721 Swap stereo channels.  If the input is not stereo, pairs of channels are
3722 swapped, and a possible odd last channel passed through.  E.g., for seven
3723 channels, the output order will be 2, 1, 4, 3, 6, 5, 7.
3725 See also
3726 .B remix
3727 for an effect that allows arbitrary channel selection and ordering
3728 (and mixing).
3730 \fBstretch \fIfactor\fR [\fIwindow fade shift fading\fR]
3731 Change the audio duration (but not its pitch).
3732 This effect is broadly equivalent to the
3733 .B tempo
3734 effect with (\fIfactor\fR inverted and)
3735 .I search
3736 set to zero, so in general, its results are comparatively poor;
3737 it is retained as it can sometimes out-perform
3738 .B tempo
3739 for small
3740 .IR factor s.
3742 .I factor
3743 of stretching: >1 lengthen, <1 shorten duration.
3744 .I window
3745 size is in ms.  Default is 20ms.  The
3746 .I fade
3747 option, can be `lin'.
3748 .I shift
3749 ratio, in [0 1].  Default depends on stretch factor. 1
3750 to shorten, 0\*d8 to lengthen.  The
3751 .I fading
3752 ratio, in [0 0\*d5].  The amount of a fade's default depends on
3753 .I factor
3754 and \fIshift\fR.
3756 See also the
3757 .B tempo
3758 effect.
3761 \fBsynth\fR [\fB\-j \fIKEY\fR] [\fB\-n\fR] [\fIlen\fR [\fIoff\fR [\fIph\fR [\fIp1\fR [\fIp2\fR [\fIp3\fR]]]]]] {[\fItype\fR] [\fIcombine\fR] \:[[\fB%\fR]\fIfreq\fR[\fBk\fR][\fB:\fR\^|\^\fB+\fR\^|\^\fB/\fR\^|\^\fB\-\fR[\fB%\fR]\fIfreq2\fR[\fBk\fR]]] [\fIoff\fR [\fIph\fR [\fIp1\fR [\fIp2\fR [\fIp3\fR]]]]]}
3763 This effect can be used to generate fixed or swept frequency audio tones
3764 with various wave shapes, or to generate wide-band noise of various
3765 `colours'.
3766 Multiple synth effects can be cascaded to produce more complex
3767 waveforms; at each stage it is possible to choose whether the generated
3768 waveform will be mixed with, or modulated onto
3769 the output from the previous stage.
3770 Audio for each channel in a multi-channel audio file can be synthesised
3771 independently.
3773 Though this effect is used to generate audio, an input file must still
3774 be given, the characteristics of which will be used to set the
3775 synthesised audio length, the number of channels, and the sampling rate;
3776 however, since the input file's audio is not normally needed, a `null
3777 file' (with the special name \fB\-n\fR) is often given instead (and the
3778 length specified as a parameter to \fBsynth\fR or by another given
3779 effect that has an associated length).
3781 For example, the following produces a 3 second, 48kHz,
3782 audio file containing a sine-wave swept from 300 to 3300\ Hz:
3784    sox \-n output.wav synth 3 sine 300\-3300
3786 and this produces an 8\ kHz version:
3788    sox \-r 8000 \-n output.wav synth 3 sine 300\-3300
3790 Multiple channels can be synthesised by specifying the set of
3791 parameters shown between braces multiple times;
3792 the following puts the swept tone in the left channel and adds `brown'
3793 noise in the right:
3795    sox \-n output.wav synth 3 sine 300\-3300 brownnoise
3797 The following example shows how two synth effects can be cascaded
3798 to create a more complex waveform:
3800 .ne 2
3801    play \-n synth 0.5 sine 200\-500 synth 0.5 sine fmod 700\-100
3803 Frequencies can also be given in `scientific' note notation, or, by
3804 prefixing a `%' character, as a number of semitones relative to
3805 `middle A' (440\ Hz).  For example, the following could be used to
3806 help tune a guitar's low `E' string:
3808    play \-n synth 4 pluck %\-29
3810 or with a (Bourne shell) loop, the whole guitar:
3812 .ne 2
3813    for n in E2 A2 D3 G3 B3 E4; do
3814         play \-n synth 4 pluck $n repeat 2; done
3816 See the
3817 .B delay
3818 effect (above) and the reference to `SoX scripting examples' (below)
3819 for more
3820 .B synth
3821 examples.
3823 .B N.B.
3824 This effect generates audio at maximum volume (0dBFS), which means that there
3825 is a high chance of clipping when using the audio subsequently, so
3826 in many cases, you will want to follow this effect with the \fBgain\fR
3827 effect to prevent this from happening. (See also
3828 .B Clipping
3829 above.)
3830 Note that, by default, the
3831 .B synth
3832 effect incorporates the functionality of \fBgain \-h\fR (see the
3833 .B gain
3834 effect for details);
3835 .BR synth 's
3836 .B \-n
3837 option may be given to disable this behaviour.
3839 A detailed description of each
3840 .B synth
3841 parameter follows:
3843 \fIlen\fR is the length of audio to synthesise (any time specification);
3844 a value of 0 indicated to use the input length, which is also the default.
3846 \fItype\fR is one of sine, square, triangle, sawtooth, trapezium, exp,
3847 [white]noise, tpdfnoise, pinknoise, brownnoise, pluck; default=sine.
3849 \fIcombine\fR is one of create, mix, amod (amplitude modulation), fmod
3850 (frequency modulation); default=create.
3852 \fIfreq\fR/\fIfreq2\fR are the frequencies at the beginning/end of
3853 synthesis in Hz or, if preceded with `%', semitones relative to A
3854 (440\ Hz); alternatively, `scientific' note notation (e.g. E2) may
3855 be used.  The default frequency is 440Hz.  By default, the tuning used
3856 with the note notations is `equal temperament'; the
3857 .B \-j
3858 .I KEY
3859 option selects `just intonation', where
3860 .I KEY
3861 is an integer number of semitones relative to A (so for example, \-9
3862 or 3 selects the key of C), or a note in scientific notation.
3865 .I freq2
3866 is given, then
3867 .I len
3868 must also have been given and the generated tone will be swept between
3869 the given frequencies.  The two given frequencies must be separated by
3870 one of the characters `:', `+', `/', or `\-'.  This character is used to
3871 specify the sweep function as follows:
3873 .IP \fB:\fR
3874 Linear: the tone will change by a fixed number of hertz per second.
3875 .IP \fB+\fR
3876 Square: a second-order function is used to change the tone.
3877 .IP \fB/\fR
3878 Exponential: the tone will change by a fixed number of semitones per second.
3879 .IP \fB\-\fR
3880 Exponential: as `/', but initial phase always zero, and stepped (less
3881 smooth) frequency changes.
3885 Not used for noise.
3887 \fIoff\fR is the bias (DC-offset) of the signal in percent; default=0.
3889 \fIph\fR is the phase shift in percentage of 1 cycle; default=0.  Not
3890 used for noise.
3892 \fIp1\fR is the percentage of each cycle that is `on' (square), or
3893 `rising' (triangle, exp, trapezium); default=50 (square, triangle, exp),
3894 default=10 (trapezium), or sustain (pluck); default=40.
3896 \fIp2\fR (trapezium): the percentage through each cycle at which `falling'
3897 begins; default=50. exp: the amplitude in multiples of 2dB; default=50,
3898 or tone-1 (pluck); default=20.
3900 \fIp3\fR (trapezium): the percentage through each cycle at which `falling'
3901 ends; default=60, or tone-2 (pluck); default=90.
3903 \fBtempo \fR[\fB\-q\fR] [\fB\-m\fR\^|\^\fB\-s\fR\^|\^\fB\-l\fR] \fIfactor\fR [\fIsegment\fR [\fIsearch\fR [\fIoverlap\fR]]]
3904 Change the audio playback speed but not its pitch. This effect uses the
3905 WSOLA algorithm. The audio is chopped up into segments which are then
3906 shifted in the time domain and overlapped (cross-faded) at points where
3907 their waveforms are most similar as determined by measurement of `least
3908 squares'.
3910 By default, linear searches are used to find the best overlapping
3911 points. If the optional
3912 .B \-q
3913 parameter is given, tree searches are used instead. This makes the effect
3914 work more quickly, but the result may not sound as good. However, if you
3915 must improve the processing speed, this generally reduces the sound quality
3916 less than reducing the search or overlap values.
3919 .B \-m
3920 option is used to optimize default values of segment, search and
3921 overlap for music processing.
3924 .B \-s
3925 option is used to optimize default values of segment, search and
3926 overlap for speech processing.
3929 .B \-l
3930 option is used to optimize default values of segment, search and
3931 overlap for `linear' processing that tends to cause more
3932 noticeable distortion but may be useful when factor is close to 1.
3934 If \-m, \-s, or \-l is specified, the default value of segment will be
3935 calculated based on factor, while default search and overlap values are
3936 based on segment. Any values you provide still override these default
3937 values.
3939 .I factor
3940 gives the ratio of new tempo to the old tempo, so e.g. 1.1 speeds up the
3941 tempo by 10%, and 0.9 slows it down by 10%.
3943 The optional
3944 .I segment
3945 parameter selects the algorithm's segment size in milliseconds.  If no other
3946 flags are specified, the default value is 82 and is typically suited to
3947 making small changes to the tempo of music. For larger changes (e.g. a factor
3948 of 2), 41\ ms may give a better result.  The \-m, \-s, and \-l flags will cause
3949 the segment default to be automatically adjusted based on factor.
3950 For example using \-s (for speech) with a tempo of 1.25 will calculate a
3951 default segment value of 32.
3953 The optional
3954 .I search
3955 parameter gives the audio length in milliseconds over which
3956 the algorithm will search for overlapping points.  If no other
3957 flags are specified, the default value is 14.68.  Larger values use
3958 more processing time and may or may not produce better results.
3959 A practical maximum is half the value of segment. Search
3960 can be reduced to cut processing time at the risk of degrading output
3961 quality. The \-m, \-s, and \-l flags will cause
3962 the search default to be automatically adjusted based on segment.
3964 The optional
3965 .I overlap
3966 parameter gives the segment overlap length in milliseconds.
3967 Default value is 12, but \-m, \-s, or \-l flags automatically
3968 adjust overlap based on segment size. Increasing overlap increases
3969 processing time and may increase quality. A practical maximum for overlap
3970 is the value of search, with overlap typically being (at least) a little
3971 smaller then search.
3973 See also
3974 .B speed
3975 for an effect that changes tempo and pitch together,
3976 .B pitch
3977 and \fBbend\fR for effects that change pitch only, and
3978 .B stretch
3979 for an effect that changes tempo using a different algorithm.
3981 \fBtreble \fIgain\fR [\fIfrequency\fR[\fBk\fR]\fR [\fIwidth\fR[\fBs\fR\^|\^\fBh\fR\^|\^\fBk\fR\^|\^\fBo\fR\^|\^\fBq\fR]]]
3982 Apply a treble tone-control effect.
3983 See the description of the \fBbass\fR effect for details.
3985 \fBtremolo \fIspeed\fR [\fIdepth\fR]
3986 Apply a tremolo (low frequency amplitude modulation) effect to the audio.
3987 The tremolo frequency in Hz is given by
3988 .IR speed ,
3989 and the depth as a percentage by
3990 .I depth
3991 (default 40).
3993 \fBtrim\fR {\fIposition(+)\fR}
3994 Cuts portions out of the audio.  Any number of \fIposition\fRs may be
3995 given; audio is not sent to the output until the first \fIposition\fR
3996 is reached.  The effect then alternates between copying and discarding
3997 audio at each \fIposition\fR.  Using a value of 0 for the first \fIposition\fR
3998 parameter allows copying from the beginning of the audio.
4000 For example,
4002    sox infile outfile trim 0 10
4004 will copy the first ten seconds, while
4006    play infile trim 12:34 =15:00 -2:00
4010    play infile trim 12:34 2:26 -2:00
4012 will both play from 12 minutes 34 seconds into the audio up to 15 minutes into
4013 the audio (i.e. 2 minutes and 26 seconds long), then resume playing two
4014 minutes before the end of audio.
4016 \fBupsample\fR [\fIfactor\fR]
4017 Upsample the signal by an integer factor: \fIfactor\fR\-1 zero-value
4018 samples are inserted between each pair of input samples.  As a result, the
4019 original spectrum is replicated into the new frequency space (imaging) and
4020 attenuated.  This attenuation can be compensated for by adding
4021 \fBvol \fIfactor\fR after any further processing.  The upsample effect is
4022 typically used in combination with filtering effects.
4024 For a general resampling effect with anti-imaging, see \fBrate\fR.  See
4025 also \fBdownsample\fR.
4027 \fBvad \fR[\fIoptions\fR]
4028 Voice Activity Detector.  Attempts to trim silence and quiet
4029 background sounds from the ends of (fairly high resolution
4030 i.e. 16-bit, 44\-48kHz) recordings of speech.  The algorithm currently
4031 uses a simple cepstral power measurement to detect voice, so may be
4032 fooled by other things, especially music.  The effect can trim only
4033 from the front of the audio, so in order to trim from the back, the
4034 .B reverse
4035 effect must also be used.  E.g.
4037    play speech.wav norm vad
4039 to trim from the front,
4041    play speech.wav norm reverse vad reverse
4043 to trim from the back, and
4045    play speech.wav norm vad reverse vad reverse
4047 to trim from both ends.  The use of the
4048 .B norm
4049 effect is recommended, but remember that neither
4050 .B reverse
4052 .B norm
4053 is suitable for use with streamed audio.
4055 .I Options:
4057 Default values are shown in parenthesis.
4059 .IP \fB\-t\ \fInum\fR\ (7)
4060 The measurement level used to trigger activity detection.  This might
4061 need to be changed depending on the noise level, signal level and
4062 other charactistics of the input audio.
4063 .IP \fB\-T\ \fInum\fR\ (0.25)
4064 The time constant (in seconds) used to help ignore short bursts of
4065 sound.
4066 .IP \fB\-s\ \fInum\fR\ (1)
4067 The amount of audio (in seconds) to search for quieter/shorter bursts
4068 of audio to include prior to the detected trigger point.
4069 .IP \fB\-g\ \fInum\fR\ (0.25)
4070 Allowed gap (in seconds) between quieter/shorter bursts of audio to
4071 include prior to the detected trigger point.
4072 .IP \fB\-p\ \fInum\fR\ (0)
4073 The amount of audio (in seconds) to preserve before the trigger point
4074 and any found quieter/shorter bursts.
4078 .I Advanced Options:
4080 These allow fine tuning of the algorithm's internal parameters.
4082 .IP \fB\-b\ \fInum\fR
4083 The algorithm (internally) uses adaptive noise estimation/reduction in
4084 order to detect the start of the wanted audio.  This option sets the
4085 time for the initial noise estimate.
4086 .IP \fB\-N\ \fInum\fR
4087 Time constant used by the adaptive noise estimator for when the noise
4088 level is increasing.
4089 .IP \fB\-n\ \fInum\fR
4090 Time constant used by the adaptive noise estimator for when the noise
4091 level is decreasing.
4092 .IP \fB\-r\ \fInum\fR
4093 Amount of noise reduction to use in the detection algorithm (e.g. 0,
4094 0.5, ...).
4095 .IP \fB\-f\ \fInum\fR
4096 Frequency of the algorithm's processing/measurements.
4097 .IP \fB\-m\ \fInum\fR
4098 Measurement duration; by default, twice the measurement period; i.e.
4099 with overlap.
4100 .IP \fB\-M\ \fInum\fR
4101 Time constant used to smooth spectral measurements.
4102 .IP \fB\-h\ \fInum\fR
4103 `Brick-wall' frequency of high-pass filter applied at the input to the
4104 detector algorithm.
4105 .IP \fB\-l\ \fInum\fR
4106 `Brick-wall' frequency of low-pass filter applied at the input to the
4107 detector algorithm.
4108 .IP \fB\-H\ \fInum\fR
4109 `Brick-wall' frequency of high-pass lifter used in the detector
4110 algorithm.
4111 .IP \fB\-L\ \fInum\fR
4112 `Brick-wall' frequency of low-pass lifter used in the detector
4113 algorithm.
4117 See also the
4118 .B silence
4119 effect.
4121 \fBvol \fIgain\fR [\fItype\fR [\fIlimitergain\fR]]
4122 Apply an amplification or an attenuation to the audio signal.
4123 Unlike the
4124 .B \-v
4125 option (which is used for balancing multiple input files as they enter the
4126 SoX effects processing chain),
4127 .B vol
4128 is an effect like any other so can be applied anywhere, and several times
4129 if necessary, during the processing chain.
4131 The amount to change the volume is given by
4132 .I gain
4133 which is interpreted, according to the given \fItype\fR, as follows: if
4134 .I type
4135 is \fBamplitude\fR (or is omitted), then
4136 .I gain
4137 is an amplitude (i.e. voltage or linear) ratio,
4138 if \fBpower\fR, then a power (i.e. wattage or voltage-squared) ratio,
4139 and if \fBdB\fR, then a power change in dB.
4141 When
4142 .I type
4143 is \fBamplitude\fR or \fBpower\fR, a
4144 .I gain
4145 of 1 leaves the volume unchanged,
4146 less than 1 decreases it,
4147 and greater than 1 increases it;
4148 a negative
4149 .I gain
4150 inverts the audio signal in addition to adjusting its volume.
4152 When
4153 .I type
4154 is \fBdB\fR, a
4155 .I gain
4156 of 0 leaves the volume unchanged,
4157 less than 0 decreases it,
4158 and greater than 0 increases it.
4160 See [4]
4161 for a detailed discussion on electrical (and hence audio signal)
4162 voltage and power ratios.
4164 Beware of
4165 .B Clipping
4166 when the increasing the volume.
4169 .I gain
4170 and the
4171 .I type
4172 parameters can be concatenated if desired, e.g.
4173 .BR "vol 10dB" .
4175 An optional \fIlimitergain\fR value can be specified and should be a
4176 value much less
4177 than 1 (e.g. 0\*d05 or 0\*d02) and is used only on peaks to prevent clipping.
4178 Not specifying this parameter will cause no limiter to be used.  In verbose
4179 mode, this effect will display the percentage of the audio that needed to be
4180 limited.
4182 See also
4183 .B gain
4184 for a volume-changing effect with different capabilities, and
4185 .B compand
4186 for a dynamic-range compression/expansion/limiting effect.
4187 .SH DIAGNOSTICS
4188 Exit status is 0 for no error, 1 if there is a problem with the
4189 command-line parameters, or 2 if an error occurs during file processing.
4190 .SH BUGS
4191 Please report any bugs found in this version of SoX to the mailing list
4192 (sox-users@lists.sourceforge.net).
4193 .SH SEE ALSO
4194 .BR soxi (1),
4195 .BR soxformat (7),
4196 .BR libsox (3)
4198 .BR audacity (1),
4199 .BR gnuplot (1),
4200 .BR octave (1),
4201 .BR wget (1)
4203 The SoX web site at http://sox.sourceforge.net
4205 SoX scripting examples at http://sox.sourceforge.net/Docs/Scripts
4206 .SS References
4209 R. Bristow-Johnson,
4210 .IR "Cookbook formulae for audio EQ biquad filter coefficients" ,
4211 https://webaudio.github.io/Audio-EQ-Cookbook/audio-eq-cookbook.html
4214 Wikipedia,
4215 .IR "Q-factor" ,
4216 http://en.wikipedia.org/wiki/Q_factor
4219 Scott Lehman,
4220 .IR "Effects Explained" ,
4221 https://web.archive.org/web/20070320114719/http://www.harmony-central.com/Effects/effects-explained.html
4224 Wikipedia,
4225 .IR "Decibel" ,
4226 http://en.wikipedia.org/wiki/Decibel
4229 Richard Furse,
4230 .IR "Linux Audio Developer's Simple Plugin API" ,
4231 http://www.ladspa.org
4234 Richard Furse,
4235 .IR "Computer Music Toolkit" ,
4236 https://www.ladspa.org/cmt/overview.html
4239 Steve Harris,
4240 .IR "LADSPA plugins" ,
4241 http://plugin.org.uk
4242 .SH LICENSE
4243 Copyright 1998\-2013 Chris Bagwell and SoX Contributors.
4245 Copyright 1991 Lance Norskog and Sundry Contributors.
4247 This program is free software; you can redistribute it and/or modify
4248 it under the terms of the GNU General Public License as published by
4249 the Free Software Foundation; either version 2, or (at your option)
4250 any later version.
4252 This program is distributed in the hope that it will be useful,
4253 but WITHOUT ANY WARRANTY; without even the implied warranty of
4254 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4255 GNU General Public License for more details.
4256 .SH AUTHORS
4257 Chris Bagwell (cbagwell@users.sourceforge.net).
4258 Other authors and contributors are listed in the ChangeLog file that
4259 is distributed with the source code.