On Tue, Apr 3, 2012 at 4:24 PM, Filipe Lopes
<falktx@gmail.com> wrote:
hey lads,
sharing an idea I had here
my (currently in development) host directly exposes plugin ports to jack - audio as audio, midi as midi, and parameters as a midi port for midi-cc usage.
while coding for lv2 plugins, I noticed the CV port type, more info here:
http://lv2plug.in/ns/ext/cv-port/
I didn't yet coded support for it, but I'll do soon. Those kind of ports will be exposed to jack as pure audio ports.
Non-daw and non-mixer also use this kind of ports, and maybe others.
The problem is that users shouldn't connect normal audio and CV ports together...
so I came up with an idea that is simple and fairly easy to implement - a new jack port flag.
example:
port = jack_port_register(client, port_name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput|JackPortIsCV, 0);
patchbays can check for this flag and represent the port as a different type (I've done it here myself as jack keeps any custom port flag values I set, and works just fine).
in the jack library code we can check for the flag and not allow port connections.
what do you think?
BTW, SpiralSynthModular is another program that uses JACK audio ports for CV.
Seems perfectly reasonable to me, although I would rather it be the connection manager that disallows the connections rather than JACK itself. Some users may have valid reasons for wanting to force a connection between Audio and CV ports (such as sending an analog control voltage signal out of the audio interface)... And consider the case right now for programs which have not been updated to set the appropriate flag on their CV ports--those connections would have to be forced until the programs are updated. But even if the connection manager just used the information to display the ports in a different color, it would still be useful. Also, obviously you need a #define or something to indicate that the version of libjack has the enum for CV ports.
As you point out, it's a very simple change and I think it's about time we had *something* in place for this and in lieu of arbitrary port types and data representations, this will certainly work for the CV case.