\section{\module{ossaudiodev} ---
         Access to OSS-compatible audio devices}

\declaremodule{builtin}{ossaudiodev}
\platform{Linux, FreeBSD}
\modulesynopsis{Access to OSS-compatible audio devices.}

\versionadded{2.3}

This module allows you to access the OSS (Open Sound System) audio
interface.  OSS is available for a wide range of open-source and
commercial Unices, and is the standard audio interface for Linux and
recent versions of FreeBSD.

% Things will get more complicated for future Linux versions, since
% ALSA is in the standard kernel as of 2.5.x.  Presumably if you
% use ALSA, you'll have to make sure its OSS compatibility layer
% is active to use ossaudiodev, but you're gonna need it for the vast
% majority of Linux audio apps anyways.  
%
% Sounds like things are also complicated for other BSDs.  In response
% to my python-dev query, Thomas Wouters said:
%
% > Likewise, googling shows OpenBSD also uses OSS/Free -- the commercial
% > OSS installation manual tells you to remove references to OSS/Free from the
% > kernel :)
%
% but Aleksander Piotrowsk actually has an OpenBSD box, and he quotes
% from its <soundcard.h>:
% >  * WARNING!  WARNING!
% >  * This is an OSS (Linux) audio emulator.
% >  * Use the Native NetBSD API for developing new code, and this
% >  * only for compiling Linux programs.
%
% There's also an ossaudio manpage on OpenBSD that explains things
% further.  Presumably NetBSD and OpenBSD have a different standard
% audio interface.  That's the great thing about standards, there are so
% many to choose from ... ;-)  
%
% This probably all warrants a footnote or two, but I don't understand
% things well enough right now to write it!   --GPW

\begin{seealso}
\seetitle[http://www.opensound.com/pguide/oss.pdf]
         {Open Sound System Programmer's Guide} {the official
         documentation for the OSS C API}
\seetext{The module defines a large number of constants supplied by
         the OSS device driver; see \code{<sys/soundcard.h>} on either
         Linux or FreeBSD for a listing .}
\end{seealso}

\module{ossaudiodev} defines the following variables and functions:

\begin{excdesc}{OSSAudioError}
This exception is raised on certain errors.  The argument is a string
describing what went wrong.

(If \module{ossaudiodev} receives an error from a system call such as
\cfunction{open()}, \cfunction{write()}, or \cfunction{ioctl()}, it
raises \exception{IOError}.  Errors detected directly by
\module{ossaudiodev} result in \exception{OSSAudioError}.)

(For backwards compatibility, the exception class is also available as
\code{ossaudiodev.error}.)
\end{excdesc}

\begin{funcdesc}{open}{\optional{device, }mode}
Open an audio device and return an OSS audio device object.  This
object supports many file-like methods, such as \method{read()},
\method{write()}, and \method{fileno()} (although there are subtle
differences between conventional Unix read/write semantics and those of
OSS audio devices).  It also supports a number of audio-specific
methods; see below for the complete list of methods.

\var{device} is the audio device filename to use.  If it is not
specified, this module first looks in the environment variable
\envvar{AUDIODEV} for a device to use.  If not found, it falls back to
\file{/dev/dsp}.

\var{mode} is one of \code{'r'} for read-only (record) access,
\code{'w'} for write-only (playback) access and \code{'rw'} for both.
Since many sound cards only allow one process to have the recorder or
player open at a time, it is a good idea to open the device only for the
activity needed.  Further, some sound cards are half-duplex: they can be
opened for reading or writing, but not both at once.

Note the unusual calling syntax: the \emph{first} argument is optional,
and the second is required.  This is a historical artifact for
compatibility with the older \module{linuxaudiodev} module which
\module{ossaudiodev} supersedes.  % XXX it might also be motivated
% by my unfounded-but-still-possibly-true belief that the default
% audio device varies unpredictably across operating systems.  -GW
\end{funcdesc}

\begin{funcdesc}{openmixer}{\optional{device}}
Open a mixer device and return an OSS mixer device object.  
\var{device} is the mixer device filename to use.  If it is
not specified, this module first looks in the environment variable
\envvar{MIXERDEV} for a device to use.  If not found, it falls back to
\file{/dev/mixer}.

\end{funcdesc}

\subsection{Audio Device Objects \label{ossaudio-device-objects}}

Before you can write to or read from an audio device, you must call
three methods in the correct order:
\begin{enumerate}
\item \method{setfmt()} to set the output format
\item \method{channels()} to set the number of channels
\item \method{speed()} to set the sample rate
\end{enumerate}
Alternately, you can use the \method{setparameters()} method to set all
three audio parameters at once.  This is more convenient, but may not be
as flexible in all cases.

The audio device objects returned by \function{open()} define the
following methods and (read-only) attributes:

\begin{methoddesc}[audio device]{close}{}
Explicitly close the audio device.  When you are done writing to or
reading from an audio device, you should explicitly close it.  A closed
device cannot be used again.
\end{methoddesc}

\begin{methoddesc}[audio device]{fileno}{}
Return the file descriptor associated with the device.
\end{methoddesc}

\begin{methoddesc}[audio device]{read}{size}
Read \var{size} bytes from the audio input and return them as a Python
string.  Unlike most \UNIX{} device drivers, OSS audio devices in
blocking mode (the default) will block \function{read()} until the
entire requested amount of data is available.
\end{methoddesc}

\begin{methoddesc}[audio device]{write}{data}
Write the Python string \var{data} to the audio device and return the
number of bytes written.  If the audio device is in blocking mode (the
default), the entire string is always written (again, this is different
from usual \UNIX{} device semantics).  If the device is in non-blocking
mode, some data may not be written---see \method{writeall()}.
\end{methoddesc}

\begin{methoddesc}[audio device]{writeall}{data}
Write the entire Python string \var{data} to the audio device: waits
until the audio device is able to accept data, writes as much data as it
will accept, and repeats until \var{data} has been completely written.
If the device is in blocking mode (the default), this has the same
effect as \method{write()}; \method{writeall()} is only useful in
non-blocking mode.  Has no return value, since the amount of data
written is always equal to the amount of data supplied.
\end{methoddesc}

The following methods each map to exactly one
\function{ioctl()} system call.  The correspondence is obvious: for
example, \method{setfmt()} corresponds to the \code{SNDCTL_DSP_SETFMT}
ioctl, and \method{sync()} to \code{SNDCTL_DSP_SYNC} (this can be useful
when consulting the OSS documentation).  If the underlying
\function{ioctl()} fails, they all raise \exception{IOError}.

\begin{methoddesc}[audio device]{nonblock}{}
Put the device into non-blocking mode.  Once in non-blocking mode, there
is no way to return it to blocking mode.
\end{methoddesc}

\begin{methoddesc}[audio device]{getfmts}{}
Return a bitmask of the audio output formats supported by the
soundcard.  Some of the formats supported by OSS are:

\begin{tableii}{l|l}{constant}{Format}{Description}
\lineii{AFMT_MU_LAW}
       {a logarithmic encoding (used by Sun \code{.au} files and
        \filenq{/dev/audio})}
\lineii{AFMT_A_LAW}
       {a logarithmic encoding}
\lineii{AFMT_IMA_ADPCM}
       {a 4:1 compressed format defined by the Interactive Multimedia
        Association} 
\lineii{AFMT_U8}
       {Unsigned, 8-bit audio}
\lineii{AFMT_S16_LE}
       {Signed, 16-bit audio, little-endian byte order (as used by
        Intel processors)}
\lineii{AFMT_S16_BE}
       {Signed, 16-bit audio, big-endian byte order (as used by 68k,
        PowerPC, Sparc)}
\lineii{AFMT_S8}
       {Signed, 8 bit audio}
\lineii{AFMT_U16_LE}
       {Unsigned, 16-bit little-endian audio}
\lineii{AFMT_U16_BE}
       {Unsigned, 16-bit big-endian audio}
\end{tableii}
Consult the OSS documentation for a full list of audio formats, and note
that most devices support only a subset of these formats.  Some older
devices only support \constant{AFMT_U8}; the most common format used
today is \constant{AFMT_S16_LE}.
\end{methoddesc}

\begin{methoddesc}[audio device]{setfmt}{format}
Try to set the current audio format to \var{format}---see
\method{getfmts()} for a list.  Returns the audio format that the device
was set to, which may not be the requested format.  May also be used to
return the current audio format---do this by passing an ``audio format''
of
\constant{AFMT_QUERY}.  
\end{methoddesc}

\begin{methoddesc}[audio device]{channels}{nchannels}
Set the number of output channels to \var{nchannels}.  A value of 1
indicates monophonic sound, 2 stereophonic.  Some devices may have more
than 2 channels, and some high-end devices may not support mono.
Returns the number of channels the device was set to.
\end{methoddesc}

\begin{methoddesc}[audio device]{speed}{samplerate}
Try to set the audio sampling rate to \var{samplerate} samples per
second.  Returns the rate actually set.  Most sound devices don't
support arbitrary sampling rates.  Common rates are:
\begin{tableii}{l|l}{textrm}{Rate}{Description}
\lineii{8000}{default rate for \filenq{/dev/audio}}
\lineii{11025}{speech recording}
\lineii{22050}{}
\lineii{44100}{CD quality audio (at 16 bits/sample and 2 channels)}
\lineii{96000}{DVD quality audio (at 24 bits/sample)}
\end{tableii}
\end{methoddesc}

\begin{methoddesc}[audio device]{sync}{}
Wait until the sound device has played every byte in its buffer.  (This
happens implicitly when the device is closed.)  The OSS documentation
recommends closing and re-opening the device rather than using
\method{sync()}.
\end{methoddesc}

\begin{methoddesc}[audio device]{reset}{}
Immediately stop playing or recording and return the device to a
state where it can accept commands.  The OSS documentation recommends
closing and re-opening the device after calling \method{reset()}.
\end{methoddesc}

\begin{methoddesc}[audio device]{post}{}
Tell the driver that there is likely to be a pause in the output, making
it possible for the device to handle the pause more intelligently.  You
might use this after playing a spot sound effect, before waiting for
user input, or before doing disk I/O.
\end{methoddesc}

The following convenience methods combine several ioctls, or one ioctl
and some simple calculations.

\begin{methoddesc}[audio device]{setparameters}
  {format, nchannels, samplerate \optional{, strict=False}}

Set the key audio sampling parameters---sample format, number of
channels, and sampling rate---in one method call.  \var{format}, 
\var{nchannels}, and \var{samplerate} should be as specified in the
\method{setfmt()}, \method{channels()}, and \method{speed()} 
methods.  If \var{strict} is true, \method{setparameters()} checks to
see if each parameter was actually set to the requested value, and
raises \exception{OSSAudioError} if not.  Returns a tuple (\var{format},
\var{nchannels}, \var{samplerate}) indicating the parameter values that
were actually set by the device driver (i.e., the same as the return
values of \method{setfmt()}, \method{channels()}, and \method{speed()}).

For example,
\begin{verbatim}
  (fmt, channels, rate) = dsp.setparameters(fmt, channels, rate)
\end{verbatim}
is equivalent to
\begin{verbatim}
  fmt = dsp.setfmt(fmt)
  channels = dsp.channels(channels)
  rate = dsp.rate(channels)
\end{verbatim}
\end{methoddesc}

\begin{methoddesc}[audio device]{bufsize}{}
Returns the size of the hardware buffer, in samples.
\end{methoddesc}

\begin{methoddesc}[audio device]{obufcount}{}
Returns the number of samples that are in the hardware buffer yet to be
played.
\end{methoddesc}

\begin{methoddesc}[audio device]{obuffree}{}
Returns the number of samples that could be queued into the hardware
buffer to be played without blocking.
\end{methoddesc}

Audio device objects also support several read-only attributes:

\begin{memberdesc}[audio device]{closed}{}
Boolean indicating whether the device has been closed.
\end{memberdesc}

\begin{memberdesc}[audio device]{name}{}
String containing the name of the device file.
\end{memberdesc}

\begin{memberdesc}[audio device]{mode}{}
The I/O mode for the file, either \code{"r"}, \code{"rw"}, or \code{"w"}.
\end{memberdesc}


\subsection{Mixer Device Objects \label{mixer-device-objects}}

The mixer object provides two file-like methods:

\begin{methoddesc}[mixer device]{close}{}
This method closes the open mixer device file.  Any further attempts to
use the mixer after this file is closed will raise an IOError.
\end{methoddesc}

\begin{methoddesc}[mixer device]{fileno}{}
Returns the file handle number of the open mixer device file.
\end{methoddesc}

The remaining methods are specific to audio mixing:

\begin{methoddesc}[mixer device]{controls}{}
This method returns a bitmask specifying the available mixer controls
(``Control'' being a specific mixable ``channel'', such as
\constant{SOUND_MIXER_PCM} or \constant{SOUND_MIXER_SYNTH}).  This
bitmask indicates a subset of all available mixer controls---the
\constant{SOUND_MIXER_*} constants defined at module level.  To determine if,
for example, the current mixer object supports a PCM mixer, use the
following Python code:

\begin{verbatim}
mixer=ossaudiodev.openmixer()
if mixer.controls() & (1 << ossaudiodev.SOUND_MIXER_PCM):
    # PCM is supported
    ... code ...
\end{verbatim}

For most purposes, the \constant{SOUND_MIXER_VOLUME} (master volume) and
\constant{SOUND_MIXER_PCM} controls should suffice---but code that uses the
mixer should be flexible when it comes to choosing mixer controls.  On
the Gravis Ultrasound, for example, \constant{SOUND_MIXER_VOLUME} does not
exist.
\end{methoddesc}

\begin{methoddesc}[mixer device]{stereocontrols}{}
Returns a bitmask indicating stereo mixer controls.  If a bit is set,
the corresponding control is stereo; if it is unset, the control is
either monophonic or not supported by the mixer (use in combination with
\method{controls()} to determine which).

See the code example for the \method{controls()} function for an example
of getting data from a bitmask.
\end{methoddesc}

\begin{methoddesc}[mixer device]{reccontrols}{}
Returns a bitmask specifying the mixer controls that may be used to
record.  See the code example for \method{controls()} for an example of
reading from a bitmask.
\end{methoddesc}

\begin{methoddesc}[mixer device]{get}{control}
Returns the volume of a given mixer control.  The returned volume is a
2-tuple \code{(left_volume,right_volume)}.  Volumes are specified as
numbers from 0 (silent) to 100 (full volume).  If the control is
monophonic, a 2-tuple is still returned, but both volumes are
the same.

Raises \exception{OSSAudioError} if an invalid control was is specified,
or \exception{IOError} if an unsupported control is specified.
\end{methoddesc}

\begin{methoddesc}[mixer device]{set}{control, (left, right)}
Sets the volume for a given mixer control to \code{(left,right)}.
\code{left} and \code{right} must be ints and between 0 (silent) and 100
(full volume).  On success, the new volume is returned as a 2-tuple.
Note that this may not be exactly the same as the volume specified,
because of the limited resolution of some soundcard's mixers.

Raises \exception{OSSAudioError} if an invalid mixer control was
specified, or if the specified volumes were out-of-range.
\end{methoddesc}

\begin{methoddesc}[mixer device]{get_recsrc}{}
This method returns a bitmask indicating which control(s) are
currently being used as a recording source.
\end{methoddesc}

\begin{methoddesc}[mixer device]{set_recsrc}{bitmask}
Call this function to specify a recording source.  Returns a bitmask
indicating the new recording source (or sources) if successful; raises
\exception{IOError} if an invalid source was specified.  To set the current
recording source to the microphone input:

\begin{verbatim}
mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)
\end{verbatim}
\end{methoddesc}



