Prev: sunaudiodev
Up: sunaudiodev
Top: Top
10.1.1. Audio device object methods
The audio device objects are returned by open
define the
following methods (except control
objects which only provide
getinfo, setinfo and drain):
- close () -- Method on audio device
-
This method explicitly closes the device. It is useful in situations
where deleting the object does not immediately close it since there
are other references to it. A closed device should not be used again.
- drain () -- Method on audio device
-
This method waits until all pending output is processed and then returns.
Calling this method is often not necessary: destroying the object will
automatically close the audio device and this will do an implicit drain.
- flush () -- Method on audio device
-
This method discards all pending output. It can be used avoid the
slow response to a user's stop request (due to buffering of up to one
second of sound).
- getinfo () -- Method on audio device
-
This method retrieves status information like input and output volume,
etc. and returns it in the form of
an audio status object. This object has no methods but it contains a
number of attributes describing the current device status. The names
and meanings of the attributes are described in
/usr/include/sun/audioio.h and in the audio man page. Member names
are slightly different from their C counterparts: a status object is
only a single structure. Members of the
play
substructure have
`o_' prepended to their name and members of the record
structure have `i_'. So, the C member play.sample_rate
is
accessed as o_sample_rate
, record.gain
as i_gain
and monitor_gain
plainly as monitor_gain
.
- ibufcount () -- Method on audio device
-
This method returns the number of samples that are buffered on the
recording side, i.e.
the program will not block on a
read
call of so many samples.
- obufcount () -- Method on audio device
-
This method returns the number of samples buffered on the playback
side. Unfortunately, this number cannot be used to determine a number
of samples that can be written without blocking since the kernel
output queue length seems to be variable.
- read (size) -- Method on audio device
-
This method reads size samples from the audio input and returns
them as a python string. The function blocks until enough data is available.
- setinfo (status) -- Method on audio device
-
This method sets the audio device status parameters. The status
parameter is an device status object as returned by
getinfo
and
possibly modified by the program.
- write (samples) -- Method on audio device
-
Write is passed a python string containing audio samples to be played.
If there is enough buffer space free it will immedeately return,
otherwise it will block.
There is a companion module, SUNAUDIODEV
, which defines useful
symbolic constants like MIN_GAIN
, MAX_GAIN
,
SPEAKER
, etc. The names of
the constants are the same names as used in the C include file
<sun/audioio.h>, with the leading string `AUDIO_' stripped.
Useability of the control device is limited at the moment, since there
is no way to use the 'wait for something to happen' feature the device
provides. This is because that feature makes heavy use of signals, and
these do not map too well onto Python.