VocalEasel/musicxml11/common.dtd
2011-09-02 02:45:26 +02:00

645 lines
20 KiB
DTD
Executable File

<!--
MusicXML common.dtd
Version 1.1 - 20 May 2005
Copyright © 2004-2005 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)">
<!--
The tenths entity is a number representing tenths of
interline space (positive or negative) for use in
attributes. The layout-tenths entity is the same for
use in elements. Both integer and decimal values are
allowed, such as 5 for a half space and 2.5 for a
quarter space.
-->
<!ENTITY % tenths "CDATA">
<!ENTITY % layout-tenths "(#PCDATA)">
<!--
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 vs. oversized symbols. The large value
for oversized symbols was added in version 1.1.
-->
<!ENTITY % symbol-size "(full | cue | large)">
<!--
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 attributes let
this be changed two ways.
The default-x and default-y attributes change the
computation of the default position. For most elements,
the origin is changed relative to the left-hand side of
the note or the musical position within the bar (x) and
the top line of the staff (y).
For the following elements, the default-x value changes
the origin relative to the start of the current measure:
- note
- figured-bass
- harmony
- link
- directive
- all descendants of the part-list element
- all children of the direction-type element
For the note, figured-bass, and harmony elements, the
default-x value is considered to have adjusted the
musical position within the bar for its descendant
elements.
Since the <credit-words> element is not related to a
measure, in this case the default-x and default-y
attributes adjust the origin relative to the bottom
left-hand corner of the first page.
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. For stems, positive relative-y
lengthens a stem while negative relative-y shortens it.
As elsewhere in MusicXML, tenths are the global tenths
defined by the <scaling> element, not the local tenths
of a staff resized by the <staff-size> element.
-->
<!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 and ties, representing the control points for a
cubic bezier curve. For ties, the bezier entity is
used with the tied element.
Normal slurs, S-shaped slurs, and ties need only two
bezier points: one associated with the start of the slur
or tie, the other with the stop. Complex slurs and slurs
divided over system breaks can specify additional
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 and ties
with a start type, and the incoming bezier point for
slurs and ties with types of stop or continue. 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 or tied 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 is a comma-separated list
of font names. These can be specific font styles such
as Maestro or Opus, or one of three generic font styles:
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 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 color entity indicates the color of an element.
Color may be represented as hexadecimal RGB triples,
as in HTML, or as hexadecimal ARGB tuples, with the
A indicating alpha of transparency. An alpha value
of 00 is totally transparent; FF is totally opaque.
If RGB is used, the A value is assumed to be FF.
For instance, the RGB value "#800080" represents
purple. An ARGB value of "#40800080" would be a
transparent purple.
As in SVG 1.1, colors are defined in terms of the
sRGB color space (IEC 61966).
-->
<!ENTITY % color
"color CDATA #IMPLIED">
<!--
The justify entity is used to indicate left, center,
or right justification. The default value varies for
different elements.
-->
<!ENTITY % justify
"justify (left | center | right) #IMPLIED">
<!--
In cases where text extends over more than one line,
horizontal alignment and justify values can be
different. The most typical case is for credits,
such as:
Words and music by
Pat Songwriter
Typically this type of credit is aligned to the right,
so that the position information refers to the right-
most part of the text. But in this example, the text
is center-justified, not right-justified.
The halign attribute is used in these situations. If it
is not present, its value is the same as for the justify
attribute.
-->
<!ENTITY % halign
"halign (left | center | right) #IMPLIED">
<!--
The valign entity is used to indicate vertical
alignment to the top, middle, bottom, or baseline
of the text. Defaults are implementation-dependent.
-->
<!ENTITY % valign
"valign (top | middle | bottom | baseline) #IMPLIED">
<!--
The most popular combination of printing attributes
is position, font, and color.
-->
<!ENTITY % print-style
"%position;
%font;
%color;">
<!--
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), its augmentation
dots, or its lyrics. This is especially useful for notes
that overlap in different voices, or for chord sheets
that contain lyrics and chords but no melody. 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 no note, dot, or lyric is being printed.
By default, all these attributes are set to yes. If
print-object is set to no, print-dot and print-lyric are
interpreted to also be set to no if they are not present.
-->
<!ENTITY % print-object
"print-object %yes-no; #IMPLIED">
<!ENTITY % print-spacing
"print-spacing %yes-no; #IMPLIED">
<!ENTITY % printout
"%print-object;
print-dot %yes-no; #IMPLIED
%print-spacing;
print-lyric %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">
<!--
The level-display entity allows specification of
three common ways to indicate editorial indications:
putting parentheses or square brackets around a
symbol, or making the symbol a different size. If
not specified, they are left to application defaults.
It is used by the level and accidental elements.
-->
<!ENTITY % level-display
"parentheses %yes-no; #IMPLIED
bracket %yes-no; #IMPLIED
size %symbol-size; #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. If the
reference attribute for the level element is yes,
this indicates editorial information that is for
display only and should not affect playback. For
instance, a modern edition of older music may set
reference="yes" on the attributes containing the
music's original clef, key, and time signature.
It is no by default.
-->
<!ELEMENT footnote (#PCDATA)>
<!ATTLIST footnote
%justify;
%halign;
%valign;
%print-style;
>
<!ELEMENT level (#PCDATA)>
<!ATTLIST level
reference %yes-no; #IMPLIED
%level-display;
>
<!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
%print-style;
>
<!ELEMENT wavy-line EMPTY>
<!ATTLIST wavy-line
type %start-stop-continue; #REQUIRED
number %beam-level; #IMPLIED
%position;
%placement;
%color;
%trill-sound;
>
<!--
Staff assignment is only needed for music notated on
multiple staves. Used by both notes and directions.
Staff values are numbers, with 1 referring to the
top-most staff in a part.
-->
<!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
%print-style;
>
<!ELEMENT coda EMPTY>
<!ATTLIST coda
%print-style;
>
<!--
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/>.
These letter dynamic symbols are separated from
crescendo, decrescendo, 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
%print-style;
%placement;
>
<!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. For guitar and other fretted instruments,
the fingering element represents the fretting finger;
the pluck element represents the plucking finger.
-->
<!ELEMENT fingering (#PCDATA)>
<!ATTLIST fingering
substitution %yes-no; #IMPLIED
alternate %yes-no; #IMPLIED
%print-style;
%placement;
>
<!--
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.
String can also be used in regular notation.
-->
<!ELEMENT fret (#PCDATA)>
<!ATTLIST fret
%font;
%color;
>
<!ELEMENT string (#PCDATA)>
<!ATTLIST string
%print-style;
%placement;
>
<!--
The tuning-step, tuning-alter, and tuning-octave
elements are represented like the step, alter, and
octave elements, with different names to reflect their
different function. They are used in the staff-tuning
and accord elements.
-->
<!ELEMENT tuning-step (#PCDATA)>
<!ELEMENT tuning-alter (#PCDATA)>
<!ELEMENT tuning-octave (#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)>