p Use the native .Xr audio 4 and .Xr mixer 4 interfaces for new programs, and this emulation library only for building code written for other operating systems. .Ss Mixer Control Map The following table summarizes the mappings from native interface device names to OSS mixer controls.
p l -column ".Sy Native Device Name" "SOUND_MIXER_SPEAKER" t Sy "Native Device Name" Ta Sy "OSS Mixer Control" t *.mic Ta SOUND_MIXER_MIC t *.line Ta SOUND_MIXER_LINE t *.cd Ta SOUND_MIXER_CD t *.dac Ta SOUND_MIXER_PCM t *.aux Ta SOUND_MIXER_LINE1 t *.record Ta SOUND_MIXER_IMIX t *.master Ta SOUND_MIXER_VOLUME t *.treble Ta SOUND_MIXER_TREBLE t *.bass Ta SOUND_MIXER_BASS t *.speaker Ta SOUND_MIXER_SPEAKER t *.output Ta SOUND_MIXER_OGAIN t *.input Ta SOUND_MIXER_IGAIN t *.fmsynth Ta SOUND_MIXER_SYNTH t *.midi Ta SOUND_MIXER_SYNTH .El .Sh COMPATIBILITY The .Nm interface aims to be compatible with the Open Sound System version 4, as described in:
p .Rs .%A 4Front Technologies .%T OSS 4.x Programmer's Guide .%U http://manuals.opensound.com/developer/ .%D 2007 .Sh SEE ALSO .Xr ioctl 2 , .Xr audio 4 , .Xr midi 4 , .Xr mixer 4 .Sh HISTORY The .Nm library first appeared in .Nx 1.3 .
p The Open Sound System up to version 3 was originally the preferred API for writing audio code under Linux until ALSA became the new default in Linux 2.6. It remains the preferred API in FreeBSD and Solaris, and a large body of code exists supporting it. .Sh BUGS
p The emulation is incomplete, covering most of OSSv3 and some of OSSv4. Some obscure features are not included, but the essential ioctls used by the majority of software are covered.
p The emulation uses a #define for .Fn ioctl so some obscure programs can fail to compile.
p Linux, FreeBSD, and Solaris provide
a /dev/mixer devices in place of the
a /dev/mixer devices this compatibility layer must be accessed through on NetBSD. However, changing this is typically trivial when porting programs.
p The emulation only covers .Fn ioctl , there are other differences as well. E.g., on a write that would block in non-blocking mode Linux returns .Dv EINTR whereas .Nx 1.3 returns .Dv EAGAIN .