![]() |
![]() |
|
MusicXML 1.0 Common DTD Module<!--
MusicXML common.dtd
Version 1.0 - 13 January 2004
Copyright © 2004 Recordare LLC.
http://www.recordare.com/
This MusicXML work is being provided by the copyright
holder under the MusicXML Document Type Definition
Public License Version 1.02, available from:
http://www.recordare.com/dtds/license.html
-->
<!--
This file contains entities and elements that are common
across multiple component DTDs. In particular, several
elements here are common across both notes and measures.
-->
<!-- Entities -->
<!--
If greater ASCII compatibility is desired, entity
references may be used instead of the direct Unicode
characters. Currently we include ISO Latin-1 for Western
European characters and ISO Latin-2 for Central European
characters.
-->
<!ENTITY % ISOlat1 PUBLIC
"ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
"ISOlat1.pen">
%ISOlat1;
<!ENTITY % ISOlat2 PUBLIC
"ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
"ISOlat2.pen">
%ISOlat2;
<!--
Data types. These nearly all resolve to strings but
show intent for how data is formatted and used.
-->
<!--
Calendar dates are represented yyyy-mm-dd format,
following ISO 8601.
-->
<!ENTITY % yyyy-mm-dd "(#PCDATA)">
<!--
Number representing tenths of interline space (positive
or negative) for use in attributes. Both integer and
decimal values are allowed, such as 5 for a half space
and 2.5 for a quarter space.
-->
<!ENTITY % tenths "CDATA">
<!--
Common structures between element and attribute definitions.
-->
<!--
Two entities for editorial information in notes. These
entities, and their elements defined below, are used
across all the different component DTDs.
-->
<!ENTITY % editorial "(footnote?, level?)">
<!ENTITY % editorial-voice "(footnote?, level?, voice?)">
<!--
The start-stop and start-stop-continue entities are used
for musical elements that can either start or stop, such
as slurs, tuplets, and wedges. The start-stop-continue
entity is used when there is a need to refer to an
intermediate point in the symbol, as for complex slurs.
-->
<!ENTITY % start-stop "(start | stop)">
<!ENTITY % start-stop-continue "(start | stop | continue)">
<!--
The yes-no entity is used for boolean-like attributes.
-->
<!ENTITY % yes-no "(yes | no)">
<!--
The symbol-size entity is used to indicate full vs.
cue-sized symbols.
-->
<!ENTITY % symbol-size "(full | cue)">
<!--
The up-down entity is used for arrow direction,
indicating which way the tip is pointing.
-->
<!ENTITY % up-down "(up | down)">
<!--
The top-bottom entity is used to indicate the top or
bottom part of a vertical shape like non-arpeggiate.
-->
<!ENTITY % top-bottom "(top | bottom)">
<!--
The position attributes are based on MuseData print
suggestions. For most elements, any program will compute
a default x and y position. The position attribute lets
this be changed two ways. The default-x and default-y
attributes change the computation of the default
position. The origin becomes the left-hand side of
the note or the musical position within the bar (x)
and the top line of the staff (y). The relative-x and
relative-y attributes change the position relative to
the default position, either as computed by the
individual program, or as overridden by the default-x
and default-y attributes.
Positive x is right, negative x is left; positive y
is up, negative y is down. All units are in tenths of
interline space. Positions can be applied to notes,
notations, directions, and stems. For stems, positive y
lengthens a stem while negative y shortens it. Negative
values for default-y are not allowed.
-->
<!ENTITY % position
"default-x %tenths; #IMPLIED
default-y %tenths; #IMPLIED
relative-x %tenths; #IMPLIED
relative-y %tenths; #IMPLIED">
<!--
The placement attribute indicates whether something is
above or below another element, such as a note or a
notation.
-->
<!ENTITY % placement
"placement (above | below) #IMPLIED">
<!--
The orientation attribute indicates whether slurs and
ties are overhand (tips down) or underhand (tips up).
This is distinct from the placement entity used by any
notation type.
-->
<!ENTITY % orientation
"orientation (over | under) #IMPLIED">
<!--
The bezier entity is used to indicate the curvature of
slurs. Normal slurs and S-shaped slurs need only two
bezier points: one associated with the start of the
slur, the other with the stop. Complex slurs and slurs
divided over system breaks can specify bezier data at
slur elements with a continue type.
The bezier-offset, bezier-x, and bezier-y attributes
describe the outgoing bezier point for slurs with
a start type, and the incoming bezier point for
slurs with types of continue or stop. The attributes
bezier-offset2, bezier-x2, and bezier-y2 are only
valid with slurs of type continue, and describe the
outgoing bezier point.
The bezier-offset and bezier-offset2 attributes are
measured in terms of musical divisions, like the offset
element. These are the recommended attributes for
specifying horizontal position. The other attributes
are specified in tenths, relative to any position
settings associated with the slur element.
-->
<!ENTITY % bezier
"bezier-offset CDATA #IMPLIED
bezier-offset2 CDATA #IMPLIED
bezier-x %tenths; #IMPLIED
bezier-y %tenths; #IMPLIED
bezier-x2 %tenths; #IMPLIED
bezier-y2 %tenths; #IMPLIED">
<!--
Slurs, tuplets, and many other features can be
concurrent and overlapping within a single musical
part. The number-level attribute distinguishes up to
six concurrent objects of the same type. A reading
program should be prepared to handle cases where
the number-levels stop in an arbitrary order.
Different numbers are needed when the features
overlap in MusicXML file order.
-->
<!ENTITY % number-level "(1 | 2 | 3 | 4 | 5 | 6)">
<!--
MusicXML supports six levels of beaming, up to 256th
notes. Unlike the number-level attribute, the beam-level
identifies concurrent beams in a beam group. It does not
distinguish overlapping beams such as grace notes within
regular notes, or beams used in different voices.
-->
<!ENTITY % beam-level "(1 | 2 | 3 | 4 | 5 | 6)">
<!--
The font entity gathers together attributes for
determining the font within a directive or direction.
They are based on the text styles for Cascading
Style Sheets. The font-family can be music, serif,
or sans-serif. The font-style can be normal or italic.
The font-size can be one of the CSS sizes (xx-small,
x-small, small, medium, large, x-large, xx-large) or
a numeric point size. The font-weight can be normal
or bold. The default is the application-dependent,
but is a text font vs. a music font.
-->
<!ENTITY % font
"font-family CDATA #IMPLIED
font-style CDATA #IMPLIED
font-size CDATA #IMPLIED
font-weight CDATA #IMPLIED">
<!--
The line-shape entity is used to distinguish between
straight and curved lines. The line-type entity
distinguishes between solid, dashed, dotted, and
wavy lines.
-->
<!ENTITY % line-shape
"line-shape (straight | curved) #IMPLIED">
<!ENTITY % line-type
"line-type (solid | dashed | dotted | wavy) #IMPLIED">
<!--
The printout entity is based on MuseData print
suggestions. They allow a way to specify not to print
print an object (e.g. note or rest) or its augmentation
dots. This is especially useful for notes that overlap
in different voices. By default, all these attributes
are set to yes. For wholly invisible notes, such as
those providing sound-only data, the attribute for
print-spacing may be set to no so that no space is
left for this note. The print-spacing value is only
used if both print-object and print-dot are no.
-->
<!ENTITY % printout
"print-object %yes-no; #IMPLIED
print-dot %yes-no; #IMPLIED
print-spacing %yes-no; #IMPLIED">
<!--
The trill-sound entity includes attributes used to guide
the sound of trills, mordents, turns, shakes, and wavy
lines, based on MuseData sound suggestions. The default
choices are:
start-note = "upper"
trill-step = "whole"
two-note-turn = "none"
accelerate = "no"
beats = "4" (minimum of "2").
Second-beat and last-beat are percentages for landing
on the indicated beat, with defaults of 25 and 75
respectively.
For mordent and inverted-mordent elements, the defaults
are different:
The default start-note is "main", not "upper".
The default for beats is "3", not "4".
The default for second-beat is "12", not "25".
The default for last-beat is "24", not "75".
-->
<!ENTITY % trill-sound
"start-note (upper | main | below) #IMPLIED
trill-step (whole | half | unison) #IMPLIED
two-note-turn (whole | half | none) #IMPLIED
accelerate %yes-no; #IMPLIED
beats CDATA #IMPLIED
second-beat CDATA #IMPLIED
last-beat CDATA #IMPLIED">
<!--
The bend-sound entity is used for bend and slide
elements, and is similar to the trill-sound. Here the
beats element refers to the number of discrete elements
(like MIDI pitch bends) used to represent a continuous
bend or slide. The first-beat indicates the percentage
of the direction for starting a bend; the last-beat the
percentage for ending it. The default choices are:
accelerate = "no"
beats = "4" (minimum of "2")
first-beat = "25"
last-beat = "75"
-->
<!ENTITY % bend-sound
"accelerate %yes-no; #IMPLIED
beats CDATA #IMPLIED
first-beat CDATA #IMPLIED
last-beat CDATA #IMPLIED">
<!-- Elements -->
<!--
Footnote and level are used to specify editorial
information, while voice is used to distinguish
between multiple voices (what MuseData calls tracks)
in individual parts. These elements are used
throughout the component MusicXML DTDs. The attributes
allow specification of three common ways to indicate
the editorial difference: putting parentheses or
square brackets around a symbol, or making the symbol
cue-size vs. full-size. If not specified, they are
left to application defaults.
-->
<!ELEMENT footnote (#PCDATA)>
<!ELEMENT level (#PCDATA)>
<!ATTLIST level
parentheses %yes-no; #IMPLIED
bracket %yes-no; #IMPLIED
size %symbol-size; #IMPLIED
>
<!ELEMENT voice (#PCDATA)>
<!--
Fermata and wavy-line elements can be applied both to
notes and to measures, so they are defined here. Wavy
lines are one way to indicate trills; when used with a
measure element, they should always have type="continue"
set. The fermata type is upright if not specified.
-->
<!ELEMENT fermata EMPTY>
<!ATTLIST fermata
type (upright | inverted) #IMPLIED
%position;
>
<!ELEMENT wavy-line EMPTY>
<!ATTLIST wavy-line
type %start-stop-continue; #REQUIRED
number %beam-level; #IMPLIED
%position;
%placement;
%trill-sound;
>
<!--
Staff assignment is only needed for music notated on the
multiple staves. Used by both notes and directions.
-->
<!ELEMENT staff (#PCDATA)>
<!--
Segno and coda signs can be associated with a measure
or a general musical direction. These are visual
indicators only; a sound element is needed to guide
playback applications reliably.
-->
<!ELEMENT segno EMPTY>
<!ATTLIST segno
%position;
>
<!ELEMENT coda EMPTY>
<!ATTLIST coda
%position;
>
<!--
Dynamics can be associated either with a note or a
general musical direction. To avoid inconsistencies
between and amongst the letter abbreviations for
dynamics (what is sf vs. sfz, standing alone or with a
trailing dynamic that is not always piano), we use the
actual letters as the names of these dynamic elements.
The element other-dynamics allows other dynamic marks
that are not covered here, but many of those should
perhaps be included in a more general musical
direction element. Dynamics may also be combined as
in <sf/><mp/>.
Currently these letter dynamic symbols are separated from
crescendo, decrescrendo, and wedge indications. Dynamic
representation is basically inconsistent in scores
(lots of things are assumed by the composer and left out,
such as returns to original dynamics), and is quite
complex to do systematically. Humdrum for instance has
at least 3 representation formats related to dynamics.
MusicXML captures what is in the score, but does not try
to be optimal for analysis or synthesis of dynamics.
-->
<!ELEMENT dynamics ((p | pp | ppp | pppp | ppppp | pppppp |
f | ff | fff | ffff | fffff | ffffff | mp | mf | sf |
sfp | sfpp | fp | rf | rfz | sfz | sffz | fz |
other-dynamics)*)>
<!ATTLIST dynamics
%position;
%placement;
%font;
>
<!ELEMENT p EMPTY>
<!ELEMENT pp EMPTY>
<!ELEMENT ppp EMPTY>
<!ELEMENT pppp EMPTY>
<!ELEMENT ppppp EMPTY>
<!ELEMENT pppppp EMPTY>
<!ELEMENT f EMPTY>
<!ELEMENT ff EMPTY>
<!ELEMENT fff EMPTY>
<!ELEMENT ffff EMPTY>
<!ELEMENT fffff EMPTY>
<!ELEMENT ffffff EMPTY>
<!ELEMENT mp EMPTY>
<!ELEMENT mf EMPTY>
<!ELEMENT sf EMPTY>
<!ELEMENT sfp EMPTY>
<!ELEMENT sfpp EMPTY>
<!ELEMENT fp EMPTY>
<!ELEMENT rf EMPTY>
<!ELEMENT rfz EMPTY>
<!ELEMENT sfz EMPTY>
<!ELEMENT sffz EMPTY>
<!ELEMENT fz EMPTY>
<!ELEMENT other-dynamics (#PCDATA)>
<!--
The fret, string, and fingering elements can be
used either in a technical element for a note
or in a frame element as part of a chord symbol.
-->
<!--
Fingering is typically indicated 1,2,3,4,5. Multiple
fingerings may be given, typically to substitute
fingerings in the middle of a note. The substitution
and alternate values are "no" if the attribute is
not present.
-->
<!ELEMENT fingering (#PCDATA)>
<!ATTLIST fingering
substitution (yes | no) #IMPLIED
alternate (yes | no) #IMPLIED
%position;
%placement;
%font;
>
<!--
Fret and string are used with tablature notation
and chord symbols. Fret numbers start with 0 for
an open string and 1 for the first fret. String
numbers start with 1 for the highest string.
-->
<!ELEMENT fret (#PCDATA)>
<!ELEMENT string (#PCDATA)>
<!--
The midi-instrument element can be a part of either
the score-instrument element at the start of a part,
or the sound element within a part. The id attribute
refers to the score-instrument affected by the change.
-->
<!ELEMENT midi-instrument
(midi-channel?, midi-name?, midi-bank?, midi-program?,
midi-unpitched?)>
<!ATTLIST midi-instrument
id IDREF #REQUIRED
>
<!-- MIDI channel numbers range from 1 to 16. -->
<!ELEMENT midi-channel (#PCDATA)>
<!--
MIDI names correspond to ProgramName meta-events within
a Standard MIDI File.
-->
<!ELEMENT midi-name (#PCDATA)>
<!-- MIDI bank numbers range from 1 to 16,384. -->
<!ELEMENT midi-bank (#PCDATA)>
<!-- MIDI program numbers range from 1 to 128. -->
<!ELEMENT midi-program (#PCDATA)>
<!--
For unpitched instruments, specify a MIDI note number
ranging from 1 to 128. Usually used with MIDI banks
for percussion.
-->
<!ELEMENT midi-unpitched (#PCDATA)>
Home - Music - Software - MusicXML - DTD Index - Events - Search - Store - About Us Copyright © 2004 Recordare LLC. Last updated January 13, 2004. |
||