On Fri, 2007-11-30 at 04:19 +0100, David Olofson wrote:
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 -
Right; dispatching and stuff... I think this is about where the
confusion starts. How is this supposed to be done here? Are
LV2 "enhanced event ports" opaque, all-in-one, somewhat like
the "raw" MIDI I'm talking about above, or how are LV2 hosts supposed
to deal with them?
They're simply byte arrays of timestamped 'events', where an 'event'
is
some length of bytes.
[timestamp|size|data|timestamp|size|data|timestamp|size|data]
(This is current MIDI; add type or whatever results from this thread)
Idea being that timestamps are in frames and everything is in-band and
sample accurate and processed in blocks along with the audio. Hosts can
just directly connect the pointers of an input and output port to the
same buffer and have the plugins talk to each other, or blindly memcpy
the whole thing around. Just Like Audio(TM).
-DR-