[Devel] OutputPort being ControlPort
David Robillard
d at drobilla.net
Fri Aug 5 08:55:49 PDT 2011
On Mon, 2011-08-01 at 19:49 -0500, Gabriel Beddingfield wrote:
> On 07/31/2011 07:05 AM, Aurélien Leblond wrote:
> > Hi,
> >
> > I'm working on porting the AMS internal modules into LV2 plugins to be
> > used in Ingen.
>
> Cool!
>
> > The few examples of LV2 plugin around uses AudioPort as OutputPort..
> > Building my plugins like that works fine, but I'm not sure it makes
> > sense for a simple plugin like a LFO.
> >
> > I have tried to make the OutputPort a ControlPort, but then get a Seg Fault.
>
> From the docs:
>
> lv2:AudioPort is a pointer to an array of floats.
> lv2:ControlPort is a pointer to a single float.
>
> I'm guessing that your code segfaults because it treats lv2:ControlPort
> as an array (buffer).
>
> lv2:OutputPort and lv2:InputPort are /modifiers/ to a port. They don't
> specify the type... just who is expected to write to the port.
>
> > My questions are:
> > - Am I on the good track trying use ControlPort for OutputPort?
> > - If so, is there any known examples I can have a look at?
>
> AMS has a port type that acts like the old-style "control voltage" used
> in analog synths. Is this what you're trying to find?
>
> This is similar to an lv2:AudioPort (an array of values that correspond
> to time). However, for an lv2:AudioPort the data is expected to be PCM
> data. Also, often a control voltage port is done at 1/16th the sample rate.
>
> What you need is a /new/ type of port... which I would call a "Control
> Voltage" port... which is also an array of floats. AFAIK, no-one has
> yet established such a port.
Yes, we really need CV. One possible option would be to make the port
*both* AudioPort and ControlPort, though this might break existing
implementations.
Personally (with an admitted modular bias) I consider this a major flaw
of LADSPA, and since the scope of these ports is clearly within that of
LADSPA and core LV2, but kludges are necessary which ruin user
experience, I think a proper solution to this problem such as an
lv2:CVPort is within the scope of the core specification.
-dr
More information about the Devel
mailing list