diff options
Diffstat (limited to 'share/man/man4/pcm.4')
-rw-r--r-- | share/man/man4/pcm.4 | 796 |
1 files changed, 796 insertions, 0 deletions
diff --git a/share/man/man4/pcm.4 b/share/man/man4/pcm.4 new file mode 100644 index 0000000..c92b1e6 --- /dev/null +++ b/share/man/man4/pcm.4 @@ -0,0 +1,796 @@ +.\" +.\" Copyright (c) 2009-2011 Joel Dahl <joel@FreeBSD.org> +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd March 22, 2012 +.Dt SOUND 4 +.Os +.Sh NAME +.Nm sound , +.Nm pcm , +.Nm snd +.Nd +.Fx +PCM audio device infrastructure +.Sh SYNOPSIS +To compile this driver into the kernel, place the following line in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device sound" +.Ed +.Sh DESCRIPTION +The +.Nm +driver is the main component of the +.Fx +sound system. +It works in conjunction with a bridge device driver on supported devices +and provides PCM audio record and playback once it attaches. +Each bridge device driver supports a specific set of audio chipsets and +needs to be enabled together with the +.Nm +driver. +PCI and ISA PnP audio devices identify themselves so users are usually not +required to add anything to +.Pa /boot/device.hints . +.Pp +Some of the main features of the +.Nm +driver are: multichannel audio, per-application +volume control, dynamic mixing through virtual sound channels, true full +duplex operation, bit perfect audio, rate conversion and low latency +modes. +.Pp +The +.Nm +driver is enabled by default, along with several bridge device drivers. +Those not enabled by default can be loaded during runtime with +.Xr kldload 8 +or during boot via +.Xr loader.conf 5 . +The following bridge device drivers are available: +.Pp +.Bl -bullet -compact +.It +.Xr snd_ad1816 4 +.It +.Xr snd_ai2s 4 (enabled by default on powerpc) +.It +.Xr snd_als4000 4 +.It +.Xr snd_atiixp 4 +.It +.Xr snd_audiocs 4 (enabled by default on sparc64) +.It +.Xr snd_cmi 4 (enabled by default on amd64, i386) +.It +.Xr snd_cs4281 4 +.It +.Xr snd_csa 4 (enabled by default on amd64, i386) +.It +.Xr snd_davbus 4 (enabled by default on powerpc) +.It +.Xr snd_ds1 4 +.It +.Xr snd_emu10k1 4 +.It +.Xr snd_emu10kx 4 (enabled by default on amd64, i386) +.It +.Xr snd_envy24 4 +.It +.Xr snd_envy24ht 4 +.It +.Xr snd_es137x 4 (enabled by default on amd64, i386, sparc64) +.It +.Xr snd_ess 4 +.It +.Xr snd_fm801 4 +.It +.Xr snd_gusc 4 +.It +.Xr snd_hda 4 (enabled by default on amd64, i386) +.It +.Xr snd_hdspe 4 +.It +.Xr snd_ich 4 (enabled by default on amd64, i386) +.It +.Xr snd_maestro 4 +.It +.Xr snd_maestro3 4 +.It +.Xr snd_mss 4 +.It +.Xr snd_neomagic 4 +.It +snd_sb16 +.It +snd_sb8 +.It +.Xr snd_sbc 4 +.It +.Xr snd_solo 4 +.It +.Xr snd_spicds 4 +.It +.Xr snd_t4dwave 4 (enabled by default on sparc64) +.It +.Xr snd_uaudio 4 (enabled by default on amd64, i386, powerpc, sparc64) +.It +.Xr snd_via8233 4 (enabled by default on amd64, i386) +.It +.Xr snd_via82c686 4 +.It +.Xr snd_vibes 4 +.El +.Pp +Refer to the manual page for each bridge device driver for driver specific +settings and information. +.Ss Legacy Hardware +For old legacy +.Tn ISA +cards, the driver looks for +.Tn MSS +cards at addresses +.Dv 0x530 +and +.Dv 0x604 . +These values can be overridden in +.Pa /boot/device.hints . +Non-PnP sound cards require the following lines in +.Xr device.hints 5 : +.Bd -literal -offset indent +hint.pcm.0.at="isa" +hint.pcm.0.irq="5" +hint.pcm.0.drq="1" +hint.pcm.0.flags="0x0" +.Ed +.Pp +Apart from the usual parameters, the flags field is used to specify +the secondary +.Tn DMA +channel (generally used for capture in full duplex cards). +Flags are set to 0 for cards not using a secondary +.Tn DMA +channel, or to 0x10 + C to specify channel C. +.Ss Boot Variables +In general, the module +.Pa snd_foo +corresponds to +.Cd "device snd_foo" +and can be +loaded by the boot +.Xr loader 8 +via +.Xr loader.conf 5 +or from the command line using the +.Xr kldload 8 +utility. +Options which can be specified in +.Pa /boot/loader.conf +include: +.Bl -tag -width ".Va snd_driver_load" -offset indent +.It Va snd_driver_load +.Pq Dq Li NO +If set to +.Dq Li YES , +this option loads all available drivers. +.It Va snd_hda_load +.Pq Dq Li NO +If set to +.Dq Li YES , +only the Intel High Definition Audio bridge device driver and dependent +modules will be loaded. +.It Va snd_foo_load +.Pq Dq Li NO +If set to +.Dq Li YES , +load driver for card/chipset foo. +.El +.Pp +To define default values for the different mixer channels, +set the channel to the preferred value using hints, e.g.: +.Va hint.pcm.0.line Ns = Ns Qq Li 0 . +This will mute the input channel per default. +.Ss Multichannel Audio +Multichannel audio, popularly referred to as +.Dq surround sound +is supported and enabled by default. +The FreeBSD multichannel matrix processor supports up to 18 interleaved +channels, but the limit is currently set to 8 channels (as commonly used +for 7.1 surround sound). +The internal matrix mapping can handle reduction, expansion or +re-routing of channels. +This provides a base interface for related multichannel +.Fn ioctl +support. +Multichannel audio works both with and without +.Tn VCHANs . +.Pp +Most bridge device drivers are still missing multichannel matrixing +support, but in most cases this should be trivial to implement. +Use the +.Va dev.pcm.%d.[play|rec].vchanformat +.Xr sysctl(8) +to adjust the number of channels used. +The current multichannel interleaved structure and arrangement was +implemented by inspecting various popular UNIX applications. +There were no single standard, so much care has been taken to try +to satisfy each possible scenario, despite the fact that each +application has its own conflicting standard. +.Ss EQ +The Parametric Software Equalizer (EQ) enables the use of +.Dq tone +controls (bass and treble). +Commonly used for ear-candy or frequency compensation due to the vast +difference in hardware quality. +EQ is disabled by default, but can be enabled with the +.Va hint.pcm.%d.eq +tunable. +.Ss VCHANs +Each device can optionally support more playback and recording channels +than physical hardware provides by using +.Dq virtual channels +or +.Tn VCHANs . +.Tn VCHAN +options can be configured via the +.Xr sysctl 8 +interface but can only be manipulated while the device is inactive. +.Ss VPC +FreeBSD supports independent and individual volume controls for each active +application, without touching the master +.Nm +volume. +This is sometimes referred to as Volume Per Channel (VPC). +The +.Tn VPC +feature is enabled by default. +.Ss Loader Tunables +The following loader tunables are used to set driver configuration at the +.Xr loader 8 +prompt before booting the kernel, or they can be stored in +.Pa /boot/loader.conf +in order to automatically set them before booting the kernel. +It is also possible to use +.Xr kenv 1 +to change these tunables before loading the +.Nm +driver. +The following tunables can not be changed during runtime using +.Xr sysctl 8 . +.Bl -tag -width indent +.It Va hint.pcm.%d.eq +Set to 1 or 0 to explicitly enable (1) or disable (0) the equalizer. +Requires a driver reload if changed. +Enabling this will make bass and treble controls appear in mixer applications. +This tunable is undefined by default. +Equalizing is disabled by default. +.It Va hint.pcm.%d.vpc +Set to 1 or 0 to explicitly enable (1) or disable (0) the +.Tn VPC +feature. +This tunable is undefined by default. +.Tn VPC +is however enabled by default. +.El +.Ss Runtime Configuration +There are a number of +.Xr sysctl 8 +variables available which can be modified during runtime. +These values can also be stored in +.Pa /etc/sysctl.conf +in order to automatically set them during the boot process. +.Va hw.snd.* +are global settings and +.Va dev.pcm.* +are device specific. +.Bl -tag -width indent +.It Va hw.snd.compat_linux_mmap +Linux +.Xr mmap 2 +compatibility. +The following values are supported (default is 0): +.Bl -tag -width 2n +.It -1 +Force disabling/denying PROT_EXEC +.Xr mmap 2 +requests. +.It 0 +Auto detect proc/ABI type, allow +.Xr mmap 2 +for Linux applications, and deny for everything else. +.It 1 +Always allow PROT_EXEC page mappings. +.El +.It Va hw.snd.default_auto +Automatically assign the default sound unit. +The following values are supported (default is 1): +.Bl -tag -width 2n +.It 0 +Do not assign the default sound unit automatically. +.It 1 +Use the best available sound device based on playing and recording +capabilities of the device. +.It 2 +Use the most recently attached device. +.El +.It Va hw.snd.default_unit +Default sound card for systems with multiple sound cards. +When using +.Xr devfs 5 , +the default device for +.Pa /dev/dsp . +Equivalent to a symlink from +.Pa /dev/dsp +to +.Pa /dev/dsp Ns Va ${hw.snd.default_unit} . +.It Va hw.snd.feeder_eq_exact_rate +Only certain rates are allowed for precise processing. +The default behavior is however to allow sloppy processing for all rates, +even the unsupported ones. +Enable to toggle this requirement and only allow processing for supported +rates. +.It Va hw.snd.feeder_rate_max +Maximum allowable sample rate. +.It Va hw.snd.feeder_rate_min +Minimum allowable sample rate. +.It Va hw.snd.feeder_rate_polyphase_max +Adjust to set the maximum number of allowed polyphase entries during the +process of building resampling filters. +Disabling polyphase resampling has the benefit of reducing memory usage, at +the expense of slower and lower quality conversion. +Only applicable when the SINC interpolator is used. +Default value is 183040. +Set to 0 to disable polyphase resampling. +.It Va hw.snd.feeder_rate_quality +Sample rate converter quality. +Default value is 1, linear interpolation. +Available options include: +.Bl -tag -width 2n +.It 0 +Zero Order Hold, ZOH. +Very fast, but with poor quality. +.It 1 +Linear interpolation. +Fast, quality is subject to personal preference. +Technically the quality is poor however, due to the lack of anti-aliasing +filtering. +.It 2 +Bandlimited SINC interpolator. +Implements polyphase banking to boost the conversion speed, at the cost of +memory usage, with multiple high quality polynomial interpolators to improve +the conversion accuracy. +100% fixed point, 64bit accumulator with 32bit coefficients and high precision +sample buffering. +Quality values are 100dB stopband, 8 taps and 85% bandwidth. +.It 3 +Continuation of the bandlimited SINC interpolator, with 100dB stopband, 36 +taps and 90% bandwidth as quality values. +.It 4 +Continuation of the bandlimited SINC interprolator, with 100dB stopband, 164 +taps and 97% bandwidth as quality values. +.El +.It Va hw.snd.feeder_rate_round +Sample rate rounding threshold, to avoid large prime division at the +cost of accuracy. +All requested sample rates will be rounded to the nearest threshold value. +Possible values range between 0 (disabled) and 500. +Default is 25. +.It Va hw.snd.latency +Configure the buffering latency. +Only affects applications that do not explicitly request +blocksize / fragments. +This tunable provides finer granularity than the +.Va hw.snd.latency_profile +tunable. +Possible values range between 0 (lowest latency) and 10 (highest latency). +.It Va hw.snd.latency_profile +Define sets of buffering latency conversion tables for the +.Va hw.snd.latency +tunable. +A value of 0 will use a low and aggressive latency profile which can result +in possible underruns if the application cannot keep up with a rapid irq +rate, especially during high workload. +The default value is 1, which is considered a moderate/safe latency profile. +.It Va hw.snd.maxautovchans +Global +.Tn VCHAN +setting that only affects devices with at least one playback or recording channel available. +The sound system will dynamically create up to this many +.Tn VCHANs . +Set to +.Dq 0 +if no +.Tn VCHANs +are desired. +Maximum value is 256. +.It Va hw.snd.report_soft_formats +Controls the internal format conversion if it is +available transparently to the application software. +When disabled or not available, the application will +only be able to select formats the device natively supports. +.It Va hw.snd.report_soft_matrix +Enable seamless channel matrixing even if the hardware does not support it. +Makes it possible to play multichannel streams even with a simple stereo +sound card. +.It Va hw.snd.verbose +Level of verbosity for the +.Pa /dev/sndstat +device. +Higher values include more output and the highest level, +four, should be used when reporting problems. +Other options include: +.Bl -tag -width 2n +.It 0 +Installed devices and their allocated bus resources. +.It 1 +The number of playback, record, virtual channels, and +flags per device. +.It 2 +Channel information per device including the channel's +current format, speed, and pseudo device statistics such as +buffer overruns and buffer underruns. +.It 3 +File names and versions of the currently loaded sound modules. +.It 4 +Various messages intended for debugging. +.El +.It Va hw.snd.vpc_0db +Default value for +.Nm +volume. +Increase to give more room for attenuation control. +Decrease for more amplification, with the possible cost of sound clipping. +.It Va hw.snd.vpc_autoreset +When a channel is closed the channel volume will be reset to 0db. +This means that any changes to the volume will be lost. +Enabling this will preserve the volume, at the cost of possible confusion +when applications tries to re-open the same device. +.It Va hw.snd.vpc_mixer_bypass +The recommended way to use the +.Tn VPC +feature is to teach applications to use +the correct +.Fn ioctl : +.Dv SNDCTL_DSP_GETPLAYVOL, SNDCTL_DSP_SETPLAYVOL, +.Dv SNDCTL_DSP_SETRECVOL, SNDCTL_DSP_SETRECVOL. +This is however not always possible. +Enable this to allow applications to use their own existing mixer logic +to control their own channel volume. +.It Va hw.snd.vpc_reset +Enable to restore all channel volumes back to the default value of 0db. +.It Va dev.pcm.%d.bitperfect +Enable or disable bitperfect mode. +When enabled, channels will skip all dsp processing, such as channel +matrixing, rate converting and equalizing. +The pure +.Nm +stream will be fed directly to the hardware. +If +.Tn VCHANs +are enabled, the bitperfect mode will use the +.Tn VCHAN +format/rate as the definitive format/rate target. +The recommended way to use bitperfect mode is to disable +.Tn VCHANs +and enable this sysctl. +Default is disabled. +.It Va dev.pcm.%d.[play|rec].vchans +The current number of +.Tn VCHANs +allocated per device. +This can be set to preallocate a certain number of +.Tn VCHANs . +Setting this value to +.Dq 0 +will disable +.Tn VCHANs +for this device. +.It Va dev.pcm.%d.[play|rec].vchanformat +Format for +.Tn VCHAN +mixing. +All playback paths will be converted to this format before the mixing +process begins. +By default only 2 channels are enabled. +Available options include: +.Bl -tag -width 2n +.It s16le:1.0 +Mono. +.It s16le:2.0 +Stereo, 2 channels (left, right). +.It s16le:2.1 +3 channels (left, right, LFE). +.It s16le:3.0 +3 channels (left, right, rear center). +.It s16le:4.0 +Quadraphonic, 4 channels (front/rear left and right). +.It s16le:4.1 +5 channels (4.0 + LFE). +.It s16le:5.0 +5 channels (4.0 + center). +.It s16le:5.1 +6 channels (4.0 + center + LFE). +.It s16le:6.0 +6 channels (4.0 + front/rear center). +.It s16le:6.1 +7 channels (6.0 + LFE). +.It s16le:7.1 +8 channels (4.0 + center + LFE + left and right side). +.El +.It Va dev.pcm.%d.[play|rec].vchanmode +.Tn VCHAN +format/rate selection. +Available options include: +.Bl -tag -width 2n +.It fixed +Channel mixing is done using fixed format/rate. +Advanced operations such as digital passthrough will not work. +Can be considered as a +.Dq legacy +mode. +This is the default mode for hardware channels which lack support for digital +formats. +.It passthrough +Channel mixing is done using fixed format/rate, but advanced operations such +as digital passthrough also work. +All channels will produce sound as usual until a digital format playback is +requested. +When this happens all other channels will be muted and the latest incoming +digital format will be allowed to pass through undisturbed. +Multiple concurrent digital streams are supported, but the latest stream will +take precedence and mute all other streams. +.It adaptive +Works like the +.Dq passthrough +mode, but is a bit smarter, especially for +multiple +.Nm +channels with different format/rate. +When a new channel is about to start, the entire list of virtual channels will +be scanned, and the channel with the best format/rate (usually the +highest/biggest) will be selected. +This ensures that mixing quality depends on the best channel. +The downside is that the hardware DMA mode needs to be restarted, which may +cause annoying pops or clicks. +.El +.It Va dev.pcm.%d.[play|rec].vchanrate +Sample rate speed for +.Tn VCHAN +mixing. +All playback paths will be converted to this sample rate before the mixing +process begins. +.It Va dev.pcm.%d.polling +Experimental polling mode support where the driver operates by querying the +device state on each tick using a +.Xr callout 9 +mechanism. +Disabled by default and currently only available for a few device drivers. +.El +.Ss Recording Channels +On devices that have more than one recording source (ie: mic and line), +there is a corresponding +.Pa /dev/dsp%d.r%d +device. +The +.Xr mixer 8 +utility can be used to start and stop recording from an specific device. +.Ss Statistics +Channel statistics are only kept while the device is open. +So with situations involving overruns and underruns, consider the output +while the errant application is open and running. +.Ss IOCTL Support +The driver supports most of the +.Tn OSS +.Fn ioctl +functions, and most applications work unmodified. +A few differences exist, while memory mapped playback is +supported natively and in +.Tn Linux +emulation, memory mapped recording is +not due to +.Tn VM +system design. +As a consequence, some applications may need to be recompiled +with a slightly modified audio module. +See +.In sys/soundcard.h +for a complete list of the supported +.Fn ioctl +functions. +.Sh FILES +The +.Nm +drivers may create the following +device nodes: +.Pp +.Bl -tag -width ".Pa /dev/audio%d.%d" -compact +.It Pa /dev/audio%d.%d +Sparc-compatible audio device. +.It Pa /dev/dsp%d.%d +Digitized voice device. +.It Pa /dev/dspW%d.%d +Like +.Pa /dev/dsp , +but 16 bits per sample. +.It Pa /dev/dsp%d.p%d +Playback channel. +.It Pa /dev/dsp%d.r%d +Record channel. +.It Pa /dev/dsp%d.vp%d +Virtual playback channel. +.It Pa /dev/dsp%d.vr%d +Virtual recording channel. +.It Pa /dev/sndstat +Current +.Nm +status, including all channels and drivers. +.El +.Pp +The first number in the device node +represents the unit number of the +.Nm +device. +All +.Nm +devices are listed +in +.Pa /dev/sndstat . +Additional messages are sometimes recorded when the +device is probed and attached, these messages can be viewed with the +.Xr dmesg 8 +utility. +.Pp +The above device nodes are only created on demand through the dynamic +.Xr devfs 5 +clone handler. +Users are strongly discouraged to access them directly. +For specific sound card access, please instead use +.Pa /dev/dsp +or +.Pa /dev/dsp%d . +.Sh EXAMPLES +Use the sound metadriver to load all +.Nm +bridge device drivers at once +(for example if it is unclear which the correct driver to use is): +.Pp +.Dl kldload snd_driver +.Pp +Load a specific bridge device driver, in this case the Intel +High Definition Audio driver: +.Pp +.Dl kldload snd_hda +.Pp +Check the status of all detected +.Nm +devices: +.Pp +.Dl cat /dev/sndstat +.Pp +Change the default sound device, in this case to the second device. +This is handy if there are multiple +.Nm +devices available: +.Pp +.Dl sysctl hw.snd.default_unit=1 +.Sh DIAGNOSTICS +.Bl -diag +.It pcm%d:play:%d:dsp%d.p%d: play interrupt timeout, channel dead +The hardware does not generate interrupts to serve incoming (play) +or outgoing (record) data. +.It unsupported subdevice XX +A device node is not created properly. +.El +.Sh SEE ALSO +.Xr snd_ad1816 4 , +.Xr snd_ai2s 4 , +.Xr snd_als4000 4 , +.Xr snd_atiixp 4 , +.Xr snd_audiocs 4 , +.Xr snd_cmi 4 , +.Xr snd_cs4281 4 , +.Xr snd_csa 4 , +.Xr snd_davbus 4 , +.Xr snd_ds1 4 , +.Xr snd_emu10k1 4 , +.Xr snd_emu10kx 4 , +.Xr snd_envy24 4 , +.Xr snd_envy24ht 4 , +.Xr snd_es137x 4 , +.Xr snd_ess 4 , +.Xr snd_fm801 4 , +.Xr snd_gusc 4 , +.Xr snd_hda 4 , +.Xr snd_hdspe 4 , +.Xr snd_ich 4 , +.Xr snd_maestro 4 , +.Xr snd_maestro3 4 , +.Xr snd_mss 4 , +.Xr snd_neomagic 4 , +.Xr snd_sbc 4 , +.Xr snd_solo 4 , +.Xr snd_spicds 4 , +.Xr snd_t4dwave 4 , +.Xr snd_uaudio 4 , +.Xr snd_via8233 4 , +.Xr snd_via82c686 4 , +.Xr snd_vibes 4 , +.Xr devfs 5 , +.Xr device.hints 5 , +.Xr loader.conf 5 , +.Xr dmesg 8 , +.Xr kldload 8 , +.Xr mixer 8 , +.Xr sysctl 8 +.Rs +.%T "Cookbook formulae for audio EQ biquad filter coefficients, by Robert Bristow-Johnson" +.%U "http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt" +.Re +.Rs +.%T "Julius O'Smith's Digital Audio Resampling" +.%U "http://ccrma.stanford.edu/~jos/resample/" +.Re +.Rs +.%T "Polynomial Interpolators for High-Quality Resampling of Oversampled Audio, by Olli Niemitalo" +.%U "http://www.student.oulu.fi/~oniemita/dsp/deip.pdf" +.Re +.Rs +.%T "The OSS API" +.%U "http://www.opensound.com/pguide/oss.pdf" +.Re +.Sh HISTORY +The +.Nm +device driver first appeared in +.Fx 2.2.6 +as +.Nm pcm , +written by +.An Luigi Rizzo . +It was later +rewritten in +.Fx 4.0 +by +.An Cameron Grant . +The API evolved from the VOXWARE +standard which later became OSS standard. +.Sh AUTHORS +.An -nosplit +.An Luigi Rizzo Aq luigi@iet.unipi.it +initially wrote the +.Nm pcm +device driver and this manual page. +.An Cameron Grant Aq gandalf@vilnya.demon.co.uk +later revised the device driver for +.Fx 4.0 . +.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp +revised this manual page. +It was then rewritten for +.Fx 5.2 . +.Sh BUGS +Some features of your sound card (e.g., global volume control) might not +be supported on all devices. |