Annotation of src/usr.bin/aucat/aucat.1, Revision 1.64
1.64 ! ratchov 1: .\" $OpenBSD: aucat.1,v 1.63 2009/11/04 08:24:58 jmc Exp $
1.1 kstailey 2: .\"
1.16 ratchov 3: .\" Copyright (c) 2006 Alexandre Ratchov <alex@caoua.org>
1.1 kstailey 4: .\"
1.16 ratchov 5: .\" Permission to use, copy, modify, and distribute this software for any
6: .\" purpose with or without fee is hereby granted, provided that the above
7: .\" copyright notice and this permission notice appear in all copies.
1.1 kstailey 8: .\"
1.16 ratchov 9: .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15: .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1.1 kstailey 16: .\"
1.64 ! ratchov 17: .Dd $Mdocdate: April 3 2010 $
1.1 kstailey 18: .Dt AUCAT 1
1.5 aaron 19: .Os
1.1 kstailey 20: .Sh NAME
21: .Nm aucat
1.47 ratchov 22: .Nd audio server and stream manipulation tool
1.1 kstailey 23: .Sh SYNOPSIS
24: .Nm aucat
1.16 ratchov 25: .Bk -words
1.59 ratchov 26: .Op Fl dlnu
1.49 jmc 27: .Op Fl b Ar nframes
1.16 ratchov 28: .Op Fl C Ar min : Ns Ar max
29: .Op Fl c Ar min : Ns Ar max
30: .Op Fl e Ar enc
1.9 millert 31: .Op Fl f Ar device
1.16 ratchov 32: .Op Fl h Ar fmt
33: .Op Fl i Ar file
1.37 ratchov 34: .Op Fl m Ar mode
1.16 ratchov 35: .Op Fl o Ar file
1.64 ! ratchov 36: .Op Fl q Ar device
1.16 ratchov 37: .Op Fl r Ar rate
1.57 ratchov 38: .Op Fl s Ar name
1.62 ratchov 39: .Op Fl t Ar mode
1.54 ratchov 40: .Op Fl U Ar unit
1.30 ratchov 41: .Op Fl v Ar volume
1.22 ratchov 42: .Op Fl x Ar policy
1.62 ratchov 43: .Op Fl z Ar nframes
1.16 ratchov 44: .Ek
1.1 kstailey 45: .Sh DESCRIPTION
46: The
1.7 aaron 47: .Nm
1.16 ratchov 48: utility can record one input stream
49: and store it on multiple destination files,
50: doing the necessary conversions on the fly.
1.48 ratchov 51: It can play, convert, and mix multiple input files simultaneously,
52: and can also act as an audio server.
1.9 millert 53: .Nm
1.16 ratchov 54: also has a legacy mode that works like previous versions of
55: .Nm ,
56: which does not convert on the fly and supports playback of .au files.
1.17 jmc 57: .Pp
1.16 ratchov 58: The options are as follows:
1.26 ratchov 59: .Bl -tag -width Ds
1.49 jmc 60: .It Fl b Ar nframes
1.64 ! ratchov 61: The buffer size of the audio device in frames.
1.49 jmc 62: A frame consists of one sample for each channel in the stream.
63: This is the number of frames that will be buffered before being played
64: and thus controls the playback latency.
1.25 jmc 65: .It Xo
66: .Fl C Ar min : Ns Ar max ,
67: .Fl c Ar min : Ns Ar max
68: .Xc
1.26 ratchov 69: The range of channel numbers on the record or playback stream, respectively.
1.17 jmc 70: The default is 0:1, i.e. stereo.
1.59 ratchov 71: .It Fl d
72: Do not daemonize.
73: If this option is specified,
74: .Nm
75: will run in the foreground and log to
76: .Em stderr .
1.26 ratchov 77: .It Fl e Ar enc
78: Encoding of the playback or recording stream (see below).
1.17 jmc 79: The default is signed, 16-bit, native byte order.
80: .It Fl f Ar device
81: The
1.57 ratchov 82: .Xr sndio 7
83: audio device to use for playing and/or recording.
1.26 ratchov 84: .It Fl h Ar fmt
85: File format of the playback or record stream (see below).
1.17 jmc 86: The default is auto.
1.16 ratchov 87: .It Fl i Ar file
88: Add this file to the list of files to play.
89: If the option argument is
90: .Sq -
91: then standard input will be used.
1.26 ratchov 92: .It Fl l
1.60 sobrado 93: Listen for incoming connections on a
1.61 sobrado 94: .Ux Ns -domain
95: socket.
1.39 jmc 96: This allows clients to use
1.26 ratchov 97: .Nm
1.57 ratchov 98: instead of the physical audio device for audio input and output
1.26 ratchov 99: in order to share the physical device with other clients.
1.57 ratchov 100: The default
101: .Xr sndio 7
102: device exposed is
103: .Pa aucat:0
104: .Pq "also known as" Pa aucat:0.default
1.45 ratchov 105: but other names can be used with the
1.35 ratchov 106: .Fl s
107: option.
1.37 ratchov 108: .It Fl m Ar mode
1.64 ! ratchov 109: Set the stream mode.
1.37 ratchov 110: Valid modes are
1.39 jmc 111: .Ar play ,
112: .Ar rec ,
1.37 ratchov 113: and
1.64 ! ratchov 114: .Ar mon ,
! 115: corresponding to playback, recording and monitoring.
! 116: A monitoring stream is a fake recording stream corresponding to
! 117: the mix of all playback streams.
! 118: Multiple modes can be specified, separated by commas,
! 119: but the same stream cannot be used for both recording and monitoring.
1.37 ratchov 120: The default is
1.64 ! ratchov 121: .\" no spaces allowed between modes
! 122: .Ar play,rec
! 123: (i.e., full-duplex).
1.42 ratchov 124: .It Fl n
125: Loopback mode.
126: Instead of using an audio device, send input streams
127: to the output, processing them on the fly.
128: This mode is useful to mix, demultiplex, resample or reencode
1.43 jmc 129: audio files offline.
1.16 ratchov 130: .It Fl o Ar file
131: Add this file to the list of files in which to store recorded samples.
132: If the option argument is
133: .Sq -
134: then standard output will be used.
1.64 ! ratchov 135: .It Fl q Ar device
! 136: The
! 137: .Xr sndio 7
! 138: MIDI device to use for controlling stream volumes or
! 139: to start multiple streams synchronously.
1.26 ratchov 140: .It Fl r Ar rate
141: Sample rate in Hertz of the playback or record stream.
1.17 jmc 142: The default is 44100Hz.
1.57 ratchov 143: .It Fl s Ar name
144: Add
145: .Ar name
146: to the list of sub-devices to expose in server mode.
147: Defining multiple sub-devices allows splitting a physical audio device
1.63 jmc 148: into logical devices having different properties (e.g. channel ranges).
1.57 ratchov 149: The given
150: .Ar name
1.62 ratchov 151: corresponds to the
1.57 ratchov 152: .Dq option
153: part of the
154: .Xr sndio 7
155: device name string.
1.62 ratchov 156: .It Fl t Ar mode
157: Select the way sub-devices are controlled by MMC (MIDI Machine Control) messages.
158: If the mode is
159: .Va off
160: (the default), then streams are not affected by MMC messages.
161: If the mode is
162: .Va slave ,
163: then streams are started synchronously by MMC start messages;
164: additionally, the server clock is exposed as MTC (MIDI Time Code)
165: messages allowing MTC-capable software or hardware to be synchronized
166: to audio streams.
1.54 ratchov 167: .It Fl U Ar unit
168: Unit number to use when running in server mode.
169: Each
170: .Nm
171: server instance has an unique unit number,
172: used in
173: .Xr sndio 7
174: device names.
175: The default is 0.
1.16 ratchov 176: .It Fl u
1.21 jmc 177: Normally
178: .Nm
179: tries to automatically determine the optimal parameters for the audio device;
180: if this option is specified,
181: it will instead use the parameters specified by the
1.26 ratchov 182: .Fl Ccer
1.21 jmc 183: options.
1.30 ratchov 184: .It Fl v Ar volume
185: Software volume attenuation of the playback stream.
186: The value must be between 1 and 127,
1.31 jmc 187: corresponding to \-42dB and \-0dB attenuation.
1.33 ratchov 188: In server mode, clients inherit this parameter.
1.34 jmc 189: Reducing the volume in advance reduces a client's dynamic range,
190: but allows client volume to stay independent from the number
1.33 ratchov 191: of clients as long as their number is small enough.
1.34 jmc 192: A good compromise is to use \-4dB attenuation (12 volume units)
193: for each additional client expected
194: (115 if 2 clients are expected, 103 for 3 clients, and so on).
1.26 ratchov 195: .It Fl x Ar policy
1.22 ratchov 196: Action when the output stream cannot accept
1.26 ratchov 197: recorded data fast enough or the input stream
198: cannot provide data to play fast enough.
1.22 ratchov 199: If the policy
200: is
1.23 jmc 201: .Dq ignore
1.26 ratchov 202: (the default) then samples that cannot be written are discarded
203: and samples that cannot be read are replaced by silence.
1.22 ratchov 204: If the policy is
1.23 jmc 205: .Dq sync
1.26 ratchov 206: then recorded samples are discarded, but the same amount of silence will be written
1.22 ratchov 207: once the stream is unblocked, in order to reach the right position in time.
1.26 ratchov 208: Similarly silence is played, but the same amount of samples will be discarded
209: once the stream is unblocked.
1.22 ratchov 210: If the policy is
1.23 jmc 211: .Dq error
212: then the stream is closed permanently.
1.62 ratchov 213: .Pp
214: If a sub-device is created with
1.63 jmc 215: .Fl t ,
216: the
1.62 ratchov 217: .Dq ignore
1.63 jmc 218: action is disabled for any stream connected to it
219: to ensure proper synchronization.
1.62 ratchov 220: .It Fl z Ar nframes
221: The audio block size in frames.
1.63 jmc 222: This is the number of frames between audio clock ticks,
223: i.e. the clock resolution.
1.62 ratchov 224: If a sub-device is created with
1.63 jmc 225: .Fl t ,
1.62 ratchov 226: and MTC (Midi Time Code) is used for synchronization, the clock
227: resolution must be 96, 100 or 120 ticks per second for maximum
1.63 jmc 228: accuracy.
229: For instance, 120 ticks per second at 48000Hz corresponds
230: to a 400 frame block size.
1.21 jmc 231: .El
232: .Pp
1.32 ratchov 233: If
234: .Nm
235: is sent
1.44 ratchov 236: .Dv SIGHUP ,
237: .Dv SIGINT
238: or
239: .Dv SIGTERM ,
1.32 ratchov 240: it terminates recording to files.
241: .Pp
1.35 ratchov 242: Settings for input files
243: .Pq Fl i ,
244: output files
1.39 jmc 245: .Pq Fl o ,
1.57 ratchov 246: and sub-devices
1.35 ratchov 247: .Pq Fl s
248: can be changed using the
249: .Fl Ccehrvx
1.16 ratchov 250: options.
1.21 jmc 251: The last
1.35 ratchov 252: .Fl Ccehrvx
1.23 jmc 253: options specified before an
1.35 ratchov 254: .Fl i ,
1.39 jmc 255: .Fl o ,
256: or
1.35 ratchov 257: .Fl s
1.41 jmc 258: are applied to the corresponding file.
1.21 jmc 259: .Pp
260: Settings for the audio device
261: can be changed using the
1.26 ratchov 262: .Fl Ccer
1.21 jmc 263: options.
264: They apply to the audio device only if the
265: .Fl u
266: option is given as well.
267: The last
1.26 ratchov 268: .Fl Ccer
1.21 jmc 269: option specified before an
1.16 ratchov 270: .Fl f
1.21 jmc 271: is applied to
272: .Ar device .
273: .Pp
274: If no audio device
275: .Pq Fl f
1.53 ratchov 276: is specified,
277: settings are applied as if
278: the default device is specified as the last argument.
1.57 ratchov 279: If no sub-devices
1.53 ratchov 280: .Pq Fl s
281: are specified
282: settings are applied as if
1.57 ratchov 283: .Ar default
284: is specified as the last argument.
1.14 jmc 285: .Pp
1.20 jmc 286: File formats are specified using the
287: .Fl h
1.26 ratchov 288: option.
1.16 ratchov 289: The following file formats are supported:
290: .Bl -tag -width s32lexxx -offset -indent
291: .It raw
292: Headerless file.
1.17 jmc 293: This format is recommended since it has no limitations.
1.16 ratchov 294: .It wav
295: Microsoft WAVE file format.
296: There are limitations inherent to the file format itself:
297: not all encodings are supported,
298: file sizes are limited to 2GB,
1.17 jmc 299: and the file must support the
1.16 ratchov 300: .Xr lseek 2
1.17 jmc 301: operation (e.g. pipes do not support it).
1.16 ratchov 302: .It auto
303: Try to guess, depending on the file name.
1.9 millert 304: .El
305: .Pp
1.20 jmc 306: Encodings are specified using the
307: .Fl e
1.26 ratchov 308: option.
1.16 ratchov 309: The following encodings are supported:
310: .Pp
311: .Bl -tag -width s32lexxx -offset -indent -compact
312: .It s8
313: signed 8-bit
314: .It u8
315: unsigned 8-bit
316: .It s16le
317: signed 16-bit, little endian
318: .It u16le
319: unsigned 16-bit, little endian
320: .It s16be
321: signed 16-bit, big endian
322: .It u16be
323: unsigned 16-bit, big endian
324: .It s24le
325: signed 24-bit, stored in 4 bytes, little endian
326: .It u24le
327: unsigned 24-bit, stored in 4 bytes, little endian
328: .It s24be
329: signed 24-bit, stored in 4 bytes, big endian
330: .It u24be
331: unsigned 24-bit, stored in 4 bytes, big endian
332: .It s32le
333: signed 32-bit, little endian
334: .It u32le
335: unsigned 32-bit, little endian
336: .It s32be
337: signed 32-bit, big endian
338: .It u32be
339: unsigned 32-bit, big endian
340: .It s24le3
341: signed 24-bit, packed in 3 bytes, little endian
342: .It u24le3
343: unsigned 24-bit, packed in 3 bytes, big endian
344: .It s24be3
345: signed 24-bit, packed in 3 bytes, little endian
346: .It u24be3
347: unsigned 24-bit, packed in 3 bytes, big endian
348: .It s20le3
349: signed 20-bit, packed in 3 bytes, little endian
350: .It u20le3
351: unsigned 20-bit, packed in 3 bytes, big endian
352: .It s20be3
353: signed 20-bit, packed in 3 bytes, little endian
354: .It u20be3
355: unsigned 20-bit, packed in 3 bytes, big endian
356: .It s18le3
357: signed 18-bit, packed in 3 bytes, little endian
358: .It u18le3
359: unsigned 18-bit, packed in 3 bytes, big endian
360: .It s18be3
361: signed 18-bit, packed in 3 bytes, little endian
362: .It u18be3
363: unsigned 18-bit, packed in 3 bytes, big endian
364: .El
1.46 ratchov 365: .Sh SERVER MODE
366: .Nm
367: can be used in server mode
368: .Pq Fl l
369: to overcome hardware limitations and allow applications
370: to run on fixed sample rate devices or on devices
371: supporting only unusual encodings.
372: It is generally not desirable to have multiple
373: instances of
374: .Nm
375: running in server mode,
376: so it is good practice to start it thus:
377: .Bd -literal -offset indent
378: $ pgrep -x aucat || aucat -l
379: .Ed
380: .Pp
381: This also ensures privacy by preventing
382: other users from accessing the audio system.
383: On multi-user machines
384: .Nm
385: should be killed when no longer in use to make audio resources
386: available again to others:
387: .Bd -literal -offset indent
388: $ pkill -x aucat
389: .Ed
390: .Pp
391: Certain applications, such as synthesis software,
392: require a low latency audio setup.
393: To reduce the probability of buffer underruns or overruns,
394: the
395: .Xr renice 8
1.49 jmc 396: command can be used to give a higher priority to the
1.46 ratchov 397: .Nm
1.49 jmc 398: process.
1.46 ratchov 399: Superuser privileges are required.
400: For example:
401: .Bd -literal -offset indent
402: $ aucat -b 3500 -l
403: $ sudo renice -n -20 -p `pgrep -x aucat`
404: .Ed
1.55 ratchov 405: .Sh MIDI CONTROL
406: While running in server mode
407: .Pq Fl l
408: .Nm
409: exposes a MIDI device with the same name as the default audio
410: device.
1.62 ratchov 411: It allows MIDI hardware or software to control programs
412: using
413: .Nm
414: or to synchronize to them.
415: .Pp
1.56 jmc 416: A MIDI channel is assigned to each stream, and the volume
1.55 ratchov 417: is changed using the standard volume controller (number 7).
418: Similarly, when the audio application changes its volume,
419: the same MIDI controller message is sent out; it can be used
1.56 jmc 420: for instance for monitoring or as feedback for motorized
1.55 ratchov 421: faders.
1.62 ratchov 422: .Pp
423: Clients connected to sub-devices created with
1.63 jmc 424: .Fl t
1.62 ratchov 425: are controlled by the following MMC (MIDI Machine Control) messages:
426: .Bl -tag -width relocateXXX -offset -indent
427: .It stop
428: Put the sub-device in stopped mode (the default).
429: In this mode, any stream attempting to start playback or recording
430: is paused.
431: Streams that are already started are not affected until they stop
432: and try to start again.
433: .It relocate
434: Gives
435: .Nm
436: the time, relative to the beginning of the stream, at which playback
437: and recording must start.
438: It is not interpreted by
439: .Nm
440: itself.
1.63 jmc 441: The given time position is sent to MIDI clients as an MTC
1.62 ratchov 442: .Dq "full frame"
443: message forcing all MTC-slaves to relocate to the given
444: position (see below).
445: .It start
446: Put the sub-device in starting mode.
447: In this mode, the sub-device waits for all streams to become ready
448: to start, and then starts them synchronously.
449: Once started, new streams can be created, but they will be blocked
450: until the next stop-to-start transition.
451: .El
452: .Pp
453: Sub-devices created with
1.63 jmc 454: .Fl t
1.62 ratchov 455: will export the server clock using MTC (MIDI Time Code), allowing non-audio
456: software or hardware to be synchronized to the audio stream.
457: The following sample rates
458: .Pq Fl r
459: and block sizes
460: .Pq Fl z
461: are recommended for maximum accuracy:
462: .Pp
463: .Bl -bullet -offset -indent -compact
464: .It
465: 44100Hz, 441 frames
466: .It
467: 48000Hz, 400 frames
468: .It
469: 48000Hz, 480 frames
470: .It
471: 48000Hz, 500 frames
472: .El
473: .Pp
474: For instance, the following command will create two devices:
475: the default
476: .Va aucat:0
1.63 jmc 477: and a MIDI-controlled
478: .Va aucat:0.mmc :
1.62 ratchov 479: .Bd -literal -offset indent
480: $ aucat -l -r 48000 -z 400 -s default -t slave -s mmc
481: .Ed
482: .Pp
483: Streams connected to
484: .Va aucat:0
485: behave normally, while streams connected to
486: .Va aucat:0.mmc
487: wait for the MMC start signal and start synchronously.
1.63 jmc 488: Regardless of which device a stream is connected to,
489: its playback volume knob is exposed.
1.64 ! ratchov 490: .Pp
! 491: If
! 492: .Nm
! 493: is used to play and record audio files, it offers
! 494: similar MIDI control.
! 495: .Nm
! 496: can open a
! 497: .Xr sndio 7
! 498: MIDI device allowing MIDI hardware or software
! 499: to control playback and recording in real time.
! 500: .Pp
! 501: A MIDI channel is assigned to each stream, and the volume
! 502: is changed using the standard volume controller (number 7).
! 503: Streams created with
! 504: .Fl t Ar slave
! 505: are controlled by the following MMC (MIDI Machine Control) messages:
! 506: .Bl -tag -width relocateXXX -offset -indent
! 507: .It start
! 508: Start all streams synchronously.
! 509: By default, streams are created in stopped state.
! 510: .It stop
! 511: Playback or recording is stopped, and
! 512: the stream is rewinded back to the starting position.
! 513: .It relocate
! 514: Streams are relocated to the requested time postion
! 515: relative to the beginning of the stream, at which playback
! 516: and recording must start.
! 517: If the requested position is beyond the end of file,
! 518: the stream is temporarly disabled until a valid postion is requested.
! 519: .El
! 520: .Pp
! 521: For instance, the following command will play a file on the
! 522: .Va aucat:0.mmc
! 523: audio device, and let full control to MIDI software or hardware
! 524: connected to the
! 525: .Va midithru:0
! 526: MIDI device:
! 527: .Bd -literal -offset indent
! 528: $ aucat -f aucat:0.mmc -t slave -q midithru:0 -i file.wav
! 529: .Ed
! 530: .Pp
! 531: At this stage,
! 532: .Nm
! 533: will start, stop and relocate automatically following all user
! 534: actions in the MIDI sequencer.
! 535: Note that the sequencer must use
! 536: .Va aucat:0
! 537: as MTC source, i.e., the audio server, not the audio player.
1.16 ratchov 538: .Sh LEGACY MODE
539: If neither
540: .Fl i
541: nor
542: .Fl o
1.17 jmc 543: are specified,
1.16 ratchov 544: .Nm
1.17 jmc 545: will run in legacy mode, and won't convert sample formats or sampling rates.
1.16 ratchov 546: In legacy mode, all options except
1.17 jmc 547: .Fl f
548: are ignored, and all other arguments are assumed to be names of files.
1.16 ratchov 549: In legacy mode
550: .Nm
551: reads files sequentially, and writes them to the specified device.
552: If a Sun .au header is detected it is skipped over and not copied to
553: the audio device.
554: .Nm
1.52 jakemsr 555: will attempt to parse the format, number of channels and sample rate
556: from Sun .au file headers.
557: However, only alaw and ulaw formats are supported for .au files.
558: Other formats will be interpreted as ulaw.
1.16 ratchov 559: If a Microsoft .wav header (RIFF) is detected it is interpreted
560: to select the right audio encoding for playback and the data chunk of the
561: file is copied to the audio device.
562: If the device does not support the encoding,
563: .Nm
564: will exit with an error.
1.9 millert 565: .Sh ENVIRONMENT
1.35 ratchov 566: .Bl -tag -width "AUDIODEVICE" -compact
1.24 jmc 567: .It Ev AUDIODEVICE
1.57 ratchov 568: .Xr sndio 7
569: audio device to use if the
1.50 ratchov 570: .Fl f
571: option is not specified.
1.9 millert 572: .El
1.16 ratchov 573: .Sh EXAMPLES
574: The following will mix and play two stereo streams,
575: the first at 48kHz and the second at 44.1kHz:
576: .Bd -literal -offset indent
577: $ aucat -r 48000 -i file1.raw -r 44100 -i file2.raw
578: .Ed
579: .Pp
580: The following will record channels 2 and 3 into one stereo file and
581: channels 6 and 7 into another stereo file using a 96kHz sampling rate for
582: both:
583: .Bd -literal -offset indent
1.26 ratchov 584: $ aucat -r 96000 -C 2:3 -o file1.raw -C 6:7 -o file2.raw
1.42 ratchov 585: .Ed
586: .Pp
1.43 jmc 587: The following will split a stereo file into two mono files:
1.42 ratchov 588: .Bd -literal -offset indent
589: $ aucat -n -i stereo.wav -C 0:0 -o left.wav -C 1:1 -o right.wav
1.16 ratchov 590: .Ed
591: .Pp
1.35 ratchov 592: The following will start
593: .Nm
1.40 jmc 594: in server mode using default parameters, but will create an
1.57 ratchov 595: additional sub-device for output to channels 2:3 only (rear speakers
596: on most cards), exposing the
597: .Pa aucat:0
598: and
599: .Pa aucat:0.rear
600: devices:
1.35 ratchov 601: .Bd -literal -offset indent
1.45 ratchov 602: $ aucat -l -s default -c 2:3 -s rear
1.35 ratchov 603: .Ed
604: .Pp
605: The following will start
606: .Nm
1.57 ratchov 607: in server mode creating the default sub-device with low volume and
608: an additional sub-device for high volume output, exposing the
609: .Pa aucat:0
610: and
611: .Pa aucat:0.max
612: devices:
1.35 ratchov 613: .Bd -literal -offset indent
1.45 ratchov 614: $ aucat -l -v 65 -s default -v 127 -s max
1.16 ratchov 615: .Ed
1.2 kstailey 616: .Sh SEE ALSO
1.12 jmc 617: .Xr audioctl 1 ,
1.17 jmc 618: .Xr cdio 1 ,
1.9 millert 619: .Xr mixerctl 1 ,
1.54 ratchov 620: .Xr audio 4 ,
621: .Xr sndio 7
1.16 ratchov 622: .Sh BUGS
623: The
1.1 kstailey 624: .Nm
1.16 ratchov 625: utility assumes non-blocking I/O for input and output streams.
626: It will not work reliably on files that may block
627: (ordinary files block, pipes don't).
628: .Pp
629: Resampling is low quality; down-sampling especially should be avoided
630: when recording.
631: .Pp
632: Processing is done using 16-bit arithmetic,
633: thus samples with more than 16 bits are rounded.
1.17 jmc 634: 16 bits (i.e. 97dB dynamic) are largely enough for most applications though.