<!-- 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 >