[SCM] calf/master: + Big Bull: add connect/disconnect functions and some common constants to calfpytools

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:37:32 UTC 2013


The following commit has been merged in the master branch:
commit 0668dc262805dc7dbd9961d6edab9369e31e39dc
Author: kfoltman <kfoltman at 78b06b96-2940-0410-b7fc-879d825d01d8>
Date:   Wed Sep 3 21:57:35 2008 +0000

    + Big Bull: add connect/disconnect functions and some common constants to calfpytools
    
    
    git-svn-id: https://calf.svn.sourceforge.net/svnroot/calf/trunk@277 78b06b96-2940-0410-b7fc-879d825d01d8

diff --git a/bigbull/calfpytools.cpp b/bigbull/calfpytools.cpp
index 8a938a9..7833b2b 100644
--- a/bigbull/calfpytools.cpp
+++ b/bigbull/calfpytools.cpp
@@ -136,6 +136,51 @@ static PyObject *jackclient_get_cobj(PyJackClient *self, PyObject *args)
     return PyCObject_FromVoidPtr((void *)self->client, NULL);
 }
 
+static PyObject *jackclient_connect(PyJackClient *self, PyObject *args)
+{
+    char *from_port = NULL, *to_port = NULL;
+    if (!PyArg_ParseTuple(args, "ss:connect", &from_port, &to_port))
+        return NULL;
+    
+    CHECK_CLIENT
+    
+    int result = jack_connect(self->client, from_port, to_port);
+    
+    switch(result)
+    {
+        case 0:
+            Py_INCREF(Py_True);
+            return Py_True;
+        case EEXIST:
+            Py_INCREF(Py_False);
+            return Py_False;
+        default:
+            PyErr_SetString(PyExc_RuntimeError, "Connection error");
+            return NULL;
+    }
+}
+
+static PyObject *jackclient_disconnect(PyJackClient *self, PyObject *args)
+{
+    char *from_port = NULL, *to_port = NULL;
+    if (!PyArg_ParseTuple(args, "ss:disconnect", &from_port, &to_port))
+        return NULL;
+    
+    CHECK_CLIENT
+    
+    int result = jack_disconnect(self->client, from_port, to_port);
+    
+    switch(result)
+    {
+        case 0:
+            Py_INCREF(Py_None);
+            return Py_None;
+        default:
+            PyErr_SetString(PyExc_RuntimeError, "Disconnection error");
+            return NULL;
+    }
+}
+
 static PyObject *jackclient_close(PyJackClient *self, PyObject *args)
 {
     if (!PyArg_ParseTuple(args, ":close"))
@@ -157,6 +202,8 @@ static PyMethodDef jackclient_methods[] = {
     {"get_port", (PyCFunction)jackclient_get_port, METH_VARARGS, "Create port object from name of existing JACK port"},
     {"register_port", (PyCFunction)jackclient_register_port, METH_VARARGS, "Register a new port and return an object that represents it"},
     {"get_cobj", (PyCFunction)jackclient_get_cobj, METH_VARARGS, "Retrieve jack_client_t pointer for the client"},
+    {"connect", (PyCFunction)jackclient_connect, METH_VARARGS, "Connect two ports with given names"},
+    {"disconnect", (PyCFunction)jackclient_disconnect, METH_VARARGS, "Disconnect two ports with given names"},
     {NULL, NULL, 0, NULL}
 };
 
@@ -207,6 +254,17 @@ static PyObject *jackport_get_full_name(PyJackPort *self, PyObject *args)
     return Py_BuildValue("s", jack_port_name(self->port));
 }
 
+static PyObject *jackport_get_flags(PyJackPort *self, PyObject *args)
+{
+    if (!PyArg_ParseTuple(args, ":get_flags"))
+        return NULL;
+    
+    CHECK_PORT_CLIENT
+    CHECK_PORT
+    
+    return PyInt_FromLong(jack_port_flags(self->port));
+}
+
 static PyObject *jackport_is_valid(PyJackPort *self, PyObject *args)
 {
     if (!PyArg_ParseTuple(args, ":is_valid"))
@@ -260,11 +318,10 @@ static PyObject *jackport_get_aliases(PyJackPort *self, PyObject *args)
     char *const aliases[2] = { buf1, buf2 };
     int count = jack_port_get_aliases(self->port, aliases);
     
-    if (count == 0)
-        return Py_BuildValue("[]");
-    if (count == 1)
-        return Py_BuildValue("[s]", aliases[0]);
-    return Py_BuildValue("[ss]", aliases[0], aliases[1]);
+    PyObject *alist = PyList_New(0);
+    for (int i = 0; i < count; i++)
+        PyList_Append(alist, PyString_FromString(aliases[i]));
+    return alist;
 }
 
 static PyObject *jackport_get_connections(PyJackPort *self, PyObject *args)
@@ -326,6 +383,7 @@ static PyMethodDef jackport_methods[] = {
     {"is_mine", (PyCFunction)jackport_is_mine, METH_VARARGS, "Checks if the port object is valid (registered)"},
     {"get_full_name", (PyCFunction)jackport_get_full_name, METH_VARARGS, "Retrieve full port name (including client name)"},
     {"get_name", (PyCFunction)jackport_get_name, METH_VARARGS, "Retrieve short port name (without client name)"},
+    {"get_flags", (PyCFunction)jackport_get_flags, METH_VARARGS, "Retrieve port flags (defined in module, ie. calfpytools.JackPortIsInput)"},
     {"set_name", (PyCFunction)jackport_set_name, METH_VARARGS, "Set short port name"},
     {"get_aliases", (PyCFunction)jackport_get_aliases, METH_VARARGS, "Retrieve a list of port aliases"},
     {"get_connections", (PyCFunction)jackport_get_connections, METH_VARARGS, "Retrieve a list of ports the port is connected to"},
@@ -390,5 +448,13 @@ PyMODINIT_FUNC initcalfpytools()
     Py_INCREF(&jackclient_type);
     Py_INCREF(&jackport_type);
     PyModule_AddObject(mod, "JackClient", (PyObject *)&jackclient_type);
-    PyModule_AddObject(mod, "JackPort", (PyObject *)&jackport_type);    
+    PyModule_AddObject(mod, "JackPort", (PyObject *)&jackport_type);
+    
+    PyModule_AddObject(mod, "JackPortIsInput", PyInt_FromLong(JackPortIsInput));
+    PyModule_AddObject(mod, "JackPortIsOutput", PyInt_FromLong(JackPortIsOutput));
+    PyModule_AddObject(mod, "JackPortIsPhysical", PyInt_FromLong(JackPortIsPhysical));
+    PyModule_AddObject(mod, "JackPortCanMonitor", PyInt_FromLong(JackPortCanMonitor));
+    PyModule_AddObject(mod, "JackPortIsTerminal", PyInt_FromLong(JackPortIsTerminal));
+    PyModule_AddObject(mod, "JACK_DEFAULT_AUDIO_TYPE", PyString_FromString(JACK_DEFAULT_AUDIO_TYPE));
+    PyModule_AddObject(mod, "JACK_DEFAULT_MIDI_TYPE", PyString_FromString(JACK_DEFAULT_MIDI_TYPE));
 }
diff --git a/bigbull/test.py b/bigbull/test.py
index 37d65dd..af21edb 100755
--- a/bigbull/test.py
+++ b/bigbull/test.py
@@ -2,12 +2,12 @@
 import calfpytools
 import time
 
-print calfpytools.scan_ttl_file("/usr/local/lib/lv2/allpass-swh.lv2/plugin.ttl")
+#print calfpytools.scan_ttl_file("/usr/local/lib/lv2/allpass-swh.lv2/plugin.ttl")
 
 client = calfpytools.JackClient()
 client.open("calf")
 print client.get_cobj()
-port = client.register_port("port")
+port = client.register_port("port", calfpytools.JACK_DEFAULT_AUDIO_TYPE, calfpytools.JackPortIsOutput)
 print port
 print port.get_cobj()
 assert port.get_name() == "port"
@@ -15,6 +15,7 @@ assert port.get_full_name() == "calf:port"
 assert port.set_name("port2") == "port2"
 assert port.get_name() == "port2"
 assert port.get_full_name() == "calf:port2"
+assert port.get_flags() == calfpytools.JackPortIsOutput
 assert port.is_valid()
 
 # This doesn't work: assert client.get_port("calf:port2") == port (because JACK C API doesn't reuse the jack_port_t structs)
@@ -27,7 +28,12 @@ print port2.get_aliases()
 time.sleep(1)
 port.unregister()
 assert port2 == client.get_port("system:playback_1")
+client.connect("system:capture_1", "system:playback_1")
+assert port2.get_connections() == ['system:capture_1']
 assert not port.is_valid()
 print port2.get_connections()
-#client.close()
+assert port2.get_connections() == ['system:capture_1']
+client.disconnect("system:capture_1", "system:playback_1")
+assert port2.get_connections() == []
+client.close()
 

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list