]> git.0d.be Git - jack_mixer.git/blobdiff - jack_mixer_c.c
Set version to 14 in preparation for next release
[jack_mixer.git] / jack_mixer_c.c
index 1ba9b08916e65e53afd517ddb4c212b503e7600f..f19a5b56e18d04c31d3a9fa99931e766a8c04b48 100644 (file)
@@ -302,6 +302,28 @@ Channel_get_meter(ChannelObject *self, void *closure)
        return result;
 }
 
+static PyObject*
+Channel_get_kmeter(ChannelObject *self, void *closure)
+{
+       PyObject *result;
+       double peak_left, peak_right, rms_left, rms_right;
+
+       if (channel_is_stereo(self->channel)) {
+               result = PyTuple_New(4);
+               channel_stereo_kmeter_read(self->channel, &peak_left, &peak_right, &rms_left, &rms_right);
+               PyTuple_SetItem(result, 0, PyFloat_FromDouble(peak_left));
+               PyTuple_SetItem(result, 1, PyFloat_FromDouble(peak_right));
+               PyTuple_SetItem(result, 2, PyFloat_FromDouble(rms_left));
+               PyTuple_SetItem(result, 3, PyFloat_FromDouble(rms_right));
+       } else {
+               result = PyTuple_New(2);
+               channel_mono_kmeter_read(self->channel, &peak_left, &rms_left);
+               PyTuple_SetItem(result, 0, PyFloat_FromDouble(peak_left));
+               PyTuple_SetItem(result, 1, PyFloat_FromDouble(rms_left));
+       }
+       return result;
+}
+
 static PyObject*
 Channel_get_abspeak(ChannelObject *self, void *closure)
 {
@@ -513,6 +535,9 @@ static PyGetSetDef Channel_getseters[] = {
        {"meter",
                (getter)Channel_get_meter, NULL,
                "meter", NULL},
+       {"kmeter",
+               (getter)Channel_get_kmeter, NULL,
+               "kmeter", NULL},
        {"abspeak",
                (getter)Channel_get_abspeak, (setter)Channel_set_abspeak,
                "balance", NULL},
@@ -779,12 +804,49 @@ OutputChannel_is_muted(OutputChannelObject *self, PyObject *args)
        return result;
 }
 
+static PyObject*
+OutputChannel_set_in_prefader(OutputChannelObject *self, PyObject *args)
+{
+       PyObject *channel;
+       unsigned char prefader;
+
+       if (! PyArg_ParseTuple(args, "Ob", &channel, &prefader)) return NULL;
+
+       output_channel_set_in_prefader(self->output_channel,
+                       ((ChannelObject*)channel)->channel,
+                       prefader);
+
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
+static PyObject*
+OutputChannel_is_in_prefader(OutputChannelObject *self, PyObject *args)
+{
+       PyObject *channel;
+       PyObject *result;
+
+       if (! PyArg_ParseTuple(args, "O", &channel)) return NULL;
+
+       if (output_channel_is_in_prefader(self->output_channel,
+                       ((ChannelObject*)channel)->channel)) {
+               result = Py_True;
+       } else {
+               result = Py_False;
+       }
+
+       Py_INCREF(result);
+       return result;
+}
+
 static PyMethodDef output_channel_methods[] = {
        {"remove", (PyCFunction)OutputChannel_remove, METH_VARARGS, "Remove"},
        {"set_solo", (PyCFunction)OutputChannel_set_solo, METH_VARARGS, "Set a channel as solo"},
        {"set_muted", (PyCFunction)OutputChannel_set_muted, METH_VARARGS, "Set a channel as muted"},
        {"is_solo", (PyCFunction)OutputChannel_is_solo, METH_VARARGS, "Is a channel set as solo"},
        {"is_muted", (PyCFunction)OutputChannel_is_muted, METH_VARARGS, "Is a channel set as muted"},
+       {"set_in_prefader", (PyCFunction)OutputChannel_set_in_prefader, METH_VARARGS, "Set a channel as prefader"},
+       {"is_in_prefader", (PyCFunction)OutputChannel_is_in_prefader, METH_VARARGS, "Is a channel set as prefader"},
        {NULL}
 };