[Devel] RFC: LV2 Atom

David Robillard d at drobilla.net
Tue Feb 7 18:09:46 PST 2012


Hi all,

Since state is ready to go but refers to atom types, I figure it's not
very appropriate to release one and not the other.  Atom is sorely
needed anyway, so I have thoroughly gone over it, removed all the cruft,
updated the documentation, fleshed out the types, etc.

Feedback at this point would be most welcome:

http://lv2plug.in/ns/ext/atom

If you're a "just read the headers" sort of person, feel free to do so
and just comment on that, I have tried to make this as programmer
friendly as possible.

Biggest changes: 

 * Unfortunately variable length arrays are not valid C++, so those had
to go, which makes the API a bit crappier.  Oh well.

 * Completely new "forge" API which is a simple API for constructing
Atoms.  This makes it relatively simple to make complicated structures
like objects with properties that have vector values and whatnot.

 * The special EventPort replacement has been removed entirely in favour
of something a bit more elegant: there is a "Sequence" atom which
contains time-stamped atoms.  To get EventPort style functionality you
just connect a MessagePort (which connects to an Atom) to one of these.
This has the fun side-effect of being able to pass around sequences,
e.g. sending events that have entire sequences as a payload, etc.  It
also means the forge API can be used to directly write into an output
buffer.

The eg-sampler plugin has been updated to use this.  It uses a
MessagePort for MIDI control, as well as a "load sample" message sent
from the UI.

Please let me know if anything is unclear, or if you see any problems.
This one will be very pervasive, breaking it later on will not be an
option.

Thanks,

-dr





More information about the Devel mailing list