Event

Element event is one
of the most important ones of the whole DTD. It defines and identifies
an information unit that is referred to by other parts of the encoding.
In a normal case, all chords and rests can be considered events
and marked by an id through element event.
However, the concept of music event is flexible.
First, even with standard CWN, not all events have to be described
through spine events, hence, it is entirely possible to list the
notes belonging to a part/voice only, or the crotchets only, or
the tenor's superacute notes.
Second, aggregations of "atomic" music events can also
be considered music events in some cases: for instance, in jazz
improvisation usually only the harmonic grid is known, so the occurrence
of a new chord could be considered the most meaningful music event,
rather than the occurrence of single notes. In general, chords,
measures, phrases etc. can be defined as music events (and marked
through an aggregate id) as necessary.
Finally, CWN is not required at all for IEEE 1599 validity, so that IEEE 1599
supports also non-traditional scores. In this case, the description
provided in graphical or structural form can be linked to spine,
no matter what definition is given to the concept of music event.

Attributes

id, which provides a unique identifier
within an IEEE 1599 file. Even if there is no convention about id naming
in IEEE 1599, because of its importance in IEEE 1599 encoding the value of
this attribute should reflect music semantics. For instance,
if a monody is being encoded, names such as "e1",
"e2", etc. are appropriate for music events; if many
single-voice parts are present, names could be chosen such as
"p1_1", "p1_2", etc. and "p2_1",
"p2_2", etc.; finally, when the complete hierarchy
parts/voices is used, suitable names for music events could
be "p1_v1_1", "p1_v2_1", etc.

timing, which represents the
temporal coordinate of the event: it describes the time offset
from the occurrence of the preceding event. Time is expressed
in Virtual Time Units (VTU), as described in SMDL specifications.
When no value can be attributed to a music event, string "null"
can be employed. The measurement unit can be fixed according
to the user's need, but all the numeric values must be integer.
In general, the minimum integer value should be attributed to
the smaller note length. This is a recommended choice, however
it is not mandatory. For instance, assume a piece in wich eights,
sixteenths and thirty-seconds are present: In this case, the
unit can be employed to represent thity-seconds, so that all
the other lengths are integer multiples. An exception arises
when the minimum length is dotted (in the previous example,
dotted thirty-seconds): in this case, the unit should be employed
to represent the halved length (sixty-fourths). Finally, when
there are irregular groups, all the values for timing should be rearranged in order to allow the representation of
all lengths through integer values. Since "0" means
simultaneity in our relative system, each event is simultaneous
to all the following ones having timing = "0"; besides, if the event itself presents timing = "0", it is also simultaneous to all the preceding
events up to the first event with a non-zero value, that event
itself included.

hpos, which refers to a virtual
horizontal dimension. The value is expressed in a relative spatial
unit called Virtual PiXels (VPX), which provides reference points
for the vertical alignment of different symbols in different
voices, parts or staves. The score is considered in this case
from an abstract point of view (real scores will be treated
in Notational layer). As a consequence, staff systems
never generate new lines: there is only one staff system embracing
all the symbols on a single line, so that only the horizontal
axis is used in establishing vertical alignment. The criteria
to define the measurement unit are similar to those employed
for timing. If music is equally
spaced in regard torhythmic values (meaning that e.g. a double
value requires a double space on the pentagram), timing and hpos can take the same values.
Once again, "null" is supported for events that have
no spatial coordinates, and "0" means vertical alignment.