336 lines
13 KiB
Groff
336 lines
13 KiB
Groff
|
.TH out123 1 "26 Apr 2020"
|
||
|
.SH NAME
|
||
|
out123 \- send raw PCM audio or a waveform pattern to an output device
|
||
|
.SH SYNOPSIS
|
||
|
\fBcat \fRaudio.raw \fR| \fBout123 \fR[ \fR- \fR] [ \fIoptions \fR ]
|
||
|
|
||
|
\fBout123 \fR[ \fIoptions \fR] \fIfilename \fR[ \fIfilename \fR... ]
|
||
|
|
||
|
\fBout123 \fR--wave-freq \fIfreq1\fR[,\fIfreq2\fR,...] [ \fIoptions \fR]
|
||
|
|
||
|
\fBout123 \fR--source \fRgeiger \fR[ \fIoptions \fR]
|
||
|
|
||
|
.SH DESCRIPTION
|
||
|
.B out123
|
||
|
reads raw PCM data (in host byte order) from standard input
|
||
|
and plays it on the audio device specified by given options.
|
||
|
Alternatively, it can generate periodic or random signals for playback
|
||
|
itself.
|
||
|
.SH OPTIONS
|
||
|
.B out123
|
||
|
options may be either the traditional POSIX one letter options,
|
||
|
or the GNU style long options. POSIX style options start with a
|
||
|
single '\-', while GNU long options start with '\-\^\-'.
|
||
|
Option arguments (if needed) follow separated by whitespace (not '=').
|
||
|
Note that some options can be absent from your installation when disabled in the build process.
|
||
|
.TP
|
||
|
\fB\-\^\-name \fIname
|
||
|
Set the name of this instance, possibly used in various places. This sets the client name for JACK output.
|
||
|
.TP
|
||
|
\fB\-o \fImodule\fR, \-\^\-\fBoutput \fImodule\fR
|
||
|
Select audio output module. You can provide a comma-separated list to use the first one that works.
|
||
|
Also see \fB\-a\fR.
|
||
|
.TP
|
||
|
\fB\-\^\-list\-modules
|
||
|
List the available modules.
|
||
|
.TP
|
||
|
\fB\-\^\-list\-devices
|
||
|
List the available output devices for given output module. If there is no functionality
|
||
|
to list devices in the chosen module, an error will be printed and out123 will exit with
|
||
|
a non-zero code.
|
||
|
.TP
|
||
|
\fB\-a \fIdev\fR, \fB\-\^\-audiodevice \fIdev
|
||
|
Specify the audio device to use. The default as well as the possible values
|
||
|
depend on the active output. For the JACK output, a comma-separated list
|
||
|
of ports to connect to (for each channel) can be specified.
|
||
|
.TP
|
||
|
.BR \-s ", " \-\^\-stdout
|
||
|
The audio samples are written to standard output,
|
||
|
instead of playing them through the audio device.
|
||
|
The output format is the same as the input ... so in this mode,
|
||
|
.B out123
|
||
|
acts similar the standard tool \fB cat\fR, possibly with some conversions
|
||
|
involved.
|
||
|
This shortcut is equivalent to '-o raw -a -'.
|
||
|
.TP
|
||
|
.BR \-S ", " \-\^\-STDOUT
|
||
|
This variant additionally writes the data to stdout, while still
|
||
|
playing it on the output device. So it is more like some flavour of
|
||
|
\fBtee\fR than a \fBcat\fR.
|
||
|
.TP
|
||
|
\fB\-O \fIfile\fR, \fB\-\^\-outfile
|
||
|
Write raw output into a file (instead of simply redirecting standard output to a file with the shell).
|
||
|
This shortcut is equivalent to '-o raw -a \fIfile\fR'.
|
||
|
.TP
|
||
|
\fB\-w \fIfile\fR, \fB\-\^\-wav
|
||
|
Write output as WAV file
|
||
|
.I file
|
||
|
, or standard output if
|
||
|
.I -
|
||
|
is or the empty string used as file name. You can also use
|
||
|
.I --au
|
||
|
and
|
||
|
.I --cdr
|
||
|
for AU and CDR format, respectively. Note that WAV/AU writing to non-seekable files or redirected stdout needs some thought. The header is written with the first actual data. The result of decoding nothing to WAV/AU is a file consisting just of the header when it is seekable and really nothing when not (not even a header). Correctly writing data with prophetic headers to stdout is no easy business.
|
||
|
This shortcut is equivalent to '-o wav -a \fIfile\fR'.
|
||
|
.TP
|
||
|
\fB\-\^\-au \fIfile
|
||
|
Write to
|
||
|
.I file
|
||
|
in SUN audio format. If \- or the empty string is used as the filename, the AU file is
|
||
|
written to stdout. See paragraph about WAV writing for header fun with non-seekable streams.
|
||
|
This shortcut is equivalent to '-o au -a \fIfile\fR'.
|
||
|
.TP
|
||
|
\fB\-\^\-cdr \fIfile
|
||
|
Write to
|
||
|
.I file
|
||
|
as a CDR (CD-ROM audio, more correctly CDDA for Compact Disc Digital Audio).
|
||
|
If \- is or the empty string used as the filename, the CDR file is written
|
||
|
to stdout.
|
||
|
This shortcut is equivalent to '-o cdr -a \fIfile\fR'.
|
||
|
.TP
|
||
|
\fB\-r \fIrate\fR, \fB\-\^\-rate \fIrate
|
||
|
Set sample rate in Hz (default: 44100). If this does not match the actual input
|
||
|
sampling rate, you get changed pitch. Might be intentional;-)
|
||
|
.TP
|
||
|
\fB\-R \fIrate\fR, \fB\-\^\-inputrate \fIrate
|
||
|
Set input sample rate to a different value. This triggers resampling if the output
|
||
|
rate is indeed different. See \fB\-\^\-resample\fR.
|
||
|
.TP
|
||
|
\fB\-\^\-speed \fIfactor
|
||
|
Speed up/down playback by that factor using resampling. See \fB\-\^\-resample\fR.
|
||
|
.TP
|
||
|
\fB\-\^\-resample \fImethod
|
||
|
This chooses the method for resampling between differing sampling rates or to apply
|
||
|
a change in tempo. You can choose between two variants of the syn123 resampler: fine
|
||
|
(the default) and dirty. The fine one features 108 dB dynamic range and at worst-case 84%
|
||
|
bandwidth. The dirty one uses a bit less CPU time (not that much, though) by reducing
|
||
|
the dynamic range to 72 dB with worst-case bandwidth of 85%. The exact properties vary
|
||
|
with the sampling rate ratio, as there is interpolation of filter coefficients involved.
|
||
|
.TP
|
||
|
\fB\-c \fIcount\fR, \fB\-\^\-channels \fIcount
|
||
|
Set channel count to given value.
|
||
|
.TP
|
||
|
\fB\-C \fIcount\fR, \fB\-\^\-inputch \fIcount
|
||
|
Set input channel count to a differnt value than for output. This probably means you want
|
||
|
some remixing. Also see \fB\-\^\-mix\fR.
|
||
|
.TP
|
||
|
\fB\-e \fIenc\fR, \fB\-\^\-encoding \fIenc
|
||
|
Choose output sample encoding. Possible values look like f32 (32-bit floating point), s32 (32-bit signed integer), u32 (32-bit unsigned integer) and the variants with different numbers of bits (s24, u24, s16, u16, s8, u8) and also special variants like ulaw and alaw 8-bit.
|
||
|
See the output of \fBout123\fR's longhelp for actually available encodings.
|
||
|
Default is s16.
|
||
|
.TP
|
||
|
\fB\-\^\-endian \fIchoice
|
||
|
Select output endianess (byte order). Choice is big, little, or native, which is the default.
|
||
|
The processing can only work in native mode, so you need to specify input or output byte order
|
||
|
if that does not match your machine. This also sets the input endianess if that is
|
||
|
not set separately. See also \fB\-\^\-inputend\fR and \fB\-\^\-byteswap\fR.
|
||
|
.TP
|
||
|
\fB\-E \fIenc\fR, \fB\-\^\-inputenc \fIenc
|
||
|
Specify input encoding different from output encoding for conversion.
|
||
|
.TP
|
||
|
\fB\-\^\-inputend \fIchoice
|
||
|
Select input endianess (byte order). By default it is the same as output byte order.
|
||
|
See \fB\-\^\-endian\fR.
|
||
|
.TP
|
||
|
.BR \-\^\-byteswap
|
||
|
A switch to trigger swapping of byte order just before output, after any other transformations.
|
||
|
This works on top of any endianess you specify with
|
||
|
.TP
|
||
|
.BR \-m ", " \-\^\-mono "
|
||
|
Set for single-channel audio (default is two channels, stereo).
|
||
|
.TP
|
||
|
.BR \-\-stereo
|
||
|
Select stereo output (2 channels, default).
|
||
|
.TP
|
||
|
.BR \-\^\-list\-encodings
|
||
|
List known encoding short and long names to standard output.
|
||
|
.TP
|
||
|
\fB\-\^\-mix \fImatrix
|
||
|
Specify a mixing matrix between input and output channels as linear factors, comma separated list for
|
||
|
the input channel factors for output channel 1, then output channel 2, and so forth.
|
||
|
The default is a unit matrix if channel counts match, so for 3 channels the equivalent of
|
||
|
'\-\^\-mix 1,0,0,0,1,0,0,0,1'. For stereo to mono conversion, the default is mixing of
|
||
|
both channels with halved amplitude, so '\-\^\-mix 0.5,0.5'. For splitting mono to stereo,
|
||
|
it is '\-\^\-mix 1,1' top keep the symmetry.
|
||
|
.TP
|
||
|
\fB\-\^\-filter \fIcoeff
|
||
|
Apply digital filter(s) before pre-amplification (see \fB\-\^\-preamp\fR) with the coefficient
|
||
|
list coeff as
|
||
|
.ce
|
||
|
b_0,...,b_N,a_0,...,a_N
|
||
|
where a_0=1 is mandatory and perhaps helps orientation a bit. Multiple filters are separated
|
||
|
by ':'.
|
||
|
.TP
|
||
|
\fB\-P \fIdbvalue \fB\-\^\-preamp \fIdbvalue
|
||
|
Enable a pre-amplification stage that amplifies the signal with the given value in dB before output.
|
||
|
.TP
|
||
|
\fB\-\^\-offset \fIvalue
|
||
|
Apply a PCM offset (floating point value scaled in [-1:1] in the pre-amplification stage.
|
||
|
Normally, you would do that to correct a known DC offset in a recording.
|
||
|
.TP
|
||
|
\fB\-\^\-clip \fImode
|
||
|
Select clipping mode: 'soft' or 'hard' for forced clipping also for
|
||
|
floating point output, 'implicit' (default) for implied hard clipping during
|
||
|
conversion where necessary.
|
||
|
.TP
|
||
|
\fB\-\^\-dither
|
||
|
Enable dithering for conversions to integer. If you insist.
|
||
|
This is just some un-spectacular TPDF dither. For some people, that is not fancy enough.
|
||
|
Most people cannot be bothered that way or the other.
|
||
|
.TP
|
||
|
.BR \-\^\-test\-format
|
||
|
Check if given format is supported by given driver and device (in command line before
|
||
|
encountering this), silently returning 0 as exit value if it is the case.
|
||
|
.TP
|
||
|
.BR \-\^\-test\-encodings
|
||
|
Print out the short names of encodings supported with the current setup.
|
||
|
.TP
|
||
|
.BR \-\^\-query\-format
|
||
|
If the selected driver and device communicate some default accepted format, print
|
||
|
out a command line fragment for \fBout123\fR setting that format, always in that order:
|
||
|
\-\^\-rate <r> -\^\-channels <c> -\^\-encoding <e>
|
||
|
.TP
|
||
|
.BR "\-o h" ", " \-\^\-headphones
|
||
|
Direct audio output to the headphone connector (some hardware only; AIX, HP, SUN).
|
||
|
.TP
|
||
|
.BR "\-o s" ", " \-\^\-speaker
|
||
|
Direct audio output to the speaker (some hardware only; AIX, HP, SUN).
|
||
|
.TP
|
||
|
.BR "\-o l" ", " \-\^\-lineout
|
||
|
Direct audio output to the line-out connector (some hardware only; AIX, HP, SUN).
|
||
|
.TP
|
||
|
\fB\-b \fIsize\fR, \fB\-\^\-buffer \fIsize
|
||
|
Use an audio output buffer of
|
||
|
.I size
|
||
|
Kbytes. This is useful to bypass short periods of heavy
|
||
|
system activity, which would normally cause the audio output
|
||
|
to be interrupted.
|
||
|
You should specify a buffer size of at least 1024
|
||
|
(i.e. 1 Mb, which equals about 6 seconds of usual audio data) or more;
|
||
|
less than about 300 does not make much sense. The default is 0,
|
||
|
which turns buffering off.
|
||
|
.TP
|
||
|
\fB\-\^\-preload \fIfraction
|
||
|
Wait for the buffer to be filled to
|
||
|
.I fraction
|
||
|
before starting playback (fraction between 0 and 1). You can tune this prebuffering to either get sound faster to your ears or safer uninterrupted web radio.
|
||
|
Default is 0.2 (changed from 1 since version 1.23).
|
||
|
.TP
|
||
|
\fB\-\^\-devbuffer \fIseconds
|
||
|
Set device buffer in seconds; <= 0 means default value. This is the small buffer between the
|
||
|
application and the audio backend, possibly directly related to hardware buffers.
|
||
|
.TP
|
||
|
\fB\-\^\-timelimit \fIsamples
|
||
|
Set playback time limit in PCM samples if set to a value greater than zero.
|
||
|
\fBout123\fR will stop reading from stdin or playing from the generated wave
|
||
|
table after reaching that number of samples.
|
||
|
.TP
|
||
|
\fB\-\^\-seconds \fIseconds
|
||
|
Set time limit in seconds instead.
|
||
|
.TP
|
||
|
\fB\-\^\-source \fIname
|
||
|
Choose the signal source: 'file' (default) for playback of the given file(s) on the command line
|
||
|
or standard input if there are none, or one of the generators 'wave' (see \fB\-\^\-wave\-freq\fR),
|
||
|
'sweep' (see \fB\-\^\-wave\-sweep\fR), 'pink' (see \fB\-\^\-ping\-rows\fR),
|
||
|
geiger (see \fB\-\^\-geiger\-activity\fR), or just 'white' for some white noise.
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-freq \fIfrequencies
|
||
|
Set wave generator frequency or list of those with comma separation for enabling
|
||
|
a generated test signal instead of standard input. Empty values repeat the
|
||
|
previous one.
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-pat \fIpatterns
|
||
|
Set the waveform patterns of the generated waves as comma-separated list.
|
||
|
Choices include sine, square, triangle, sawtooth, gauss, pulse, and shot.
|
||
|
Empty values repeat the previous one.
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-phase \fIphases
|
||
|
Set waveform phase shift(s) as comma-separated list, negative values
|
||
|
inverting the pattern in time and empty value repeating the previous. There is
|
||
|
also \fB\-\^\-wave\-direction\fR overriding the negative bit.
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-direction\fR
|
||
|
Set wave direction explicitly (the sign counts).
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-sweep \fIfrequency
|
||
|
Sweep a generated wave to the given frequency, from
|
||
|
first one specified for \fB\-\^\-wave\-freq\fR, using the
|
||
|
first wave pattern and direction, too.
|
||
|
.TP
|
||
|
\fB\-\^\-sweep\-time \fIseconds
|
||
|
Set frequency sweep duration in seconds if > 0. This defaults
|
||
|
to the configured time limit if set, otherwise one second, as endless
|
||
|
sweeps are not sensible.
|
||
|
.TP
|
||
|
\fB\-\^\-sweep\-count \fIcount
|
||
|
Set timelimit to exactly produce that many (smooth) sweeps
|
||
|
.TP
|
||
|
\fB\-\^\-sweep\-type \fItype
|
||
|
Set sweep type: lin(ear) for linear, qua(d) (default) for quadratic, or exp(onential)
|
||
|
for an exponential change of frequency with time.
|
||
|
.TP
|
||
|
\fB\-\^\-sweep\-hard
|
||
|
Disable post-sweep smoothing for periodicity.
|
||
|
.TP
|
||
|
\fB\-\^\-genbuffer \fIbytes
|
||
|
Set the buffer size (limit) for signal generators,
|
||
|
if > 0 (default), this enforces a periodic
|
||
|
buffer also for non-periodic signals, benefit:
|
||
|
less runtime CPU overhead, as everything is precomputed as enforced periodic signal.
|
||
|
.TP
|
||
|
\fB\-\^\-wave\-limit \fIsamples
|
||
|
This is an alias for \fB\-\^\-genbuffer\fR.
|
||
|
.TP
|
||
|
\fB\-\^\-pink\-rows \fInumber
|
||
|
Activate pink noise source and choose rows for the algorithm (<1 chooses default).
|
||
|
The generator follows code provided by Phil Burk (http://softsynth.com) and uses
|
||
|
the Gardner method.
|
||
|
.TP
|
||
|
\fB\-\^\-geiger\-activity \fInumber
|
||
|
This configures the simulation of a Geiger-Mueller counter as source, with the given
|
||
|
numer as average events per second. Play with it. It's fun!
|
||
|
.TP
|
||
|
.BR \-t ", " \-\^\-test
|
||
|
Test mode. The audio stream is read, but no output occurs.
|
||
|
.TP
|
||
|
.BR \-v ", " \-\^\-verbose
|
||
|
Increase the verbosity level.
|
||
|
.TP
|
||
|
.BR \-q ", " \-\^\-quiet
|
||
|
Quiet. Suppress diagnostic messages.
|
||
|
.TP
|
||
|
\fB\-\^\-aggressive
|
||
|
Tries to get higher priority
|
||
|
.TP
|
||
|
.BR \-T ", " \-\-realtime
|
||
|
Tries to gain realtime priority. This option usually requires root
|
||
|
privileges to have any effect.
|
||
|
.TP
|
||
|
.BR \-? ", " \-\^\-help
|
||
|
Shows short usage instructions.
|
||
|
.TP
|
||
|
.BR \-\^\-longhelp
|
||
|
Shows long usage instructions.
|
||
|
.TP
|
||
|
.BR \-\^\-version
|
||
|
Print the version string.
|
||
|
.SH AUTHORS
|
||
|
.TP
|
||
|
Maintainer:
|
||
|
.br
|
||
|
Thomas Orgis <maintainer@mpg123.org>, <thomas@orgis.org>
|
||
|
.TP
|
||
|
Creator (ancestry of code inside mpg123):
|
||
|
.br
|
||
|
Michael Hipp
|
||
|
.TP
|
||
|
Uses code or ideas from various people, see the AUTHORS file accompanying the source code.
|
||
|
.SH LICENSE
|
||
|
.B out123
|
||
|
is licensed under the GNU Lesser/Library General Public License, LGPL, version 2.1 .
|
||
|
.SH WEBSITE
|
||
|
http://www.mpg123.org
|
||
|
.br
|
||
|
http://sourceforge.net/projects/mpg123
|