202 lines
7.3 KiB
TeX
202 lines
7.3 KiB
TeX
\section{\module{aifc} ---
|
|
Read and write audio files in AIFF or AIFC format.}
|
|
\declaremodule{standard}{aifc}
|
|
|
|
\modulesynopsis{Read and write audio files in AIFF or AIFC format.}
|
|
|
|
|
|
This module provides support for reading and writing AIFF and AIFF-C
|
|
files. AIFF is Audio Interchange File Format, a format for storing
|
|
digital audio samples in a file. AIFF-C is a newer version of the
|
|
format that includes the ability to compress the audio data.
|
|
\index{Audio Interchange File Format}
|
|
\index{AIFF}
|
|
\index{AIFF-C}
|
|
|
|
\strong{Caveat:} Some operations may only work under IRIX; these will
|
|
raise \exception{ImportError} when attempting to import the
|
|
\module{cl} module, which is only available on IRIX.
|
|
|
|
Audio files have a number of parameters that describe the audio data.
|
|
The sampling rate or frame rate is the number of times per second the
|
|
sound is sampled. The number of channels indicate if the audio is
|
|
mono, stereo, or quadro. Each frame consists of one sample per
|
|
channel. The sample size is the size in bytes of each sample. Thus a
|
|
frame consists of \var{nchannels}*\var{samplesize} bytes, and a
|
|
second's worth of audio consists of
|
|
\var{nchannels}*\var{samplesize}*\var{framerate} bytes.
|
|
|
|
For example, CD quality audio has a sample size of two bytes (16
|
|
bits), uses two channels (stereo) and has a frame rate of 44,100
|
|
frames/second. This gives a frame size of 4 bytes (2*2), and a
|
|
second's worth occupies 2*2*44100 bytes, i.e.\ 176,400 bytes.
|
|
|
|
Module \module{aifc} defines the following function:
|
|
|
|
\begin{funcdesc}{open}{file, mode}
|
|
Open an AIFF or AIFF-C file and return an object instance with
|
|
methods that are described below. The argument file is either a
|
|
string naming a file or a file object. The mode is either the string
|
|
\code{'r'} when the file must be opened for reading, or \code{'w'}
|
|
when the file must be opened for writing. When used for writing, the
|
|
file object should be seekable, unless you know ahead of time how many
|
|
samples you are going to write in total and use
|
|
\method{writeframesraw()} and \method{setnframes()}.
|
|
\end{funcdesc}
|
|
|
|
Objects returned by \function{open()} when a file is opened for
|
|
reading have the following methods:
|
|
|
|
\begin{methoddesc}[aifc]{getnchannels}{}
|
|
Return the number of audio channels (1 for mono, 2 for stereo).
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getsampwidth}{}
|
|
Return the size in bytes of individual samples.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getframerate}{}
|
|
Return the sampling rate (number of audio frames per second).
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getnframes}{}
|
|
Return the number of audio frames in the file.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getcomptype}{}
|
|
Return a four-character string describing the type of compression used
|
|
in the audio file. For AIFF files, the returned value is
|
|
\code{'NONE'}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getcompname}{}
|
|
Return a human-readable description of the type of compression used in
|
|
the audio file. For AIFF files, the returned value is \code{'not
|
|
compressed'}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getparams}{}
|
|
Return a tuple consisting of all of the above values in the above
|
|
order.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getmarkers}{}
|
|
Return a list of markers in the audio file. A marker consists of a
|
|
tuple of three elements. The first is the mark ID (an integer), the
|
|
second is the mark position in frames from the beginning of the data
|
|
(an integer), the third is the name of the mark (a string).
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{getmark}{id}
|
|
Return the tuple as described in \method{getmarkers()} for the mark
|
|
with the given \var{id}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{readframes}{nframes}
|
|
Read and return the next \var{nframes} frames from the audio file. The
|
|
returned data is a string containing for each frame the uncompressed
|
|
samples of all channels.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{rewind}{}
|
|
Rewind the read pointer. The next \method{readframes()} will start from
|
|
the beginning.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setpos}{pos}
|
|
Seek to the specified frame number.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{tell}{}
|
|
Return the current frame number.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{close}{}
|
|
Close the AIFF file. After calling this method, the object can no
|
|
longer be used.
|
|
\end{methoddesc}
|
|
|
|
Objects returned by \function{open()} when a file is opened for
|
|
writing have all the above methods, except for \method{readframes()} and
|
|
\method{setpos()}. In addition the following methods exist. The
|
|
\method{get*()} methods can only be called after the corresponding
|
|
\method{set*()} methods have been called. Before the first
|
|
\method{writeframes()} or \method{writeframesraw()}, all parameters
|
|
except for the number of frames must be filled in.
|
|
|
|
\begin{methoddesc}[aifc]{aiff}{}
|
|
Create an AIFF file. The default is that an AIFF-C file is created,
|
|
unless the name of the file ends in \code{'.aiff'} in which case the
|
|
default is an AIFF file.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{aifc}{}
|
|
Create an AIFF-C file. The default is that an AIFF-C file is created,
|
|
unless the name of the file ends in \code{'.aiff'} in which case the
|
|
default is an AIFF file.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setnchannels}{nchannels}
|
|
Specify the number of channels in the audio file.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setsampwidth}{width}
|
|
Specify the size in bytes of audio samples.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setframerate}{rate}
|
|
Specify the sampling frequency in frames per second.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setnframes}{nframes}
|
|
Specify the number of frames that are to be written to the audio file.
|
|
If this parameter is not set, or not set correctly, the file needs to
|
|
support seeking.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setcomptype}{type, name}
|
|
Specify the compression type. If not specified, the audio data will
|
|
not be compressed. In AIFF files, compression is not possible. The
|
|
name parameter should be a human-readable description of the
|
|
compression type, the type parameter should be a four-character
|
|
string. Currently the following compression types are supported:
|
|
NONE, ULAW, ALAW, G722.
|
|
\index{u-LAW}
|
|
\index{A-LAW}
|
|
\index{G.722}
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setparams}{nchannels, sampwidth, framerate, comptype, compname}
|
|
Set all the above parameters at once. The argument is a tuple
|
|
consisting of the various parameters. This means that it is possible
|
|
to use the result of a \method{getparams()} call as argument to
|
|
\method{setparams()}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{setmark}{id, pos, name}
|
|
Add a mark with the given id (larger than 0), and the given name at
|
|
the given position. This method can be called at any time before
|
|
\method{close()}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{tell}{}
|
|
Return the current write position in the output file. Useful in
|
|
combination with \method{setmark()}.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{writeframes}{data}
|
|
Write data to the output file. This method can only be called after
|
|
the audio file parameters have been set.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{writeframesraw}{data}
|
|
Like \method{writeframes()}, except that the header of the audio file
|
|
is not updated.
|
|
\end{methoddesc}
|
|
|
|
\begin{methoddesc}[aifc]{close}{}
|
|
Close the AIFF file. The header of the file is updated to reflect the
|
|
actual size of the audio data. After calling this method, the object
|
|
can no longer be used.
|
|
\end{methoddesc}
|