[LAD] LV2 Atom Sequence timestamps
jeremysalwen at gmail.com
Tue Jun 5 21:54:36 UTC 2012
On Tue, Jun 5, 2012 at 3:44 PM, David Robillard <d at drobilla.net> wrote:
> On Tue, 2012-06-05 at 06:34 -0400, Jeremy Salwen wrote:
> > Hi All,
> > From what I can tell, it looks like the LV2 Atom Sequence
> > specification allows you to send events with arbitrary units for the
> > timestamp.
> > I have a few questions about this:
> > 1. How are we to know whether a particular unit uses the double field
> > in the timestamp union, or the uint64_t field in the timestamp union.
> Context. When used as event ports in the run() callback, it is always
> frames, like everything else.
> I deliberately avoided complicating it with a bunch of stuff to handle
> beat-based time stamps in this context since this would almost certainly
> be unused (learned that lesson with the event extension). It can be
> added later if need be.
> > 2. The specification says "The unit field is either a URID that
> > described an appropriate time stamp type, or may be 0 where a default
> > stamp type is known." In what circumstances would the timestamp be
> > known? When can I expect to see a zero in that field?
> See above.
> > 3. Are the timestamps absolute times? Or relative to the previous
> > event? Or relative to the start of the audio chunk? Does it depend on
> > the units used?
> Absolute from the start of the Sequence.
> > 4. Why does the documentation show |FRAMES |SUBFRMS| as the timestamp
> > field? From what I can tell, there is no unit which includes frames
> > and subframes subdivided that way, and the sampler example just uses
> > the full 64 bits as a frames field. Is this just a relic from the old
> > event port documentation? (the diagram seems familiar).
> Oops, relic. I will fix this.
> > 5. How are hosts/plugins supposed to deal with the multiplicity of
> > units? For example, suppose I'm a plugin or host that wants to
> > receive MIDI data. How am I supposed to know what timestamp unit to
> > expect? Is there a facility for converting between different units
> > automatically? The only extra information required to convert between
> > any two time units would be the bpm and sample rate. It would be
> > rather annoying to have to implement a bunch of unit conversion code
> > in every host/plugin you write in order to make sure it can handle any
> > unit which is tossed at it.
> Indeed it would be. Hence why none of this is there, so the extension
> does not imply you are expected to have to deal with any of that. I
> suppose the fact that it is audio frames in this context needs to be
> more clear.
> In short, when used as port buffers, it's always frames, don't worry
> about it. The potential for other time stamp types is there for other
> cases, since it's possible to use Sequences in other non-port-buffer
> ways (e.g. you could send around events with entire sequences as their
> P.S. lv2-dev is a better place for this sort of thing
> Thanks David,
If the timestamps are absolute, are they reset on every call to activate()?
I thought lv2-dev was for developing the lv2 spec and extensions, but my
questions were more about implementation of plugins/hosts.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Linux-audio-dev