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 setup.py file should come shortly. Until then use the Makefile to build the thing.
Any feedback is welcome.