AUCAT(1) AerieBSD 1.0 Refernce Manual AUCAT(1)

NAME

aucat — manipulate linear audio streams

SYNOPSIS

aucat .Bk -words [-qu] [-C min: ] [-c min: ] [-E enc] [-e enc] [-f device] [-H fmt] [-h fmt] [-i file] [-o file] [-R rate] [-r rate] [-X policy] [-x policy] .Ek

DESCRIPTION

The aucat utility can record one input stream and store it on multiple destination files, doing the necessary conversions on the fly. It can play, convert, and mix multiple input files simultaneously. aucat also has a legacy mode that works like previous versions of aucat, which does not convert on the fly and supports playback of .au files.

The options are as follows:
-C min: , -c min: The range of channel numbers on the output or input stream, respectively. The default is 0:1, i.e. stereo.
-E enc, -e enc
Encoding of the output or input stream, respectively (see below). The default is signed, 16-bit, native byte order.
-f device
The audio(4) device to use for playing and/or recording. The default is /dev/audio.
-H fmt, -h fmt
File format of the output or input stream, respectively (see below). The default is auto.
-i file
Add this file to the list of files to play. If the option argument is ‘-’ then standard input will be used.
-o file
Add this file to the list of files in which to store recorded samples. If the option argument is ‘-’ then standard output will be used.
-q
Do not print progress information; run quietly.
-R rate, -r rate
Sample rate in Hertz of the output or input stream, respectively. The default is 44100Hz.
-u
Normally aucat tries to automatically determine the optimal parameters for the audio device; if this option is specified, it will instead use the parameters specified by the -CcEeRr options.
-X policy
Action when the output stream cannot accept recorded data fast enough. If the policy is “ignore” (the default) then samples that cannot be written are discarded. If the policy is “sync” then samples are discarded, but the same amount of silence will be written once the stream is unblocked, in order to reach the right position in time. If the policy is “error” then the stream is closed permanently.
-x policy
Action when the input stream cannot provide data to play fast enough. If the policy is “ignore” (the default) then silence is played. If the policy is “sync” then silence is played, but the same amount of samples will be discarded once the stream is unblocked, in order to reach the right position in time. If the policy is “error” then the stream is closed permanently.

Settings for input (-i) and output (-o) files can be changed using the -CcEeHhRrXx options. The last -CcEeHhRrXx options specified before an -i or -o are applied to file.

Settings for the audio device can be changed using the -CcEeRr options. They apply to the audio device only if the -u option is given as well. The last -CcEeRr option specified before an -f is applied to device.

If no audio device (-f) is specified but -u is given anyway, any -CcEeRr options specified before -io options are applied both to file and the default audio device; if they are specified after -io options, they will be applied only to the default audio device.

File formats are specified using the -H and -h options. The following file formats are supported:
raw
Headerless file. This format is recommended since it has no limitations.
wav
Microsoft WAVE file format. There are limitations inherent to the file format itself: not all encodings are supported, file sizes are limited to 2GB, and the file must support the lseek(2) operation (e.g. pipes do not support it).
auto
Try to guess, depending on the file name.

Encodings are specified using the -E and -e options. The following encodings are supported:

s8
signed 8-bit
u8
unsigned 8-bit
s16le
signed 16-bit, little endian
u16le
unsigned 16-bit, little endian
s16be
signed 16-bit, big endian
u16be
unsigned 16-bit, big endian
s24le
signed 24-bit, stored in 4 bytes, little endian
u24le
unsigned 24-bit, stored in 4 bytes, little endian
s24be
signed 24-bit, stored in 4 bytes, big endian
u24be
unsigned 24-bit, stored in 4 bytes, big endian
s32le
signed 32-bit, little endian
u32le
unsigned 32-bit, little endian
s32be
signed 32-bit, big endian
u32be
unsigned 32-bit, big endian
s24le3
signed 24-bit, packed in 3 bytes, little endian
u24le3
unsigned 24-bit, packed in 3 bytes, big endian
s24be3
signed 24-bit, packed in 3 bytes, little endian
u24be3
unsigned 24-bit, packed in 3 bytes, big endian
s20le3
signed 20-bit, packed in 3 bytes, little endian
u20le3
unsigned 20-bit, packed in 3 bytes, big endian
s20be3
signed 20-bit, packed in 3 bytes, little endian
u20be3
unsigned 20-bit, packed in 3 bytes, big endian
s18le3
signed 18-bit, packed in 3 bytes, little endian
u18le3
unsigned 18-bit, packed in 3 bytes, big endian
s18be3
signed 18-bit, packed in 3 bytes, little endian
u18be3
unsigned 18-bit, packed in 3 bytes, big endian

LEGACY MODE

If neither -i nor -o are specified, aucat will run in legacy mode, and won't convert sample formats or sampling rates. In legacy mode, all options except -f are ignored, and all other arguments are assumed to be names of files. In legacy mode aucat reads files sequentially, and writes them to the specified device. If a Sun .au header is detected it is skipped over and not copied to the audio device. aucat will attempt to play data from Sun .au files as monaural 8-bit ulaw samples with a sampling frequency of 8000 Hz. However, aucat will not fail if the audio device cannot be configured for these parameters. If a Microsoft .wav header (RIFF) is detected it is interpreted to select the right audio encoding for playback and the data chunk of the file is copied to the audio device. If the device does not support the encoding, aucat will exit with an error.

ENVIRONMENT

AUCAT_DEBUG
The debug level: may be a value between 0 and 4.
AUDIODEVICE
The audio device to use.

EXAMPLES

The following command will record a stereo s16le stream at 44100Hz from the default device. If necessary, the stream will be converted and/or resampled to match parameters supported by the device:

$ aucat -o file.raw

The following command will play a stereo s16le stream at 44100Hz on the default device, doing any necessary conversions:

$ aucat -i file.raw

The following will mix and play two stereo streams, the first at 48kHz and the second at 44.1kHz:

$ aucat -r 48000 -i file1.raw -r 44100 -i file2.raw

The following will record channels 2 and 3 into one stereo file and channels 6 and 7 into another stereo file using a 96kHz sampling rate for both:

$ aucat -R 96000 -C 2:3 -o file1.raw -C 6:7 -o file2.raw

The following will play two s18le mono files, one on each channel:

$ aucat -e s18le -c 0:0 -i f1.raw -c 1:1 -i f2.raw

The following will mix and play two files and record a third one in full-duplex:

$ aucat -i drums.raw -i bass.raw -o guitar.raw

SEE ALSO

audioctl(1), cdio(1), mixerctl(1), audio(4)

BUGS

The aucat utility assumes non-blocking I/O for input and output streams. It will not work reliably on files that may block (ordinary files block, pipes don't).

Resampling is low quality; down-sampling especially should be avoided when recording.

CPU usage is the same for all conversions. It should be smaller for simpler ones.

Processing is done using 16-bit arithmetic, thus samples with more than 16 bits are rounded. 16 bits (i.e. 97dB dynamic) are largely enough for most applications though.


AerieBSD 1.0 Reference Manual December 26 2008 AUCAT(1)