In ResPyre project context, Regis Prevot wrote a python binding for ALSA. Because I believe his work could be usefull for other developpers, here is a first version of alsamodule.

This first version supports ALSA mixer. You can get, change, mute, unmute volume on audio channels. Here is a little example:

>>> import alsa
>>> mixer = alsa.mixer("default")
>>> mixer.printInfo()
Card Id:                        default
Mixer Card Name:                Intel 82801DB-ICH4
Mixer Device Name:              SigmaTel STAC9750/51,0x42434d64 BCM
Max Volume:                     -1
Min Volume:                     -1
Incremental value min:          -1.00
Number of Elements:             22
>>> print mixer.channels.keys()
['Capture', 'Mic', 'Mono Output Select', 'Mix',
 'Master', 'PCM', 'Aux', 'External Amplifier',
 '3D Control - Switch', 'Phone', 'PC Speaker',
 'Line', 'Mic Select', 'CD', '3D Control - Depth',
 'Master Mono', 'Mix Mono', 'Mic Boost (+20dB)',
 'Headphone', 'Video', '3D Control - Center',
 'PCM Out Path & Mute']
>>> print "get volume for device PCM"
get volume for device PCM
>>> print mixer.getVolume("PCM")
(45, 45)
>>> print mixer.setVolume("PCM", 3, 3)
(48, 48)

The binding is written in C, and has been tested under Linux. A file should come shortly. Until then use the Makefile to build the thing.

Any feedback is welcome.