mirror of
https://github.com/larsimmisch/pyalsaaudio.git
synced 2026-05-25 15:45:31 +00:00
Fix kwargs, and modernize mixertest.py a bit
Preliminary error handling for dB volume settings
This commit is contained in:
10
alsaaudio.c
10
alsaaudio.c
@@ -1610,7 +1610,7 @@ alsamixer_getvolume(alsamixer_t *self, PyObject *args, PyObject *kw)
|
||||
PyObject *result;
|
||||
PyObject *item;
|
||||
|
||||
static char *kwlist[] = { "channel", "direction", "unit", NULL };
|
||||
static char *kwlist[] = { "direction", "unit", NULL };
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oi:getvolume", kwlist, &dirobj, &unit))
|
||||
return NULL;
|
||||
@@ -1646,7 +1646,13 @@ alsamixer_getvolume(alsamixer_t *self, PyObject *args, PyObject *kw)
|
||||
ival));
|
||||
}
|
||||
else {
|
||||
snd_mixer_selem_get_playback_dB(elem, channel, &ival);
|
||||
int rc = snd_mixer_selem_get_playback_dB(elem, channel, &ival);
|
||||
if (rc < 0) {
|
||||
PyErr_Format(ALSAAudioError,
|
||||
"snd_mixer_selem_get_playback_dB failed: %d",
|
||||
rc);
|
||||
return NULL;
|
||||
}
|
||||
item = PyFloat_FromDouble(ival / 100.0);
|
||||
}
|
||||
PyList_Append(result, item);
|
||||
|
||||
16
mixertest.py
16
mixertest.py
@@ -46,13 +46,17 @@ def show_mixer(name, kwargs):
|
||||
print("Capabilities: %s %s" % (' '.join(mixer.volumecap()),
|
||||
' '.join(mixer.switchcap())))
|
||||
volumes = mixer.getvolume()
|
||||
for i in range(len(volumes)):
|
||||
print("Channel %i volume: %i%%" % (i,volumes[i]))
|
||||
for i, v in enumerate(volumes):
|
||||
print("Channel %i volume: %.02f%%" % (i, v))
|
||||
|
||||
volumes = mixer.getvolume(unit=alsaaudio.dB)
|
||||
for i, v in enumerate(volumes):
|
||||
print("Channel %i volume: %.02fdB" % (i, v))
|
||||
|
||||
try:
|
||||
mutes = mixer.getmute()
|
||||
for i in range(len(mutes)):
|
||||
if mutes[i]:
|
||||
for i, m in enumerate(mutes):
|
||||
if m:
|
||||
print("Channel %i is muted" % i)
|
||||
except alsaaudio.ALSAAudioError:
|
||||
# May not support muting
|
||||
@@ -60,8 +64,8 @@ def show_mixer(name, kwargs):
|
||||
|
||||
try:
|
||||
recs = mixer.getrec()
|
||||
for i in range(len(recs)):
|
||||
if recs[i]:
|
||||
for i, r in enumerate(recs):
|
||||
if r:
|
||||
print("Channel %i is recording" % i)
|
||||
except alsaaudio.ALSAAudioError:
|
||||
# May not support recording
|
||||
|
||||
Reference in New Issue
Block a user