[LAD] "enhanced event port" LV2 extension proposal

Dave Robillard drobilla at connect.carleton.ca
Fri Nov 30 01:57:23 UTC 2007

On Fri, 2007-11-30 at 02:39 +0100, David Olofson wrote:
> On Friday 30 November 2007, Dave Robillard wrote:
> > > That's why I'm using a Port as the smallest "connection unit",
> > > much like LADSPA ports, so there is no need for an event type
> > > field of any kind at all, let alone a URI.
> > 
> > Ports /are/ the smallest "connection unit".  But ports can /contain/
> > events, and if we want multiple kinds of events in a single port,
> > then the events themselves need a type field.
> Sounds like there's a fundamental difference there, then. I'm using a 
> model where a port is nothing more than something that deals with a 
> value of some sort. There are no channels, voices, different events 
> or anything "inside" a port - just a value. An output port 
> can "operate" that value of a compatible input port.

LV2 ports can contain /anything/.  It's a void*, completely 100% opaque
in every way.  There might be 'channels' or 'voices' or a 'value' or
whatever in there, it's just data.

> > > The data in the events *could* be MIDI or whatever (the host
> > > doesn't even have to understand any of it), but normally, in the
> > > case of Audiality 2, it'll be modular synth style ramped control
> > > events. That is, one port controls exactly one value - just like
> > > in LADSPA, only using timestamped events with ramping info instead
> > > of one value per buffer.
> > 
> > The host might not have to (though in practise it usually does), but 
> > other plugins certainly do.  You can't process events if you don't
> > even know what they are.
> Yes, obviously. I don't quite see what you think I'm trying to say 
> here. :-)

Me neither :)

There are of course infinite ways to do 'events' for plugins (and an
infinite number of interpretations of what 'events' means).  Nice thing
about LV2 is you can do them all.  Something like your non-flat event
stuff (with queueing and linked lists and dispatching and such, rather
than plain old directly connected buffers) may find a place in LV2 as
well - may have to for certain message-based (ahem) "programming"
modular stuff ala Max.  What we have now is the sample accurate hard
realtime sort of 'events' (ala Jack MIDI).

Havn't quite figured out the bridging of those two worlds yet....


More information about the Linux-audio-dev mailing list