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

\strong{Note:} This module is obsolete, since the hardware to which it
interfaces is obsolete.  For audio on the Indigo or 4D/35, see
built-in module \code{al} above.

This module provides rudimentary access to the audio I/O device
\file{/dev/audio} on the Silicon Graphics Personal IRIS 4D/25;
see {\it audio}(7). It supports the following operations:

\renewcommand{\indexsubitem}{(in module audio)}
\begin{funcdesc}{setoutgain}{n}
Sets the output gain.
\iftexi
\code{0 <= \var{n} < 256}.
\else
$0 \leq \var{n} < 256$.
%%JHXXX Sets the output gain (0-255).
\fi
\end{funcdesc}

\begin{funcdesc}{getoutgain}{}
Returns the output gain.
\end{funcdesc}

\begin{funcdesc}{setrate}{n}
Sets the sampling rate: \code{1} = 32K/sec, \code{2} = 16K/sec,
\code{3} = 8K/sec.
\end{funcdesc}

\begin{funcdesc}{setduration}{n}
Sets the `sound duration' in units of 1/100 seconds.
\end{funcdesc}

\begin{funcdesc}{read}{n}
Reads a chunk of
\var{n}
sampled bytes from the audio input (line in or microphone).
The chunk is returned as a string of length n.
Each byte encodes one sample as a signed 8-bit quantity using linear
encoding.
This string can be converted to numbers using \code{chr2num()} described
below.
\end{funcdesc}

\begin{funcdesc}{write}{buf}
Writes a chunk of samples to the audio output (speaker).
\end{funcdesc}

These operations support asynchronous audio I/O:

\renewcommand{\indexsubitem}{(in module audio)}
\begin{funcdesc}{start_recording}{n}
Starts a second thread (a process with shared memory) that begins reading
\var{n}
bytes from the audio device.
The main thread immediately continues.
\end{funcdesc}

\begin{funcdesc}{wait_recording}{}
Waits for the second thread to finish and returns the data read.
\end{funcdesc}

\begin{funcdesc}{stop_recording}{}
Makes the second thread stop reading as soon as possible.
Returns the data read so far.
\end{funcdesc}

\begin{funcdesc}{poll_recording}{}
Returns true if the second thread has finished reading (so
\code{wait_recording()} would return the data without delay).
\end{funcdesc}

\begin{funcdesc}{start_playing}{}
\funcline{wait_playing}{}
\funcline{stop_playing}{}
\funcline{poll_playing}{}
\begin{sloppypar}
Similar but for output.
\code{stop_playing()}
returns a lower bound for the number of bytes actually played (not very
accurate).
\end{sloppypar}
\end{funcdesc}

The following operations do not affect the audio device but are
implemented in C for efficiency:

\renewcommand{\indexsubitem}{(in module audio)}
\begin{funcdesc}{amplify}{buf\, f1\, f2}
Amplifies a chunk of samples by a variable factor changing from
\code{\var{f1}/256} to \code{\var{f2}/256.}
Negative factors are allowed.
Resulting values that are to large to fit in a byte are clipped.         
\end{funcdesc}

\begin{funcdesc}{reverse}{buf}
Returns a chunk of samples backwards.
\end{funcdesc}

\begin{funcdesc}{add}{buf1\, buf2}
Bytewise adds two chunks of samples.
Bytes that exceed the range are clipped.
If one buffer is shorter, it is assumed to be padded with zeros.
\end{funcdesc}

\begin{funcdesc}{chr2num}{buf}
Converts a string of sampled bytes as returned by \code{read()} into
a list containing the numeric values of the samples.
\end{funcdesc}

\begin{funcdesc}{num2chr}{list}
\begin{sloppypar}
Converts a list as returned by
\code{chr2num()}
back to a buffer acceptable by
\code{write()}.
\end{sloppypar}
\end{funcdesc}
