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.
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?
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?
4. Why does the
documentation<http://lv2plug.in/doc/html/structLV2__Atom__Sequence__Body.html>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).
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.
Thanks,
Jeremy