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

617 lines
20 KiB
DTD
Executable File

<!--
MusicXML direction.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 direction component DTD contains the direction
element and its children. Directions are not note-
specific, and therefore might attach to a part or the
overall score. Hence its separate location in this DTD
to allow multiple compositions of these basic elements.
Harmony indications and general print and sound
suggestions are likewise not necessarily attached to
particular note elements, and are included here as well.
-->
<!-- Elements -->
<!--
A direction is a musical indication that is not attached
to a specific note. Two or more may be combined to
indicate starts and stops of wedges, dashes, etc.
-->
<!ELEMENT direction (direction-type+, offset?,
%editorial-voice;, staff?, sound?)>
<!ATTLIST direction
%placement;
>
<!--
Textual direction types may have more than 1 component
due to multiple font numbers.
-->
<!ELEMENT direction-type (rehearsal+ | segno+ | words+ |
coda+ | wedge | dynamics+ | dashes | bracket | pedal |
metronome | octave-shift | harp-pedals | damp |
damp-all | eyeglasses | scordatura | other-direction)>
<!--
Print style entities apply to the individual
direction-type, not to the overall direction.
-->
<!--
Language is Italian ("it") by default. Enclosure is
square by default.
-->
<!ELEMENT rehearsal (#PCDATA)>
<!ATTLIST rehearsal
%print-style;
xml:lang NMTOKEN #IMPLIED
enclosure (square | circle | none) #IMPLIED
>
<!ELEMENT words (#PCDATA)>
<!--
Left justification is assumed if not specified.
Language is Italian ("it") by default. Enclosure
is none by default.
-->
<!ATTLIST words
%justify;
%halign;
%valign;
%print-style;
xml:lang NMTOKEN #IMPLIED
enclosure (rectangle | oval | none) #IMPLIED
>
<!--
Wedge spread is measured in tenths of staff line space.
The type is crescendo for the start of a wedge that is
closed at the left side, and diminuendo for the start
of a wedge that is closed on the right side. Spread
values at the start of a crescendo wedge or end of a
diminuendo wedge are ignored.
-->
<!ELEMENT wedge EMPTY>
<!ATTLIST wedge
type (crescendo | diminuendo | stop) #REQUIRED
number %number-level; #IMPLIED
spread CDATA #IMPLIED
%position;
%color;
>
<!--
Dashes, used for instance with cresc. and dim. marks.
-->
<!ELEMENT dashes EMPTY>
<!ATTLIST dashes
type %start-stop; #REQUIRED
number %number-level; #IMPLIED
%position;
%color;
>
<!--
Brackets are combined with words in a variety of
modern directions. The line-end attribute specifies
if there is a jog up or down (or both), an arrow,
or nothing at the start or end of the bracket. If
the line-end is up or down, the length of the jog
can be specified using the end-length attribute.
The line-type is solid by default.
-->
<!ELEMENT bracket EMPTY>
<!ATTLIST bracket
type %start-stop; #REQUIRED
number %number-level; #IMPLIED
line-end (up | down | both | arrow | none) #REQUIRED
end-length %tenths; #IMPLIED
%line-type;
%position;
%color;
>
<!--
Piano pedal marks. The line attribute is yes if pedal
lines are used, no if Ped and * signs are used. The
change type is used with line set to yes.
-->
<!ELEMENT pedal EMPTY>
<!ATTLIST pedal
type (start | stop | change) #REQUIRED
line %yes-no; #IMPLIED
%print-style;
>
<!--
Standard metronome marks. The beat-unit values are the
same as for a type element, and the beat-unit-dot works
like the dot element. The per-minute element can
be a number, or a text description including numbers.
The parentheses attribute indicates whether or not
to put the metronome mark in parentheses; its value
is no if not specified.
-->
<!ELEMENT metronome (beat-unit, beat-unit-dot*,
(per-minute | (beat-unit, beat-unit-dot*)))>
<!ATTLIST metronome
%print-style;
parentheses %yes-no; #IMPLIED
>
<!ELEMENT beat-unit (#PCDATA)>
<!ELEMENT beat-unit-dot EMPTY>
<!ELEMENT per-minute (#PCDATA)>
<!--
Octave shifts indicate where notes are shifted up or down
from their true pitched values because of printing
difficulty. Thus a treble clef line noted with 8va will
be indicated with an octave-shift down from the pitch
data indicated in the notes. A size of 8 indicates one
octave; a size of 15 indicates two octaves.
-->
<!ELEMENT octave-shift EMPTY>
<!ATTLIST octave-shift
type (up | down | stop) #REQUIRED
number %number-level; #IMPLIED
size CDATA "8"
%print-style;
>
<!--
The harp-pedals element is used to create harp
pedal diagrams. The pedal-step and pedal-alter
elements use the same values as the step and alter
elements. For easiest reading, the pedal-tuning
elements show follow standard harp pedal order,
with pedal-step values of D, C, B, E, F, G, and A.
-->
<!ELEMENT harp-pedals (pedal-tuning)+>
<!ATTLIST harp-pedals
%print-style;
>
<!ELEMENT pedal-tuning (pedal-step, pedal-alter)>
<!ELEMENT pedal-step (#PCDATA)>
<!ELEMENT pedal-alter (#PCDATA)>
<!-- Harp damping marks -->
<!ELEMENT damp EMPTY>
<!ATTLIST damp
%print-style;
>
<!ELEMENT damp-all EMPTY>
<!ATTLIST damp-all
%print-style;
>
<!-- Eyeglasses, common in commercial music. -->
<!ELEMENT eyeglasses EMPTY>
<!ATTLIST eyeglasses
%print-style;
>
<!--
Scordatura string tunings are represented by a series
of accord elements. The tuning-step, tuning-alter,
and tuning-octave elements are also used with the
staff-tuning element, and are defined in the common.dtd
file. Strings are numbered from high to low.
-->
<!ELEMENT scordatura (accord+)>
<!ELEMENT accord
(tuning-step, tuning-alter?, tuning-octave)>
<!ATTLIST accord
string CDATA #REQUIRED
>
<!--
The other-direction element is used to define
any direction symbols not yet in the current version
of MusicXML. This allows extended representation,
though without application interoperability.
-->
<!ELEMENT other-direction (#PCDATA)>
<!ATTLIST other-direction
%print-style;
>
<!--
An offset is represented in terms of divisions, and
indicates where the direction will appear relative
to the current musical location. This is for visual
appearance only; any sound associated with the
direction takes effect at the current location.
If an element within a direction includes a default-x
attribute, the offset value will be ignored for that
element.
-->
<!ELEMENT offset (#PCDATA)>
<!-- Harmony -->
<!--
The harmony elements are based on Humdrum's **harm
encoding, extended to support chord symbols in popular
music as well as functional harmony analysis in classical
music.
-->
<!--
A harmony element can contain many stacked chords (e.g.
V of II). A sequence of harmony-chord entities is used
for this type of secondary function, where V of II would
be represented by a harmony-chord with a V function
followed by a harmony-chord with a II function.
-->
<!ENTITY % harmony-chord "((root | function), kind,
inversion?, bass?, degree*)">
<!--
A root is a pitch name like C, D, E, where a function is
an indication like I, II, III. Root is generally used
with pop chord symbols, function with classical
functional harmony. It is an either/or choice to avoid
data inconsistency. Function requires that the key be
specified in the encoding. The root element has a
root-step and optional root-alter similar to the step
and alter elements in a pitch, but renamed to
distinguish the different musical meanings.
-->
<!ELEMENT root (root-step, root-alter?)>
<!ELEMENT root-step (#PCDATA)>
<!ELEMENT root-alter (#PCDATA)>
<!ELEMENT function (#PCDATA)>
<!--
Kind indicates the type of chord. Degree elements
can then add, subtract, or alter from these
starting points. Values include:
Triads:
major (major third, perfect fifth)
minor (minor third, perfect fifth)
augmented (major third, augmented fifth)
diminished (minor third, diminished fifth)
Sevenths:
dominant (major triad, minor seventh)
major-seventh (major triad, major seventh)
minor-seventh (minor triad, minor seventh)
diminished-seventh
(diminished triad, diminished seventh)
augmented-seventh
(augmented triad, minor seventh)
half-diminished
(diminished triad, minor seventh)
major-minor
(minor triad, major seventh)
Sixths:
major-sixth (major triad, added sixth)
minor-sixth (minor triad, added sixth)
Ninths:
dominant-ninth (dominant-seventh, major ninth)
major-ninth (major-seventh, major ninth)
minor-ninth (minor-seventh, minor ninth)
11ths (usually as the basis for alteration):
dominant-11th (dominant-ninth, perfect 11th)
major-11th (major-ninth, perfect 11th)
minor-11th (minor-ninth, perfect 11th)
13ths (usually as the basis for alteration):
dominant-13th (dominant-11th, major 13th)
major-13th (major-11th, major 13th)
minor-13th (minor-11th, major 13th)
Suspended:
suspended-second (major second, perfect fifth)
suspended-fourth (perfect fourth, perfect fifth)
Functional sixths:
Neapolitan
Italian
French
German
Other:
pedal (pedal-point bass)
Tristan
The "other" kind is used when the harmony is entirely
composed of add elements. The "none" kind is used to
explicitly encode absence of chords or functional
harmony.
The attributes are used to indicate the formatting
of the symbol. Since the kind element is the constant
in all the harmony-chord entities that can make up
a polychord, many formatting attributes are here.
The use-symbols attribute is yes if the kind should be
represented when possible with harmony symbols rather
than letters and numbers. These symbols include:
major: a triangle, like Unicode 25B3
minor: -, like Unicode 002D
augmented: +, like Unicode 002B
diminished: °, like Unicode 00B0
half-diminished: ø, like Unicode 00F8
The text attribute describes how the kind should be
spelled if not using symbols; it is ignored if use-symbols
is yes. The stack-degrees attribute is yes if the degree
elements should be stacked above each other. The
parentheses-degrees attribute is yes if all the degrees
should be in parentheses. The bracket-degrees attribute
is yes if all the degrees should be in a bracket. If not
specified, these values are implementation-specific.
-->
<!ELEMENT kind (#PCDATA)>
<!ATTLIST kind
use-symbols %yes-no; #IMPLIED
text CDATA #IMPLIED
stack-degrees %yes-no; #IMPLIED
parentheses-degrees %yes-no; #IMPLIED
bracket-degrees %yes-no; #IMPLIED
>
<!--
Inversion is a number indicating which inversion is used:
0 for root position, 1 for first inversion, etc.
-->
<!ELEMENT inversion (#PCDATA)>
<!--
Bass is used to indicate a bass note in popular music
chord symbols, e.g. G/C. It is generally not used in
functional harmony, as inversion is generally not used
in pop chord symbols. As with root, it is divided into
step and alter elements, similar to pitches.
-->
<!ELEMENT bass (bass-step, bass-alter?)>
<!ELEMENT bass-step (#PCDATA)>
<!ELEMENT bass-alter (#PCDATA)>
<!--
The degree element is used to add, alter, or subtract
individual notes in the chord. The degree-value element
is a number indicating the degree of the chord (1 for
the root, 3 for third, etc). The degree-alter element
is like the alter element in notes: 1 for sharp, -1 for
flat, etc. The degree-type element can be add, alter, or
subtract. If the degree-type is alter or subtract, the
degree-alter is relative to the degree already in the
chord based on its kind element. If the degree-type is
add, the degree-alter is relative to a dominant chord
(major and perfect intervals except for a minor
seventh). The print-object attribute can be used to
keep the degree from printing separately when it has
already taken into account in the text attribute of
the kind element.
A harmony of kind "other" can be spelled explicitly by
using a series of degree elements together with a root.
-->
<!ELEMENT degree (degree-value, degree-alter, degree-type)>
<!ATTLIST degree
%print-object;
>
<!ELEMENT degree-value (#PCDATA)>
<!ELEMENT degree-alter (#PCDATA)>
<!ELEMENT degree-type (#PCDATA)>
<!--
The frame element represents a frame or fretboard
diagram used together with a chord symbol. The
representation is based on the NIFF guitar grid
with additional information. The frame-strings and
frame-frets elements give the overall size of the
frame in vertical lines (strings) and horizontal
spaces (frets). The first-fret indicates which fret
is shown in the top space of the frame; it is fret 1
if the element is not present. The frame-note element
represents each note included in the frame. The
definitions for string, fret, and fingering are found
in common.dtd.
-->
<!ELEMENT frame
(frame-strings, frame-frets, first-fret?, frame-note+)>
<!ATTLIST frame
%position;
%color;
height %tenths; #IMPLIED
width %tenths; #IMPLIED
>
<!ELEMENT frame-strings (#PCDATA)>
<!ELEMENT frame-frets (#PCDATA)>
<!ELEMENT first-fret (#PCDATA)>
<!ELEMENT frame-note (string, fret, fingering?, barre?)>
<!--
The barre element indicates placing a finger over
multiple strings on a single fret. The type is "start"
for the lowest pitched string (e.g., the string with
the highest MusicXML number) and is "stop" for the
highest pitched string.
-->
<!ELEMENT barre EMPTY>
<!ATTLIST barre
type %start-stop; #REQUIRED
%color;
>
<!--
If there are alternate harmonies possible, this can be
specified using multiple harmony elements differentiated
by type. Explicit harmonies have all note present in the
music; implied have some notes missing but implied;
alternate represents alternate analyses.
The harmony object may be used for analysis or for
chord symbols. The print-object attribute controls
whether or not anything is printed due to the harmony
element. The print-frame attribute controls printing
of a frame or fretboard diagram.
-->
<!ELEMENT harmony ((%harmony-chord;)+, frame?,
offset?, %editorial;, staff?)>
<!ATTLIST harmony
type (explicit | implied | alternate) #IMPLIED
%print-object;
print-frame %yes-no; #IMPLIED
%print-style;
%placement;
>
<!--
The grouping element is used for musical analysis. When
the element type is "start", it usually contains one or
more feature elements. The number attribute is used for
distinguishing between overlapping and hierarchical
groupings. The member-of attribute allows for easy
distinguishing of what grouping elements are in what
hierarchy. Feature elements contained within a "stop"
type of grouping may be ignored.
This element is flexible to allow for non-standard
analyses. Future versions of MusicXML may add elements
that can represent more standardized categories of
analysis data, allowing for easier data sharing.
-->
<!ELEMENT grouping ((feature)*)>
<!ATTLIST grouping
type %start-stop; #REQUIRED
number CDATA "1"
member-of CDATA #IMPLIED
>
<!ELEMENT feature (#PCDATA)>
<!ATTLIST feature
type CDATA #IMPLIED
>
<!--
The print element contains general printing parameters,
including the layout elements defined in layout.dtd.
The new-system and new-page attributes indicate whether
to force a system or page break, or to force the current
music onto the same system or page as the preceding
music. Normally this is the first music data within a
measure. If used in multi-part music, they should be
placed in the same positions within each part, or the
results are undefined. The page-number attribute sets
the number of a new page; it is ignored if new-page
is not "yes".
Staff spacing between multiple staves is measured in
tenths of staff lines (e.g. 100 = 10 staff lines).
This is deprecated in MusicXML 1.1; the staff-layout
element should be used instead. If both are present,
the staff-layout values take priority.
Layout elements in a print statement only apply to
the current page, system, staff, or measure. Music
that follows continues to take the default values
from the layout included in the <defaults> element.
-->
<!ELEMENT print (page-layout?, system-layout?,
staff-layout*, measure-layout?)>
<!ATTLIST print
staff-spacing %tenths; #IMPLIED
new-system %yes-no; #IMPLIED
new-page %yes-no; #IMPLIED
page-number CDATA #IMPLIED
>
<!--
The sound element contains general playback parameters.
They can stand alone within a part/measure, or be a
component element within a direction.
Tempo is expressed in quarter notes per minute. If 0,
the sound-generating program must prompt the user at the
time of compiling a sound (MIDI) file.
Dynamics (or MIDI velocity) are expressed as a percentage
of the default forte value (90 for MIDI).
Dacapo indicates to go back to the beginning of the
movement. When used it always has the value "yes".
Segno and dalsegno are used for backwards jumps to a
segno sign; coda and tocoda are used for forward jumps
to a coda sign. If there are multiple jumps, the value
of these parameters can be used to name and distinguish
them. If segno or coda is used, the divisions attribute
can also be used to indicate the number of divisions
per quarter note. Otherwise sound and MIDI generating
programs may have to recompute this.
A dalsegno or dacapo attribute indicates that the
jump should occur the first time through; a tocoda
attribute indicates the jump should occur the second
time through.
Forward-repeat is used when a forward repeat sign is
implied, and usually follows a bar line. When used it
always has the value of "yes".
The fine attribute follows the final note or rest in a
movement with a da capo direction. If numeric, the value
represents the actual duration of the final note or rest,
which can be ambiguous in written notation and different
among parts and voices. The value may also be "yes" to
indicate no change to the final duration.
If the sound element applies only one time through a
repeat, the time-only attribute indicates which time
to apply the sound element.
Pizzicato in a sound element effects all following notes.
Yes indicates pizzicato, no indicates arco.
Pan and elevation allow placing of sound in a 3-D space
relative to the listener. Both are expressed in degrees
ranging from -180 to 180. For pan, 0 is straight ahead,
-90 is hard left, 90 is hard right, and -180 and 180
are directly behind the listener. For elevation, 0 is
level with the listener, 90 is directly above, and -90
is directly below.
The damper-pedal, soft-pedal, and sostenuto-pedal
attributes effect playback of the three common piano
pedals and their MIDI controller equivalents. Yes
indicates the pedal is depressed; no indicates the
pedal is released.
MIDI instruments are changed using the midi-instrument
element defined in common.dtd.
-->
<!ELEMENT sound (midi-instrument*)>
<!ATTLIST sound
tempo CDATA #IMPLIED
dynamics CDATA #IMPLIED
dacapo %yes-no; #IMPLIED
segno CDATA #IMPLIED
dalsegno CDATA #IMPLIED
coda CDATA #IMPLIED
tocoda CDATA #IMPLIED
divisions CDATA #IMPLIED
forward-repeat %yes-no; #IMPLIED
fine CDATA #IMPLIED
time-only CDATA #IMPLIED
pizzicato %yes-no; #IMPLIED
pan CDATA #IMPLIED
elevation CDATA #IMPLIED
damper-pedal %yes-no; #IMPLIED
soft-pedal %yes-no; #IMPLIED
sostenuto-pedal %yes-no; #IMPLIED
>