mirror of
https://github.com/larsimmisch/pyalsaaudio.git
synced 2026-05-25 23:55: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 *result;
|
||||||
PyObject *item;
|
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))
|
if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oi:getvolume", kwlist, &dirobj, &unit))
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1646,7 +1646,13 @@ alsamixer_getvolume(alsamixer_t *self, PyObject *args, PyObject *kw)
|
|||||||
ival));
|
ival));
|
||||||
}
|
}
|
||||||
else {
|
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);
|
item = PyFloat_FromDouble(ival / 100.0);
|
||||||
}
|
}
|
||||||
PyList_Append(result, item);
|
PyList_Append(result, item);
|
||||||
|
|||||||
18
mixertest.py
18
mixertest.py
@@ -46,13 +46,17 @@ def show_mixer(name, kwargs):
|
|||||||
print("Capabilities: %s %s" % (' '.join(mixer.volumecap()),
|
print("Capabilities: %s %s" % (' '.join(mixer.volumecap()),
|
||||||
' '.join(mixer.switchcap())))
|
' '.join(mixer.switchcap())))
|
||||||
volumes = mixer.getvolume()
|
volumes = mixer.getvolume()
|
||||||
for i in range(len(volumes)):
|
for i, v in enumerate(volumes):
|
||||||
print("Channel %i volume: %i%%" % (i,volumes[i]))
|
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:
|
try:
|
||||||
mutes = mixer.getmute()
|
mutes = mixer.getmute()
|
||||||
for i in range(len(mutes)):
|
for i, m in enumerate(mutes):
|
||||||
if mutes[i]:
|
if m:
|
||||||
print("Channel %i is muted" % i)
|
print("Channel %i is muted" % i)
|
||||||
except alsaaudio.ALSAAudioError:
|
except alsaaudio.ALSAAudioError:
|
||||||
# May not support muting
|
# May not support muting
|
||||||
@@ -60,8 +64,8 @@ def show_mixer(name, kwargs):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
recs = mixer.getrec()
|
recs = mixer.getrec()
|
||||||
for i in range(len(recs)):
|
for i, r in enumerate(recs):
|
||||||
if recs[i]:
|
if r:
|
||||||
print("Channel %i is recording" % i)
|
print("Channel %i is recording" % i)
|
||||||
except alsaaudio.ALSAAudioError:
|
except alsaaudio.ALSAAudioError:
|
||||||
# May not support recording
|
# May not support recording
|
||||||
|
|||||||
Reference in New Issue
Block a user