diff --git a/alsaaudio.c b/alsaaudio.c index b5b8295..5ac7fa8 100644 --- a/alsaaudio.c +++ b/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); diff --git a/mixertest.py b/mixertest.py index 92e8353..5636cb9 100755 --- a/mixertest.py +++ b/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