\section{Built-in Module \sectcode{al}}
\bimodindex{al}

This module provides access to the audio facilities of the Indigo and
4D/35 workstations, described in section 3A of the IRIX 4.0 man pages
(and also available as an option in IRIX 3.3).  You'll need to read
those man pages to understand what these functions do!
Some of the functions are not available in releases below 4.0.5.
Again, see the manual to check whether a specific function is
available on your platform.

Symbolic constants from the C header file \file{<audio.h>} are defined
in the standard module \code{AL}, see below.

\strong{Warning:} the current version of the audio library may dump core
when bad argument values are passed rather than returning an error
status.  Unfortunately, since the precise circumstances under which
this may happen are undocumented and hard to check, the Python
interface can provide no protection against this kind of problems.
(One example is specifying an excessive queue size --- there is no
documented upper limit.)

Module \code{al} defines the following functions:

\renewcommand{\indexsubitem}{(in module al)}
\begin{funcdesc}{openport}{name\, direction\, config}
Equivalent to the C function ALopenport().  The name and direction
arguments are strings.  The optional config argument is an opaque
configuration object as returned by \code{al.newconfig()}.  The return
value is an opaque port object; methods of port objects are described
below.
\end{funcdesc}

\begin{funcdesc}{newconfig}{}
Equivalent to the C function ALnewconfig().  The return value is a new
opaque configuration object; methods of configuration objects are
described below.
\end{funcdesc}

\begin{funcdesc}{queryparams}{device}
Equivalent to the C function ALqueryparams().  The device argument is
an integer.  The return value is a list of integers containing the
data returned by ALqueryparams().
\end{funcdesc}

\begin{funcdesc}{getparams}{device\, list}
Equivalent to the C function ALgetparams().  The device argument is an
integer.  The list argument is a list such as returned by
\code{queryparams}; it is modified in place (!).
\end{funcdesc}

\begin{funcdesc}{setparams}{device\, list}
Equivalent to the C function ALsetparams().  The device argument is an
integer.The list argument is a list such as returned by
\code{al.queryparams}.
\end{funcdesc}

Configuration objects (returned by \code{al.newconfig()} have the
following methods:

\renewcommand{\indexsubitem}{(audio configuration object method)}
\begin{funcdesc}{getqueuesize}{}
Return the queue size; equivalent to the C function ALgetqueuesize().
\end{funcdesc}

\begin{funcdesc}{setqueuesize}{size}
Set the queue size; equivalent to the C function ALsetqueuesize().
\end{funcdesc}

\begin{funcdesc}{getwidth}{}
Get the sample width; equivalent to the C function ALgetwidth().
\end{funcdesc}

\begin{funcdesc}{getwidth}{width}
Set the sample width; equivalent to the C function ALsetwidth().
\end{funcdesc}

\begin{funcdesc}{getchannels}{}
Get the channel count; equivalent to the C function ALgetchannels().
\end{funcdesc}

\begin{funcdesc}{setchannels}{nchannels}
Set the channel count; equivalent to the C function ALsetchannels().
\end{funcdesc}

\begin{funcdesc}{getsampfmt}{}
Get the sample format; equivalent to the C function ALgetsampfmt().
\end{funcdesc}

\begin{funcdesc}{setsampfmt}{sampfmt}
Set the sample format; equivalent to the C function ALsetsampfmt().
\end{funcdesc}

\begin{funcdesc}{getfloatmax}{}
Get the maximum value for floating sample formats;
equivalent to the C function ALgetfloatmax().
\end{funcdesc}

\begin{funcdesc}{setfloatmax}{floatmax}
Set the maximum value for floating sample formats;
equivalent to the C function ALsetfloatmax().
\end{funcdesc}

Port objects (returned by \code{al.openport()} have the following
methods:

\renewcommand{\indexsubitem}{(audio port object method)}
\begin{funcdesc}{closeport}{}
Close the port; equivalent to the C function ALcloseport().
\end{funcdesc}

\begin{funcdesc}{getfd}{}
Return the file descriptor as an int; equivalent to the C function
ALgetfd().
\end{funcdesc}

\begin{funcdesc}{getfilled}{}
Return the number of filled samples; equivalent to the C function
ALgetfilled().
\end{funcdesc}

\begin{funcdesc}{getfillable}{}
Return the number of fillable samples; equivalent to the C function
ALgetfillable().
\end{funcdesc}

\begin{funcdesc}{readsamps}{nsamples}
Read a number of samples from the queue, blocking if necessary;
equivalent to the C function ALreadsamples.  The data is returned as a
string containing the raw data (e.g. 2 bytes per sample in big-endian
byte order (high byte, low byte) if you have set the sample width to 2
bytes.
\end{funcdesc}

\begin{funcdesc}{writesamps}{samples}
Write samples into the queue, blocking if necessary; equivalent to the
C function ALwritesamples.  The samples are encoded as described for
the \code{readsamps} return value.
\end{funcdesc}

\begin{funcdesc}{getfillpoint}{}
Return the `fill point'; equivalent to the C function ALgetfillpoint().
\end{funcdesc}

\begin{funcdesc}{setfillpoint}{fillpoint}
Set the `fill point'; equivalent to the C function ALsetfillpoint().
\end{funcdesc}

\begin{funcdesc}{getconfig}{}
Return a configuration object containing the current configuration of
the port; equivalent to the C function ALgetconfig().
\end{funcdesc}

\begin{funcdesc}{setconfig}{config}
Set the configuration from the argument, a configuration object;
equivalent to the C function ALsetconfig().
\end{funcdesc}

\begin{funcdesc}{getstatus}{list}
Get status information on last error
equivalent to C function ALgetstatus().
\end{funcdesc}

\section{Standard Module \sectcode{AL}}
\nodename{AL (uppercase)}
\stmodindex{AL}

This module defines symbolic constants needed to use the built-in
module \code{al} (see above); they are equivalent to those defined in
the C header file \file{<audio.h>} except that the name prefix
\samp{AL_} is omitted.  Read the module source for a complete list of
the defined names.  Suggested use:

\bcode\begin{verbatim}
import al
from AL import *
\end{verbatim}\ecode
