home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Audio Version 4.94
/
audioversion4.94knowledgemediaresourcelibraryoctober1994.iso
/
unix
/
midi_doc
/
smdl_tch
< prev
next >
Wrap
Text File
|
1993-02-08
|
103KB
|
2,964 lines
X3V1.8M/SD-7 Journal of Development
Standard Music Description Language
Part Two: Technical Description and Formal Definition
Editor: Alan D. Talbot, New England Digital Corporation
June 4, 1988
June 16, 1988
- 2 -
CONTENTS
0 Introduction 4
0.1 Purpose of the Document 4
0.2 Development Methodology 4
0.3 Editorial Conventions 5
1 Scope and Field of Application 5
1.1 Scope 5
1.2 Field of Application 6
3 References 6
4 Definitions 6
5 Notation 8
6 Structure and Content 8
7 Work 9
7.1 Work Segment 10
7.2 Work Segment Reference 11
8 Core 11
8.1 Thread 12
8.1.1 Core Event Sequence 13
8.1.2 Core Event Group 14
8.1.3 Core Events 14
8.1.3.1 Notes and Rests 14
8.1.3.2 Graced Events 15
8.1.3.3 Special Events 16
8.1.4 Core Event References 16
8.2 Time 16
8.2.1 Beat 16
8.2.2 Duration 17
8.3 Stress 17
8.3.1 Beat Number 17
8.3.2 Stresses 18
8.3.3 Meter 18
8.4 Tempo Sequence 18
8.4.1 Tempo 18
9 Gestural Domain 20
9.1 Track 21
9.1.1 Gestural Event Sequence 21
9.1.2 Gestural Event Group 21
9.1.3 Gestural Event 22
9.1.4 Gestural Event Reference 22
9.2 Click Track 22
10 Visual Domain 23
10.1 Part 23
10.1.1 Visual Event Sequence 24
10.1.2 Visual Event Group 24
10.1.3 Visual Event 24
10.1.4 Visual Event Reference 25
10.2 Space 25
11 Analytical Domain 25
11.1 Voice 26
11.1.1 Analytical Event Sequence 26
11.1.2 Analytical Event Group 27
11.1.3 Analytical Event 27
June 16, 1988
- 3 -
11.1.4 Analytical Event Reference 27
12 Bibliographic 27
12.1 Theme 28
13 Conformance 28
Annex A 30
Annex B 40
B.1 General Application 40
Annex C 42
C.1 Definitions 42
C.2 Structure 42
C.3 Segregation 42
C.4 Language 43
Annex D 44
D.1 Structure 44
D.2 Punctuation 44
Annex E 45
June 16, 1988
- 4 -
0 Introduction
This is the second part of a two part document describing the work of
ANSI X3V1.8M, the Music Information Processing Standards Committee
(MIPS). The parts are known collectively as the Journal of Develop-
ment.
"Part One: Objectives and Methodology" describes the objectives of the
project and the development methodology employed.
"Part Two: Technical Description and Formal Definition" describes the
language design itself, and provides a formal definition.
This document and the other Standing Documents comprise the output of
the committee, while the other documents and material presented at the
meetings provide the input.
NOTES
1. The Journal of Development is maintained in two parts only to
facilitate maintenance by separate individuals; the two parts
should always be read as a single document. There is much in Part
Two, for example, that may seem confusing or contentious if it is
not read in the context established by Part One.
2. This introduction appears in both parts of the Journal of
Development.
3. General information about the MIPS committee, including a guide
to participation, can be found in committee document X3V1.8M/SD-
0.
0.1 Purpose of the Document
The Journal of Development describes the status of the Standard Music
Description Language (SMDL) being developed by the Music Information
Processing Standards (MIPS) Committee. It is intended as the technical
and methodological design specification which will ultimately evolve
into a Standard.
0.2 Development Methodology
Both parts are revised by their respective editors after each meeting
of the committee. As a result, the documents never represent text
that has been agreed on in detail by the committee, but only the edi-
tors' best efforts to express the committee's ideas. Moreover, the
ideas in the journal are subject to further study and revision and do
not represent a final design.
Eventually, the design work will reach a point where all aspects of
the language have been addressed, although not necessarily finalized.
At that point, the Journal of Development will cease to be the vehicle
that expresses the current language design. Instead, the committee
will produce one or more successive "working drafts", consisting of
June 16, 1988
- 5 -
text that has been agreed to.
During the Journal of Development and working draft stages, public
comment is sought and considered, but the process is informal. When,
eventually, the committee is satisfied with a working draft, it will
recommend that X3V1.8 process the document as a "draft proposed Ameri-
can National Standard". There will then commence a formal public
review and ballot, during which all comments received will be
responded to in writing.
0.3 Editorial Conventions
Formal standards can be complex documents in which every word has both
legal and technical significance. They may also need to be translated
into other languages. For these reasons, editorial conventions have
been established to assure precision, accuracy, and clarity (albeit
often at the expense of readability by the general public). The key
principles are:
1. Precise and consistent definitions of terms.
2. Distinguishing real requirements from mere commentary, explana-
tions, and examples -- and from definitions.
3. Avoidance of redundancy. (Repetition of a requirement is nor-
mally expressed as a note, to avoid the question of which text
governs if the "repetition" is imperfect.)
Part Two of the Journal of Development observes some of the editorial
conventions of a formal standard, but not yet with the strictness and
consistency that will be required in the final document. (See Annex C
of Part 2 for details.)
1 Scope and Field of Application
This section defines the range of applicability of the Standard. It
specifies the limits of what the Standard can be expected to
represent, and what is outside the design criteria.
NOTE: In order to proceed in a timely fashion, we found it necessary
to choose a subset of all possible music for the scope of the Stan-
dard. As the design matures, we expect to expand the scope to meet any
further needs of its users.
1.1 Scope
This Standard defines a language for the representation of music
information, either alone, or in conjunction with text, graphics, or
other information needed for publishing or business purposes. The
language is known as the "Standard Music Description Language", or
"SMDL".
NOTE: The Standard Music Description Language is an SGML application
conforming to International Standard ISO 8879 -- Standard Generalized
June 16, 1988
- 6 -
Markup Language.
The SMDL is capable of representing many (but not all) genres of
music, and most (but not necessarily all) instances of works in those
genres. The primary focus is on music that can reasonably be
expressed in Standard Western Musical Notation.
NOTE: The scope as defined should encompass the vast majority of
music. It does not exclude the use of special symbols that can be
placed in the score, nor of modern notational practices. The only cri-
terion is that the music be capable of representation as notes on a
staff, regardless of whether it was actually written down that way, or
even written down at all.
The SMDL is designed for flexibility and extensibility. There are no
technical prohibitions against the use of some components without the
whole, or against the use of user-defined components in conjunction
with standardized ones. The Standard includes a conformance clause
that identifies minimum and higher levels of support in terms of
standardized language components and options for user extensions.
1.2 Field of Application
Pieces that are composed on computer devices, pieces that exist as
printed scores, pieces that are performances recorded in a manner that
permits machine transcription, and pieces that are already represented
in some language, are all within the field of application of this
Standard.
Pieces that have other sources, such as digital audio recordings, can
be associated and synchronized with pieces described in SMDL. They can
exist as elements in the same document as SMDL works, but will have
their own representation (document type definition and data content
notations).
3 References
ISO 8879, Information processing -- Text and office systems -- Stan-
dard Generalized Markup Language (SGML).
X3V1.8M/SD-6 Journal of Development -- Standard Music Description
Language -- Part One: Objectives and Methodology
4 Definitions
The following items are used in a number of places in the text but are
not explicitly defined. They are essential to the understanding of the
Standard, and many have been assigned meanings which differ from com-
mon usage.
4.1 analytical domain: The portion of a work which contains music
theoretical analyses.
4.2 analysis: A music theoretical analysis of the piece, such as a
June 16, 1988
- 7 -
Shenkerian analysis. An examination of the piece as opposed to a ren-
dition of the piece.
4.3 beat: A relative time unit that is used for measuring durations
in the core.
NOTE: It should be the "felt" beat (tactus) if known. Otherwise, it
can be chosen for convenience; for example, the smallest or most com-
mon note value in the piece (i.e., 1/4, 1/8, 1/16, etc.)
4.4 bibliographic data: Identification information used to catalog
and archive pieces of music (or any other works.)
4.5 core: The portion of a work that represents the basis of all of
the performances, scores, and analyses. The logical musical material
as opposed to the performance or score specific material.
NOTE: The core can be thought of mechanistically as the information
which is most convenient to share in common among the other domains,
and among multiple instances in the same domain. Philosophically, it
can be thought of as the information that is necessary (and in the
case of conventional Western music, sufficient) to distinguish the
piece from all others.
4.6 gestural domain: The portion of a work that represents live per-
formance data such as precise timing and dynamic fluctuation.
4.7 logical: The basic musical content of a piece of music, such as
the time values, pitch values, and basic groupings such as chords and
tuplets.
4.8 logical domain: The core.
4.9 markup minimization: The elimination of redundant verbiage in the
actual representation of a work.
NOTE: SGML has been designed to allow this to happen naturally, so it
is not necessary to consider it in the initial design of the Standard.
4.10 MIPS: Music Information Processing Standards Committee; ANSI
X3V1.8M.
4.11 performance: A particular realization of a piece, either by
mechanical means or by a musician.
4.12 piece: A musical composition.
4.13 real time unit: The basic unit of measurement of time in a work;
the smallest representable division of time.
4.14 SGML: Standard Generalized Markup Language; a text markup
language and structured design tool. SGML is an International Standard
and is fully defined and described in ISO 8879-1986.
June 16, 1988
- 8 -
4.15 SMDL: Standard Music Description Language; this Standard.
4.16 score: A printed piece of music; an edition.
4.17 tuplet: A group of notes which occur in a different time frame
than the surrounding notes; a time anomaly.
NOTE: A triplet, a quintuplet, and a duplet in compound meter are all
tuplets.
4.18 visual domain: The portion of a work which represents the score;
the music engraving information.
4.19 work: The SMDL representation of a piece.
NOTE: A work has four domains: core, gestural, visual, and analytical.
In addition, bibliographic data can be associated with the work as a
whole or with instances of any of the domains.
5 Notation
This Standard is expected to be an SGML application, and the develop-
ment is proceding using SGML as a design tool. For this reason, the
formal syntactic and structural definitions in this document are in
SGML. A brief discussion of SGML syntax and semantics can be found in
Annex D. A complete and definitive treatise on SGML is found in ISO
8879-1986.
It is intended that the text describing each element and attribute
will be a complete definition and explanation, but the formal language
of the SGML coding provides the rigorous definitions underlying the
text descriptions, and will show the mechanism behind each technique
that is presented. For this reason, excerpts of the SGML encoding have
been interspersed with the text at strategic points. It is recommended
that the reader refer to the SGML in the text and in Annex A while
reading the technical definitions.
NOTE: In the case of conflict between the SGML excerpts in the text
and the formal specification in Annex A, the SGML in Annex A will
govern.
6 Structure and Content
The Standard will be based on a hierarchical structure which describes
a piece in terms of four basic sections: the underlying musical form,
a set of performances (presumably to be reproduced by a machine), a
set of scores in the form of Standard Western Music Notation, and a
set of theoretical analyses. We feel this structure best reflects the
conceptual divisions inherent in music in light of the uses to which
the Standard will be put. These divisions may not represent the philo-
sophically most elegant approach to the expression of musical ideas,
but we feel they will they will be maximally useful. This separation
of the whole into performance and score, and the extraction of the
logical musical concepts, seems an unavoidable outcome of the way
June 16, 1988
- 9 -
music has come to be performed and notated, and has long been present
in Western music.
This hierarchical structure will be codified in terms of elements.
Elements are basic structural building blocks which provide a frame-
work and a means to relate and collect information. Each element has a
related information set consisting of attributes. These will contain
much of the actual data, as the element itself is basically a place
holder. For instance, an event is an element, and may represent a
note, in which case it will have attributes describing pitch, dura-
tion, and possibly dynamic level. Attributes can be defined by the
user as well as the designer. This allows almost unlimited flexibility
in representing unusual material that may not have been foreseen dur-
ing the design.
The representational scheme is based on the separation of the basic
musical content (pitch, rhythm, harmony, etc.) from the purely perfor-
mance oriented information (intonation, rhythmic interpretation) and
the purely score oriented information (page layout, horizontal spac-
ing, clef). This means simply that some process or machine must be
able to separate the work into one or more of these categories for
this Standard to represent it. (These divisions are discussed in
detail in the following clauses.) This is not to say that the piece
must originate in a separated form, only that it can be separated for
the purpose of encoding in the Standard. While it is possible to ima-
gine pieces which are not separable in this way, almost all works in
all genres are in fact easily separable.
7 Work
NOTE: This and the following clauses are devoted to a detailed defini-
tion of each element of the structure, and the information it con-
tains. (A description of the applications of these elements is found
in Annex B.) Some of the attributes have been defined and are
described below, but some have not yet been addressed. The assumption
is that every element will have an attribute list, containing at least
an identification mark for reference by other elements. Additional
items will be added to the attribute list as they are defined, but in
the interests of top down design, we are concentrating on the overall
structure first, leaving the myriad and obfuscating details for later.
The work is the top level of the hierarchy. The work encompasses the
entire document, and is defined as the logical musical information,
and all of the performances, scores, and analyses that stem from that
musical information. If a "piece" actually has several versions which
differ in basic ways, those versions must each be a separate work. All
of the remaining elements are contained within the work.
The source is an attribute of a work which indicates what form the
piece originated from. It distinguishes between a piece which was cap-
tured from a MIDI stream, a piece which was entered from a printed
score, and a piece which was composed and entered as logical informa-
tion.
June 16, 1988
- 10 -
The composer analysis attribute, if present, indicates an analysis
which was created by the composer.
NOTE: The intent is to label that information which is definitive as
opposed to that which represents an opinion.
The rtu base is a time reference which specifies the order of magni-
tude of the timing in the work. It specifies the number of real time
units (rtu) per second.
NOTE: The intent is to allow a wide range of pieces to be realized
with an implementation of limited precision. If 32 bits are used to
hold time values, for instance, setting rtubase to 1 will give about
100 years of time measurable to 1 second accuracy. Setting it to
1,000,000 will give about 1 hour at 1 microsecond accuracy.
<!-- 7 Work as a Whole -->
<!ELEMENT work -- Musical composition, piece, etc. --
- - (bibdata?, workseg+, analysis*) >
<!ATTLIST work source -- Origin of this representation of the work --
(core | analysis | perform | score) #REQUIRED
companal -- Composer's analysis (may include core-like
controlling factors that distinguish the work)--
IDREF #IMPLIED -- ID of analysis --
rtubase -- Real Time Units per second (0=100,000,000) --
NUMBER 10000 >
7.1 Work Segment
The work segment is a structural device for dividing the work along
major boundaries. Workseg is defined self-referentially so that
repetitions and other constructs can be easily represented.
Movements of a symphony would be placed in separate segments, as would
acts in an opera or any other divisions that affect all aspects of the
piece (i.e. all parts, all instruments, etc.) The segment will also be
used for making global changes such as key changes, time signature
changes and instrumentation changes. If the piece changes key or time
signature, that often affects every part and instrument, and indicates
a major turning point in the music. In such cases, the material before
the change should be in one segment, and the material after in
another.
One very important use of the work segment will be in cases where the
instrumentation changes. If the piece starts out with full orchestra,
and later proceeds with only strings, then two segments should be used
to separate the sections. This will greatly assist in maintaining a
useful relationship between the threads in the core, the parts in the
score, and the tracks in the performance.
Another use is to indicate the composer's intent. If the composer or
the editor wants a major division in the work, the work segment can be
used to indicate the division even though none of the above situations
June 16, 1988
- 11 -
apply.
The class is a label indicating the use of the workseg. It is coded as
a text string, not as a machine interpretable value.
The delay indicates the expected pause (if any) between the workseg
and any following workseg. It is coded as a text string, not as a
machine interpretable value.
<!-- 7.1 Work Segment -->
<!ELEMENT workseg -- Sequential segment of a work: movement, act, etc. --
O O ((workseg, (workseg | worksegr)+) |
(bibdata?, core, perform*, score*)) >
<!ATTLIST workseg id ID #IMPLIED
class -- E.g., movement, section, coda --
CDATA #IMPLIED -- don't care --
delay -- E.g., 15 minute intermission --
CDATA #IMPLIED -- don't care -- >
7.2 Work Segment Reference
The work segment reference is a structural tool to allow a work seg-
ment to reference other work segments. This provides flexibility in
creating repeats and loops, and allows analyses to refer to work seg-
ments.
<!-- 7.2 Work Segment Reference -->
<!ELEMENT worksegr -- Work segment reference --
- O EMPTY >
<!ATTLIST worksegr idr IDREF #REQUIRED -- ID of any work segment -- >
8 Core
The core is the basis for a work, and a work has one and only one
core. The core contains such information as pitch, note value, har-
monic groupings, phrasings, tuplets, etc. A piece for which a core is
not producible can not be represented, and a piece with more than one
core must be represented as more than one work. We will see, however,
that several interpretations of the same basic piece can reside in the
same work if they derive from the same core.
Let us take the example of a simple piano piece. We have a performance
captured by a MIDI sequencer, and the score from which the performance
was played. The core will contain an element for each note and rest in
the score, thus representing the logical basis of the work. A given
measure in the core may contain no notes, and the corresponding spot
in the score may say "ad lib". At that point in the performance, there
are several improvised notes. It is possible that another performance
with a different improvised section, and another score which specifi-
cally details a cadenza, might be included in this work and be based
June 16, 1988
- 12 -
on the same core.
The normalized attribute states whether the core has been normalized.
It may often be desirable that the core have a canonical (normalized)
form. That is, that there be one particular form which will always be
used for a given piece. (Note that the definition of the core does not
provide orthoganality, so there are many ways that a given piece could
be represented.) For such situations, an algorithm can be applied
which translates any arbitrary core into a given canonical form. The
user may create such an algorithm to fit the needs of the application,
or the Standard Canonical Form can be generated using the Standard
Algorithm. We plan to provide this Standard Algorithm both as a way
of providing consistency between applications and as a model for other
algorithms.
The normalization algorithm attribute states which algorithm has been
used to normalize the core. If "standard" is used, it is expected that
implementations will access the Standard Algorithm. If another algo-
rithm is used it can be identified here, and may be implementation
specific.
<!-- 8 Core -->
<!ELEMENT core -- The essential music, common to all domains --
- O (stress*, temposeq+, thread+) >
<!ATTLIST core norm -- Is core timing normalized? (7.5) --
(norm | nonnorm) nonnorm >
8.1 Thread
The thread is a sequence of musical events which lasts for the dura-
tion of the piece. It is analogous to a track in a sequencer or on a
multi-track tape deck. The purpose of the thread is to allow the core
to be sectioned into concurrent streams of notes and other events,
mostly for the sake of convenience. There is no assumption made about
how the piece will be divided into threads, but logic suggests that
parts in a score, tracks in a sequence, or voices would be the best
choices of thread allocation.
The tempo sequence attribute indicates which tempo sequence is to be
used for this thread.
The nominal instrument attribute records for posterity the instrument
that the composer had in mind (in case anybody cares.) The point is
that the gestural section, which contains the timbral information, may
be an interpretation by someone other than the composer. This will be
encoded as a text string, not as coded timbral data such as is found
in the gestural section.
June 16, 1988
- 13 -
<!-- 8.1 Thread -->
<!ELEMENT thread -- Voice-like time-ordered sequence of events --
- O (ces) >
<!ATTLIST thread id ID #IMPLIED
temposeq IDREF #IMPLIED
nominst CDATA #IMPLIED -- Nominal instrument --
-- TO DO: other attributes -- >
8.1.1 Core Event Sequence
A core event sequence is a collection of core events, other core event
sequences, and core event groups. A core event sequence groups sequen-
tial events, as in movements, measures or tuplets. These groups may be
nested to any depth and combined in any way. Each thread is made up of
a structure of core event sequences which is as complex as is neces-
sary to represent the music completely.
The time factor attribute is a fraction which describes the relation-
ship of the beat inside a given sequence and the beat surrounding (or
underneath) the sequence. Time anomalies (such as triplets) will be
represented by setting the time factor to the correct fraction. For
example, if the beat of a piece falls on the quarter note (so quarter
notes have a time value of 1) and an eighth note triplet is encoun-
tered, the triplet could be expressed as a sequence of three notes of
value 1 with a time factor of 1/3, or as a sequence of three notes of
value 1/2 with a time factor of 2/3. It may turn out to be desirable
to specify that every event sequence must contain an integral (non-
fractional) number of beats. This would not be limiting since a common
denominator can be found for any situation.
The stress id attribute is a reference to a stress pattern to use for
this sequence.
The stress beat attribute is the offset (in beats) into the stress
pattern at which the sequence starts. A common use for this would be
for an anacrusis (pick-up measure).
The ornamentation style attribute is a text string which allows the
composer or editor to record remarks on the ornamentation style of the
sequence.
NOTE: This attribute should perhaps modify stress instead.
June 16, 1988
- 14 -
<!-- 8.1.1 Core Event Sequence -->
<!ENTITY % FRAC "NUMBERS" -- fraction: numerator, denominator? (=1) -- >
<!ENTITY % m.ces "(ces|ceg|note|rest|grcevent|special|cer)*" >
<!ELEMENT ces -- Core event sequence --
O O (chordnm?, %m.ces;) >
<!ATTLIST ces id ID #IMPLIED
factor -- ces beats / sum of subelement beats --
%FRAC "1 1"
stressid -- Beat cycle dynamic stress pattern --
IDREF #IMPLIED -- Default: no change --
stressbt -- Beat # of stress pattern on which ces begins --
NUMBER 1 -- Not 1 only if anacrusis --
ornstyle -- Ornamentation style: e.g., period --
CDATA #IMPLIED -- Default: no ornamentation -- >
8.1.2 Core Event Group
The core event group is a collection of events or sequences which are
initiated simultaneously. A chord is a group which contains events
(notes). A section of a thread may well be a group containing a
sequence for each of several parallel voices. This is an alternative
to placing each voice in a separate thread.
<!-- 8.1.2 Core Event Group -->
<!ELEMENT ceg -- Core event group --
- - %m.ces; >
<!ATTLIST ceg id ID #IMPLIED
-- TO DO: other attributes -- >
8.1.3 Core Events
The core event is the basic unit of the structure. Notes and rests are
examples of core events, but other occurrences may also be represented
as events. In general an event is some occurrence or item which has a
single definable starting point in time, and a definable duration.
8.1.3.1 Notes and Rests
The note and the rest are the most common musical events. They are
very similar in that they are simple events (as opposed to compound
events like the graced event). The note has a pitch attribute which
specifies its scale tone and octave.
June 16, 1988
- 15 -
<!-- 8.1.3.1 Notes and Rests -->
<!ELEMENT (note | rest)
-- Conventionally pitched time-stamped event --
- O EMPTY >
<!ATTLIST (note | rest)
id ID #IMPLIED
%a.ctime;
-- TO DO: other attributes -- >
8.1.3.2 Graced Events
The graced event is a compound event in that it consists of a main
event ornamented by a "grace" modifier. The modifier is an event
sequence which can either precede or follow the main event, and which
will not consume time as will a normal sequence.
The preceding grace modifier is an event sequence which starts at a
given time and proceeds until finished, at which time the grace sub-
ject is started.
The grace subject is the main event. It starts after the preceding
modifier and continues until the end of its duration, or until the
start of a posterior modifier.
The posterior grace modifier starts at a given time after the main
event has started, and proceeds until finished.
The grace synchronization attribute specifies the starting time
offsets of the preceding and posterior modifiers. It is measured from
the start time of the subject, and the end time of the subject,
respectively.
<!-- 8.1.3.2 Graced Event -->
<!ELEMENT grcevent -- Graced core event --
- O ((grcpre, grcsubj) | (grcpre?, grcsubj, grcpost))>
<!ATTLIST grcevent id ID #IMPLIED >
<!ELEMENT (grcpre | grcpost)
-- Core event whose duration is not counted --
- O %m.ces; >
<!ATTLIST (grcpre | grcpost)
id ID #IMPLIED
-- Synchronization with subject:
start-time in the case of grcpre
end-time in the case of grcpref --
grcsync (lead | lag) lead >
<!ELEMENT grcsubj -- Grace sequence subject: that which is graced --
O O (note | rest | special | cer) >
June 16, 1988
- 16 -
8.1.3.3 Special Events
The special event contains user defined information about timed events
other than conventional musical occurrences. Its content (other than
starting time and duration) will be application specific.
<!-- 8.1.3.3 Special Events -->
<!ELEMENT special -- User-defined time-stamped event: content describes it --
- O (#PCDATA) >
<!ATTLIST special id ID #IMPLIED
%a.ctime;
-- TO DO: other attributes -- >
8.1.4 Core Event References
Core events are accessed through core event references. These are
pointers which allow the core to be referred to in arbitrarily complex
ways by the performance, score, and analysis sections of the piece.
This process will be explored in more depth in Theory of Use. This
structure yields a very flexible system for organizing and referring
to events.
<!-- 8.1.4 Core Event Reference -->
<!ELEMENT cer -- Reference to core event, sequence, or group --
- O EMPTY >
<!ATTLIST cer idr IDREF #REQUIRED -- ID of ces|ceg|ce --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
8.2 Time
It is in the core that the time of the piece is represented. By time
we mean the rhythmic relationship of each event to all other events.
This is not to be confused with tempo, which refers to the rate of
progress of the piece. The time model has several components which
combine to form a system which we hope will account for any situation
within the scope of the Standard.
8.2.1 Beat
All time must be measured in relation to some base which is not open
to interpretation. That base will be called the beat. The beat is
defined to be that time interval which, at any given point in the
piece, is small enough to divide without remainder into all existing
subdivisions of the sequence, excluding time anomalies. This beat will
only be assigned an absolute value in the gestural section; in the
core it is simply a common reference. If the beat changes in meaning
as the piece progresses, then the core will be sectioned into more
than one sequence. Each sequence will specify the relation of its
beat to an overall reference beat.
June 16, 1988
- 17 -
Since the beat is a relative measurement, the performance can be
linked to any time base that is appropriate. The beat can be assigned
a fixed duration, an algorithmically generated variable duration, or
be related to a live recorded click track. Similarly the score can use
any appropriate time signature for a given passage. The same piece
could, for example, be scored in 4/4 as triplets or in 12/8 as
straight eighths. Indeed, a score representation in each meter could
refer to the same core.
8.2.2 Duration
Each core event will have a music duration (note value) attribute
which is stated as a fraction of a beat. The time consumed by a core
event sequence will be the sum of the durations of its events in
beats. Accumulated time is therefore represented as the sum of dura-
tional time, necessitating the definition of events which sound
(notes), and events which do not (rests).
The model will support single events or tied events. Tied events are
strings of events which are taken together to represent one event with
a duration that is the sum of each of the individual durations. When a
note starts sounding in one event sequence and continues into the
next, the note is split into two tied events of the appropriate dura-
tion. The tie attribute indicates that the event is tied, and to which
subsequent event it is tied.
<!-- 8.2 Time -->
<!ENTITY % BEATS "%FRAC;" -- Measure of music time (fractional) -- >
<!ENTITY % a.ctime -- Core event time attributes (7.2) --
"musicdur %BEATS #CURRENT tie IDREF #IMPLIED" >
8.3 Stress
The stress element indicates how a passage is to be stressed dynami-
cally. It consists of a set of template sequences that indicate which
beats are to receive what stress. Stress can be dynamic, agogic (tempo
related), or can be related to other user specified parameters.
The beat count attribute indicates the number of beats in the template
cycle.
<!-- 8.3 Stress -->
<!ELEMENT stress -- Beat cycle definition; dynamic stress pattern --
- O (beatnum, stresses)+ >
<!ATTLIST stress id ID #IMPLIED
beatcnt NUMBER #REQUIRED -- Number of beats in cycle -->
8.3.1 Beat Number
The beat number element marks a particular beat in a stress cycle as
June 16, 1988
- 18 -
receiving stress.
<!ELEMENT beatnum -- Beat number receiving agogic or dynamic stresses --
O O (#PCDATA) >
8.3.2 Stresses
The stresses element contains information on what kind of stress is to
be applied to the beat with which it is associated.
<!ELEMENT stresses -- Stresses applied to specified beat --
O O (#PCDATA) >
8.3.3 Meter
The concept of meter is expressible in the core by creating a stress
template which models a measure. In 4/4 time, a template may have 4
beats, and may mark the first as having maximum stress, and the third
as having moderate stress. In the case of a complex metric situation,
such as a measure of five which is felt as two and three, a nested
structure of stress templates can be used to accurately indicate the
feel. If ambiguity is desired however, the measure can be represented
as simply five beats.
NOTE: The inclusion of the meter in the core reflects the philosophy
that measures are a basic logical concept in music, rather than
strictly a score related issue. This is certainly not true of all
music, but the facility must be there for those pieces for which it is
important.
8.4 Tempo Sequence
The tempo sequence element is a list of time stamped tempo modifica-
tions which govern the tempo of the piece. Each thread refers to a
particular tempo sequence; there can be several if the piece involves
conflicting tempi.
<!-- 8.4 Tempo -->
<!ELEMENT temposeq -- Relates music time to real time (may be imprecise) --
- O (tempo+) >
<!ATTLIST temposeq id ID #IMPLIED >
8.4.1 Tempo
The tempo element is the basic building block of the tempo sequence.
It specifies a tempo change from the current tempo to a target tempo.
June 16, 1988
- 19 -
(The current tempo is the tempo in effect infinitesimally before the
start time of the tempo element. The target tempo is the tempo in
effect infinitesimally before the start time of the next tempo ele-
ment.) The attributes have been defined to give a large degree of
flexibility in specifying changes over time, and maintaining ambiguity
and imprecision when desired.
The music duration attribute specifies the life of this tempo setting
(the time until the next change) in beats.
The set value attribute specifies a precise target tempo, either abso-
lutely in rtu's per beat or as a percentage of the current tempo.
The set text attribute specifies an imprecise target tempo. The value
is represented as a text string, and presumably will be a common musi-
cal expression such as "presto" or "moderato".
The rate value attribute specifies a precise formula for reaching the
target tempo from the current tempo. It can be specified as "immedi-
ate" (instant change at the start time of the tempo element), "linear"
over the duration of the tempo element, or represented by a mathemati-
cal formula in the form of a text string.
The rate text attribute specifies an imprecise formula for reaching
the target tempo from the current tempo. The value is represented as a
text string, and presumably will be a common musical expression such
as "accelerando" or "ritardando".
The hold duration attribute specifies a precise pause in the counting
of music time. Its value is absolute in beats. It can be used for a
fermata, a full stop, or any other pause or interruption of the normal
time flow of the piece, such as an unaccompanied solo cadenza. The
hold starts at the starting time of the tempo element, and the tempo
duration begins at the completion of the hold.
The hold type attribute specifies an imprecise pause in the counting
of music time. It can be specified as "full stop", "long", "medium",
"short", "none", in non-increasing order of length. The actual time
value of these specifiers is implementation dependant. The hold starts
at the starting time of the tempo element, and the tempo duration
begins at the completion of the hold.
The strictness attribute specifies the precision with which the tempo
should be followed during a realization of the piece. It is specified
as "strict tempo", or represented by a text string containing a common
musical expression such as "rubato".
June 16, 1988
- 20 -
<!ELEMENT tempo -- Real time units per beat --
- O (#PCDATA) >
<!ATTLIST tempo id ID #IMPLIED
musicdur -- Duration of tempo setting in music time --
%BEATS #CURRENT
setval -- Precise final tempo: RTUs/beat (integer #RTU)
or % of earlier tempo (%FRAC idref) --
CDATA #CURRENT
settext -- Imprecise final tempo: moderato --
CDATA #IMPLIED -- Default: use setval --
rateval -- Precise rate of reaching final tempo --
-- Format: (LINEAR | FORMULA data) --
CDATA #IMPLIED -- Default: immediate --
ratetext -- Imprecise rate specification: accel, ritard --
CDATA #IMPLIED -- Default: use rateval --
strict -- Strictness of interpretation: rubato --
CDATA #IMPLIED -- Default: strict tempo --
holdtype -- Imprecise extension of counted duration --
(fullstop|long|medium|short|none) none
holddur -- Precise duration of hold --
%BEATS #CURRENT >
9 Gestural Domain
The gestural section of the piece contains the performances. While
each work has only one core, it may have several gestural sections,
each a different performance (and hence different interpretation) of
the piece, and each linked to a particular score The gestural section
refers to the core for the majority of its musical material, but may
have events of its own. Usually these events will be ad lib notes and
performance control information such as volume or timbre selection.
The gestural section is intended to represent data for an automated
performance of the piece. That data could be generated by a live per-
formance or by non-real-time composition, then returned to a syn-
thesizer for realization.
The performance is the top level gestural element. Each performance
typically realizes the entire piece.
The score attribute identifies a score in the visual domain which
represents the edition which produced this performance, if such a
score exists.
The closure attribute indicates whether every event in the core was
realized in this performance.
June 16, 1988
- 21 -
<!-- 9 Gestural Domain -->
<!ELEMENT perform -- The gestures of a performance (MIDI) --
- O (bibdata?, clicktrk*, track+) >
<!ATTLIST perform id ID #IMPLIED
score IDREFS #IMPLIED
closure -- Are all core events referenced? --
(closed, open) open >
9.1 Track
The track is analogous to the thread in the core. It will be used to
drive one channel of sound output, or one instrument. It is the pre-
cise counterpart of a track on a multi-track. Unlike the thread, the
division of music into tracks may need to follow certain restraints
imposed by the device that will perform the piece. For example a track
may have to be limited to events which are to sound in the same tim-
bre.
A track is made up of gestural event sequences, which are made up of
gestural events, gestural event references, and core event references.
It is through these core event references that the core becomes the
basis of the gestural section. While it would be possible through the
use of gestural events to represent a performance that was unrelated
to the core, the intention is that the track will contain mostly per-
formance control information, and refer to the core for most or all of
the notes, rests, and other basic conceptual material.
<!-- 9.1 Track -->
<!ELEMENT track -- One instrument's time-ordered sequence of gestures --
- O (ges) >
<!ATTLIST track id ID #IMPLIED
instrum CDATA #IMPLIED
clicktrk IDREF #IMPLIED
-- TO DO: other attributes -- >
9.1.1 Gestural Event Sequence
<!-- 9.1.1 Gestural Event Sequence -->
<!ENTITY % e.ge "ge" -- TO DO: replace with real element types -- >
<!ENTITY % m.ges "(ges | geg | %e.ge; | ger | gcer)*" >
<!ELEMENT ges -- Gestural event sequence (has core references) --
O O %m.ges; >
<!ATTLIST ges id ID #IMPLIED
-- TO DO: other attributes -- >
9.1.2 Gestural Event Group
June 16, 1988
- 22 -
<!-- 9.1.2 Gestural Event Group -->
<!ELEMENT geg -- Gestural event group (has core references) --
- - %m.ges; >
<!ATTLIST geg id ID #IMPLIED
-- TO DO: other attributes -- >
9.1.3 Gestural Event
<!-- 9.1.3 Gestural Event -->
<!ENTITY % SECONDS "NUMBERS" -- Format: (seconds?, Real Time Units) -- >
<!ELEMENT (%e.ge;) -- Gestural event: e.g., controller setting, ad lib note --
- O EMPTY >
<!ATTLIST ge id ID #IMPLIED
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
-- TO DO: other attributes -- >
9.1.4 Gestural Event Reference
<!-- 9.1.4.1 Gestural Domain Reference to Gestural Event -->
<!ELEMENT ger -- Gestural event reference (includes geg|ges) --
- O EMPTY >
<!ATTLIST ger idr IDREF #REQUIRED -- ges|ge|geg same perform --
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 9.1.4.2 Gestural Domain References to Core Events -->
<!ELEMENT gcer -- Gestural domain core event reference --
- O EMPTY >
<!ATTLIST gcer idr IDREF #REQUIRED -- ces|ce|ceg in core --
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
9.2 Click Track
The click track is a gestural event sequence with an event to mark
each beat in the piece. This element will provide a means for relating
beats in the core to real time. Click tracks can have arbitrarily
spaced events, so any kind of expressive performance can be
June 16, 1988
- 23 -
represented. The click track will usually be generated by a transcrip-
tion program in the process of creating a work from a live perfor-
mance. Note that a click track does not need to be present, since a
rhythmically exact performance can be generated from the core alone.
<!-- 9.2 Click Track -->
<!ELEMENT clicktrk -- Click track: ordered table of event start-times --
- O (#PCDATA) >
<!ATTLIST clicktrk id ID #IMPLIED -- Default: generated --
nextbeat -- Track and time of next beat --
NMTOKENS #IMPLIED >
10 Visual Domain
The visual section of the piece contains the scores. While each work
has only one core, it may have several scores, each a different edi-
tion (and hence a different interpretation of the piece), and each
linked to a particular performance. The visual section refers to the
core for the majority of its musical material, but may have events of
its own. Usually these events will be symbols that appear on the
score aside from notes, rests, and accidentals. Such items as phrase
markings, beams, accents, dynamic markings, and lyrics would be found
here. The visual section is intended to represent the printed score in
Standard Western Music Notation. The score could be generated by a
music printing system and returned to such a system for printing or
display.
The score element is the top level of the visual domain. Each score is
a presumably complete edition of the piece.
The performance attribute specifies a performance in the gestural
domain which was generated from this particular score (edition), if
such a performance exists.
The closure attribute indicates whether every event in the core was
notated in this score.
<!-- 10 Visual Domain -->
<!ELEMENT score -- Visual representation of work (a la DARMS, MUSTRAN...) --
- O (bibdata?, part+) >
<!ATTLIST score id ID #IMPLIED
perform IDREFS #IMPLIED
closure -- Are all core events referenced? --
(closed, open) open >
10.1 Part
The part is analogous to the thread in the core. It will be used to
print one part of the score for one instrument. It is the precise
counterpart of a staff in a score. The division of music into parts
June 16, 1988
- 24 -
will be based on the desired appearance of the score.
A part is made up of visual event sequences, which are made up of
visual events, visual event references, and core event references. It
is through these core event references that the core becomes the basis
of the visual section. While it would be possible through the use of
visual events to represent a score that was unrelated to the core, the
intention is that the part will contain mostly visual symbols, and
refer to the core for most or all of the notes, rests, and other basic
conceptual material.
<!-- 10.1 Part -->
<!ELEMENT part -- One instrument's portion of the system --
- O (ves) >
<!ATTLIST part id ID #IMPLIED
clef NAMES "treble bass"
-- TO DO: other attributes -- >
10.1.1 Visual Event Sequence
<!-- 10.1.1 Visual Event Sequence -->
<!ENTITY % e.ve "ve" -- TO DO: replace with real element types -- >
<!ENTITY % m.ves "(ves | veg | %e.ve; | ver | vcer)*" >
<!ELEMENT ves -- Visual event sequence (has core references) --
O O %m.ves; >
<!ATTLIST ves id ID #IMPLIED
tuplet -- Triplet (etc.) indicator for sequence --
CDATA #IMPLIED -- Not a tuplet --
cue IDREF #IMPLIED -- ID of ves --
tsinst NUMBERS #IMPLIED -- Time sig for instrument --
tscond NUMBERS #IMPLIED -- Time sig for conductor --
-- TO DO: other attributes -- >
10.1.2 Visual Event Group
<!-- 10.1.2 Visual Event Group -->
<!ELEMENT veg -- Visual event group (has core references) --
- - %m.ves; >
<!ATTLIST veg id ID #IMPLIED
-- TO DO: other attributes -- >
10.1.3 Visual Event
June 16, 1988
- 25 -
<!-- 10.1.3 Visual Event -->
<!ELEMENT (%e.ve;) -- Visual event: e.g., phrase mark, bar line --
- O EMPTY >
<!ATTLIST (%e.ve;) id ID #IMPLIED
-- TO DO: other attributes -- >
10.1.4 Visual Event Reference
<!-- 10.1.4.1 Visual Domain Reference to Visual Event -->
<!ELEMENT ver -- Visual event reference (includes veg|ves) --
- O EMPTY >
<!ATTLIST ver idr IDREF #REQUIRED -- ves|ve|geg same score --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 10.1.4.2 Visual Domain Reference to Core Event -->
<!ELEMENT vcer -- Visual domain core event reference --
- O EMPTY >
<!ATTLIST vcer idr IDREF #REQUIRED -- ces|ce|ceg in core --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
10.2 Space
The unit of space will be defined relative to the size of the staff
and note heads. The actual size of the printed staff is not defined
except perhaps as a global attribute of the visual section. A unit of
one staff space for the vertical and one note head width for the hor-
izontal will provide the basis for all spatial measurements.
Spatial relationship will be representable in several ways: as an
absolute position on a line (staff), as a relative position from
another object, and as a relative position from a logical (time) posi-
tion on a staff. Furthermore, for each of these possibilities there
will be an explicit position (specified in spatial units) and an
implicit position. The implicit position will take the form of a
non-numerical relationship to some other object, such as "above the
staff" or "between this note head and the one to the left".
11 Analytical Domain
The analytical section of the piece contains any analyses that may
have been produced. A work may have several analytical sections, each
a different analysis (and hence a different interpretation of the
piece.) The analytical section refers to the core for the majority of
its musical material, but may also refer to performances and scores.
The analytical section is intended to represent a structuring of the
piece based on any style of analysis. The analysis could be generated
June 16, 1988
- 26 -
by a specialized music printing/editing system and returned to such a
system for printing or display, or might take the ultimate form of a
written document. It might even be generated automatically by a com-
puter system.
The analysis element is the top level of the analysis structure. It
represents a presumably complete analysis of the piece, by a particu-
lar analyst. If several analyses by different analysts exist, they
will each be is a separate analysis. The analysis can refer freely to
any other elements of a work, thus allowing complex relationships to
be represented.
<!-- 11 Analytical Domain -->
<!ELEMENT analysis -- An analysis of a work --
- O (bibdata?, voice+) >
<!ENTITY % a.anal
"core IDREFS #IMPLIED perform IDREFS #IMPLIED score IDREFS #IMPLIED" >
<!ATTLIST analysis id ID #IMPLIED
%a.anal; >
11.1 Voice
The voice is analogous to the thread in the core. It will be used to
represent one voice or melodic line of the piece. It is the counter-
part of a passage of notes that have the same stem direction. The
division of music into voices will be based on the voicing of the
piece intended by the composer or analyst.
A voice is made up of analytical event sequences, which are made up of
analytical events, analytical event references, and core event refer-
ences. It also can contain gestural event references and visual event
references. It is through these references that the analytical section
can arbitrarily structure any aspect of the piece in order to illus-
trate a music theoretical idea.
<!-- 11.1 Voice -->
<!ELEMENT voice -- A single melody line (possibly polyphonic) --
- O (aes) >
<!ENTITY % a.voice "" >
<!ATTLIST voice id ID #IMPLIED
%a.voice; >
11.1.1 Analytical Event Sequence
June 16, 1988
- 27 -
<!-- 11.1.1 Analytical Event Sequence -->
<!ENTITY % e.ae "ae" -- TO DO: replace with real element types -- >
<!ENTITY % m.aes "(aes | aeg | %e.ae; | aer | ver | ger | cer)*" >
<!ELEMENT aes -- Analytical event sequence (multi-domain refs) --
O O %m.aes; >
<!ENTITY % a.aes "class (motif | epmotif | esmotif | elision) motif" >
<!ATTLIST aes id ID #IMPLIED
%a.aes; >
11.1.2 Analytical Event Group
<!-- 11.1.2 Analytical Event Group -->
<!ELEMENT aeg -- Analytical event group (multi-domain refs) --
- - %m.aes; >
<!ENTITY % a.ae "" >
<!ATTLIST aeg id ID #IMPLIED
%a.ae; >
11.1.3 Analytical Event
<!-- 11.1.3 Analytical Event -->
<!ENTITY % m.ae "(%e.ae;|%e.ge;|%e.ve;)*" >
<!ELEMENT (%e.ae;) -- Analytical event --
- O %m.ae; >
<!ATTLIST (%e.ae;) id ID #IMPLIED
%a.ae; >
11.1.4 Analytical Event Reference
<!-- 11.1.4 References -->
<!ELEMENT aer -- Analytical event sequence reference --
- O EMPTY >
<!ENTITY % a.aer "" >
<!ATTLIST aer idr IDREF #REQUIRED -- ID of aes --
%a.aer; >
12 Bibliographic
The bibliographic entry is found at the top level (as an element of
work) and can also be used at lower levels. It contains much of the
bibliographic and discographic data necessary for the cataloging of a
piece.The bibliographic entry will contain the information necessary
to make the Standard useful. Such items as title, author, issuer (pub-
lisher), date, and copyright will all be explicitly defined. In addi-
tion, a miscellaneous area will be available which can contain any
information that is not defined elsewhere. If desired, a bibliographic
entry may be made for each performance in the gestural section, or for
June 16, 1988
- 28 -
each edition in the visual section.
The attributes are explained in the SGML code comments.
NOTE: We have not attempted to form an exhaustive structure for the
representation of complete library cataloging information. Such a
structure would extend the scope of the Standard beyond where we feel
it should go at present. Since we are utilizing the machinery of SGML
to implement this Standard, another committee could easily create such
a complete bibliographic element, and it could be readily included in
music documents. We in fact strongly urge the Library community to
initiate such a project.
<!-- 12 Bibliographic Data -->
<!ENTITY % e.bib "title | author | date | issuer | descript | copr">
<!-- Explanation of bibliographic elements:
title Title of work, performance, score, or analysis
author Work: composer, librettist, computer
Performance: performer, arranger
Score: editor, copyist, arranger
Analysis: theorist
issuer Access information: e.g., publisher, catalog number
date Date of work, performance, score, or analysis
copr Copyright notice
descript Miscellaneous descriptive data: e.g., performance time
-->
<!ENTITY % d.bib "<!ELEMENT (%e.bib;) - O (#PCDATA)>"> %d.bib;
<!ENTITY % m.bib "(%e.bib; | theme)*">
<!ELEMENT bibdata -- Bibliographic data applying to work as a whole --
- O %m.bib; >
12.1 Theme
The theme will contain references to the core which pinpoint key pas-
sages (or famous passages) for the purpose of identification of the
work. It will allow a cataloging application, for instance, to quickly
locate and then display or perform a well known section. This will
make it easy for the user to verify that the correct piece has been
retrieved.
<!-- 12.1 Theme -->
<!ENTITY % a.theme "">
<!ELEMENT theme -- Themes that best identify the work (e.g., incipit) --
- O EMPTY >
<!ATTLIST theme idr IDREFS #REQUIRED -- ID of analysis --
%a.theme; >
13 Conformance
The Standard will define several levels of conformance to allow
June 16, 1988
- 29 -
applications to implement subsets of the language. There will be a
canonical form and a "standard" level described.
NOTE: The issue of conformance will be developed further at a later
date.
June 16, 1988
- 30 -
Annex A
Formal Definition
(This annex is normative and will become an integral part of the Standard.)
This annex contains the formal definition of a work, expressed as an SGML
document type definition.
NOTES
Because the SMDL is still under development, the SGML document type defini-
tion (DTD) is presently incomplete in a number of respects. These are
listed below, and will be updated with the SGML Formal Definition.
1. Little detail is provided on the actual encoding of an instance of
a work. As we are first attempting to identify the potential events and to
define their properties (attributes), the DTD acts as though all events
will be encoded with start-tags and end-tags, with all properties specified
using the SGML attribute notation. The result is a lopsided definition in
which there is only structure and no actual data.
This convention is satisfactory (even advantageous) while we are designing
the structure and semantics of the SMDL. It allows relationships to be
seen easily and requirements to be evaluated, without the intrusion of cod-
ing considerations. Once the design is complete and we understand all of
the information that must be represented, we will create a concise coding
scheme to replace the lower levels of the structure. (In SGML, such a
scheme is known as a "data content notation".)
2. Most attributes have not yet been defined. As a result, many of
the ATTLIST declarations appear identical to one another. In such cases,
we expect that the lists will be differentiated by attributes that will be
defined later.
3. The lowest-level gestural, visual, and analytical event elements
(ge, ve, and ae) are temporary placeholders for lists of distinct element
types (for example, bar lines, clefs, etc.). Eventually, the entity refer-
ences to lists of the distinct types will be completed to replace these
element names. For now, only the lowest-level core events have been
defined.
Moreover, as we are first attempting to define those attributes which all
events have in common, a single ATTLIST is used in each domain. Eventu-
ally, each event may have its own ATTLIST declaration.
4. There are many elements that have common content models and, at
least for the moment, common attribute lists. As a matter of development
methodology, we felt it better to assume that elements that represent dif-
ferent semantic constructs (e.g., tracks and parts) are likely to have dif-
ferent attributes when the design is complete, even though they may have
identical structures. If the presumption proves incorrect in any instance,
we will of course remove the redundancy when finalizing the design, but
premature optimization might cause us to overlook vital differences.
June 16, 1988
- 31 -
5. For attributes that have been defined, particularly those whose
domain is a list of specific values, we have typically provided only a nom-
inal list of values. We expect that once the overall structure is firm,
experts will be able to contribute more complete lists. Such attribute
domains can also be made user-extensible if that is desirable.
<!-- Public document type definition for music representation.
Typical invocation:
<!DOCTYPE work PUBLIC "-//ANSI X3V1.8M//DTD Musical Work//EN">
NOTE: The section heading comments identify the corresponding clause
numbers in the body of this document.
-->
<!-- 7 Work as a Whole -->
<!ELEMENT work -- Musical composition, piece, etc. --
- - (bibdata?, workseg+, analysis*) >
<!ATTLIST work source -- Origin of this representation of the work --
(core | analysis | perform | score) #REQUIRED
companal -- Composer's analysis (may include core-like
controlling factors that distinguish the work)--
IDREF #IMPLIED -- ID of analysis --
rtubase -- Real Time Units per second (0=100,000,000) --
NUMBER 10000 >
<!-- 7.1 Work Segment -->
<!ELEMENT workseg -- Sequential segment of a work: movement, act, etc. --
O O ((workseg, (workseg | worksegr)+) |
(bibdata?, core, perform*, score*)) >
<!ATTLIST workseg id ID #IMPLIED
class -- E.g., movement, section, coda --
CDATA #IMPLIED -- don't care --
delay -- E.g., 15 minute intermission --
CDATA #IMPLIED -- don't care -- >
<!ELEMENT worksegr -- Work segment reference --
- O EMPTY >
<!ATTLIST worksegr idr IDREF #REQUIRED -- ID of any work segment -- >
<!-- 8 Core -->
<!ELEMENT core -- The essential music, common to all domains --
- O (stress*, temposeq+, thread+) >
<!ATTLIST core norm -- Is core timing normalized? (7.5) --
(norm | nonnorm) nonnorm >
June 16, 1988
- 32 -
<!-- 8.1 Thread -->
<!ELEMENT thread -- Voice-like time-ordered sequence of events --
- O (ces) >
<!ATTLIST thread id ID #IMPLIED
temposeq IDREF #IMPLIED
nominst CDATA #IMPLIED -- Nominal instrument --
-- TO DO: other attributes -- >
<!-- 8.1.1 Core Event Sequence -->
<!ENTITY % FRAC "NUMBERS" -- fraction: numerator, denominator? (=1) -- >
<!ENTITY % m.ces "(ces|ceg|note|rest|grcevent|special|cer)*" >
<!ELEMENT ces -- Core event sequence --
O O (chordnm?, %m.ces;) >
<!ATTLIST ces id ID #IMPLIED
factor -- ces beats / sum of subelement beats --
%FRAC "1 1"
stressid -- Beat cycle dynamic stress pattern --
IDREF #IMPLIED -- Default: no change --
stressbt -- Beat # of stress pattern on which ces begins --
NUMBER 1 -- Not 1 only if anacrusis --
ornstyle -- Ornamentation style: e.g., period --
CDATA #IMPLIED -- Default: no ornamentation -- >
<!-- 8.1.2 Core Event Group -->
<!ELEMENT ceg -- Core event group --
- - %m.ces; >
<!ATTLIST ceg id ID #IMPLIED
-- TO DO: other attributes -- >
<!-- 8.1.3.1 Notes and Rests -->
<!ELEMENT (note | rest)
-- Conventionally pitched time-stamped event --
- O EMPTY >
<!ATTLIST (note | rest)
id ID #IMPLIED
%a.ctime;
-- TO DO: other attributes -- >
June 16, 1988
- 33 -
<!-- 8.1.3.2 Graced Event -->
<!ELEMENT grcevent -- Graced core event --
- O ((grcpre, grcsubj) | (grcpre?, grcsubj, grcpost))>
<!ATTLIST grcevent id ID #IMPLIED >
<!ELEMENT (grcpre | grcpost)
-- Core event whose duration is not counted --
- O %m.ces; >
<!ATTLIST (grcpre | grcpost)
id ID #IMPLIED
-- Synchronization with subject:
start-time in the case of grcpre
end-time in the case of grcpref --
grcsync (lead | lag) lead >
<!ELEMENT grcsubj -- Grace sequence subject: that which is graced --
O O (note | rest | special | cer) >
<!-- 8.1.3.3 Special Events -->
<!ELEMENT special -- User-defined time-stamped event: content describes it --
- O (#PCDATA) >
<!ATTLIST special id ID #IMPLIED
%a.ctime;
-- TO DO: other attributes -- >
<!-- 8.1.4 Core Event Reference -->
<!ELEMENT cer -- Reference to core event, sequence, or group --
- O EMPTY >
<!ATTLIST cer idr IDREF #REQUIRED -- ID of ces|ceg|ce --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 8.1.5 Chord Name -->
<!ENTITY % d.chord "<!ELEMENT chordnm - O (#PCDATA)>"> %d.chord;
<!-- 8.2 Time -->
<!ENTITY % BEATS "%FRAC;" -- Measure of music time (fractional) -- >
<!ENTITY % a.ctime -- Core event time attributes (7.2) --
"musicdur %BEATS #CURRENT tie IDREF #IMPLIED" >
<!-- Explanation of core time attributes:
musicdur Duration of event in music time.
tie Succeeding event to which this one is tied (Default: not tied).-->
June 16, 1988
- 34 -
<!-- 8.3 Stress -->
<!ELEMENT stress -- Beat cycle definition; dynamic stress pattern --
- O (beatnum, stresses)+ >
<!ATTLIST stress id ID #IMPLIED
beatcnt NUMBER #REQUIRED -- Number of beats in cycle -->
<!ELEMENT beatnum -- Beat number receiving agogic or dynamic stresses --
O O (#PCDATA) >
<!ELEMENT stresses -- Stresses applied to specified beat --
O O (#PCDATA) >
<!-- 8.4 Tempo -->
<!ELEMENT temposeq -- Relates music time to real time (may be imprecise) --
- O (tempo+) >
<!ATTLIST temposeq id ID #IMPLIED >
<!ELEMENT tempo -- Real time units per beat --
- O (#PCDATA) >
<!ATTLIST tempo id ID #IMPLIED
musicdur -- Duration of tempo setting in music time --
%BEATS #CURRENT
setval -- Precise final tempo: RTUs/beat (integer #RTU)
or % of earlier tempo (%FRAC idref) --
CDATA #CURRENT
settext -- Imprecise final tempo: moderato --
CDATA #IMPLIED -- Default: use setval --
rateval -- Precise rate of reaching final tempo --
-- Format: (LINEAR | FORMULA data) --
CDATA #IMPLIED -- Default: immediate --
ratetext -- Imprecise rate specification: accel, ritard --
CDATA #IMPLIED -- Default: use rateval --
strict -- Strictness of interpretation: rubato --
CDATA #IMPLIED -- Default: strict tempo --
holdtype -- Imprecise extension of counted duration --
(fullstop|long|medium|short|none) none
holddur -- Precise duration of hold --
%BEATS #CURRENT >
<!-- 9 Gestural Domain -->
<!ELEMENT perform -- The gestures of a performance (MIDI) --
- O (bibdata?, clicktrk*, track+) >
<!ATTLIST perform id ID #IMPLIED
score IDREFS #IMPLIED
closure -- Are all core events referenced? --
(closed, open) open >
June 16, 1988
- 35 -
<!-- 9.1 Track -->
<!ELEMENT track -- One instrument's time-ordered sequence of gestures --
- O (ges) >
<!ATTLIST track id ID #IMPLIED
instrum CDATA #IMPLIED
clicktrk IDREF #IMPLIED
-- TO DO: other attributes -- >
<!-- 9.1.1 Gestural Event Sequence -->
<!ENTITY % e.ge "ge" -- TO DO: replace with real element types -- >
<!ENTITY % m.ges "(ges | geg | %e.ge; | ger | gcer)*" >
<!ELEMENT ges -- Gestural event sequence (has core references) --
O O %m.ges; >
<!ATTLIST ges id ID #IMPLIED
-- TO DO: other attributes -- >
<!-- 9.1.2 Gestural Event Group -->
<!ELEMENT geg -- Gestural event group (has core references) --
- - %m.ges; >
<!ATTLIST geg id ID #IMPLIED
-- TO DO: other attributes -- >
<!-- 9.1.3 Gestural Event -->
<!ENTITY % SECONDS "NUMBERS" -- Format: (seconds?, Real Time Units) -- >
<!ELEMENT (%e.ge;) -- Gestural event: e.g., controller setting, ad lib note --
- O EMPTY >
<!ATTLIST ge id ID #IMPLIED
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
-- TO DO: other attributes -- >
<!-- 9.1.4.1 Gestural Domain Reference to Gestural Event -->
<!ELEMENT ger -- Gestural event reference (includes geg|ges) --
- O EMPTY >
<!ATTLIST ger idr IDREF #REQUIRED -- ges|ge|geg same perform --
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
June 16, 1988
- 36 -
<!-- 9.1.4.2 Gestural Domain References to Core Events -->
<!ELEMENT gcer -- Gestural domain core event reference --
- O EMPTY >
<!ATTLIST gcer idr IDREF #REQUIRED -- ces|ce|ceg in core --
start -- Start time (Default: derived from core) --
%SECONDS #IMPLIED
duration -- (Default: derived from core) --
%SECONDS #IMPLIED
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 9.2 Click Track -->
<!ELEMENT clicktrk -- Click track: ordered table of event start-times --
- O (#PCDATA) >
<!ATTLIST clicktrk id ID #IMPLIED -- Default: generated --
nextbeat -- Track and time of next beat --
NMTOKENS #IMPLIED >
<!-- 10 Visual Domain -->
<!ELEMENT score -- Visual representation of work (a la DARMS, MUSTRAN...) --
- O (bibdata?, part+) >
<!ATTLIST score id ID #IMPLIED
perform IDREFS #IMPLIED
closure -- Are all core events referenced? --
(closed, open) open >
<!-- 10.1 Part -->
<!ELEMENT part -- One instrument's portion of the system --
- O (ves) >
<!ATTLIST part id ID #IMPLIED
clef NAMES "treble bass"
-- TO DO: other attributes -- >
<!-- 10.1.1 Visual Event Sequence -->
<!ENTITY % e.ve "ve" -- TO DO: replace with real element types -- >
<!ENTITY % m.ves "(ves | veg | %e.ve; | ver | vcer)*" >
<!ELEMENT ves -- Visual event sequence (has core references) --
O O %m.ves; >
<!ATTLIST ves id ID #IMPLIED
tuplet -- Triplet (etc.) indicator for sequence --
CDATA #IMPLIED -- Not a tuplet --
cue IDREF #IMPLIED -- ID of ves --
tsinst NUMBERS #IMPLIED -- Time sig for instrument --
tscond NUMBERS #IMPLIED -- Time sig for conductor --
-- TO DO: other attributes -- >
June 16, 1988
- 37 -
<!-- 10.1.2 Visual Event Group -->
<!ELEMENT veg -- Visual event group (has core references) --
- - %m.ves; >
<!ATTLIST veg id ID #IMPLIED
-- TO DO: other attributes -- >
<!-- 10.1.3 Visual Event -->
<!ELEMENT (%e.ve;) -- Visual event: e.g., phrase mark, bar line --
- O EMPTY >
<!ATTLIST (%e.ve;) id ID #IMPLIED
-- TO DO: other attributes -- >
<!-- 10.1.4.1 Visual Domain Reference to Visual Event -->
<!ELEMENT ver -- Visual event reference (includes veg|ves) --
- O EMPTY >
<!ATTLIST ver idr IDREF #REQUIRED -- ves|ve|geg same score --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 10.1.4.2 Visual Domain Reference to Core Event -->
<!ELEMENT vcer -- Visual domain core event reference --
- O EMPTY >
<!ATTLIST vcer idr IDREF #REQUIRED -- ces|ce|ceg in core --
shift NUTOKEN 0 -- Transposition in steps --
-- TO DO: other event modifier attributes -- >
<!-- 11 Analytical Domain -->
<!ELEMENT analysis -- An analysis of a work --
- O (bibdata?, voice+) >
<!ENTITY % a.anal
"core IDREFS #IMPLIED perform IDREFS #IMPLIED score IDREFS #IMPLIED" >
<!ATTLIST analysis id ID #IMPLIED
%a.anal; >
<!-- 11.1 Voice -->
<!ELEMENT voice -- A single melody line (possibly polyphonic) --
- O (aes) >
<!ENTITY % a.voice "" >
<!ATTLIST voice id ID #IMPLIED
%a.voice; >
June 16, 1988
- 38 -
<!-- 11.1.1 Analytical Event Sequence -->
<!ENTITY % e.ae "ae" -- TO DO: replace with real element types -- >
<!ENTITY % m.aes "(aes | aeg | %e.ae; | aer | ver | ger | cer)*" >
<!ELEMENT aes -- Analytical event sequence (multi-domain refs) --
O O %m.aes; >
<!ENTITY % a.aes "class (motif | epmotif | esmotif | elision) motif" >
<!ATTLIST aes id ID #IMPLIED
%a.aes; >
<!-- 11.1.2 Analytical Event Group -->
<!ELEMENT aeg -- Analytical event group (multi-domain refs) --
- - %m.aes; >
<!ENTITY % a.ae "" >
<!ATTLIST aeg id ID #IMPLIED
%a.ae; >
<!-- 11.1.3 Analytical Event -->
<!ENTITY % m.ae "(%e.ae;|%e.ge;|%e.ve;)*" >
<!ELEMENT (%e.ae;) -- Analytical event --
- O %m.ae; >
<!ATTLIST (%e.ae;) id ID #IMPLIED
%a.ae; >
<!-- 11.1.4 References -->
<!ELEMENT aer -- Analytical event sequence reference --
- O EMPTY >
<!ENTITY % a.aer "" >
<!ATTLIST aer idr IDREF #REQUIRED -- ID of aes --
%a.aer; >
<!-- 12 Bibliographic Data -->
<!ENTITY % e.bib "title | author | date | issuer | descript | copr">
<!-- Explanation of bibliographic elements:
title Title of work, performance, score, or analysis
author Work: composer, librettist, computer
Performance: performer, arranger
Score: editor, copyist, arranger
Analysis: theorist
issuer Access information: e.g., publisher, catalog number
date Date of work, performance, score, or analysis
copr Copyright notice
descript Miscellaneous descriptive data: e.g., performance time -->
<!ENTITY % d.bib "<!ELEMENT (%e.bib;) - O (#PCDATA)>"> %d.bib;
<!ENTITY % m.bib "(%e.bib; | theme)*">
<!ELEMENT bibdata -- Bibliographic data applying to work as a whole --
- O %m.bib; >
June 16, 1988
- 39 -
<!-- 12.1 Theme -->
<!ENTITY % a.theme "">
<!ELEMENT theme -- Themes that best identify the work (e.g., incipit) --
- O EMPTY >
<!ATTLIST theme idr IDREFS #REQUIRED -- ID of analysis --
%a.theme; >
June 16, 1988
- 40 -
Annex B
Theory of Use
(This annex is informative and will not form an integral part of the Stan-
dard.)
As a language, the Standard can be put to a wide variety of uses ranging
>from the highly appropriate to the completely pathological. It was, how-
ever, designed with a particular set of applications in mind, and will be
most effective if used for these. Knowing the design assumptions will also
facilitate application of the Standard to unforeseen or unusual situations.
It is hoped that this annex will answer many of the questions that will
arise concerning applicability.
NOTE: This section will be developed further at a later date.
B.1 General Application
In general, the Standard is intended as a storage and interchange for-
mat for musical ideas. It is designed to be somewhat human readable so
that a piece could theoretically be created by using a word processor
and entering the encoded material directly. However, it is expected
that it will be used mainly for automated processing in such areas as
music printing, library cataloging and storage, multimedia presenta-
tions, teaching, and research. For other situations, such as live per-
formance or sound recording, other formats are likely to be more
applicable.
A piece to be represented can originate from almost any source. An
automated composition program might generate a core and an associated
gestural section. An interactive music printing system might generate
a core and a visual section. A sequencer might capture a live perfor-
mance and transcribe it into a core and performance section, and then
turn the piece over to a music printing system for the creation of the
visual and analytical sections. There is much flexibility in the way
the Standard can be used and the situations to which it can be
applied. The only common element is the core, the others need not even
be present.
The gestural section is designed to be used for the representation of
computer instrument sequences. This does not mean that it is a
sequencer format for internal use by sequencers. In fact it would be
poorly suited for that application. It is for archiving and transport-
ing music that has been, or will be, processed in some way by a com-
puter system. A performance may be captured on a synthesizer, it may
be interpreted from a MIDI stream, or it may be translated from
another language, such as a MIDI sequence file format or MUSIC V. A
sequencer might read a piece in the Standard, translate it into an
internal data format, and then realize it in real time.
The visual section will be used for representing scores of all kinds.
The score may have an accompanying performance or it may not. The
score may be entered or captured using a music printing system, or it
June 16, 1988
- 41 -
may be translated from DARMS or MUSTRAN. It might be retrieved as a
display on a screen, a printed page, or translated into another
language. Most importantly it will allow systems of all kinds to
interchange scores easily and accurately.
The analytical section will be used to represent theoretical ideas in
a structural format. Any sort of layering and grouping will be possi-
ble, so various styles of analysis will be supported. A given piece
may have several analyses (i.e. one Shenkerian, one classical), which
could even refer to each other. An analysis of a piece with a circular
score could refer to the score and the performance in an attempt to
relate the music to the shape of the score to the vertiginous effect
on the performer.
June 16, 1988
- 42 -
Annex C
Explanation of Editorial Conventions
(This annex is informative and will not form an integral part of the Stan-
dard.) This document observes some of the editorial conventions of a for-
mal standard, but not yet with the strictness and consistency that will be
required in the final document. Those conventions that are observed in this
revision are listed.
C.1 Definitions
Definitions are contained in a separate clause. Ours is presently
incomplete and will probably remain that way for a while. Also, some
of the definitions in it are not as precise as they should be. When
the clause is complete, the definitions will refer to one another in a
top-down hierarchical order, without tautologies, and will define each
term fully.
C.2 Structure
Part Two is structured like a standard in that it observes the follow-
ing conventions:
Clause 0 is an informative introduction (that is, it does not
contain requirements.)
Clause 1 states what the standard includes, and its expected
uses.
Clause 3 contains references to related standards.
Clause 4 contains the definitions.
Clause 5 describes the notational conventions used in the remain-
ing clauses.
The clauses from 6 until the end contain the actual requirements.
There are also annexes (appendixes) containing information that was
segregated from the body of the standard for convenience.
C.3 Segregation
Requirements are distinguished from definitions, examples, and expla-
natory notes and comments.
Anything identified as a "NOTE" is there to aid in understanding the
standard, but does not change the requirements. At present, we also
use notes to discuss matters relating to the development of the stan-
dard.
June 16, 1988
- 43 -
Annexes are designated either "normative" or "informative". The former
contain requirements and have the same force and effect as if they
were in the body of the standard. The latter are extended notes or
tutorial information.
C.4 Language
Some words have formal implications that may differ from casual usage.
Those that are used in this document are as follows:
C.4.1deprecated: Technically allowed, but only in rare situations
a sensible thing to do. The opposite of "should".
C.4.2must: Required by the language; unavoidable.
C.4.3shall: Required by definition. (But not necessarily unavoid-
able syntactically or semantically in the language.)
C.4.4should: Recommended, but not mandatory. The opposite of
"deprecated." (Within a requirement, it is used in place of
"shall" where there is some rare situation in which it wouldn't
work or where it was too burdensome to check for compliance.)
June 16, 1988
- 44 -
Annex D
Guide to SGML Notation
(This annex is informative and will not form an integral part of the Stan-
dard.)
For those unfamiliar with SGML, the following brief explanation will assist
in understanding the code that appears in this document. For a more in-
depth explanation, the ISO standard (ISO 8879-1986) is the definitive
tutorial and reference on the subject.
NOTE: This description is currently "brief" to the point of opacity. We
plan to expand this section at a later date.
D.1 Structure
SGML consists of three basic structural components. It is the usual
intent that these structures will contain data, but in our application
there is only structure for the moment. Elements are structural build-
ing blocks which can be defined to contain data or other elements. An
attribute list is associated with an element and contains values which
describe the element. Entities are a structural tool which allow por-
tions of code to be referenced by a label from one or more places in
the code.
D.2 Punctuation
There are several punctuation marks that are important. Declarations
(definitions) are surrounded by <! ... > and comments to the reader
are surrounded by -- ... --. For the purposes of this document, the
marks - - and -O can be ignored. In each declaration, the following
marks may occur: , this followed by the next, & this and the next, |
this or the next, ? optional, + one or more, * zero or more.
June 16, 1988
- 45 -
Annex E
Status Report
(This annex is informative and will not form an integral part of the Stan-
dard.)
In the first meetings, the committee concentrated on the overall structure
of the SMDL. Many issues were touched upon to ensure that the basic design
would be flexible and powerful enough to handle the wide range of material
demanded by the requirements specification.
More recently, the concentration has focused on the core and related
issues, as this seemed the logical starting place. Subsequent work will
have to build from a basically finished core section. As of the most recent
meeting (February 1 - 4, 1988) we have developed the core substantially,
although some work remains. We expect to finish this section at the next
meeting, and proceed to the gestural and visual sections. It is assumed
that further revisions of the core will be necessary after development of
the other sections.
Because the work has focused on a particular area, the preceding document
is uneven. Some areas have been discused down to minute detail, and some
are as yet merely suggestions of the direction in which to proceed. In par-
ticular the core section is considerably fleshed out, but the others are
unfinished. As the meetings continue, we expect this document (parts 1 and
2) to grow into a Draft Standard which will be complete in all areas.
%%% 30 %%%
June 16, 1988