2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
:mod:`sunaudiodev` --- Access to Sun audio hardware
|
|
|
|
===================================================
|
|
|
|
|
|
|
|
.. module:: sunaudiodev
|
|
|
|
:platform: SunOS
|
|
|
|
:synopsis: Access to Sun audio hardware.
|
2008-05-15 04:11:41 -03:00
|
|
|
:deprecated:
|
Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line
fill in actual issue number in tests
........
r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines
Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open
file with `str' filename on Windows.
........
r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line
fix highlighting
........
r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines
welcome to 2009, Python!
........
r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines
#4801 _collections module fails to build on cygwin.
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
........
r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4472: "configure --enable-shared doesn't work on OSX"
........
r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines
Forgot to add a NEWS item in my previous checkin
........
r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4780
........
r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue 1627952
........
r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue r1737832
........
r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 1149804
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4075: Use OutputDebugStringW in Py_FatalError.
........
r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4051: Prevent conflict of UNICODE macros in cPickle.
........
r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line
fix compilation on non-Windows platforms
........
r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line
Issue #4615. Document how to use itertools for de-duping.
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines
Make indentation consistent.
........
r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix role name.
........
r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources.
........
r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines
Recognize usage of the default role.
........
r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix uses of the default role.
........
r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove trailing whitespace.
........
r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove tabs from the documentation.
........
r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines
Disable the line length checker by default.
........
2009-01-03 17:55:17 -04:00
|
|
|
|
2008-05-15 04:11:41 -03:00
|
|
|
.. deprecated:: 2.6
|
|
|
|
The :mod:`sunaudiodev` module has been deprecated for removal in Python 3.0.
|
|
|
|
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. index:: single: u-LAW
|
|
|
|
|
|
|
|
This module allows you to access the Sun audio interface. The Sun audio hardware
|
|
|
|
is capable of recording and playing back audio data in u-LAW format with a
|
|
|
|
sample rate of 8K per second. A full description can be found in the
|
|
|
|
:manpage:`audio(7I)` manual page.
|
|
|
|
|
|
|
|
.. index:: module: SUNAUDIODEV
|
|
|
|
|
|
|
|
The module :mod:`SUNAUDIODEV` defines constants which may be used with this
|
|
|
|
module.
|
|
|
|
|
|
|
|
This module defines the following variables and functions:
|
|
|
|
|
|
|
|
|
|
|
|
.. exception:: error
|
|
|
|
|
|
|
|
This exception is raised on all errors. The argument is a string describing what
|
|
|
|
went wrong.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: open(mode)
|
|
|
|
|
|
|
|
This function opens the audio device and returns a Sun audio device object. This
|
|
|
|
object can then be used to do I/O on. The *mode* parameter is one of ``'r'`` for
|
|
|
|
record-only access, ``'w'`` for play-only access, ``'rw'`` for both and
|
|
|
|
``'control'`` for access to the control device. Since only one process is
|
|
|
|
allowed to have the recorder or player open at the same time it is a good idea
|
|
|
|
to open the device only for the activity needed. See :manpage:`audio(7I)` for
|
|
|
|
details.
|
|
|
|
|
|
|
|
As per the manpage, this module first looks in the environment variable
|
|
|
|
``AUDIODEV`` for the base audio device filename. If not found, it falls back to
|
|
|
|
:file:`/dev/audio`. The control device is calculated by appending "ctl" to the
|
|
|
|
base audio device.
|
|
|
|
|
|
|
|
|
|
|
|
.. _audio-device-objects:
|
|
|
|
|
|
|
|
Audio Device Objects
|
|
|
|
--------------------
|
|
|
|
|
2009-10-27 11:36:50 -03:00
|
|
|
The audio device objects are returned by :func:`.open` define the following
|
2007-08-15 11:28:01 -03:00
|
|
|
methods (except ``control`` objects which only provide :meth:`getinfo`,
|
|
|
|
:meth:`setinfo`, :meth:`fileno`, and :meth:`drain`):
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.close()
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.fileno()
|
|
|
|
|
|
|
|
Returns the file descriptor associated with the device. This can be used to set
|
|
|
|
up ``SIGPOLL`` notification, as described below.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.drain()
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.flush()
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.getinfo()
|
|
|
|
|
|
|
|
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 ``<sun/audioio.h>`` and in
|
|
|
|
the :manpage:`audio(7I)` manual page. Member names are slightly different from
|
|
|
|
their C counterparts: a status object is only a single structure. Members of the
|
|
|
|
:cdata:`play` substructure have ``o_`` prepended to their name and members of
|
|
|
|
the :cdata:`record` structure have ``i_``. So, the C member
|
|
|
|
:cdata:`play.sample_rate` is accessed as :attr:`o_sample_rate`,
|
|
|
|
:cdata:`record.gain` as :attr:`i_gain` and :cdata:`monitor_gain` plainly as
|
|
|
|
:attr:`monitor_gain`.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.ibufcount()
|
|
|
|
|
|
|
|
This method returns the number of samples that are buffered on the recording
|
|
|
|
side, i.e. the program will not block on a :func:`read` call of so many samples.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.obufcount()
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.read(size)
|
|
|
|
|
|
|
|
This method reads *size* samples from the audio input and returns them as a
|
|
|
|
Python string. The function blocks until enough data is available.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.setinfo(status)
|
|
|
|
|
|
|
|
This method sets the audio device status parameters. The *status* parameter is
|
|
|
|
an device status object as returned by :func:`getinfo` and possibly modified by
|
|
|
|
the program.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: audio device.write(samples)
|
|
|
|
|
|
|
|
Write is passed a Python string containing audio samples to be played. If there
|
|
|
|
is enough buffer space free it will immediately return, otherwise it will block.
|
|
|
|
|
|
|
|
The audio device supports asynchronous notification of various events, through
|
|
|
|
the SIGPOLL signal. Here's an example of how you might enable this in Python::
|
|
|
|
|
|
|
|
def handle_sigpoll(signum, frame):
|
|
|
|
print 'I got a SIGPOLL update'
|
|
|
|
|
|
|
|
import fcntl, signal, STROPTS
|
|
|
|
|
|
|
|
signal.signal(signal.SIGPOLL, handle_sigpoll)
|
|
|
|
fcntl.ioctl(audio_obj.fileno(), STROPTS.I_SETSIG, STROPTS.S_MSG)
|
|
|
|
|
|
|
|
|
|
|
|
:mod:`SUNAUDIODEV` --- Constants used with :mod:`sunaudiodev`
|
|
|
|
=============================================================
|
|
|
|
|
|
|
|
.. module:: SUNAUDIODEV
|
|
|
|
:platform: SunOS
|
|
|
|
:synopsis: Constants for use with sunaudiodev.
|
2008-05-15 04:11:41 -03:00
|
|
|
:deprecated:
|
Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68133 | antoine.pitrou | 2009-01-01 16:38:03 +0100 (Thu, 01 Jan 2009) | 1 line
fill in actual issue number in tests
........
r68134 | hirokazu.yamamoto | 2009-01-01 16:45:39 +0100 (Thu, 01 Jan 2009) | 2 lines
Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open
file with `str' filename on Windows.
........
r68141 | benjamin.peterson | 2009-01-01 17:43:12 +0100 (Thu, 01 Jan 2009) | 1 line
fix highlighting
........
r68142 | benjamin.peterson | 2009-01-01 18:29:49 +0100 (Thu, 01 Jan 2009) | 2 lines
welcome to 2009, Python!
........
r68145 | amaury.forgeotdarc | 2009-01-02 01:03:54 +0100 (Fri, 02 Jan 2009) | 5 lines
#4801 _collections module fails to build on cygwin.
_PyObject_GC_TRACK is the macro version of PyObject_GC_Track,
and according to documentation it should not be used for extension modules.
........
r68146 | ronald.oussoren | 2009-01-02 11:44:46 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4472: "configure --enable-shared doesn't work on OSX"
........
r68148 | ronald.oussoren | 2009-01-02 11:48:31 +0100 (Fri, 02 Jan 2009) | 2 lines
Forgot to add a NEWS item in my previous checkin
........
r68149 | ronald.oussoren | 2009-01-02 11:50:48 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue4780
........
r68159 | ronald.oussoren | 2009-01-02 15:48:17 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue 1627952
........
r68160 | ronald.oussoren | 2009-01-02 15:52:09 +0100 (Fri, 02 Jan 2009) | 2 lines
Fix for issue r1737832
........
r68161 | ronald.oussoren | 2009-01-02 16:00:05 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 1149804
........
r68162 | ronald.oussoren | 2009-01-02 16:06:00 +0100 (Fri, 02 Jan 2009) | 3 lines
Fix for issue 4472 is incompatible with Cygwin, this patch
should fix that.
........
r68166 | benjamin.peterson | 2009-01-02 19:26:23 +0100 (Fri, 02 Jan 2009) | 1 line
document PyMemberDef
........
r68171 | georg.brandl | 2009-01-02 21:25:14 +0100 (Fri, 02 Jan 2009) | 3 lines
#4811: fix markup glitches (mostly remains of the conversion),
found by Gabriel Genellina.
........
r68172 | martin.v.loewis | 2009-01-02 21:32:55 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4075: Use OutputDebugStringW in Py_FatalError.
........
r68173 | martin.v.loewis | 2009-01-02 21:40:14 +0100 (Fri, 02 Jan 2009) | 2 lines
Issue #4051: Prevent conflict of UNICODE macros in cPickle.
........
r68174 | benjamin.peterson | 2009-01-02 21:47:27 +0100 (Fri, 02 Jan 2009) | 1 line
fix compilation on non-Windows platforms
........
r68179 | raymond.hettinger | 2009-01-02 22:26:45 +0100 (Fri, 02 Jan 2009) | 1 line
Issue #4615. Document how to use itertools for de-duping.
........
r68195 | georg.brandl | 2009-01-03 14:45:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove useless string literal.
........
r68196 | georg.brandl | 2009-01-03 15:29:53 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix indentation.
........
r68210 | georg.brandl | 2009-01-03 20:10:12 +0100 (Sat, 03 Jan 2009) | 2 lines
Set eol-style correctly for mp_distributing.py.
........
r68214 | georg.brandl | 2009-01-03 20:44:48 +0100 (Sat, 03 Jan 2009) | 2 lines
Make indentation consistent.
........
r68215 | georg.brandl | 2009-01-03 21:15:14 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix role name.
........
r68217 | georg.brandl | 2009-01-03 21:30:15 +0100 (Sat, 03 Jan 2009) | 2 lines
Add rstlint, a little tool to find subtle markup problems and inconsistencies in the Doc sources.
........
r68218 | georg.brandl | 2009-01-03 21:38:59 +0100 (Sat, 03 Jan 2009) | 2 lines
Recognize usage of the default role.
........
r68219 | georg.brandl | 2009-01-03 21:47:01 +0100 (Sat, 03 Jan 2009) | 2 lines
Fix uses of the default role.
........
r68220 | georg.brandl | 2009-01-03 21:55:06 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove trailing whitespace.
........
r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines
Remove tabs from the documentation.
........
r68222 | georg.brandl | 2009-01-03 22:11:58 +0100 (Sat, 03 Jan 2009) | 2 lines
Disable the line length checker by default.
........
2009-01-03 17:55:17 -04:00
|
|
|
|
2008-05-15 04:11:41 -03:00
|
|
|
.. deprecated:: 2.6
|
|
|
|
The :mod:`SUNAUDIODEV` module has been deprecated for removal in Python 3.0.
|
|
|
|
|
2007-08-15 11:28:01 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. index:: module: sunaudiodev
|
|
|
|
|
|
|
|
This is a companion module to :mod:`sunaudiodev` which defines useful symbolic
|
|
|
|
constants like :const:`MIN_GAIN`, :const:`MAX_GAIN`, :const:`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.
|
|
|
|
|