Update audio man page with regard to audio changes.

OK wiz@
This commit is contained in:
nat 2016-12-12 11:49:27 +00:00
parent 9b3102e4b1
commit 4012ae34ea

View File

@ -1,4 +1,4 @@
.\" $NetBSD: audio.4,v 1.72 2011/09/06 01:17:48 jmcneill Exp $
.\" $NetBSD: audio.4,v 1.73 2016/12/12 11:49:27 nat Exp $
.\"
.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
.\" All rights reserved.
@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd September 5, 2011
.Dd December 11, 2016
.Dt AUDIO 4
.Os
.Sh NAME
@ -67,11 +67,16 @@ operations as
.Pa /dev/sound ,
but no other operations.
.Pp
In contrast to
.Pa /dev/sound
which has the exclusive open property
and
.Pa /dev/audio
can be opened at
.Em any
time and audio sources of different precision and playback
parameters i.e frequency will be mixed and played back simultaneously.
.Pp
.Pa /dev/audioctl
can be opened at any time and can be used to manipulate the audio device
can be used to manipulate the audio device
while it is in use.
.Sh SAMPLING DEVICES
When
@ -84,16 +89,67 @@ recording (playing) unpaused and playing (recording) paused.
When
.Pa /dev/sound
is opened, it maintains the previous audio sample mode and
record/playback mode.
record/playback mode most recently set on
.Pa /dev/sound
by any open channel.
In all other respects
.Pa /dev/audio
and
.Pa /dev/sound
are identical.
.Sh VIRTUAL CHANNELS
Any process may open a sampling device at a given time.
There is a constraint of
.Em one
device per process and file descriptors may
.Em not
be shared between processes.
.Pp
Only one process may hold open a sampling device at a given time
(although file descriptors may be shared between processes once the
first open completes).
Virtual channels are converted to a common format, signed linear encoding,
frequency channels and precision.
These can be modified to taste by the following
.Xr sysctl 8
variables.
.Pp
.Bl -tag -width -compact
.It hw.driverN.precision
.It hw.driverN.frequency
.It hw.driverN.channels
.It hw.driverN.saturate
.El
.Pp
Where
.Em driverN
corresponds to the underlying audio device driver and device number.
e.g In the case of an hdafg supported device the variables would be:
hw.hdafg0.channels, hw.hdafg0.precision, hw.hdafg0.frequency.
.Pp
For best results, values close to the underlying hardware should be chosen.
These variables may only be changed when the sampling device is not in use.
.Pp
An additional
.Xr sysctl 8
variable controls how the samples are combined, hw.driverN.saturate.
.Pp
By default it is set to true.
This means that volumes are not adjusted for each channel to be mixed.
All virtual channels will use the
.Em maximum
set master volume unless the virtual channel volume is lowered by the user.
.Pp
If set to false the channels are
.Em divided
evenly in volume with respect to the master volume.
.Pp
Each virtual channel has a corresponding mixer:
.Bl -tag -width -compact
.It outputs.dacN Output volume
.It inputs.micN Recording volume
.El
.Pp
Where N is the virtual channel number.
e.g ouputs.dac0 controlling playback volume and outputs.mic0 controlling
recording volume for the first virtual channel.
.Pp
On a half-duplex device, writes while recording is in progress will be
immediately discarded.
@ -177,6 +233,17 @@ The following
commands are supported on the sample devices:
.Pp
.Bl -tag -width indent
.It Dv AUDIO_SETPROC (struct audio_pid)
This command will select the audio device opened by pid.
.Bd -literal
struct audio_pid {
pid_t pid;
lwpid_t lwpid;
};
.Ed
.Pp
Currently the lpwid value is
.Em ignored .
.It Dv AUDIO_FLUSH
This command stops all playback and recording, clears all queued
buffers, resets error counters, and restarts recording and playback as
@ -682,7 +749,8 @@ string values.
.Xr ioctl 2 ,
.Xr ossaudio 3 ,
.Xr midi 4 ,
.Xr radio 4
.Xr radio 4 ,
.Xr sysctl 8
.Ss ISA bus
.Xr aria 4 ,
.Xr ess 4 ,
@ -716,7 +784,8 @@ string values.
.Ss USB
.Xr uaudio 4
.Sh BUGS
If the device is used in
.Xr mmap 2
it is currently always mapped for writing (playing) due to
VM system weirdness.
currently does not work and should be avoided.
.Sh HISTORY
Support for virtual channels and mixing first appeared in
.Nx 8.0 .