[Python-3000] audio device support
lars at ibp.de
Tue Sep 4 23:54:53 CEST 2007
I recently worked on Python audio device support for Linux and OS X. Not
so recently, I wrote a DirectSound module for win32.
Python 2 has support for various audio devices, but they have no common
interface and some are broken or obsolete. Python 3000 might be a chance
to improve on this.
The situation seems to be:
ossaudiodev is becoming obsolete on Linux (because OSS is being replaced
pyalsaaudio, http://sourceforge.net/projects/pyalsaaudio, is broken for
multithreaded programs: it does not wrap blocking calls with
Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS. A suitable, submitted patch
has not been included by the maintainer in nearly two years. With this
or a similar patch, it works fine, however.
win32all has DirectSound support, but it's lowlevel and complicated.
Other audio device wrappers may exit, but I don't know about them.
The (undocumented) audiodev implementation does not work for me. There
is a pyrex implementation for coreaudio support which I haven't tested,
but I have written coreaudio wrappers in C (to be published).
What I'd like to see:
I like the idea of having audio device support for the major operating
systems in the standard library.
But I am even more interested in a common interface for simple operations.
IMO, the API should support:
- stereo playback
- stereo recording
- different sampling rates and formats (alaw, mulaw and PCM in signed
integers in various widths and maybe PCM in floats/doubles).
- device selection
- volume control
Overall, I think the level of abstraction in the OSS or ALSA APIs is
about right, coreaudio on OS X and DirectSound on Windows are overkill
outside of niche applications.
I would volunteer sample implementations for Windows, OS X and Linux (ALSA).
More information about the Python-3000