xref: /freebsd/share/man/man4/pcm.4 (revision cd0d51baaa4509a1db83251a601d34404d20c990)
1.\"
2.\" Copyright (c) 2009-2011 Joel Dahl <joel@FreeBSD.org>
3.\" All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\" 1. Redistributions of source code must retain the above copyright
9.\"    notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\"    notice, this list of conditions and the following disclaimer in the
12.\"    documentation and/or other materials provided with the distribution.
13.\"
14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24.\" SUCH DAMAGE.
25.\"
26.\" $FreeBSD$
27.\"
28.Dd March 22, 2012
29.Dt SOUND 4
30.Os
31.Sh NAME
32.Nm sound ,
33.Nm pcm ,
34.Nm snd
35.Nd
36.Fx
37PCM audio device infrastructure
38.Sh SYNOPSIS
39To compile this driver into the kernel, place the following line in your
40kernel configuration file:
41.Bd -ragged -offset indent
42.Cd "device sound"
43.Ed
44.Sh DESCRIPTION
45The
46.Nm
47driver is the main component of the
48.Fx
49sound system.
50It works in conjunction with a bridge device driver on supported devices
51and provides PCM audio record and playback once it attaches.
52Each bridge device driver supports a specific set of audio chipsets and
53needs to be enabled together with the
54.Nm
55driver.
56PCI and ISA PnP audio devices identify themselves so users are usually not
57required to add anything to
58.Pa /boot/device.hints .
59.Pp
60Some of the main features of the
61.Nm
62driver are: multichannel audio, per-application
63volume control, dynamic mixing through virtual sound channels, true full
64duplex operation, bit perfect audio, rate conversion and low latency
65modes.
66.Pp
67The
68.Nm
69driver is enabled by default, along with several bridge device drivers.
70Those not enabled by default can be loaded during runtime with
71.Xr kldload 8
72or during boot via
73.Xr loader.conf 5 .
74The following bridge device drivers are available:
75.Pp
76.Bl -bullet -compact
77.It
78.Xr snd_ad1816 4
79.It
80.Xr snd_ai2s 4 (enabled by default on powerpc)
81.It
82.Xr snd_als4000 4
83.It
84.Xr snd_atiixp 4
85.It
86.Xr snd_audiocs 4 (enabled by default on sparc64)
87.It
88.Xr snd_cmi 4 (enabled by default on amd64, i386)
89.It
90.Xr snd_cs4281 4
91.It
92.Xr snd_csa 4 (enabled by default on amd64, i386)
93.It
94.Xr snd_davbus 4 (enabled by default on powerpc)
95.It
96.Xr snd_ds1 4
97.It
98.Xr snd_emu10k1 4
99.It
100.Xr snd_emu10kx 4 (enabled by default on amd64, i386)
101.It
102.Xr snd_envy24 4
103.It
104.Xr snd_envy24ht 4
105.It
106.Xr snd_es137x 4 (enabled by default on amd64, i386, sparc64)
107.It
108.Xr snd_ess 4
109.It
110.Xr snd_fm801 4
111.It
112.Xr snd_gusc 4
113.It
114.Xr snd_hda 4 (enabled by default on amd64, i386)
115.It
116.Xr snd_hdspe 4
117.It
118.Xr snd_ich 4 (enabled by default on amd64, i386)
119.It
120.Xr snd_maestro 4
121.It
122.Xr snd_maestro3 4
123.It
124.Xr snd_mss 4
125.It
126.Xr snd_neomagic 4
127.It
128snd_sb16
129.It
130snd_sb8
131.It
132.Xr snd_sbc 4
133.It
134.Xr snd_solo 4
135.It
136.Xr snd_spicds 4
137.It
138.Xr snd_t4dwave 4 (enabled by default on sparc64)
139.It
140.Xr snd_uaudio 4 (enabled by default on amd64, i386, powerpc, sparc64)
141.It
142.Xr snd_via8233 4 (enabled by default on amd64, i386)
143.It
144.Xr snd_via82c686 4
145.It
146.Xr snd_vibes 4
147.El
148.Pp
149Refer to the manual page for each bridge device driver for driver specific
150settings and information.
151.Ss Legacy Hardware
152For old legacy
153.Tn ISA
154cards, the driver looks for
155.Tn MSS
156cards at addresses
157.Dv 0x530
158and
159.Dv 0x604 .
160These values can be overridden in
161.Pa /boot/device.hints .
162Non-PnP sound cards require the following lines in
163.Xr device.hints 5 :
164.Bd -literal -offset indent
165hint.pcm.0.at="isa"
166hint.pcm.0.irq="5"
167hint.pcm.0.drq="1"
168hint.pcm.0.flags="0x0"
169.Ed
170.Pp
171Apart from the usual parameters, the flags field is used to specify
172the secondary
173.Tn DMA
174channel (generally used for capture in full duplex cards).
175Flags are set to 0 for cards not using a secondary
176.Tn DMA
177channel, or to 0x10 + C to specify channel C.
178.Ss Boot Variables
179In general, the module
180.Pa snd_foo
181corresponds to
182.Cd "device snd_foo"
183and can be
184loaded by the boot
185.Xr loader 8
186via
187.Xr loader.conf 5
188or from the command line using the
189.Xr kldload 8
190utility.
191Options which can be specified in
192.Pa /boot/loader.conf
193include:
194.Bl -tag -width ".Va snd_driver_load" -offset indent
195.It Va snd_driver_load
196.Pq Dq Li NO
197If set to
198.Dq Li YES ,
199this option loads all available drivers.
200.It Va snd_hda_load
201.Pq Dq Li NO
202If set to
203.Dq Li YES ,
204only the Intel High Definition Audio bridge device driver and dependent
205modules will be loaded.
206.It Va snd_foo_load
207.Pq Dq Li NO
208If set to
209.Dq Li YES ,
210load driver for card/chipset foo.
211.El
212.Pp
213To define default values for the different mixer channels,
214set the channel to the preferred value using hints, e.g.:
215.Va hint.pcm.0.line Ns = Ns Qq Li 0 .
216This will mute the input channel per default.
217.Ss Multichannel Audio
218Multichannel audio, popularly referred to as
219.Dq surround sound
220is supported and enabled by default.
221The FreeBSD multichannel matrix processor supports up to 18 interleaved
222channels, but the limit is currently set to 8 channels (as commonly used
223for 7.1 surround sound).
224The internal matrix mapping can handle reduction, expansion or
225re-routing of channels.
226This provides a base interface for related multichannel
227.Fn ioctl
228support.
229Multichannel audio works both with and without
230.Tn VCHANs .
231.Pp
232Most bridge device drivers are still missing multichannel matrixing
233support, but in most cases this should be trivial to implement.
234Use the
235.Va dev.pcm.%d.[play|rec].vchanformat
236.Xr sysctl 8
237to adjust the number of channels used.
238The current multichannel interleaved structure and arrangement was
239implemented by inspecting various popular UNIX applications.
240There were no single standard, so much care has been taken to try
241to satisfy each possible scenario, despite the fact that each
242application has its own conflicting standard.
243.Ss EQ
244The Parametric Software Equalizer (EQ) enables the use of
245.Dq tone
246controls (bass and treble).
247Commonly used for ear-candy or frequency compensation due to the vast
248difference in hardware quality.
249EQ is disabled by default, but can be enabled with the
250.Va hint.pcm.%d.eq
251tunable.
252.Ss VCHANs
253Each device can optionally support more playback and recording channels
254than physical hardware provides by using
255.Dq virtual channels
256or
257.Tn VCHANs .
258.Tn VCHAN
259options can be configured via the
260.Xr sysctl 8
261interface but can only be manipulated while the device is inactive.
262.Ss VPC
263FreeBSD supports independent and individual volume controls for each active
264application, without touching the master
265.Nm
266volume.
267This is sometimes referred to as Volume Per Channel (VPC).
268The
269.Tn VPC
270feature is enabled by default.
271.Ss Loader Tunables
272The following loader tunables are used to set driver configuration at the
273.Xr loader 8
274prompt before booting the kernel, or they can be stored in
275.Pa /boot/loader.conf
276in order to automatically set them before booting the kernel.
277It is also possible to use
278.Xr kenv 1
279to change these tunables before loading the
280.Nm
281driver.
282The following tunables can not be changed during runtime using
283.Xr sysctl 8 .
284.Bl -tag -width indent
285.It Va hint.pcm.%d.eq
286Set to 1 or 0 to explicitly enable (1) or disable (0) the equalizer.
287Requires a driver reload if changed.
288Enabling this will make bass and treble controls appear in mixer applications.
289This tunable is undefined by default.
290Equalizing is disabled by default.
291.It Va hint.pcm.%d.vpc
292Set to 1 or 0 to explicitly enable (1) or disable (0) the
293.Tn VPC
294feature.
295This tunable is undefined by default.
296.Tn VPC
297is however enabled by default.
298.El
299.Ss Runtime Configuration
300There are a number of
301.Xr sysctl 8
302variables available which can be modified during runtime.
303These values can also be stored in
304.Pa /etc/sysctl.conf
305in order to automatically set them during the boot process.
306.Va hw.snd.*
307are global settings and
308.Va dev.pcm.*
309are device specific.
310.Bl -tag -width indent
311.It Va hw.snd.compat_linux_mmap
312Linux
313.Xr mmap 2
314compatibility.
315The following values are supported (default is 0):
316.Bl -tag -width 2n
317.It -1
318Force disabling/denying PROT_EXEC
319.Xr mmap 2
320requests.
321.It 0
322Auto detect proc/ABI type, allow
323.Xr mmap 2
324for Linux applications, and deny for everything else.
325.It 1
326Always allow PROT_EXEC page mappings.
327.El
328.It Va hw.snd.default_auto
329Automatically assign the default sound unit.
330The following values are supported (default is 1):
331.Bl -tag -width 2n
332.It 0
333Do not assign the default sound unit automatically.
334.It 1
335Use the best available sound device based on playing and recording
336capabilities of the device.
337.It 2
338Use the most recently attached device.
339.El
340.It Va hw.snd.default_unit
341Default sound card for systems with multiple sound cards.
342When using
343.Xr devfs 5 ,
344the default device for
345.Pa /dev/dsp .
346Equivalent to a symlink from
347.Pa /dev/dsp
348to
349.Pa /dev/dsp Ns Va ${hw.snd.default_unit} .
350.It Va hw.snd.feeder_eq_exact_rate
351Only certain rates are allowed for precise processing.
352The default behavior is however to allow sloppy processing for all rates,
353even the unsupported ones.
354Enable to toggle this requirement and only allow processing for supported
355rates.
356.It Va hw.snd.feeder_rate_max
357Maximum allowable sample rate.
358.It Va hw.snd.feeder_rate_min
359Minimum allowable sample rate.
360.It Va hw.snd.feeder_rate_polyphase_max
361Adjust to set the maximum number of allowed polyphase entries during the
362process of building resampling filters.
363Disabling polyphase resampling has the benefit of reducing memory usage, at
364the expense of slower and lower quality conversion.
365Only applicable when the SINC interpolator is used.
366Default value is 183040.
367Set to 0 to disable polyphase resampling.
368.It Va hw.snd.feeder_rate_quality
369Sample rate converter quality.
370Default value is 1, linear interpolation.
371Available options include:
372.Bl -tag -width 2n
373.It 0
374Zero Order Hold, ZOH.
375Very fast, but with poor quality.
376.It 1
377Linear interpolation.
378Fast, quality is subject to personal preference.
379Technically the quality is poor however, due to the lack of anti-aliasing
380filtering.
381.It 2
382Bandlimited SINC interpolator.
383Implements polyphase banking to boost the conversion speed, at the cost of
384memory usage, with multiple high quality polynomial interpolators to improve
385the conversion accuracy.
386100% fixed point, 64bit accumulator with 32bit coefficients and high precision
387sample buffering.
388Quality values are 100dB stopband, 8 taps and 85% bandwidth.
389.It 3
390Continuation of the bandlimited SINC interpolator, with 100dB stopband, 36
391taps and 90% bandwidth as quality values.
392.It 4
393Continuation of the bandlimited SINC interprolator, with 100dB stopband, 164
394taps and 97% bandwidth as quality values.
395.El
396.It Va hw.snd.feeder_rate_round
397Sample rate rounding threshold, to avoid large prime division at the
398cost of accuracy.
399All requested sample rates will be rounded to the nearest threshold value.
400Possible values range between 0 (disabled) and 500.
401Default is 25.
402.It Va hw.snd.latency
403Configure the buffering latency.
404Only affects applications that do not explicitly request
405blocksize / fragments.
406This tunable provides finer granularity than the
407.Va hw.snd.latency_profile
408tunable.
409Possible values range between 0 (lowest latency) and 10 (highest latency).
410.It Va hw.snd.latency_profile
411Define sets of buffering latency conversion tables for the
412.Va hw.snd.latency
413tunable.
414A value of 0 will use a low and aggressive latency profile which can result
415in possible underruns if the application cannot keep up with a rapid irq
416rate, especially during high workload.
417The default value is 1, which is considered a moderate/safe latency profile.
418.It Va hw.snd.maxautovchans
419Global
420.Tn VCHAN
421setting that only affects devices with at least one playback or recording channel available.
422The sound system will dynamically create up to this many
423.Tn VCHANs .
424Set to
425.Dq 0
426if no
427.Tn VCHANs
428are desired.
429Maximum value is 256.
430.It Va hw.snd.report_soft_formats
431Controls the internal format conversion if it is
432available transparently to the application software.
433When disabled or not available, the application will
434only be able to select formats the device natively supports.
435.It Va hw.snd.report_soft_matrix
436Enable seamless channel matrixing even if the hardware does not support it.
437Makes it possible to play multichannel streams even with a simple stereo
438sound card.
439.It Va hw.snd.verbose
440Level of verbosity for the
441.Pa /dev/sndstat
442device.
443Higher values include more output and the highest level,
444four, should be used when reporting problems.
445Other options include:
446.Bl -tag -width 2n
447.It 0
448Installed devices and their allocated bus resources.
449.It 1
450The number of playback, record, virtual channels, and
451flags per device.
452.It 2
453Channel information per device including the channel's
454current format, speed, and pseudo device statistics such as
455buffer overruns and buffer underruns.
456.It 3
457File names and versions of the currently loaded sound modules.
458.It 4
459Various messages intended for debugging.
460.El
461.It Va hw.snd.vpc_0db
462Default value for
463.Nm
464volume.
465Increase to give more room for attenuation control.
466Decrease for more amplification, with the possible cost of sound clipping.
467.It Va hw.snd.vpc_autoreset
468When a channel is closed the channel volume will be reset to 0db.
469This means that any changes to the volume will be lost.
470Enabling this will preserve the volume, at the cost of possible confusion
471when applications tries to re-open the same device.
472.It Va hw.snd.vpc_mixer_bypass
473The recommended way to use the
474.Tn VPC
475feature is to teach applications to use
476the correct
477.Fn ioctl :
478.Dv SNDCTL_DSP_GETPLAYVOL, SNDCTL_DSP_SETPLAYVOL,
479.Dv SNDCTL_DSP_SETRECVOL, SNDCTL_DSP_SETRECVOL.
480This is however not always possible.
481Enable this to allow applications to use their own existing mixer logic
482to control their own channel volume.
483.It Va hw.snd.vpc_reset
484Enable to restore all channel volumes back to the default value of 0db.
485.It Va dev.pcm.%d.bitperfect
486Enable or disable bitperfect mode.
487When enabled, channels will skip all dsp processing, such as channel
488matrixing, rate converting and equalizing.
489The pure
490.Nm
491stream will be fed directly to the hardware.
492If
493.Tn VCHANs
494are enabled, the bitperfect mode will use the
495.Tn VCHAN
496format/rate as the definitive format/rate target.
497The recommended way to use bitperfect mode is to disable
498.Tn VCHANs
499and enable this sysctl.
500Default is disabled.
501.It Va dev.pcm.%d.[play|rec].vchans
502The current number of
503.Tn VCHANs
504allocated per device.
505This can be set to preallocate a certain number of
506.Tn VCHANs .
507Setting this value to
508.Dq 0
509will disable
510.Tn VCHANs
511for this device.
512.It Va dev.pcm.%d.[play|rec].vchanformat
513Format for
514.Tn VCHAN
515mixing.
516All playback paths will be converted to this format before the mixing
517process begins.
518By default only 2 channels are enabled.
519Available options include:
520.Bl -tag -width 2n
521.It s16le:1.0
522Mono.
523.It s16le:2.0
524Stereo, 2 channels (left, right).
525.It s16le:2.1
5263 channels (left, right, LFE).
527.It s16le:3.0
5283 channels (left, right, rear center).
529.It s16le:4.0
530Quadraphonic, 4 channels (front/rear left and right).
531.It s16le:4.1
5325 channels (4.0 + LFE).
533.It s16le:5.0
5345 channels (4.0 + center).
535.It s16le:5.1
5366 channels (4.0 + center + LFE).
537.It s16le:6.0
5386 channels (4.0 + front/rear center).
539.It s16le:6.1
5407 channels (6.0 + LFE).
541.It s16le:7.1
5428 channels (4.0 + center + LFE + left and right side).
543.El
544.It Va dev.pcm.%d.[play|rec].vchanmode
545.Tn VCHAN
546format/rate selection.
547Available options include:
548.Bl -tag -width 2n
549.It fixed
550Channel mixing is done using fixed format/rate.
551Advanced operations such as digital passthrough will not work.
552Can be considered as a
553.Dq legacy
554mode.
555This is the default mode for hardware channels which lack support for digital
556formats.
557.It passthrough
558Channel mixing is done using fixed format/rate, but advanced operations such
559as digital passthrough also work.
560All channels will produce sound as usual until a digital format playback is
561requested.
562When this happens all other channels will be muted and the latest incoming
563digital format will be allowed to pass through undisturbed.
564Multiple concurrent digital streams are supported, but the latest stream will
565take precedence and mute all other streams.
566.It adaptive
567Works like the
568.Dq passthrough
569mode, but is a bit smarter, especially for
570multiple
571.Nm
572channels with different format/rate.
573When a new channel is about to start, the entire list of virtual channels will
574be scanned, and the channel with the best format/rate (usually the
575highest/biggest) will be selected.
576This ensures that mixing quality depends on the best channel.
577The downside is that the hardware DMA mode needs to be restarted, which may
578cause annoying pops or clicks.
579.El
580.It Va dev.pcm.%d.[play|rec].vchanrate
581Sample rate speed for
582.Tn VCHAN
583mixing.
584All playback paths will be converted to this sample rate before the mixing
585process begins.
586.It Va dev.pcm.%d.polling
587Experimental polling mode support where the driver operates by querying the
588device state on each tick using a
589.Xr callout 9
590mechanism.
591Disabled by default and currently only available for a few device drivers.
592.El
593.Ss Recording Channels
594On devices that have more than one recording source (ie: mic and line),
595there is a corresponding
596.Pa /dev/dsp%d.r%d
597device.
598The
599.Xr mixer 8
600utility can be used to start and stop recording from an specific device.
601.Ss Statistics
602Channel statistics are only kept while the device is open.
603So with situations involving overruns and underruns, consider the output
604while the errant application is open and running.
605.Ss IOCTL Support
606The driver supports most of the
607.Tn OSS
608.Fn ioctl
609functions, and most applications work unmodified.
610A few differences exist, while memory mapped playback is
611supported natively and in
612.Tn Linux
613emulation, memory mapped recording is
614not due to
615.Tn VM
616system design.
617As a consequence, some applications may need to be recompiled
618with a slightly modified audio module.
619See
620.In sys/soundcard.h
621for a complete list of the supported
622.Fn ioctl
623functions.
624.Sh FILES
625The
626.Nm
627drivers may create the following
628device nodes:
629.Pp
630.Bl -tag -width ".Pa /dev/audio%d.%d" -compact
631.It Pa /dev/audio%d.%d
632Sparc-compatible audio device.
633.It Pa /dev/dsp%d.%d
634Digitized voice device.
635.It Pa /dev/dspW%d.%d
636Like
637.Pa /dev/dsp ,
638but 16 bits per sample.
639.It Pa /dev/dsp%d.p%d
640Playback channel.
641.It Pa /dev/dsp%d.r%d
642Record channel.
643.It Pa /dev/dsp%d.vp%d
644Virtual playback channel.
645.It Pa /dev/dsp%d.vr%d
646Virtual recording channel.
647.It Pa /dev/sndstat
648Current
649.Nm
650status, including all channels and drivers.
651.El
652.Pp
653The first number in the device node
654represents the unit number of the
655.Nm
656device.
657All
658.Nm
659devices are listed
660in
661.Pa /dev/sndstat .
662Additional messages are sometimes recorded when the
663device is probed and attached, these messages can be viewed with the
664.Xr dmesg 8
665utility.
666.Pp
667The above device nodes are only created on demand through the dynamic
668.Xr devfs 5
669clone handler.
670Users are strongly discouraged to access them directly.
671For specific sound card access, please instead use
672.Pa /dev/dsp
673or
674.Pa /dev/dsp%d .
675.Sh EXAMPLES
676Use the sound metadriver to load all
677.Nm
678bridge device drivers at once
679(for example if it is unclear which the correct driver to use is):
680.Pp
681.Dl kldload snd_driver
682.Pp
683Load a specific bridge device driver, in this case the Intel
684High Definition Audio driver:
685.Pp
686.Dl kldload snd_hda
687.Pp
688Check the status of all detected
689.Nm
690devices:
691.Pp
692.Dl cat /dev/sndstat
693.Pp
694Change the default sound device, in this case to the second device.
695This is handy if there are multiple
696.Nm
697devices available:
698.Pp
699.Dl sysctl hw.snd.default_unit=1
700.Sh DIAGNOSTICS
701.Bl -diag
702.It pcm%d:play:%d:dsp%d.p%d: play interrupt timeout, channel dead
703The hardware does not generate interrupts to serve incoming (play)
704or outgoing (record) data.
705.It unsupported subdevice XX
706A device node is not created properly.
707.El
708.Sh SEE ALSO
709.Xr snd_ad1816 4 ,
710.Xr snd_ai2s 4 ,
711.Xr snd_als4000 4 ,
712.Xr snd_atiixp 4 ,
713.Xr snd_audiocs 4 ,
714.Xr snd_cmi 4 ,
715.Xr snd_cs4281 4 ,
716.Xr snd_csa 4 ,
717.Xr snd_davbus 4 ,
718.Xr snd_ds1 4 ,
719.Xr snd_emu10k1 4 ,
720.Xr snd_emu10kx 4 ,
721.Xr snd_envy24 4 ,
722.Xr snd_envy24ht 4 ,
723.Xr snd_es137x 4 ,
724.Xr snd_ess 4 ,
725.Xr snd_fm801 4 ,
726.Xr snd_gusc 4 ,
727.Xr snd_hda 4 ,
728.Xr snd_hdspe 4 ,
729.Xr snd_ich 4 ,
730.Xr snd_maestro 4 ,
731.Xr snd_maestro3 4 ,
732.Xr snd_mss 4 ,
733.Xr snd_neomagic 4 ,
734.Xr snd_sbc 4 ,
735.Xr snd_solo 4 ,
736.Xr snd_spicds 4 ,
737.Xr snd_t4dwave 4 ,
738.Xr snd_uaudio 4 ,
739.Xr snd_via8233 4 ,
740.Xr snd_via82c686 4 ,
741.Xr snd_vibes 4 ,
742.Xr devfs 5 ,
743.Xr device.hints 5 ,
744.Xr loader.conf 5 ,
745.Xr dmesg 8 ,
746.Xr kldload 8 ,
747.Xr mixer 8 ,
748.Xr sysctl 8
749.Rs
750.%T "Cookbook formulae for audio EQ biquad filter coefficients, by Robert Bristow-Johnson"
751.%U "http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt"
752.Re
753.Rs
754.%T "Julius O'Smith's Digital Audio Resampling"
755.%U "http://ccrma.stanford.edu/~jos/resample/"
756.Re
757.Rs
758.%T "Polynomial Interpolators for High-Quality Resampling of Oversampled Audio, by Olli Niemitalo"
759.%U "http://www.student.oulu.fi/~oniemita/dsp/deip.pdf"
760.Re
761.Rs
762.%T "The OSS API"
763.%U "http://www.opensound.com/pguide/oss.pdf"
764.Re
765.Sh HISTORY
766The
767.Nm
768device driver first appeared in
769.Fx 2.2.6
770as
771.Nm pcm ,
772written by
773.An Luigi Rizzo .
774It was later
775rewritten in
776.Fx 4.0
777by
778.An Cameron Grant .
779The API evolved from the VOXWARE
780standard which later became OSS standard.
781.Sh AUTHORS
782.An -nosplit
783.An Luigi Rizzo Aq Mt luigi@iet.unipi.it
784initially wrote the
785.Nm pcm
786device driver and this manual page.
787.An Cameron Grant Aq Mt gandalf@vilnya.demon.co.uk
788later revised the device driver for
789.Fx 4.0 .
790.An Seigo Tanimura Aq Mt tanimura@r.dl.itc.u-tokyo.ac.jp
791revised this manual page.
792It was then rewritten for
793.Fx 5.2 .
794.Sh BUGS
795Some features of your sound card (e.g., global volume control) might not
796be supported on all devices.
797