<!-- This is an html rendering of the DTD file 
         tdom_driver.dtd
     This Xhtml file is DYNAMIC, using Java-script.
     The semantically relevant contents of the initial state 
     of this file DOES DIFFER from the input. 
       (pis omitted)
     This file has been created by the command line
          <JAVA> eu.bandm.tools.dtm.Tool --source  \
             ../../src/eu/bandm/music/musicXml_3_0/tdom_driver.dtd  \
             --outputFormat xhtml --result musicXml.dtd-rendered.html  \
             --windowtitle "musicXml 3.0 rendered" --collapseWS true  \
             --showCreationDate "for public use"
     This file has been created at 2024-09-01_10h43m19 for public use.
     For info about this program see http://bandm.eu/metatools .
-->
<!-- Click the opening symbols (angle brackets etc.) for collapsing/expanding.
     Click references for the definitions.
     Click element/attlist name position for the counterpart/next attlist. 
     Wait on a reference or on such a name for a tooltip.
     To control ALL declarations of one kind use these links:
     expand  all PIs  comments  file-inserts  elements  attlists  PEs  GEs  
     collaps all PIs  comments  file-inserts  elements  attlists  PEs  GEs  
-->
<!-- alphabetic indexes --><!-- analyses --><!-- entity usage graph --><!-- =========================================================
Here should appear an SVG visualization of parameter entity  usage, but your current browser seems not to present SVG.
 ========================================================= --->
<!-- =========================================================
Here should appear an SVG visualization of element inclusion, but your current browser seems not to present SVG.
 ========================================================= --->
<!--
       tdom_driver.dtd
-->
<!-- ?tdom --><?tdom default private ?>
<!-- ?tdom --><?tdom public score-partwise ?>
<!-- ?tdom --><?tdom public score-timewise ?>

<!--
	MusicXML  tdom-driver.dtd  
          EX Partwise DTD

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	The MusicXML format is designed to represent musical scores,
	specifically common western musical notation from the 17th
	century onwards. It is designed as an interchange format
	for notation, analysis, retrieval, and performance
	applications. Therefore it is intended to be sufficient,
	not optimal, for these applications.
	
	The MusicXML format is based on the MuseData and Humdrum
	formats. Humdrum explicitly represents the two-dimensional
	nature of musical scores by a 2-D layout notation. Since the
	XML format is hierarchical, we cannot do this explicitly.
	Instead, there are two top-level formats:
	
	partwise.dtd   Represents scores by part/instrument
	timewise.dtd   Represents scores by time/measure
	
	Thus partwise.dtd contains measures within each part,
	while timewise.dtd contains parts within each measure.
	XSLT stylesheets are provided to convert between the
	two formats.
	
	The partwise and timewise score DTDs represent a single 
	movement of music. Multiple movements or other musical 
	collections are presented using opus.dtd. An opus
	document contains XLinks to individual scores.
	
	Suggested use:
	
	<!DOCTYPE score-partwise PUBLIC
		"-//Recordare//DTD MusicXML 3.0 Partwise//EN"
		"http://www.musicxml.org/dtds/partwise.dtd">
	
	This DTD is made up of a series of component DTD modules,
	all of which are included here.
-->

<!-- Entities -->

<!--
	The partwise and timewise entities are used with
	conditional sections to control the differences between
	the partwise and timewise DTDs. The values for these
	entities are what distinguish the partwise and timewise
	DTD files.

        ml 20121102:
           this entity is USED ONLY in score.mod for 
             switching between two variants for part and measure
           we eliminate both dtd fragments and include a combined version
           at the end of this file, after including score.mod !

--> 
<!ENTITY % partwise "IGNORE">
<!ENTITY % timewise "IGNORE">

<!-- Component DTD modules -->

<!--
	The common DTD module contains the entities and elements
	that are shared among multiple component DTDs.
-->
<!ENTITY % common PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Common//EN"
	"common.mod">
%common;<!-- here starts %common; --> <!--
	MusicXML™ common.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	This file contains entities and elements that are common
	across multiple DTD modules. 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.
	These files are local copies of the W3C entities located at:

		http://www.w3.org/2003/entities/
-->
<!ENTITY % isolat1 PUBLIC 
	"ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
	"isolat1.ent">
%isolat1;<!-- here starts %isolat1; --> 
<!--
     File isolat1.ent produced by the XSL script entities.xsl
     from input data in unicode.xml.

     Please report any errors to David Carlisle
     via the public W3C list www-math@w3.org.

     The numeric character values assigned to each entity
     (should) match the Unicode assignments in Unicode 4.0.

     Entity names in this file are derived from files carrying the
     following notice:

     (C) International Organization for Standardization 1986
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

-->


<!-- 
     Version: $Id: isolat1.ent,v 1.2 2015/11/04 13:22:40 lepper Exp $

       Public identifier: ISO 8879:1986//ENTITIES Added Latin 1//EN//XML
       System identifier: http://www.w3.org/2003/entities/iso8879/isolat1.ent

     The public identifier should always be used verbatim.
     The system identifier may be changed to suit local requirements.

     Typical invocation:

       <!ENTITY % isolat1 PUBLIC
         "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
         "http://www.w3.org/2003/entities/iso8879/isolat1.ent"
       >
       %isolat1;

-->

<!ENTITY Aacute           "&#x000C1;" ><!--LATIN CAPITAL LETTER A WITH ACUTE -->
<!ENTITY aacute           "&#x000E1;" ><!--LATIN SMALL LETTER A WITH ACUTE -->
<!ENTITY Acirc            "&#x000C2;" ><!--LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
<!ENTITY acirc            "&#x000E2;" ><!--LATIN SMALL LETTER A WITH CIRCUMFLEX -->
<!ENTITY AElig            "&#x000C6;" ><!--LATIN CAPITAL LETTER AE -->
<!ENTITY aelig            "&#x000E6;" ><!--LATIN SMALL LETTER AE -->
<!ENTITY Agrave           "&#x000C0;" ><!--LATIN CAPITAL LETTER A WITH GRAVE -->
<!ENTITY agrave           "&#x000E0;" ><!--LATIN SMALL LETTER A WITH GRAVE -->
<!ENTITY Aring            "&#x000C5;" ><!--LATIN CAPITAL LETTER A WITH RING ABOVE -->
<!ENTITY aring            "&#x000E5;" ><!--LATIN SMALL LETTER A WITH RING ABOVE -->
<!ENTITY Atilde           "&#x000C3;" ><!--LATIN CAPITAL LETTER A WITH TILDE -->
<!ENTITY atilde           "&#x000E3;" ><!--LATIN SMALL LETTER A WITH TILDE -->
<!ENTITY Auml             "&#x000C4;" ><!--LATIN CAPITAL LETTER A WITH DIAERESIS -->
<!ENTITY auml             "&#x000E4;" ><!--LATIN SMALL LETTER A WITH DIAERESIS -->
<!ENTITY Ccedil           "&#x000C7;" ><!--LATIN CAPITAL LETTER C WITH CEDILLA -->
<!ENTITY ccedil           "&#x000E7;" ><!--LATIN SMALL LETTER C WITH CEDILLA -->
<!ENTITY Eacute           "&#x000C9;" ><!--LATIN CAPITAL LETTER E WITH ACUTE -->
<!ENTITY eacute           "&#x000E9;" ><!--LATIN SMALL LETTER E WITH ACUTE -->
<!ENTITY Ecirc            "&#x000CA;" ><!--LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
<!ENTITY ecirc            "&#x000EA;" ><!--LATIN SMALL LETTER E WITH CIRCUMFLEX -->
<!ENTITY Egrave           "&#x000C8;" ><!--LATIN CAPITAL LETTER E WITH GRAVE -->
<!ENTITY egrave           "&#x000E8;" ><!--LATIN SMALL LETTER E WITH GRAVE -->
<!ENTITY ETH              "&#x000D0;" ><!--LATIN CAPITAL LETTER ETH -->
<!ENTITY eth              "&#x000F0;" ><!--LATIN SMALL LETTER ETH -->
<!ENTITY Euml             "&#x000CB;" ><!--LATIN CAPITAL LETTER E WITH DIAERESIS -->
<!ENTITY euml             "&#x000EB;" ><!--LATIN SMALL LETTER E WITH DIAERESIS -->
<!ENTITY Iacute           "&#x000CD;" ><!--LATIN CAPITAL LETTER I WITH ACUTE -->
<!ENTITY iacute           "&#x000ED;" ><!--LATIN SMALL LETTER I WITH ACUTE -->
<!ENTITY Icirc            "&#x000CE;" ><!--LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
<!ENTITY icirc            "&#x000EE;" ><!--LATIN SMALL LETTER I WITH CIRCUMFLEX -->
<!ENTITY Igrave           "&#x000CC;" ><!--LATIN CAPITAL LETTER I WITH GRAVE -->
<!ENTITY igrave           "&#x000EC;" ><!--LATIN SMALL LETTER I WITH GRAVE -->
<!ENTITY Iuml             "&#x000CF;" ><!--LATIN CAPITAL LETTER I WITH DIAERESIS -->
<!ENTITY iuml             "&#x000EF;" ><!--LATIN SMALL LETTER I WITH DIAERESIS -->
<!ENTITY Ntilde           "&#x000D1;" ><!--LATIN CAPITAL LETTER N WITH TILDE -->
<!ENTITY ntilde           "&#x000F1;" ><!--LATIN SMALL LETTER N WITH TILDE -->
<!ENTITY Oacute           "&#x000D3;" ><!--LATIN CAPITAL LETTER O WITH ACUTE -->
<!ENTITY oacute           "&#x000F3;" ><!--LATIN SMALL LETTER O WITH ACUTE -->
<!ENTITY Ocirc            "&#x000D4;" ><!--LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
<!ENTITY ocirc            "&#x000F4;" ><!--LATIN SMALL LETTER O WITH CIRCUMFLEX -->
<!ENTITY Ograve           "&#x000D2;" ><!--LATIN CAPITAL LETTER O WITH GRAVE -->
<!ENTITY ograve           "&#x000F2;" ><!--LATIN SMALL LETTER O WITH GRAVE -->
<!ENTITY Oslash           "&#x000D8;" ><!--LATIN CAPITAL LETTER O WITH STROKE -->
<!ENTITY oslash           "&#x000F8;" ><!--LATIN SMALL LETTER O WITH STROKE -->
<!ENTITY Otilde           "&#x000D5;" ><!--LATIN CAPITAL LETTER O WITH TILDE -->
<!ENTITY otilde           "&#x000F5;" ><!--LATIN SMALL LETTER O WITH TILDE -->
<!ENTITY Ouml             "&#x000D6;" ><!--LATIN CAPITAL LETTER O WITH DIAERESIS -->
<!ENTITY ouml             "&#x000F6;" ><!--LATIN SMALL LETTER O WITH DIAERESIS -->
<!ENTITY szlig            "&#x000DF;" ><!--LATIN SMALL LETTER SHARP S -->
<!ENTITY THORN            "&#x000DE;" ><!--LATIN CAPITAL LETTER THORN -->
<!ENTITY thorn            "&#x000FE;" ><!--LATIN SMALL LETTER THORN -->
<!ENTITY Uacute           "&#x000DA;" ><!--LATIN CAPITAL LETTER U WITH ACUTE -->
<!ENTITY uacute           "&#x000FA;" ><!--LATIN SMALL LETTER U WITH ACUTE -->
<!ENTITY Ucirc            "&#x000DB;" ><!--LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
<!ENTITY ucirc            "&#x000FB;" ><!--LATIN SMALL LETTER U WITH CIRCUMFLEX -->
<!ENTITY Ugrave           "&#x000D9;" ><!--LATIN CAPITAL LETTER U WITH GRAVE -->
<!ENTITY ugrave           "&#x000F9;" ><!--LATIN SMALL LETTER U WITH GRAVE -->
<!ENTITY Uuml             "&#x000DC;" ><!--LATIN CAPITAL LETTER U WITH DIAERESIS -->
<!ENTITY uuml             "&#x000FC;" ><!--LATIN SMALL LETTER U WITH DIAERESIS -->
<!ENTITY Yacute           "&#x000DD;" ><!--LATIN CAPITAL LETTER Y WITH ACUTE -->
<!ENTITY yacute           "&#x000FD;" ><!--LATIN SMALL LETTER Y WITH ACUTE -->
<!ENTITY yuml             "&#x000FF;" ><!--LATIN SMALL LETTER Y WITH DIAERESIS -->
 
<!-- here ends %isolat1; -->

<!ENTITY % isolat2 PUBLIC 
	"ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
	"isolat2.ent">
%isolat2;<!-- here starts %isolat2; --> 
<!--
     File isolat2.ent produced by the XSL script entities.xsl
     from input data in unicode.xml.

     Please report any errors to David Carlisle
     via the public W3C list www-math@w3.org.

     The numeric character values assigned to each entity
     (should) match the Unicode assignments in Unicode 4.0.

     Entity names in this file are derived from files carrying the
     following notice:

     (C) International Organization for Standardization 1986
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

-->


<!-- 
     Version: $Id: isolat2.ent,v 1.2 2015/11/04 13:22:40 lepper Exp $

       Public identifier: ISO 8879:1986//ENTITIES Added Latin 2//EN//XML
       System identifier: http://www.w3.org/2003/entities/iso8879/isolat2.ent

     The public identifier should always be used verbatim.
     The system identifier may be changed to suit local requirements.

     Typical invocation:

       <!ENTITY % isolat2 PUBLIC
         "ISO 8879:1986//ENTITIES Added Latin 2//EN//XML"
         "http://www.w3.org/2003/entities/iso8879/isolat2.ent"
       >
       %isolat2;

-->

<!ENTITY Abreve           "&#x00102;" ><!--LATIN CAPITAL LETTER A WITH BREVE -->
<!ENTITY abreve           "&#x00103;" ><!--LATIN SMALL LETTER A WITH BREVE -->
<!ENTITY Amacr            "&#x00100;" ><!--LATIN CAPITAL LETTER A WITH MACRON -->
<!ENTITY amacr            "&#x00101;" ><!--LATIN SMALL LETTER A WITH MACRON -->
<!ENTITY Aogon            "&#x00104;" ><!--LATIN CAPITAL LETTER A WITH OGONEK -->
<!ENTITY aogon            "&#x00105;" ><!--LATIN SMALL LETTER A WITH OGONEK -->
<!ENTITY Cacute           "&#x00106;" ><!--LATIN CAPITAL LETTER C WITH ACUTE -->
<!ENTITY cacute           "&#x00107;" ><!--LATIN SMALL LETTER C WITH ACUTE -->
<!ENTITY Ccaron           "&#x0010C;" ><!--LATIN CAPITAL LETTER C WITH CARON -->
<!ENTITY ccaron           "&#x0010D;" ><!--LATIN SMALL LETTER C WITH CARON -->
<!ENTITY Ccirc            "&#x00108;" ><!--LATIN CAPITAL LETTER C WITH CIRCUMFLEX -->
<!ENTITY ccirc            "&#x00109;" ><!--LATIN SMALL LETTER C WITH CIRCUMFLEX -->
<!ENTITY Cdot             "&#x0010A;" ><!--LATIN CAPITAL LETTER C WITH DOT ABOVE -->
<!ENTITY cdot             "&#x0010B;" ><!--LATIN SMALL LETTER C WITH DOT ABOVE -->
<!ENTITY Dcaron           "&#x0010E;" ><!--LATIN CAPITAL LETTER D WITH CARON -->
<!ENTITY dcaron           "&#x0010F;" ><!--LATIN SMALL LETTER D WITH CARON -->
<!ENTITY Dstrok           "&#x00110;" ><!--LATIN CAPITAL LETTER D WITH STROKE -->
<!ENTITY dstrok           "&#x00111;" ><!--LATIN SMALL LETTER D WITH STROKE -->
<!ENTITY Ecaron           "&#x0011A;" ><!--LATIN CAPITAL LETTER E WITH CARON -->
<!ENTITY ecaron           "&#x0011B;" ><!--LATIN SMALL LETTER E WITH CARON -->
<!ENTITY Edot             "&#x00116;" ><!--LATIN CAPITAL LETTER E WITH DOT ABOVE -->
<!ENTITY edot             "&#x00117;" ><!--LATIN SMALL LETTER E WITH DOT ABOVE -->
<!ENTITY Emacr            "&#x00112;" ><!--LATIN CAPITAL LETTER E WITH MACRON -->
<!ENTITY emacr            "&#x00113;" ><!--LATIN SMALL LETTER E WITH MACRON -->
<!ENTITY ENG              "&#x0014A;" ><!--LATIN CAPITAL LETTER ENG -->
<!ENTITY eng              "&#x0014B;" ><!--LATIN SMALL LETTER ENG -->
<!ENTITY Eogon            "&#x00118;" ><!--LATIN CAPITAL LETTER E WITH OGONEK -->
<!ENTITY eogon            "&#x00119;" ><!--LATIN SMALL LETTER E WITH OGONEK -->
<!ENTITY gacute           "&#x001F5;" ><!--LATIN SMALL LETTER G WITH ACUTE -->
<!ENTITY Gbreve           "&#x0011E;" ><!--LATIN CAPITAL LETTER G WITH BREVE -->
<!ENTITY gbreve           "&#x0011F;" ><!--LATIN SMALL LETTER G WITH BREVE -->
<!ENTITY Gcedil           "&#x00122;" ><!--LATIN CAPITAL LETTER G WITH CEDILLA -->
<!ENTITY Gcirc            "&#x0011C;" ><!--LATIN CAPITAL LETTER G WITH CIRCUMFLEX -->
<!ENTITY gcirc            "&#x0011D;" ><!--LATIN SMALL LETTER G WITH CIRCUMFLEX -->
<!ENTITY Gdot             "&#x00120;" ><!--LATIN CAPITAL LETTER G WITH DOT ABOVE -->
<!ENTITY gdot             "&#x00121;" ><!--LATIN SMALL LETTER G WITH DOT ABOVE -->
<!ENTITY Hcirc            "&#x00124;" ><!--LATIN CAPITAL LETTER H WITH CIRCUMFLEX -->
<!ENTITY hcirc            "&#x00125;" ><!--LATIN SMALL LETTER H WITH CIRCUMFLEX -->
<!ENTITY Hstrok           "&#x00126;" ><!--LATIN CAPITAL LETTER H WITH STROKE -->
<!ENTITY hstrok           "&#x00127;" ><!--LATIN SMALL LETTER H WITH STROKE -->
<!ENTITY Idot             "&#x00130;" ><!--LATIN CAPITAL LETTER I WITH DOT ABOVE -->
<!ENTITY IJlig            "&#x00132;" ><!--LATIN CAPITAL LIGATURE IJ -->
<!ENTITY ijlig            "&#x00133;" ><!--LATIN SMALL LIGATURE IJ -->
<!ENTITY Imacr            "&#x0012A;" ><!--LATIN CAPITAL LETTER I WITH MACRON -->
<!ENTITY imacr            "&#x0012B;" ><!--LATIN SMALL LETTER I WITH MACRON -->
<!ENTITY inodot           "&#x00131;" ><!--LATIN SMALL LETTER DOTLESS I -->
<!ENTITY Iogon            "&#x0012E;" ><!--LATIN CAPITAL LETTER I WITH OGONEK -->
<!ENTITY iogon            "&#x0012F;" ><!--LATIN SMALL LETTER I WITH OGONEK -->
<!ENTITY Itilde           "&#x00128;" ><!--LATIN CAPITAL LETTER I WITH TILDE -->
<!ENTITY itilde           "&#x00129;" ><!--LATIN SMALL LETTER I WITH TILDE -->
<!ENTITY Jcirc            "&#x00134;" ><!--LATIN CAPITAL LETTER J WITH CIRCUMFLEX -->
<!ENTITY jcirc            "&#x00135;" ><!--LATIN SMALL LETTER J WITH CIRCUMFLEX -->
<!ENTITY Kcedil           "&#x00136;" ><!--LATIN CAPITAL LETTER K WITH CEDILLA -->
<!ENTITY kcedil           "&#x00137;" ><!--LATIN SMALL LETTER K WITH CEDILLA -->
<!ENTITY kgreen           "&#x00138;" ><!--LATIN SMALL LETTER KRA -->
<!ENTITY Lacute           "&#x00139;" ><!--LATIN CAPITAL LETTER L WITH ACUTE -->
<!ENTITY lacute           "&#x0013A;" ><!--LATIN SMALL LETTER L WITH ACUTE -->
<!ENTITY Lcaron           "&#x0013D;" ><!--LATIN CAPITAL LETTER L WITH CARON -->
<!ENTITY lcaron           "&#x0013E;" ><!--LATIN SMALL LETTER L WITH CARON -->
<!ENTITY Lcedil           "&#x0013B;" ><!--LATIN CAPITAL LETTER L WITH CEDILLA -->
<!ENTITY lcedil           "&#x0013C;" ><!--LATIN SMALL LETTER L WITH CEDILLA -->
<!ENTITY Lmidot           "&#x0013F;" ><!--LATIN CAPITAL LETTER L WITH MIDDLE DOT -->
<!ENTITY lmidot           "&#x00140;" ><!--LATIN SMALL LETTER L WITH MIDDLE DOT -->
<!ENTITY Lstrok           "&#x00141;" ><!--LATIN CAPITAL LETTER L WITH STROKE -->
<!ENTITY lstrok           "&#x00142;" ><!--LATIN SMALL LETTER L WITH STROKE -->
<!ENTITY Nacute           "&#x00143;" ><!--LATIN CAPITAL LETTER N WITH ACUTE -->
<!ENTITY nacute           "&#x00144;" ><!--LATIN SMALL LETTER N WITH ACUTE -->
<!ENTITY napos            "&#x00149;" ><!--LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
<!ENTITY Ncaron           "&#x00147;" ><!--LATIN CAPITAL LETTER N WITH CARON -->
<!ENTITY ncaron           "&#x00148;" ><!--LATIN SMALL LETTER N WITH CARON -->
<!ENTITY Ncedil           "&#x00145;" ><!--LATIN CAPITAL LETTER N WITH CEDILLA -->
<!ENTITY ncedil           "&#x00146;" ><!--LATIN SMALL LETTER N WITH CEDILLA -->
<!ENTITY Odblac           "&#x00150;" ><!--LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -->
<!ENTITY odblac           "&#x00151;" ><!--LATIN SMALL LETTER O WITH DOUBLE ACUTE -->
<!ENTITY OElig            "&#x00152;" ><!--LATIN CAPITAL LIGATURE OE -->
<!ENTITY oelig            "&#x00153;" ><!--LATIN SMALL LIGATURE OE -->
<!ENTITY Omacr            "&#x0014C;" ><!--LATIN CAPITAL LETTER O WITH MACRON -->
<!ENTITY omacr            "&#x0014D;" ><!--LATIN SMALL LETTER O WITH MACRON -->
<!ENTITY Racute           "&#x00154;" ><!--LATIN CAPITAL LETTER R WITH ACUTE -->
<!ENTITY racute           "&#x00155;" ><!--LATIN SMALL LETTER R WITH ACUTE -->
<!ENTITY Rcaron           "&#x00158;" ><!--LATIN CAPITAL LETTER R WITH CARON -->
<!ENTITY rcaron           "&#x00159;" ><!--LATIN SMALL LETTER R WITH CARON -->
<!ENTITY Rcedil           "&#x00156;" ><!--LATIN CAPITAL LETTER R WITH CEDILLA -->
<!ENTITY rcedil           "&#x00157;" ><!--LATIN SMALL LETTER R WITH CEDILLA -->
<!ENTITY Sacute           "&#x0015A;" ><!--LATIN CAPITAL LETTER S WITH ACUTE -->
<!ENTITY sacute           "&#x0015B;" ><!--LATIN SMALL LETTER S WITH ACUTE -->
<!ENTITY Scaron           "&#x00160;" ><!--LATIN CAPITAL LETTER S WITH CARON -->
<!ENTITY scaron           "&#x00161;" ><!--LATIN SMALL LETTER S WITH CARON -->
<!ENTITY Scedil           "&#x0015E;" ><!--LATIN CAPITAL LETTER S WITH CEDILLA -->
<!ENTITY scedil           "&#x0015F;" ><!--LATIN SMALL LETTER S WITH CEDILLA -->
<!ENTITY Scirc            "&#x0015C;" ><!--LATIN CAPITAL LETTER S WITH CIRCUMFLEX -->
<!ENTITY scirc            "&#x0015D;" ><!--LATIN SMALL LETTER S WITH CIRCUMFLEX -->
<!ENTITY Tcaron           "&#x00164;" ><!--LATIN CAPITAL LETTER T WITH CARON -->
<!ENTITY tcaron           "&#x00165;" ><!--LATIN SMALL LETTER T WITH CARON -->
<!ENTITY Tcedil           "&#x00162;" ><!--LATIN CAPITAL LETTER T WITH CEDILLA -->
<!ENTITY tcedil           "&#x00163;" ><!--LATIN SMALL LETTER T WITH CEDILLA -->
<!ENTITY Tstrok           "&#x00166;" ><!--LATIN CAPITAL LETTER T WITH STROKE -->
<!ENTITY tstrok           "&#x00167;" ><!--LATIN SMALL LETTER T WITH STROKE -->
<!ENTITY Ubreve           "&#x0016C;" ><!--LATIN CAPITAL LETTER U WITH BREVE -->
<!ENTITY ubreve           "&#x0016D;" ><!--LATIN SMALL LETTER U WITH BREVE -->
<!ENTITY Udblac           "&#x00170;" ><!--LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -->
<!ENTITY udblac           "&#x00171;" ><!--LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
<!ENTITY Umacr            "&#x0016A;" ><!--LATIN CAPITAL LETTER U WITH MACRON -->
<!ENTITY umacr            "&#x0016B;" ><!--LATIN SMALL LETTER U WITH MACRON -->
<!ENTITY Uogon            "&#x00172;" ><!--LATIN CAPITAL LETTER U WITH OGONEK -->
<!ENTITY uogon            "&#x00173;" ><!--LATIN SMALL LETTER U WITH OGONEK -->
<!ENTITY Uring            "&#x0016E;" ><!--LATIN CAPITAL LETTER U WITH RING ABOVE -->
<!ENTITY uring            "&#x0016F;" ><!--LATIN SMALL LETTER U WITH RING ABOVE -->
<!ENTITY Utilde           "&#x00168;" ><!--LATIN CAPITAL LETTER U WITH TILDE -->
<!ENTITY utilde           "&#x00169;" ><!--LATIN SMALL LETTER U WITH TILDE -->
<!ENTITY Wcirc            "&#x00174;" ><!--LATIN CAPITAL LETTER W WITH CIRCUMFLEX -->
<!ENTITY wcirc            "&#x00175;" ><!--LATIN SMALL LETTER W WITH CIRCUMFLEX -->
<!ENTITY Ycirc            "&#x00176;" ><!--LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -->
<!ENTITY ycirc            "&#x00177;" ><!--LATIN SMALL LETTER Y WITH CIRCUMFLEX -->
<!ENTITY Yuml             "&#x00178;" ><!--LATIN CAPITAL LETTER Y WITH DIAERESIS -->
<!ENTITY Zacute           "&#x00179;" ><!--LATIN CAPITAL LETTER Z WITH ACUTE -->
<!ENTITY zacute           "&#x0017A;" ><!--LATIN SMALL LETTER Z WITH ACUTE -->
<!ENTITY Zcaron           "&#x0017D;" ><!--LATIN CAPITAL LETTER Z WITH CARON -->
<!ENTITY zcaron           "&#x0017E;" ><!--LATIN SMALL LETTER Z WITH CARON -->
<!ENTITY Zdot             "&#x0017B;" ><!--LATIN CAPITAL LETTER Z WITH DOT ABOVE -->
<!ENTITY zdot             "&#x0017C;" ><!--LATIN SMALL LETTER Z WITH DOT ABOVE -->
 
<!-- here ends %isolat2; -->


<!--
	Data type entities. The ones that resolve to strings 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. Interline space is measured from the
	middle of a staff line.
-->
<!ENTITY % tenths "CDATA">
<!ENTITY % layout-tenths "(#PCDATA)">

<!--
	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
	or for specifying formatting of symbols across system
	breaks. The start-stop-single entity is used when the same
	element is used for multi-note and single-note notations,
	as for tremolos.

	The values of start, stop, and continue refer to how an
	element appears in musical score order, not in MusicXML
	document order. An element with a stop attribute may
	precede the corresponding element with a start attribute
	within a MusicXML document. This is particularly common
	in multi-staff music. For example, the stopping point for
	a slur may appear in staff 1 before the starting point for
	the slur appears in staff 2 later in the document.
-->
<!ENTITY % start-stop "(start | stop)">
<!ENTITY % start-stop-continue "(start | stop | continue)">
<!ENTITY % start-stop-single "(start | stop | single)">

<!--
	The yes-no entity is used for boolean-like attributes.
-->
<!ENTITY % yes-no "(yes | no)">

<!--
	The yes-no-number entity is used for attributes that can
	be either boolean or numeric values. Values can be "yes",
	"no", or numbers.
-->
<!ENTITY % yes-no-number "NMTOKEN">

<!--
	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 above-below type is used to indicate whether one
	element appears above or below another element.
-->
<!ENTITY % above-below "(above | below)">

<!--
	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 left-right entity is used to indicate whether one
	element appears to the left or the right of another
	element.
-->
<!ENTITY % left-right "(left | right)">

<!--
	The number-of-lines entity is used to specify the
	number of lines in text decoration attributes.
-->
<!ENTITY % number-of-lines "(0 | 1 | 2 | 3)">

<!--
	The enclosure-shape entity describes the shape and 
	presence / absence of an enclosure around text. A bracket
	enclosure is similar to a rectangle with the bottom line
	missing, as is common in jazz notation.
-->
<!ENTITY % enclosure-shape 
	"(rectangle | square | oval | circle | 
	  bracket | triangle | diamond | none)">

<!--
	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 document order. When a number-level
	value is implied, the value is 1 by default.
-->
<!ENTITY % number-level "(1 | 2 | 3 | 4 | 5 | 6)">

<!--
	The MusicXML format supports eight levels of beaming, up
	to 1024th notes. Unlike the number-level attribute, the
	beam-level attribute 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 | 7 | 8)">

<!--
	Common structures for formatting attribute definitions. 
-->

<!--
	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
		- measure-numbering
		- all descendants of the part-list element
		- all children of the direction-type element

	This origin is from the start of the entire measure,
	at either the left barline or the start of the system.

	When the default-x attribute is used within a child element
	of the part-name-display, part-abbreviation-display, 
	group-name-display, or group-abbreviation-display elements,
	it changes the origin relative to the start of the first 
	measure on the system. These values are used when the current
	measure or a succeeding measure starts a new system. The same 
	change of origin is used for the group-symbol 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 and credit-image elements are not
	related to a measure, in these cases the default-x and
	default-y attributes adjust the origin relative to the
	bottom left-hand corner of the specified 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.

	The default-x and default-y position attributes provide
	higher-resolution positioning data than related features
	such as the placement attribute and the offset element.
	Applications reading a MusicXML file that can understand
	both features should generally rely on the default-x and
	default-y attributes for their greater accuracy. For the
	relative-x and relative-y attributes, the offset element,
	placement attribute, and directive attribute provide
	context for the relative position information, so the two
	features should be interpreted together.

	As elsewhere in the MusicXML format, 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 directive entity changes the default-x position 
	of a direction. It indicates that the left-hand side of the
	direction is aligned with the left-hand side of the time
	signature. If no time signature is present, it is aligned
	with the left-hand side of the first music notational
	element in the measure. If a default-x, justify, or halign
	attribute is present, it overrides the directive entity.
-->
<!ENTITY % directive
	"directive  %yes-no;  #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">

<!--
	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 several generic font styles:
	music, engraved, handwritten, text, serif, sans-serif,
	handwritten, cursive, fantasy, and monospace. The music,
	engraved, and handwritten values refer to music fonts;
	the rest refer to text fonts. The fantasy style refers to
	decorative text such as found in older German-style
	printing. 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 text-decoration entity is based on the similar
	feature in XHTML and CSS. It allows for text to
	be underlined, overlined, or struck-through. It
	extends the CSS version by allow double or
	triple lines instead of just being on or off.
-->
<!ENTITY % text-decoration
	"underline  %number-of-lines;  #IMPLIED
	 overline  %number-of-lines;   #IMPLIED
	 line-through  %number-of-lines;   #IMPLIED">
	
<!--
	The justify entity is used to indicate left, center, or
	right justification. The default value varies for different
	elements. For elements where the justify attribute is present
	but the halign attribute is not, the justify attribute
	indicates horizontal alignment as well as justification.
-->
<!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 valign-image entity is used to indicate vertical
	alignment for images and graphics, so it removes the
	baseline value. Defaults are implementation-dependent.
-->
<!ENTITY % valign-image
	"valign (top | middle | bottom) #IMPLIED">

<!--
	The letter-spacing entity specifies text tracking.
	Values are either "normal" or a number representing
	the number of ems to add between each letter. The
	number may be negative in order to subtract space.
	The default is normal, which allows flexibility of
	letter-spacing for purposes of text justification.
-->
<!ENTITY % letter-spacing
	"letter-spacing CDATA #IMPLIED">

<!--
	The line-height entity specified text leading. Values
	are either "normal" or a number representing the
	percentage of the current font height  to use for 
	leading. The default is "normal". The exact normal 
	value is implementation-dependent, but values 
	between 100 and 120 are recommended.
-->
<!ENTITY % line-height
	"line-height CDATA #IMPLIED">

<!--
	The text-direction entity is used to adjust and override
	the Unicode bidirectional text algorithm, similar to the
	W3C Internationalization Tag Set recommendation. Values
	are ltr (left-to-right embed), rtl (right-to-left embed),
	lro (left-to-right bidi-override), and rlo (right-to-left
	bidi-override). The default value is ltr. This entity
	is typically used by applications that store text in
	left-to-right visual order rather than logical order.
	Such applications can use the lro value to better
	communicate with other applications that more fully
	support bidirectional text.
-->
<!ENTITY % text-direction
	"dir (ltr | rtl | lro | rlo) #IMPLIED">

<!--
	The text-rotation entity is used to rotate text
	around the alignment point specified by the
	halign and valign entities. The value is a number
	ranging from -180 to 180. Positive values are
	clockwise rotations, while negative values are
	counter-clockwise rotations.
-->
<!ENTITY % text-rotation
	"rotation CDATA #IMPLIED">

<!--
	The enclosure entity is used to specify the
	formatting of an enclosure around text or symbols.
-->
<!ENTITY % enclosure
	"enclosure %enclosure-shape; #IMPLIED">

<!--
	The print-style entity groups together the most popular
	combination of printing attributes: position, font, and
	color.
-->
<!ENTITY % print-style
	"%position;
	 %font;
	 %color;">

<!--
	The print-style-align entity adds the halign and valign
	attributes to the position, font, and color attributes.
-->
<!ENTITY % print-style-align
	"%print-style;
	 %halign;
	 %valign;">

<!--
	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 dashed-formatting entity represents the length of
	dashes and spaces in a dashed line. Both the dash-length
	and space-length attributes are represented in tenths.
	These attributes are ignored if the corresponding 
	line-type attribute is not dashed.
-->
<!ENTITY % dashed-formatting
	"dash-length   %tenths;  #IMPLIED
	 space-length  %tenths;  #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 text-formatting entity contains the common formatting 
	attributes for text elements. Default values may differ
	across the elements that use this entity.
-->
<!ENTITY % text-formatting
	"%justify;
	 %print-style-align;
	 %text-decoration;
	 %text-rotation;
	 %letter-spacing;
	 %line-height;
	 xml:lang NMTOKEN #IMPLIED
	 xml:space (default | preserve) #IMPLIED
	 %text-direction;
	 %enclosure;">

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

<!--
	Common structures for playback attribute definitions. 
-->

<!--
	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 time-only entity is used to indicate that a particular
	playback-related element only applies particular times through
	a repeated section. The value is a comma-separated list of
	positive integers arranged in ascending order, indicating which
	times through the repeated section that the element applies.
-->
<!ENTITY % time-only
	"time-only CDATA #IMPLIED">

<!--
	Common structures for other attribute definitions. 
-->

<!--
	The document-attributes entity is used to specify the
	attributes for an entire MusicXML document. Currently
	this is used for the version attribute.

	The version attribute was added in Version 1.1 for the
	score-partwise and score-timewise documents, and in
	Version 2.0 for opus documents. It provides an easier 
	way to get version information than through the MusicXML
	public ID. The default value is 1.0 to make it possible
	for programs that handle later versions to distinguish
	earlier version files reliably. Programs that write
	MusicXML 1.1 or later files should set this attribute.
-->
<!ENTITY % document-attributes "version  CDATA  '1.0'">

<!--
	Common structures for element definitions. 
-->

<!--
	Two entities for editorial information in notes. These
	entities, and their elements defined below, are used
	across all the different component DTD modules.
-->
<!ENTITY % editorial "(footnote?, level?)">
<!ENTITY % editorial-voice "(footnote?, level?, voice?)">

<!-- 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 different
	MusicXML DTD modules. 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
	%text-formatting;
>
<!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 text content represents the shape of the
	fermata sign and may be normal, angled, or square.
	An empty fermata element represents a normal fermata.
	The fermata type is upright if not specified.
-->
<!ELEMENT fermata  (#PCDATA)>
<!ATTLIST fermata
    type (upright | inverted) #IMPLIED
    %print-style;
>
<!ELEMENT wavy-line EMPTY>
<!ATTLIST wavy-line
    type %start-stop-continue; #REQUIRED
    number %number-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-align; 
>

<!ELEMENT coda EMPTY>
<!ATTLIST coda
    %print-style-align; 
>

<!--
	These elements are used both in the time-modification and
	metronome-tuplet elements. The actual-notes element
	describes how many notes are played in the time usually
	occupied by the number of normal-notes. If the normal-notes
	type is different than the current note type (e.g., a 
	quarter note within an eighth note triplet), then the
	normal-notes type (e.g. eighth) is specified in the
	normal-type and normal-dot elements. The content of the
	actual-notes and normal-notes elements ia a non-negative
	integer.
-->
<!ELEMENT actual-notes (#PCDATA)>
<!ELEMENT normal-notes (#PCDATA)>
<!ELEMENT normal-type (#PCDATA)>
<!ELEMENT normal-dot EMPTY>

<!--
	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 other-dynamics element
	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 inconsistent in scores. Many things are assumed by the
	composer and left out, such as returns to original dynamics.
	Systematic representations are quite complex: for example,
	Humdrum has at least 3 representation formats related to
	dynamics. The MusicXML format 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-align; 
    %placement;
    %text-decoration; 
    %enclosure;
>
<!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. The string element 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 display-text element is used for exact formatting of
	multi-font text in element in display elements such as
	part-name-display. Language is Italian ("it") by default.
	Enclosure is none by default.
-->
<!ELEMENT display-text (#PCDATA)>
<!ATTLIST display-text
    %text-formatting;
>
<!--
	The accidental-text element is used for exact formatting of
	accidentals in display elements such as part-name-display.
	Values are the same as for the accidental element.
	Enclosure is none by default.
-->
<!ELEMENT accidental-text (#PCDATA)>
<!ATTLIST accidental-text
    %text-formatting;
>

<!--
	The part-name-display and part-abbreviation-display 
	elements are used in both the score.mod and direction.mod
	files. They allow more precise control of how part names
	and abbreviations appear throughout a score. The
	print-object attributes can be used to determine what,
	if anything, is printed at the start of each system.
	Formatting specified in the part-name-display and
	part-abbreviation-display elements override the formatting
	specified in the part-name and part-abbreviation elements,
	respectively.
-->
<!ELEMENT part-name-display
	((display-text | accidental-text)*)>
<!ATTLIST part-name-display
    %print-object;
>
<!ELEMENT part-abbreviation-display
	((display-text | accidental-text)*)>
<!ATTLIST part-abbreviation-display
    %print-object;
>

<!--
	The midi-device content corresponds to the DeviceName
	meta event in Standard MIDI Files. The optional port
	attribute is a number from 1 to 16 that can be used
	with the unofficial MIDI port (or cable) meta event.
	Unlike the DeviceName meta event, there can be
	multiple midi-device elements per MusicXML part
	starting in MusicXML 3.0. The optional id attribute
	refers to the score-instrument assigned to this
	device. If missing, the device assignment affects
	all score-instrument elements in the score-part.
-->
<!ELEMENT midi-device (#PCDATA)>
<!ATTLIST midi-device
    port CDATA #IMPLIED
    id IDREF #IMPLIED
>

<!--
	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?, volume?, pan?, elevation?)>
<!ATTLIST midi-instrument
    id IDREF #REQUIRED
>

<!-- 
	MIDI 1.0 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 1.0 bank numbers range from 1 to 16,384. -->
<!ELEMENT midi-bank (#PCDATA)>

<!-- MIDI 1.0 program numbers range from 1 to 128. -->
<!ELEMENT midi-program (#PCDATA)>

<!--
	For unpitched instruments, specify a MIDI 1.0 note number
	ranging from 1 to 128. It is usually used with MIDI banks for
	percussion. Note that MIDI 1.0 note numbers are generally
	specified from 0 to 127 rather than the 1 to 128 numbering
	used in this element.
-->
<!ELEMENT midi-unpitched (#PCDATA)>

<!-- 
	The volume value is a percentage of the maximum
	ranging from 0 to 100, with decimal values allowed.
	This corresponds to a scaling value for the MIDI 1.0
	channel volume controller.
 -->
<!ELEMENT volume (#PCDATA)>

<!-- 
	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.
-->
<!ELEMENT pan (#PCDATA)>
<!ELEMENT elevation (#PCDATA)>

<!-- 
	The play element, new in Version 3.0, specifies playback
	techniques to be used in conjunction with the instrument-sound
	element. When used as part of a sound element, it applies to
	all notes going forward in score order. In multi-instrument
	parts, the affected instrument should be specified using the
	id attribute. When used as part of a note element, it applies
	to the current note only.
-->
<!ELEMENT play ((ipa | mute | semi-pitched | other-play)*)>
<!ATTLIST play
    id IDREF #IMPLIED
>

<!-- 
	The ipa element represents International Phonetic Alphabet
	(IPA) sounds for vocal music. String content is limited to
	IPA 2005 symbols represented in Unicode 6.0.
-->
<!ELEMENT ipa (#PCDATA)>

<!-- 
	The mute element represents muting for different instruments,
	including brass, winds, and strings. The on and off values
	are used for undifferentiated mutes. The remaining values
	represent specific mutes: straight, cup, harmon-no-stem, 
	harmon-stem, bucket, plunger, hat, solotone, practice,
	stop-mute, stop-hand, echo, and palm.
-->
<!ELEMENT mute (#PCDATA)>

<!-- 
	The semi-pitched element represents categories of indefinite
	pitch for percussion instruments. Values are high, medium-high,
	medium, medium-low, low, and very-low.
-->
<!ELEMENT semi-pitched (#PCDATA)>

<!-- 
	The other-play element represents other types of playback. The
	required type attribute indicates the type of playback to which
	the element content applies.
-->
<!ELEMENT other-play (#PCDATA)>
<!ATTLIST other-play
    type CDATA #REQUIRED
>
 
<!-- here ends %common; -->


<!--
	The layout DTD module contains formatting information for
	pages, systems, staves, and measures.
-->
<!ENTITY % layout PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Layout//EN"
	"layout.mod">
%layout;<!-- here starts %layout; --> <!--
	MusicXML™ layout.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	Version 1.1 of the MusicXML format added layout information
	for pages, systems, staffs, and measures. These layout
	elements joined the print and sound elements in providing
	formatting data as elements rather than attributes.

	Everything is measured in tenths of staff space. Tenths are
	then scaled to millimeters within the scaling element, used
	in the defaults element at the start of a score. Individual
	staves can apply a scaling factor to adjust staff size.
	When a MusicXML element or attribute refers to tenths,
	it means the global tenths defined by the scaling element,
	not the local tenths as adjusted by the staff-size element.
-->

<!-- Elements -->

<!--
	Margins, page sizes, and distances are all measured in
	tenths to keep MusicXML data in a consistent coordinate
	system as much as possible. The translation to absolute
	units is done in the scaling element, which specifies
	how many millimeters are equal to how many tenths. For
	a staff height of 7 mm, millimeters would be set to 7
	while tenths is set to 40. The ability to set a formula
	rather than a single scaling factor helps avoid roundoff
	errors.
-->
<!ELEMENT scaling (millimeters, tenths)>
<!ELEMENT millimeters (#PCDATA)>
<!ELEMENT tenths %layout-tenths;>

<!-- 
	Margin elements are included within many of the larger
	layout elements.
-->
<!ELEMENT left-margin %layout-tenths;>
<!ELEMENT right-margin %layout-tenths;>
<!ELEMENT top-margin %layout-tenths;>
<!ELEMENT bottom-margin %layout-tenths;>

<!--
	Page layout can be defined both in score-wide defaults
	and in the print element. Page margins are specified either
	for both even and odd pages, or via separate odd and even
	page number values. The type is not needed when used as
	part of a print element. If omitted when used in the
	defaults element, "both" is the default.
-->
<!ELEMENT page-layout ((page-height, page-width)?, 
	(page-margins, page-margins?)?)>
<!ELEMENT page-height %layout-tenths;>
<!ELEMENT page-width %layout-tenths;>
<!ELEMENT page-margins (left-margin, right-margin, 
	top-margin, bottom-margin)>
<!ATTLIST page-margins
    type (odd | even | both) #IMPLIED
>

<!--
	A system is a group of staves that are read and played 
	simultaneously. System layout includes left and right 
	margins, the vertical distance from the previous system,
	and the presence or absence of system dividers. 

	Margins are relative to the page margins. Positive values
	indent and negative values reduce the margin size. The
	system distance is measured from the bottom line of the
	previous system to the top line of the current system.
	It is ignored for the first system on a page. The top
	system distance is measured from the page's top margin to
	the top line of the first system. It is ignored for all
	but the first system on a page.

	Sometimes the sum of measure widths in a system may not
	equal the system width specified by the layout elements due
	to roundoff or other errors. The behavior when reading
	MusicXML files in these cases is application-dependent.
	For instance, applications may find that the system layout
	data is more reliable than the sum of the measure widths,
	and adjust the measure widths accordingly.

	When used in the layout element, the system-layout element
	defines a default appearance for all systems in the score.
	When used in the print element, the system layout element
	affects the appearance of the current system only. All
	other systems use the default values provided in the
	defaults element. If any child elements are missing from
	the system-layout element in a print element, the values 
	from the defaults element are used there as well.
-->
<!ELEMENT system-layout
	(system-margins?, system-distance?, 
	 top-system-distance?, system-dividers?)>
<!ELEMENT system-margins (left-margin, right-margin)>
<!ELEMENT system-distance %layout-tenths;>
<!ELEMENT top-system-distance %layout-tenths;>

<!--
	The system-dividers element indicates the presence or
	absence of system dividers (also known as system separation
	marks) between systems displayed on the same page. Dividers
	on the left and right side of the page are controlled by
	the left-divider and right-divider elements respectively.
	The default vertical position is half the system-distance
	value from the top of the system that is below the divider.
	The default horizontal position is the left and right
	system margin, respectively.

	When used in the print element, the system-dividers element
	affects the dividers that would appear between the current
	system and the previous system. 
-->
<!ELEMENT system-dividers (left-divider, right-divider)>
<!ELEMENT left-divider EMPTY>
<!ATTLIST left-divider
    %print-object;
    %print-style-align; 
>
<!ELEMENT right-divider EMPTY>
<!ATTLIST right-divider
    %print-object;
    %print-style-align; 
>

<!--
	Staff layout includes the vertical distance from the bottom
	line of the previous staff in this system to the top line
	of the staff specified by the number attribute. The
	optional number attribute refers to staff numbers within
	the part, from top to bottom on the system. A value of 1
	is assumed if not present. When used in the defaults
	element, the values apply to all parts. This value is
	ignored for the first staff in a system.
-->
<!ELEMENT staff-layout (staff-distance?)>
<!ELEMENT staff-distance %layout-tenths;>
<!ATTLIST staff-layout
    number CDATA #IMPLIED
>

<!--
	Measure layout includes the horizontal distance from the
	previous measure. This value is only used for systems
	where there is horizontal whitespace in the middle of a
	system, as in systems with codas. To specify the measure
	width, use the width attribute of the measure element.
-->
<!ELEMENT measure-layout (measure-distance?)>
<!ELEMENT measure-distance %layout-tenths;>

<!--
	The appearance element controls general graphical
	settings for the music's final form appearance on a
	printed page of display. This includes support
	for line widths, definitions for note sizes, and standard
	distances between notation elements, plus an extension
	element for other aspects of appearance.

	The line-width element indicates the width of a line type
	in tenths. The type attribute defines what type of line is
	being defined. Values include beam, bracket, dashes,
	enclosure, ending, extend, heavy barline, leger,
	light barline, octave shift, pedal, slur middle, slur tip,
	staff, stem, tie middle, tie tip, tuplet bracket, and
	wedge. The text content is expressed in tenths.

	The note-size element indicates the percentage of the
	regular note size to use for notes with a cue and large
	size as defined in the type element. The grace type is
	used for notes of cue size that that include a grace
	element. The cue type is used for all other notes with 
	cue size, whether defined explicitly or implicitly via a 
	cue element. The large type is used for notes of large
	size. The text content represent the numeric percentage.
	A value of 100 would be identical to the size of a regular
	note as defined by the music font.

	The distance element represents standard distances between
	notation elements in tenths. The type attribute defines what
	type of distance is being defined. Values include hyphen
	(for hyphens in lyrics) and beam.

	The other-appearance element is used to define any
	graphical settings not yet in the current version of the
	MusicXML format. This allows extended representation,
	though without application interoperability.
-->
<!ELEMENT appearance
	(line-width*, note-size*, distance*, 
	 other-appearance*)>
<!ELEMENT line-width %layout-tenths;>
<!ATTLIST line-width
    type CDATA #REQUIRED
>
<!ELEMENT note-size (#PCDATA)>
<!ATTLIST note-size
    type (cue | grace | large) #REQUIRED
>
<!ELEMENT distance %layout-tenths;>
<!ATTLIST distance
    type CDATA #REQUIRED
>
<!ELEMENT other-appearance (#PCDATA)>
<!ATTLIST other-appearance
    type CDATA #REQUIRED
>
 
<!-- here ends %layout; -->


<!-- 
	The identity DTD module contains identification and
	metadata elements.
-->
<!ENTITY % identity PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Identity//EN"
	"identity.mod">
%identity;<!-- here starts %identity; --> <!--
	MusicXML™ identity.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	The identify DTD module contains the identification
	element and its children, containing metadata about a
	score.
-->

<!-- Elements -->

<!--
	Identification contains basic metadata about the score.
	It includes the information in MuseData headers that
	may apply at a score-wide, movement-wide, or part-wide
	level. The creator, rights, source, and relation elements
	are based on Dublin Core.
-->
<!ELEMENT identification (creator*, rights*, encoding?,
	source?, relation*, miscellaneous?)>

<!--
	The creator element is borrowed from Dublin Core. It is
	used for the creators of the score. The type attribute is
	used to distinguish different creative contributions. Thus,
	there can be multiple creators within an identification.
	Standard type values are composer, lyricist, and arranger.
	Other type values may be used for different types of
	creative roles. The type attribute should usually be used
	even if there is just a single creator element. The MusicXML
	format does not use the creator / contributor distinction
	from Dublin Core.
-->
<!ELEMENT creator (#PCDATA)>
<!ATTLIST creator
    type CDATA #IMPLIED
>

<!--
	Rights is borrowed from Dublin Core. It contains
	copyright and other intellectual property notices.
	Words, music, and derivatives can have different types,
	so multiple rights tags with different type attributes
	are supported. Standard type values are music, words,
	and arrangement, but other types may be used. The
	type attribute is only needed when there are multiple
	rights elements.
-->
<!ELEMENT rights (#PCDATA)>
<!ATTLIST rights
    type CDATA #IMPLIED
>

<!--
	Encoding contains information about who did the digital
	encoding, when, with what software, and in what aspects.
	Standard type values for the encoder element are music,
	words, and arrangement, but other types may be used. The
	type attribute is only needed when there are multiple
	encoder elements.

	The supports element indicates if the encoding supports
	a particular MusicXML element. This is recommended for
	elements like beam, stem, and accidental, where the
	absence of an element is ambiguous if you do not know
	if the encoding supports that element. For Version 2.0,
	the supports element is expanded to allow programs to
	indicate support for particular attributes or particular
	values. This lets applications communicate, for example,
	that all system and/or page breaks are contained in the
	MusicXML file.
-->
<!ELEMENT encoding ((encoding-date | encoder | software |
	encoding-description | supports)*)>
<!ELEMENT encoding-date %yyyy-mm-dd;>
<!ELEMENT encoder (#PCDATA)>
<!ATTLIST encoder
    type CDATA #IMPLIED
>
<!ELEMENT software (#PCDATA)>
<!ELEMENT encoding-description (#PCDATA)>
<!ELEMENT supports EMPTY>
<!ATTLIST supports
    type %yes-no; #REQUIRED
    element CDATA #REQUIRED
    attribute CDATA #IMPLIED
    value CDATA #IMPLIED
>

<!--
	The source for the music that is encoded. This is similar
	to the Dublin Core source element.
-->
<!ELEMENT source (#PCDATA)>

<!--
	A related resource for the music that is encoded. This is
	similar to the Dublin Core relation element. Standard type
	values are music, words, and arrangement, but other
	types may be used.
-->
<!ELEMENT relation (#PCDATA)>
<!ATTLIST relation
    type CDATA #IMPLIED
>

<!--
	If a program has other metadata not yet supported in the
	MusicXML format, it can go in the miscellaneous area.
-->
<!ELEMENT miscellaneous (miscellaneous-field*)>
<!ELEMENT miscellaneous-field (#PCDATA)>
<!ATTLIST miscellaneous-field
    name CDATA #REQUIRED
>
 
<!-- here ends %identity; -->


<!--
	The attributes DTD module contains elements that usually
	change at the start of a measure, such as key signatures,
	time signatures, and clefs.
-->
<!ENTITY % attributes PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Attributes//EN"
	"attributes.mod">
%attributes;<!-- here starts %attributes; --> <!--
	MusicXML™ attributes.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	The attributes DTD module contains the attributes element
	and its children, such as key and time signatures.
-->

<!-- Entities -->

<!--
	The time-separator entity indicates how to display the
	arrangement between the beats and beat-type values in a
	time signature. The default value is none. The horizontal,
	diagonal, and vertical values represent horizontal, diagonal
	lower-left to upper-right, and vertical lines respectively. 
	For these values, the beats and beat-type values are arranged
	on either side of the separator line. The none value represents
	no separator with the beats and beat-type arranged vertically.
	The adjacent value represents no separator with the beats and
	beat-type arranged horizontally.
-->
<!ENTITY % time-separator
	"separator (none | horizontal | diagonal | 
		vertical | adjacent) #IMPLIED">

<!--
	The time-symbol entity indicates how to display a time
	signature. The normal value is the usual fractional display,
	and is the implied symbol type if none is specified. Other
	options are the common and cut time symbols, as well as a
	single number with an implied denominator. The note symbol
	indicates that the beat-type should be represented with
	the corresponding downstem note rather than a number. The
	dotted-note symbol indicates that the beat-type should be
	represented with a dotted downstem note that corresponds to
	three times the beat-type value, and a numerator that is
	one third the beats value.
-->
<!ENTITY % time-symbol
	"symbol (common | cut | single-number | 
			 note | dotted-note | normal) #IMPLIED">

<!-- Elements -->

<!--
	The attributes element contains musical information that
	typically changes on measure boundaries. This includes
	key and time signatures, clefs, transpositions, and staving.
	When attributes are changed mid-measure, it affects the
	music in score order, not in MusicXML document order.
-->
<!ELEMENT attributes (%editorial;, divisions?, key*, time*,
	staves?, part-symbol?, instruments?, clef*, staff-details*,
	transpose*, directive*, measure-style*)>

<!--	
	Traditional key signatures are represented by the number
	of flats and sharps, plus an optional mode for major/
	minor/mode distinctions. Negative numbers are used for
	flats and positive numbers for sharps, reflecting the
	key's placement within the circle of fifths (hence the
	element name). A cancel element indicates that the old
	key signature should be cancelled before the new one
	appears. This will always happen when changing to C major
	or A minor and need not be specified then. The cancel
	value matches the fifths value of the cancelled key
	signature (e.g., a cancel of -2 will provide an explicit
	cancellation for changing from B flat major to F major).
	The optional location attribute indicates where a key
	signature cancellation appears relative to a new key
	signature: to the left, to the right, or before the barline
	and to the left. It is left by default. For mid-measure key
	elements, a cancel location of before-barline should be
	treated like a cancel location of left.
	
	Non-traditional key signatures can be represented using
	the Humdrum/Scot concept of a list of altered tones.
	The key-step and key-alter elements are represented the
	same way as the step and alter elements are in the pitch
	element in the note.mod file. The optional key-accidental 
	element is represented the same way as the accidental 
	element in the note.mod file. It is used for disambiguating 
	microtonal accidentals. The different element names
	indicate the different meaning of altering notes in a scale
	versus altering a sounding pitch.
	
	Valid mode values include major, minor, dorian, phrygian,
	lydian, mixolydian, aeolian, ionian, locrian, and none.

	The optional number attribute refers to staff numbers, 
	from top to bottom on the system. If absent, the key
	signature applies to all staves in the part.

	The optional list of key-octave elements is used to specify
	in which octave each element of the key signature appears.
	The content specifies the octave value using the same
	values as the display-octave element. The number attribute
	is a positive integer that refers to the key signature
	element in left-to-right order. If the cancel attribute is
	set to yes, then this number refers to an element specified
	by the cancel element. It is no by default.

	Key signatures appear at the start of each system unless
	the print-object attribute has been set to "no".
-->
<!ELEMENT key (((cancel?, fifths, mode?) |
	((key-step, key-alter, key-accidental?)*)), key-octave*)>
<!ATTLIST key
    number CDATA #IMPLIED
    %print-style;
    %print-object;
>
<!ELEMENT cancel (#PCDATA)>
<!ATTLIST cancel
    location (left | right | before-barline) #IMPLIED
>
<!ELEMENT fifths (#PCDATA)>
<!ELEMENT mode (#PCDATA)>
<!ELEMENT key-step (#PCDATA)>
<!ELEMENT key-alter (#PCDATA)>
<!ELEMENT key-accidental (#PCDATA)>
<!ELEMENT key-octave (#PCDATA)>
<!ATTLIST key-octave
    number NMTOKEN #REQUIRED
    cancel %yes-no; #IMPLIED
>

<!--
	Musical notation duration is commonly represented as
	fractions. The divisions element indicates how many 
	divisions per quarter note are used to indicate a note's
	duration. For example, if duration = 1 and divisions = 2,
	this is an eighth note duration. Duration and divisions
	are used directly for generating sound output, so they
	must be chosen to take tuplets into account. Using a
	divisions element lets us use just one number to 
	represent a duration for each note in the score, while
	retaining the full power of a fractional representation.
	For maximum compatibility with Standard MIDI Files, the
	divisions value should not exceed 16383.
-->
<!ELEMENT divisions (#PCDATA)>

<!--
	Time signatures are represented by two elements. The
	beats element indicates the number of beats, as found in
	the numerator of a time signature. The beat-type element
	indicates the beat unit, as found in the denominator of
	a time signature.

	Multiple pairs of beats and beat-type elements are used for
	composite time signatures with multiple denominators, such
	as 2/4 + 3/8. A composite such as 3+2/8 requires only one
	beats/beat-type pair. 

	The interchangeable element is used to represent the second
	in a pair of interchangeable dual time signatures, such as
	the 6/8 in 3/4 (6/8). A separate symbol attribute value is
	available compared to the time element's symbol attribute,
	which applies to the first of the dual time signatures.
	The time-relation element indicates the symbol used to
	represent the interchangeable aspect of the time signature.
	Valid values are parentheses, bracket, equals, slash, space,
	and hyphen.

	A senza-misura element explicitly indicates that no time
	signature is present. The optional element content
	indicates the symbol to be used, if any, such as an X.
	The time element's symbol attribute is not used when a
	senza-misura element is present.

	The print-object attribute allows a time signature to be
	specified but not printed, as is the case for excerpts
	from the middle of a score. The value is "yes" if
	not present. The optional number attribute refers to staff
	numbers within the part, from top to bottom on the system. 
	If absent, the time signature applies to all staves in the 
	part.
-->
<!ELEMENT time
	(((beats, beat-type)+, interchangeable?) | senza-misura)>
<!ATTLIST time
    number CDATA #IMPLIED
    %time-symbol;
    %time-separator;
    %print-style-align;
    %print-object;
>
<!ELEMENT interchangeable (time-relation?, (beats, beat-type)+)>
<!ATTLIST interchangeable
    %time-symbol;
    %time-separator;
>
<!ELEMENT beats (#PCDATA)>
<!ELEMENT beat-type (#PCDATA)>
<!ELEMENT senza-misura (#PCDATA)>
<!ELEMENT time-relation (#PCDATA)>

<!--
	Staves are used if there is more than one staff
	represented in the given part (e.g., 2 staves for
	typical piano parts). If absent, a value of 1 is assumed.
	Staves are ordered from top to bottom in a part in
	numerical order, with staff 1 above staff 2.
-->
<!ELEMENT staves (#PCDATA)>

<!--
	The part-symbol element indicates how a symbol for a
	multi-staff part is indicated in the score. Values include
	none, brace, line, bracket, and square; brace is the default.
	The top-staff and bottom-staff elements are used when the
	brace does not extend across the entire part. For example, in
	a 3-staff organ part, the top-staff will typically be 1 for
	the right hand, while the bottom-staff will typically be 2
	for the left hand. Staff 3 for the pedals is usually outside
	the brace. By default, the presence of a part-symbol element
	that does not extend across the entire part also indicates a 
	corresponding change in the common barlines within a part.
 -->
<!ELEMENT part-symbol (#PCDATA)>
<!ATTLIST part-symbol
	top-staff CDATA #IMPLIED
	bottom-staff CDATA #IMPLIED
    %position;
    %color;
>

<!--
	Instruments are only used if more than one instrument is
	represented in the part (e.g., oboe I and II where they
	play together most of the time). If absent, a value of 1
	is assumed.
-->
<!ELEMENT instruments (#PCDATA)>

<!--
	Clefs are represented by the sign, line, and
	clef-octave-change elements. Sign values include G, F, C,
	percussion, TAB, jianpu, and none. Line numbers are
	counted from the bottom of the staff. Standard values are
	2 for the G sign (treble clef), 4 for the F sign (bass clef), 
	3 for the C sign (alto clef) and 5 for TAB (on a 6-line
	staff). The clef-octave-change element is used for
	transposing clefs (e.g., a treble clef for tenors would
	have a clef-octave-change value of -1). The optional 
	number attribute refers to staff numbers within the part,
	from top to bottom on the system. A value of 1 is 
	assumed if not present. 

	The jianpu sign indicates that the music that follows 
	should be in jianpu numbered notation, just as the TAB
	sign indicates that the music that follows should be in
	tablature notation. Unlike TAB, a jianpu sign does not
	correspond to a visual clef notation.

	Sometimes clefs are added to the staff in non-standard
	line positions, either to indicate cue passages, or when
	there are multiple clefs present simultaneously on one
	staff. In this situation, the additional attribute is set to
	"yes" and the line value is ignored. The size attribute
	is used for clefs where the additional attribute is "yes".
	It is typically used to indicate cue clefs.

	Sometimes clefs at the start of a measure need to appear
	after the barline rather than before, as for cues or for
	use after a repeated section. The after-barline attribute
	is set to "yes" in this situation. The attribute is ignored
	for mid-measure clefs.

	Clefs appear at the start of each system unless the 
	print-object attribute has been set to "no" or the 
	additional attribute has been set to "yes".
-->
<!ELEMENT clef (sign, line?, clef-octave-change?)>
<!ATTLIST clef
    number CDATA #IMPLIED
    additional %yes-no; #IMPLIED
    size %symbol-size; #IMPLIED
    after-barline %yes-no; #IMPLIED
    %print-style;
    %print-object;
>
<!ELEMENT sign (#PCDATA)>
<!ELEMENT line (#PCDATA)>
<!ELEMENT clef-octave-change (#PCDATA)>

<!--
	The staff-details element is used to indicate different
	types of staves. The staff-type element can be ossia,
	cue, editorial, regular, or alternate. An alternate staff
	indicates one that shares the same musical data as the
	prior staff, but displayed differently (e.g., treble and
	bass clef, standard notation and tab). The staff-lines
	element specifies the number of lines for a non 5-line
	staff. The staff-tuning and capo elements are used to
	specify tuning when using tablature notation. The optional
	number attribute specifies the staff number from top to
	bottom on the system, as with clef. The optional show-frets
	attribute indicates whether to show tablature frets as
	numbers (0, 1, 2) or letters (a, b, c). The default choice
	is numbers. The print-object attribute is used to indicate
	when a staff is not printed in a part, usually in large
	scores where empty parts are omitted. It is yes by default.
	If print-spacing is yes while print-object is no, the score
	is printed in cutaway format where vertical space is left
	for the empty part.
-->
<!ELEMENT staff-details (staff-type?, staff-lines?, 
	staff-tuning*, capo?, staff-size?)>
<!ATTLIST staff-details
    number         CDATA                #IMPLIED
    show-frets     (numbers | letters)  #IMPLIED
    %print-object;
    %print-spacing;
>
<!ELEMENT staff-type (#PCDATA)>
<!ELEMENT staff-lines (#PCDATA)>

<!--
	The tuning-step, tuning-alter, and tuning-octave
	elements are defined in the common.mod file. Staff
	lines are numbered from bottom to top.
-->
<!ELEMENT staff-tuning
	(tuning-step, tuning-alter?, tuning-octave)>
<!ATTLIST staff-tuning
    line CDATA #REQUIRED
>

<!--
	The capo element indicates at which fret a capo should
	be placed on a fretted instrument. This changes the
	open tuning of the strings specified by staff-tuning
	by the specified number of half-steps.
-->
<!ELEMENT capo (#PCDATA)>

<!--
	The staff-size element indicates how large a staff
	space is on this staff, expressed as a percentage of 
	the work's default scaling. Values less than 100 make
	the staff space smaller while values over 100 make the
	staff space larger. A staff-type of cue, ossia, or 
	editorial implies a staff-size of less than 100, but
	the exact value is implementation-dependent unless
	specified here. Staff size affects staff height only,
	not the relationship of the staff to the left and
	right margins.
-->
<!ELEMENT staff-size (#PCDATA)>

<!--
	If the part is being encoded for a transposing instrument
	in written vs. concert pitch, the transposition must be
	encoded in the transpose element. The transpose element
	represents what must be added to the written pitch to get
	the correct sounding pitch.

	The transposition is represented by chromatic steps
	(required) and three optional elements: diatonic pitch
	steps, octave changes, and doubling an octave down. The
	chromatic and octave-change elements are numeric values
	added to the encoded pitch data to create the sounding
	pitch. The diatonic element is also numeric and allows
	for correct spelling of enharmonic transpositions.

	The optional number attribute refers to staff numbers, 
	from top to bottom on the system. If absent, the
	transposition applies to all staves in the part. Per-staff 
	transposition is most often used in parts that represent
	multiple instruments. 
-->
<!ELEMENT transpose
	(diatonic?, chromatic, octave-change?, double?)>
<!ATTLIST transpose
    number CDATA #IMPLIED
>
<!ELEMENT diatonic (#PCDATA)>
<!ELEMENT chromatic (#PCDATA)>
<!ELEMENT octave-change (#PCDATA)>
<!ELEMENT double EMPTY>

<!--
	Directives are like directions, but can be grouped together 
	with attributes for convenience. This is typically used for
	tempo markings at the beginning of a piece of music. This
	element has been deprecated in Version 2.0 in favor of
	the directive attribute for direction elements. Language 
	names come from ISO 639, with optional country subcodes
	from ISO 3166.
-->
<!ELEMENT directive (#PCDATA)>
<!ATTLIST directive
    %print-style;
    xml:lang NMTOKEN #IMPLIED
>

<!--
	A measure-style indicates a special way to print partial
	to multiple measures within a part. This includes multiple
	rests over several measures, repeats of beats, single, or
	multiple measures, and use of slash notation.
	
	The multiple-rest and measure-repeat symbols indicate the
	number of measures covered in the element content. The
	beat-repeat and slash elements can cover partial measures.
	All but the multiple-rest element use a type attribute to 
	indicate starting and stopping the use of the style. The
	optional number attribute specifies the staff number from
	top to bottom on the system, as with clef.
-->
<!ELEMENT measure-style (multiple-rest | 
	measure-repeat | beat-repeat | slash)>
<!ATTLIST measure-style
    number CDATA #IMPLIED
    %font;
    %color;
>

<!--
	The slash-type and slash-dot elements are optional children
	of the beat-repeat and slash elements. They have the same
	values as the type and dot elements, and define what the
	beat is for the display of repetition marks. If not present,
	the beat is based on the current time signature.
-->
<!ELEMENT slash-type (#PCDATA)>
<!ELEMENT slash-dot EMPTY>

<!--
	The text of the multiple-rest element indicates the number
	of measures in the multiple rest. Multiple rests may use
	the 1-bar / 2-bar / 4-bar rest symbols, or a single shape.
	The use-symbols attribute indicates which to use; it is no
	if not specified.
-->
<!ELEMENT multiple-rest (#PCDATA)>
<!ATTLIST multiple-rest
    use-symbols %yes-no; #IMPLIED
>

<!--
	The measure-repeat and beat-repeat element specify a
	notation style for repetitions. The actual music being
	repeated needs to be repeated within the MusicXML file.
	These elements specify the notation that indicates the
	repeat.
-->

<!--
	The measure-repeat element is used for both single and
	multiple measure repeats. The text of the element indicates
	the number of measures to be repeated in a single pattern.
	The slashes attribute specifies the number of slashes to
	use in the repeat sign. It is 1 if not specified. Both the
	start and the stop of the measure-repeat must be specified.
-->
<!ELEMENT measure-repeat (#PCDATA)>
<!ATTLIST measure-repeat
    type %start-stop; #REQUIRED
    slashes NMTOKEN #IMPLIED
>

<!--
	The beat-repeat element is used to indicate that a single
	beat (but possibly many notes) is repeated. Both the start
	and stop of the beat being repeated should be specified.
	The slashes attribute specifies the number of slashes to
	use in the symbol. The use-dots attribute indicates whether
	or not to use dots as well (for instance, with mixed rhythm
	patterns). By default, the value for slashes is 1 and the
	value for use-dots is no.
-->
<!ELEMENT beat-repeat ((slash-type, slash-dot*)?)>
<!ATTLIST beat-repeat
    type %start-stop; #REQUIRED
    slashes NMTOKEN #IMPLIED
    use-dots %yes-no; #IMPLIED
>

<!--
	The slash element is used to indicate that slash notation
	is to be used. If the slash is on every beat, use-stems is
	no (the default). To indicate rhythms but not pitches,
	use-stems is set to yes. The type attribute indicates
	whether this is the start or stop of a slash notation
	style. The use-dots attribute works as for the beat-repeat
	element, and only has effect if use-stems is no.
-->
<!ELEMENT slash ((slash-type, slash-dot*)?)>
<!ATTLIST slash
    type %start-stop; #REQUIRED
    use-dots %yes-no; #IMPLIED
    use-stems %yes-no; #IMPLIED
>
 
<!-- here ends %attributes; -->


<!--
	The link DTD module contains XLink attributes.
-->
<!ENTITY % link PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Link//EN"
	"link.mod">
%link;<!-- here starts %link; --> <!--
	MusicXML™ link.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	This DTD module describes the entity and elements used for
	simple XLink support. The link element serves as an outgoing
	XLink. The bookmark element serves as a well-defined target
	for an incoming XLink. The entity for link-attributes is
	also used to connect a MusicXML score with a MusicXML opus.
	If a relative link is used within a document that is part of
	a compressed MusicXML file, the link is relative to the 
	root folder of the zip file.
-->

<!-- Entities -->

<!--
	Namespace entity for the XLink recommendation.
-->
<!ENTITY % xlink.ns "http://www.w3.org/1999/xlink">

<!--
	The link-attributes entity includes all the simple XLink
	attributes supported in the MusicXML format.
-->
<!ENTITY % link-attributes
	"xmlns:xlink  CDATA    #FIXED     '%xlink.ns;'
	 xlink:href   CDATA    #REQUIRED
	 xlink:type   (simple) #FIXED     'simple'
	 xlink:role   CDATA    #IMPLIED
	 xlink:title  CDATA    #IMPLIED
	 xlink:show   (new | replace | embed | other | none)
		'replace'
	 xlink:actuate	(onRequest | onLoad | other | none)
		'onRequest'">

<!-- Elements -->

<!--
	The element and position attributes are new as of Version
	2.0. They allow for bookmarks and links to be positioned at
	higher resolution than the level of music-data elements.
	When no element and position attributes are present, the
	bookmark or link element refers to the next sibling element
	in the MusicXML file. The element attribute specifies an
	element type for a descendant of the next sibling element
	that is not a link or bookmark. The position attribute
	specifies the position of this descendant element, where
	the first position is 1. The position attribute is ignored
	if the element attribute is not present. For instance, an
	element value of "beam"  and a position value of "2" defines
	the link or bookmark to refer to the second beam descendant
	of the next sibling element that is not a link or bookmark.
	This is equivalent to an XPath test of [.//beam[2]] done
	in the context of the sibling element.
-->

<!ELEMENT link EMPTY>
<!ATTLIST link
    %link-attributes;
    name  CDATA  #IMPLIED
    element  NMTOKEN #IMPLIED
    position NMTOKEN #IMPLIED
    %position;
>
	
<!ELEMENT bookmark EMPTY>
<!ATTLIST bookmark
    id    ID     #REQUIRED
    name  CDATA  #IMPLIED
    element  NMTOKEN #IMPLIED
    position NMTOKEN #IMPLIED
>
 
<!-- here ends %link; -->


<!--
	The note DTD module contains the bulk of the elements
	and attributes for a musical scores relating to individual
	notes and rests.
 -->
<!ENTITY % note PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Note//EN"
	"note.mod">
%note;<!-- here starts %note; --> <!--
	MusicXML™ note.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	The note DTD module contains the note representations for
	the MusicXML format. It contains the note element, all its
	children elements, and related entities.
-->

<!-- Entities -->

<!-- Structures -->

<!--
	The common note elements between cue/grace notes and
	regular (full) notes: pitch, chord, and rest information,
	but not duration (cue and grace notes do not have
	duration encoded here). Unpitched elements are used for
	unpitched percussion, speaking voice, and other musical
	elements lacking determinate pitch.
-->
<!ENTITY % full-note "(chord?, (pitch | unpitched | rest))">

<!-- Elements -->

<!--
	Notes are the most common type of MusicXML data. The
	MusicXML format keeps the MuseData distinction between
	elements used for sound information and elements used for
	notation information (e.g., tie is used for sound, tied for
	notation). Thus grace notes do not have a duration element.
	Cue notes have a duration element, as do forward elements,
	but no tie elements. Having these two types of information
	available can make interchange considerably easier, as
	some programs handle one type of information much more
	readily than the other. 
-->
<!ELEMENT note 
	(((grace, %full-note;, (tie, tie?)?) |
	  (cue, %full-note;, duration) |
	  (%full-note;, duration, (tie, tie?)?)),
	 instrument?, %editorial-voice;, type?, dot*,
	 accidental?, time-modification?, stem?, notehead?,
	 notehead-text?, staff?, beam*, notations*, lyric*, play?)>

<!--
	The position and printout entities for printing suggestions
	are defined in the common.mod file.
	
	The dynamics and end-dynamics attributes correspond to
	MIDI 1.0's Note On and Note Off velocities, respectively.
	They are expressed in terms of percentages of the default
	forte value (90 for MIDI 1.0). The attack and release
	attributes are used to alter the starting and stopping time
	of the note from when it would otherwise occur based on
	the flow of durations - information that is specific to a
	performance. They are expressed in terms of divisions,
	either positive or negative. A note that starts a tie should
	not have a release attribute, and a note that stops a tie
	should not have an attack attribute. If a note is played
	only particular times through a repeat, the time-only entity
	shows which times to play the note. The pizzicato attribute
	is used when just this note is sounded pizzicato, vs. the
	pizzicato element which changes overall playback between
	pizzicato and arco.
-->
<!ATTLIST note
    %print-style; 
    %printout;
    dynamics CDATA #IMPLIED
    end-dynamics CDATA #IMPLIED
    attack CDATA #IMPLIED
    release CDATA #IMPLIED
    %time-only;
    pizzicato %yes-no; #IMPLIED
>

<!--
	Pitch is represented as a combination of the step of the
	diatonic scale, the chromatic alteration, and the octave.
	The step element uses the English letters A through G. 
	The alter element represents chromatic alteration in
	number of semitones (e.g., -1 for flat, 1 for sharp).
	Decimal values like 0.5 (quarter tone sharp) are 
	used for microtones. The octave element is represented
	by the numbers 0 to 9, where 4 indicates the octave
	started by middle C.
-->
<!ELEMENT pitch (step, alter?, octave)>
<!ELEMENT step (#PCDATA)>
<!ELEMENT alter (#PCDATA)>
<!ELEMENT octave (#PCDATA)>

<!--
	The cue and grace elements indicate the presence of cue and
	grace notes. The slash attribute for a grace note is yes for
	slashed eighth notes. The other grace note attributes come
	from MuseData sound suggestions. The steal-time-previous
	attribute indicates the percentage of time to steal from the
	previous note for the grace note. The steal-time-following
	attribute indicates the percentage of time to steal from the
	following note for the grace note, as for appoggiaturas. The
	make-time attribute indicates to make time, not steal time;
	the units are in real-time divisions for the grace note. 
-->
<!ELEMENT cue EMPTY>
<!ELEMENT grace EMPTY>
<!ATTLIST grace
    steal-time-previous CDATA #IMPLIED
    steal-time-following CDATA #IMPLIED
    make-time CDATA #IMPLIED
    slash %yes-no; #IMPLIED
>

<!--
	The chord element indicates that this note is an additional
	chord tone with the preceding note. The duration of this
	note can be no longer than the preceding note. In MuseData,
	a missing duration indicates the same length as the previous
	note, but the MusicXML format requires a duration for chord
	notes too.
-->
<!ELEMENT chord EMPTY>

<!--
	The unpitched element indicates musical elements that are
	notated on the staff but lack definite pitch, such as
	unpitched percussion and speaking voice. Like notes, it
	uses step and octave elements to indicate placement on the
	staff, following the current clef. If percussion clef is
	used, the display-step and display-octave elements are
	interpreted as if in treble clef, with a G in octave 4 on
	line 2. If not present, the note is placed on the middle
	line of the staff, generally used for a one-line staff.
-->
<!ELEMENT unpitched ((display-step, display-octave)?)>
<!ELEMENT display-step (#PCDATA)>
<!ELEMENT display-octave (#PCDATA)>

<!--
	The rest element indicates notated rests or silences. Rest
	elements are usually empty, but placement on the staff can
	be specified using display-step and display-octave
	elements. If the measure attribute is set to yes, it
	indicates this is a complete measure rest.
-->
<!ELEMENT rest ((display-step, display-octave)?)>
<!ATTLIST rest
    measure %yes-no; #IMPLIED
>

<!--
	Duration is a positive number specified in division units.
	This is the intended duration vs. notated duration (for
	instance, swing eighths vs. even eighths, or differences
	in dotted notes in Baroque-era music). Differences in
	duration specific to an interpretation or performance
	should use the note element's attack and release
	attributes. 

	The tie element indicates that a tie begins or ends with
	this note. If the tie element applies only particular times
	through a repeat, the time-only attribute indicates which
	times to apply it. The tie element indicates sound; the tied
	element indicates notation. 
-->
<!ELEMENT duration (#PCDATA)>
<!ELEMENT tie EMPTY>
<!ATTLIST tie
    type %start-stop; #REQUIRED
    %time-only;
>

<!--
	If multiple score-instruments are specified on a
	score-part, there should be an instrument element for
	each note in the part. The id attribute is an IDREF back
	to the score-instrument ID.
-->
<!ELEMENT instrument EMPTY>
<!ATTLIST instrument
    id IDREF #REQUIRED
>

<!--
	Type indicates the graphic note type, Valid values (from
	shortest to longest) are 1024th, 512th, 256th, 128th,
	64th, 32nd, 16th, eighth, quarter, half, whole, breve,
	long, and maxima. The size attribute indicates full, cue,
	or large size, with full the default for regular notes and
	cue the default for cue and grace notes.
-->
<!ELEMENT type (#PCDATA)>
<!ATTLIST type
    size %symbol-size; #IMPLIED
>

<!--
	One dot element is used for each dot of prolongation.
	The placement element is used to specify whether the
	dot should appear above or below the staff line. It is
	ignored for notes that appear on a staff space.
-->
<!ELEMENT dot EMPTY>
<!ATTLIST dot
    %print-style;
    %placement; 
>

<!--
	Actual notated accidentals. Valid values include: sharp,
	natural, flat, double-sharp, sharp-sharp, flat-flat,
	natural-sharp, natural-flat, quarter-flat, quarter-sharp,
	three-quarters-flat, three-quarters-sharp, sharp-down,
	sharp-up, natural-down, natural-up, flat-down, flat-up,
	triple-sharp, triple-flat, slash-quarter-sharp,
	slash-sharp, slash-flat, double-slash-flat, sharp-1,
	sharp-2, sharp-3, sharp-5, flat-1, flat-2, flat-3,
	flat-4, sori, and koron.

	The quarter- and three-quarters- accidentals are
	Tartini-style quarter-tone accidentals. The -down and -up
	accidentals are quarter-tone accidentals that include
	arrows pointing down or up. The slash- accidentals
	are used in Turkish classical music. The numbered
	sharp and flat accidentals are superscripted versions
	of the accidental signs, used in Turkish folk music.
	The sori and koron accidentals are microtonal sharp and
	flat accidentals used in Iranian and Persian music.

	Editorial and cautionary indications are indicated
	by attributes. Values for these attributes are "no" if not 
	present. Specific graphic display such as parentheses, 
	brackets, and size are controlled by the level-display
	entity defined in the common.mod file.
-->
<!ELEMENT accidental (#PCDATA)>
<!ATTLIST accidental
    cautionary %yes-no; #IMPLIED
    editorial %yes-no; #IMPLIED
    %level-display;
    %print-style;
>

<!--
	Time modification indicates tuplets, double-note tremolos,
	and other durational changes. A time-modification element
	shows how the cumulative, sounding effect of tuplets and
	double-note tremolos compare to the written note type 
	represented by the type and dot elements. The child elements
	are defined in the common.mod file. Nested tuplets and other
	notations that use more detailed information need both the 
	time-modification and tuplet elements to be represented
	accurately.
-->
<!ELEMENT time-modification
	(actual-notes, normal-notes, (normal-type, normal-dot*)?)>

<!--
	Stems can be down, up, none, or double. For down and up
	stems, the position attributes can be used to specify
	stem length. The relative values specify the end of the
	stem relative to the program default. Default values
	specify an absolute end stem position. Negative values of
	relative-y that would flip a stem instead of shortening
	it are ignored. A stem element associated with a rest 
	refers to a stemlet.
-->
<!ELEMENT stem (#PCDATA)>
<!ATTLIST stem
    %position;
    %color;
>

<!--
	The notehead element indicates shapes other than the open
	and closed ovals associated with note durations. The element
	value can be slash, triangle, diamond, square, cross, x,
	circle-x, inverted triangle, arrow down, arrow up, slashed,
	back slashed, normal, cluster, circle dot, left triangle,
	rectangle, or none. For shape note music, the element values
	do, re, mi, fa, fa up, so, la, and ti are also used,
	corresponding to Aikin's 7-shape system. The fa up shape is
	typically used with upstems; the fa shape is typically used
	with downstems or no stems.

	The arrow shapes differ from triangle and inverted triangle
	by being centered on the stem. Slashed and back slashed 
	notes include both the normal notehead and a slash. The 
	triangle shape has the tip of the triangle pointing up;
	the inverted triangle shape has the tip of the triangle 
	pointing down. The left triangle shape is a right triangle
	with the hypotenuse facing up and to the left.
	
	For the enclosed shapes, the default is to be hollow for
	half notes and longer, and filled otherwise. The filled
	attribute can be set to change this if needed.
	
	If the parentheses attribute is set to yes, the notehead
	is parenthesized. It is no by default.

	The notehead-text element indicates text that is displayed
	inside a notehead, as is done in some educational music. 
	It is not needed for the numbers used in tablature or jianpu 
	notation. The presence of a TAB or jianpu clefs is sufficient
	to indicate that numbers are used. The display-text and
	accidental-text elements allow display of fully formatted
	text and accidentals.
-->
<!ELEMENT notehead (#PCDATA)>
<!ATTLIST notehead
    filled %yes-no; #IMPLIED
    parentheses %yes-no; #IMPLIED
    %font;
    %color;
>
<!ELEMENT notehead-text
	((display-text | accidental-text)+)>

<!--
	Beam types include begin, continue, end, forward hook, and
	backward hook. Up to eight concurrent beams are available to
	cover up to 1024th notes, using an enumerated type defined
	in the common.mod file. Each beam in a note is represented
	with a separate beam element, starting with the eighth note
	beam using a number attribute of 1.

	Note that the beam number does not distinguish sets of
	beams that overlap, as it does for slur and other elements.
	Beaming groups are distinguished by being in different
	voices and/or the presence or absence of grace and cue
	elements.

	Beams that have a begin value can also have a fan attribute to
	indicate accelerandos and ritardandos using fanned beams. The
	fan attribute may also be used with a continue value if the
	fanning direction changes on that note. The value is "none"
	if not specified.
	
	The repeater attribute has been deprecated in MusicXML 3.0.
	Formerly used for tremolos, it needs to be specified with a
	"yes" value for each beam using it.
-->
<!ELEMENT beam (#PCDATA)>
<!ATTLIST beam
    number %beam-level; "1"
    repeater %yes-no; #IMPLIED
    fan (accel | rit | none) #IMPLIED
    %color;
>

<!--
	Notations are musical notations, not XML notations. Multiple
	notations are allowed in order to represent multiple editorial
	levels. The print-object attribute, added in Version 3.0,
	allows notations to represent details of performance technique,
	such as fingerings, without having them appear in the score.
-->
<!ELEMENT notations
	(%editorial;, 
	 (tied | slur | tuplet | glissando | slide | 
	  ornaments | technical | articulations | dynamics |
	  fermata | arpeggiate | non-arpeggiate | 
	  accidental-mark | other-notation)*)>
<!ATTLIST notations
    %print-object;
>

<!--
	The tied element represents the notated tie. The tie element 
	represents the tie sound.

	The number attribute is rarely needed to disambiguate ties,
	since note pitches will usually suffice. The attribute is
	implied rather than defaulting to 1 as with most elements. 
	It is available for use in more complex tied notation 
	situations.
-->
<!ELEMENT tied EMPTY>
<!ATTLIST tied
    type %start-stop-continue; #REQUIRED
    number %number-level; #IMPLIED
    %line-type;
    %dashed-formatting;
    %position;
    %placement;
    %orientation;
    %bezier;
    %color;
>

<!--
	Slur elements are empty. Most slurs are represented with
	two elements: one with a start type, and one with a stop
	type. Slurs can add more elements using a continue type.
	This is typically used to specify the formatting of cross-
	system slurs, or to specify the shape of very complex slurs.
-->
<!ELEMENT slur EMPTY>
<!ATTLIST slur
    type %start-stop-continue; #REQUIRED
    number %number-level; "1"
    %line-type;
    %dashed-formatting;
    %position;
    %placement;
    %orientation;
    %bezier;
    %color;
>

<!--
	A tuplet element is present when a tuplet is to be displayed
	graphically, in addition to the sound data provided by the
	time-modification elements. The number attribute is used to
	distinguish nested tuplets. The bracket attribute is used
	to indicate the presence of a bracket. If unspecified, the
	results are implementation-dependent. The line-shape
	attribute is used to specify whether the bracket is straight
	or in the older curved or slurred style. It is straight by
	default.
	
	Whereas a time-modification element shows how the cumulative,
	sounding effect of tuplets and double-note tremolos compare to
	the written note type, the tuplet element describes how this
	is displayed. The tuplet element also provides more detailed
	representation information than the time-modification element,
	and is needed to represent nested tuplets and other complex
	tuplets accurately. The tuplet-actual and tuplet-normal
	elements provide optional full control over tuplet
	specifications. Each allows the number and note type
	(including dots) describing a single tuplet. If any of
	these elements are absent, their values are based on the
	time-modification element.
	
	The show-number attribute is used to display either the
	number of actual notes, the number of both actual and
	normal notes, or neither. It is actual by default. The
	show-type attribute is used to display either the actual
	type, both the actual and normal types, or neither. It is
	none by default.
-->
<!ELEMENT tuplet (tuplet-actual?, tuplet-normal?)>
<!ATTLIST tuplet
    type %start-stop; #REQUIRED
    number %number-level; #IMPLIED
    bracket %yes-no; #IMPLIED
    show-number (actual | both | none) #IMPLIED
    show-type (actual | both | none) #IMPLIED
    %line-shape;
    %position;
    %placement;
>
<!ELEMENT tuplet-actual (tuplet-number?,
	tuplet-type?, tuplet-dot*)>
<!ELEMENT tuplet-normal (tuplet-number?,
	tuplet-type?, tuplet-dot*)>
<!ELEMENT tuplet-number (#PCDATA)>
<!ATTLIST tuplet-number
    %font;
    %color;
>
<!ELEMENT tuplet-type (#PCDATA)>
<!ATTLIST tuplet-type
    %font;
    %color;
>
<!ELEMENT tuplet-dot EMPTY>
<!ATTLIST tuplet-dot
    %font;
    %color;
>

<!--
	Glissando and slide elements both indicate rapidly moving
	from one pitch to the other so that individual notes are not
	discerned. The distinction is similar to that between NIFF's
	glissando and portamento elements. A glissando sounds the
	half notes in between the slide and defaults to a wavy line.
	A slide is continuous between two notes and defaults to a
	solid line. The optional text for a glissando or slide is
	printed alongside the line.
-->
<!ELEMENT glissando (#PCDATA)>
<!ATTLIST glissando
    type %start-stop; #REQUIRED
    number %number-level; "1"
    %line-type;
    %dashed-formatting; 
    %print-style; 
>
<!ELEMENT slide (#PCDATA)>
<!ATTLIST slide
    type %start-stop; #REQUIRED
    number %number-level; "1"
    %line-type; 
    %dashed-formatting; 
    %print-style; 
    %bend-sound;
>

<!--
	The other-notation element is used to define any notations
	not yet in the MusicXML format. This allows extended
	representation, though without application interoperability.
	It handles notations where more specific extension elements
	such as other-dynamics and other-technical are not
	appropriate.
-->
<!ELEMENT other-notation (#PCDATA)>
<!ATTLIST other-notation
    type %start-stop-single; #REQUIRED
    number %number-level; "1"
    %print-object;
    %print-style; 
    %placement;
>

<!--
	Ornaments can be any of several types, followed optionally
	by accidentals. The accidental-mark element's content is
	represented the same as an accidental element, but with a
	different name to reflect the different musical meaning.
-->
<!ELEMENT ornaments
	(((trill-mark | turn | delayed-turn | inverted-turn |
	   delayed-inverted-turn | vertical-turn | shake |
	   wavy-line | mordent | inverted-mordent | schleifer |
	   tremolo | other-ornament), accidental-mark*)*)>
<!ELEMENT trill-mark EMPTY>
<!ATTLIST trill-mark
    %print-style; 
    %placement; 
    %trill-sound; 
>

<!--
	The turn and delayed-turn elements are the normal turn
	shape which goes up then down. The inverted-turn and
	delayed-inverted-turn elements have the shape which goes
	down and then up. The delayed-turn and delayed-inverted-turn
	elements indicate turns that are delayed until the end of the
	current note. The vertical-turn element has the shape
	arranged vertically going from upper left to lower right.
	If the slash attribute is yes, then a vertical line is used
	to slash the turn; it is no by default.
-->
<!ELEMENT turn EMPTY>
<!ATTLIST turn
    %print-style; 
    %placement; 
    %trill-sound; 
    slash %yes-no; #IMPLIED
>
<!ELEMENT delayed-turn EMPTY>
<!ATTLIST delayed-turn
    %print-style; 
    %placement; 
    %trill-sound; 
    slash %yes-no; #IMPLIED
>
<!ELEMENT inverted-turn EMPTY>
<!ATTLIST inverted-turn
    %print-style; 
    %placement; 
    %trill-sound; 
    slash %yes-no; #IMPLIED
>
<!ELEMENT delayed-inverted-turn EMPTY>
<!ATTLIST delayed-inverted-turn
    %print-style; 
    %placement; 
    %trill-sound; 
    slash %yes-no; #IMPLIED
>
<!ELEMENT vertical-turn EMPTY>
<!ATTLIST vertical-turn
    %print-style; 
    %placement; 
    %trill-sound; 
>

<!ELEMENT shake EMPTY>
<!ATTLIST shake
    %print-style; 
    %placement; 
    %trill-sound; 
>

<!--
	The wavy-line element is defined in the common.mod file,
	as it applies to more than just note elements.
-->

<!-- 
	The long attribute for the mordent and inverted-mordent
	elements is "no" by default. The mordent element represents
	the sign with the vertical line; the inverted-mordent
	element represents the sign without the vertical line.
	The approach and departure attributes are used for compound
	ornaments, indicating how the beginning and ending of the
	ornament look relative to the main part of the mordent.
-->
<!ELEMENT mordent EMPTY>
<!ATTLIST mordent
    long %yes-no; #IMPLIED
    approach %above-below; #IMPLIED
    departure %above-below; #IMPLIED
    %print-style; 
    %placement; 
    %trill-sound; 
>
<!ELEMENT inverted-mordent EMPTY>
<!ATTLIST inverted-mordent
    long %yes-no; #IMPLIED
    approach %above-below; #IMPLIED
    departure %above-below; #IMPLIED
    %print-style; 
    %placement; 
    %trill-sound; 
>

<!--
	The name for this ornament is based on the German,
	to avoid confusion with the more common slide element
	defined earlier.
-->
<!ELEMENT schleifer EMPTY>
<!ATTLIST schleifer
    %print-style; 
    %placement; 
>

<!--
	The tremolo ornament can be used to indicate either 
	single-note or double-note tremolos. Single-note tremolos
	use the single type, while double-note tremolos use the
	start and stop types. The default is "single" for
	compatibility with Version 1.1. The text of the element
	indicates the number of tremolo marks and is an integer
	from 0 to 8. Note that the number of attached beams is
	not included in this value, but is represented separately
	using the beam element.

	When using double-note tremolos, the duration of each note
	in the tremolo should correspond to half of the notated type
	value. A time-modification element should also be added with
	an actual-notes value of 2 and a normal-notes value of 1. If
	used within a tuplet, this 2/1 ratio should be multiplied by
	the existing tuplet ratio.

	Using repeater beams for indicating tremolos is deprecated as
	of MusicXML 3.0.
-->
<!ELEMENT tremolo (#PCDATA)>
<!ATTLIST tremolo
    type %start-stop-single; "single"
    %print-style; 
    %placement; 
>

<!--
	The other-ornament element is used to define any ornaments
	not yet in the MusicXML format. This allows extended
	representation, though without application interoperability.
-->
<!ELEMENT other-ornament (#PCDATA)>
<!ATTLIST other-ornament
    %print-style; 
    %placement; 
>

<!--
	An accidental-mark can be used as a separate notation or
	as part of an ornament. When used in an ornament, position
	and placement are relative to the ornament, not relative to
	the note.
-->
<!ELEMENT accidental-mark (#PCDATA)>
<!ATTLIST accidental-mark
    %print-style; 
    %placement; 
>

<!--
	Technical indications give performance information for
	individual instruments.
-->
<!ELEMENT technical
	((up-bow | down-bow | harmonic | open-string |
	  thumb-position | fingering | pluck | double-tongue |
	  triple-tongue | stopped | snap-pizzicato | fret |
	  string | hammer-on | pull-off | bend | tap | heel |
	  toe | fingernails | hole | arrow | handbell | 
	  other-technical)*)>

<!--
	The up-bow element represents the symbol that is used both
	for up-bowing on bowed instruments, and up-stroke on plucked
	instruments.
-->
<!ELEMENT up-bow EMPTY>
<!ATTLIST up-bow
    %print-style; 
    %placement; 
>

<!--
	The down-bow element represents the symbol that is used both
	for down-bowing on bowed instruments, and down-stroke on
	plucked instruments.
-->
<!ELEMENT down-bow EMPTY>
<!ATTLIST down-bow
    %print-style; 
    %placement; 
>

<!--
	The harmonic element indicates natural and artificial
	harmonics. Natural harmonics usually notate the base
	pitch rather than the sounding pitch. Allowing the type
	of pitch to be specified, combined with controls for
	appearance/playback differences, allows both the notation
	and the sound to be represented. Artificial harmonics can
	add a notated touching-pitch; the pitch or fret at which
	the string is touched lightly to produce the harmonic.
	Artificial pinch harmonics will usually not notate a
	touching pitch. The attributes for the harmonic element
	refer to the use of the circular harmonic symbol, typically
	but not always used with natural harmonics.
-->
<!ELEMENT harmonic
	((natural | artificial)?, 
	 (base-pitch | touching-pitch | sounding-pitch)?)>
<!ATTLIST harmonic
    %print-object;
    %print-style; 
    %placement; 
>
<!ELEMENT natural EMPTY>
<!ELEMENT artificial EMPTY>
<!ELEMENT base-pitch EMPTY>
<!ELEMENT touching-pitch EMPTY>
<!ELEMENT sounding-pitch EMPTY>

<!--
	The open-string element represents the zero-shaped 
	open string symbol.
-->
<!ELEMENT open-string EMPTY>
<!ATTLIST open-string
    %print-style; 
    %placement; 
>

<!--
	The thumb-position element represents the thumb position
	symbol. This is a circle with a line, where the line does
	not come within the circle. It is distinct from the snap
	pizzicato symbol, where the line comes inside the circle.
-->
<!ELEMENT thumb-position EMPTY>
<!ATTLIST thumb-position
    %print-style; 
    %placement; 
>

<!--
	The pluck element is used to specify the plucking fingering
	on a fretted instrument, where the fingering element refers
	to the fretting fingering. Typical values are p, i, m, a for
	pulgar/thumb, indicio/index, medio/middle, and anular/ring
	fingers.
-->
<!ELEMENT pluck (#PCDATA)>
<!ATTLIST pluck
    %print-style; 
    %placement; 
>

<!--
	The double-tongue element represents the double tongue symbol
	(two dots arranged horizontally).
-->
<!ELEMENT double-tongue EMPTY>
<!ATTLIST double-tongue
    %print-style; 
    %placement; 
>

<!--
	The triple-tongue element represents the triple tongue symbol
	(three dots arranged horizontally).
-->
<!ELEMENT triple-tongue EMPTY>
<!ATTLIST triple-tongue
    %print-style; 
    %placement; 
>

<!--
	The stopped element represents the stopped symbol, which looks
	like a plus sign.
-->
<!ELEMENT stopped EMPTY>
<!ATTLIST stopped
    %print-style; 
    %placement; 
>

<!--
	The snap-pizzicato element represents the snap pizzicato
	symbol. This is a circle with a line, where the line comes
	inside the circle. It is distinct from the thumb-position
	symbol, where the line does not come inside the circle.
-->
<!ELEMENT snap-pizzicato EMPTY>
<!ATTLIST snap-pizzicato
    %print-style; 
    %placement; 
>

<!--
	The hammer-on and pull-off elements are used in guitar
	and fretted instrument notation. Since a single slur
	can be marked over many notes, the hammer-on and pull-off
	elements are separate so the individual pair of notes can
	be specified. The element content can be used to specify
	how the hammer-on or pull-off should be notated. An empty
	element leaves this choice up to the application.
-->
<!ELEMENT hammer-on (#PCDATA)>
<!ATTLIST hammer-on
    type %start-stop; #REQUIRED
    number %number-level; "1"
    %print-style;
    %placement;
>
<!ELEMENT pull-off (#PCDATA)>
<!ATTLIST pull-off
    type %start-stop; #REQUIRED
    number %number-level; "1"
    %print-style;
    %placement;
>

<!--
	The bend element is used in guitar and tablature. The
	bend-alter element indicates the number of steps in the
	bend, similar to the alter element. As with the alter
	element, numbers like 0.5 can be used to indicate
	microtones. Negative numbers indicate pre-bends or
	releases; the pre-bend and release elements are used
	to distinguish what is intended. A with-bar element
	indicates that the bend is to be done at the bridge
	with a whammy or vibrato bar. The content of the
	element indicates how this should be notated.
-->
<!ELEMENT bend
	(bend-alter, (pre-bend | release)?, with-bar?)>
<!ATTLIST bend
    %print-style; 
    %bend-sound;
>
<!ELEMENT bend-alter (#PCDATA)>
<!ELEMENT pre-bend EMPTY>
<!ELEMENT release EMPTY>
<!ELEMENT with-bar (#PCDATA)>
<!ATTLIST with-bar
    %print-style; 
    %placement; 
>

<!--
	The tap element indicates a tap on the fretboard. The
	element content allows specification of the notation;
	+ and T are common choices. If empty, the display is
	application-specific.
-->
<!ELEMENT tap (#PCDATA)>
<!ATTLIST tap
    %print-style; 
    %placement; 
>

<!-- 
	The heel and toe element are used with organ pedals. The
	substitution value is "no" if the attribute is not present.
-->
<!ELEMENT heel EMPTY>
<!ATTLIST heel
    substitution %yes-no; #IMPLIED
    %print-style; 
    %placement; 
>
<!ELEMENT toe EMPTY>
<!ATTLIST toe
    substitution %yes-no; #IMPLIED
    %print-style; 
    %placement; 
>

<!-- 
	The fingernails element is used in notation for harp and
	other plucked string instruments.
-->
<!ELEMENT fingernails EMPTY>
<!ATTLIST fingernails
    %print-style; 
    %placement; 
>

<!--
	The hole element represents the symbols used for woodwind
	and brass fingerings as well as other notations. The content
	of the optional hole-type element indicates what the hole
	symbol represents in terms of instrument fingering or other
	techniques. The hole-closed element represents whether the
	hole is closed, open, or half-open. Valid element values are
	yes, no, and half. The optional location attribute indicates
	which portion of the hole is filled in when the element value
	is half. The optional hole-shape element indicates the shape
	of the hole symbol; the default is a circle.
-->
<!ELEMENT hole (hole-type?, hole-closed, hole-shape?)>
<!ATTLIST hole
    %print-style; 
    %placement; 
>
<!ELEMENT hole-type (#PCDATA)>
<!ELEMENT hole-closed (#PCDATA)>
<!ATTLIST hole-closed
    location (right | bottom | left | top) #IMPLIED 
>
<!ELEMENT hole-shape (#PCDATA)>

<!-- 
	The arrow element represents an arrow used for a musical
	technical indication. Straight arrows are represented with
	an arrow-direction element and an optional arrow-style
	element. Circular arrows are represented with a
	circular-arrow element. Descriptive values use Unicode
	arrow terminology.

	Values for the arrow-direction element are left, up, right,
	down, northwest, northeast, southeast, southwest, left right,
	up down, northwest southeast, northeast southwest, and other.

	Values for the arrow-style element are single, double,
	filled, hollow, paired, combined, and other. Filled and
	hollow arrows indicate polygonal single arrows. Paired
	arrows are duplicate single arrows in the same direction.
	Combined arrows apply to double direction arrows like
	left right, indicating that an arrow in one direction
	should be combined with an arrow in the other direction.

	Values for the circular-arrow element are clockwise and
	anticlockwise.
-->
<!ELEMENT arrow
	((arrow-direction, arrow-style?) | circular-arrow)>
<!ATTLIST arrow
    %print-style; 
    %placement; 
>
<!ELEMENT arrow-direction (#PCDATA)>
<!ELEMENT arrow-style (#PCDATA)>
<!ELEMENT circular-arrow (#PCDATA)>

<!-- 
	The handbell element represents notation for various
	techniques used in handbell and handchime music. Valid
	values are damp, echo, gyro, hand martellato, mallet lift,
	mallet table, martellato, martellato lift, 
	muted martellato, pluck lift, and swing.
-->
<!ELEMENT handbell (#PCDATA)>
<!ATTLIST handbell
    %print-style; 
    %placement; 
>

<!--
	The other-technical element is used to define any technical
	indications not yet in the MusicXML format. This allows
	extended representation, though without application
	interoperability.
-->
<!ELEMENT other-technical (#PCDATA)>
<!ATTLIST other-technical
    %print-style; 
    %placement; 
>

<!--
	Articulations and accents are grouped together here.
-->
<!ELEMENT articulations
	((accent | strong-accent | staccato | tenuto |
	  detached-legato | staccatissimo | spiccato |
	  scoop | plop | doit | falloff | breath-mark | 
	  caesura | stress | unstress | other-articulation)*)>

<!ELEMENT accent EMPTY>
<!ATTLIST accent
    %print-style; 
    %placement; 
>
<!ELEMENT strong-accent EMPTY>
<!ATTLIST strong-accent
    %print-style; 
    %placement; 
    type %up-down; "up"
>

<!-- 
	The staccato element is used for a dot articulation, as
	opposed to a stroke or a wedge.
-->
<!ELEMENT staccato EMPTY>
<!ATTLIST staccato
    %print-style; 
    %placement; 
>
<!ELEMENT tenuto EMPTY>
<!ATTLIST tenuto
    %print-style; 
    %placement; 
>
<!ELEMENT detached-legato EMPTY>
<!ATTLIST detached-legato
    %print-style; 
    %placement; 
>

<!--
	The staccatissimo element is used for a wedge articulation,
	as opposed to a dot or a stroke.
-->
<!ELEMENT staccatissimo EMPTY>
<!ATTLIST staccatissimo
    %print-style; 
    %placement; 
>

<!--
	The spiccato element is used for a stroke articulation, as
	opposed to a dot or a wedge.
-->
<!ELEMENT spiccato EMPTY>
<!ATTLIST spiccato
    %print-style; 
    %placement; 
>

<!-- 
	The scoop, plop, doit, and falloff elements are
	indeterminate slides attached to a single note.
	Scoops and plops come before the main note, coming
	from below and above the pitch, respectively. Doits
	and falloffs come after the main note, going above
	and below the pitch, respectively.
-->
<!ELEMENT scoop EMPTY>
<!ATTLIST scoop
    %line-shape;
    %line-type;
    %dashed-formatting;
    %print-style; 
    %placement;
>
<!ELEMENT plop EMPTY>
<!ATTLIST plop
    %line-shape;
    %line-type;
    %dashed-formatting;
    %print-style; 
    %placement; 
>
<!ELEMENT doit EMPTY>
<!ATTLIST doit
    %line-shape;
    %line-type;
    %dashed-formatting;
    %print-style; 
    %placement;
>
<!ELEMENT falloff EMPTY>
<!ATTLIST falloff
    %line-shape;
    %line-type;
    %dashed-formatting;
    %print-style; 
    %placement; 
>

<!--
	The breath-mark element may have a text value to
	indicate the symbol used for the mark. Valid values are
	comma, tick, and an empty string.
-->
<!ELEMENT breath-mark (#PCDATA)>
<!ATTLIST breath-mark
    %print-style; 
    %placement; 
>

<!ELEMENT caesura EMPTY>
<!ATTLIST caesura
    %print-style; 
    %placement; 
>
<!ELEMENT stress EMPTY>
<!ATTLIST stress
    %print-style; 
    %placement; 
>
<!ELEMENT unstress EMPTY>
<!ATTLIST unstress
    %print-style; 
    %placement; 
>

<!--
	The other-articulation element is used to define any
	articulations not yet in the MusicXML format. This allows
	extended representation, though without application
	interoperability.
-->
<!ELEMENT other-articulation (#PCDATA)>
<!ATTLIST other-articulation
    %print-style; 
    %placement; 
>

<!--
	The dynamics and fermata elements are defined in the
	common.mod file as they apply to more than just note
	elements.
-->

<!--
	The arpeggiate element indicates that this note is part of
	an arpeggiated chord. The number attribute can be used to
	distinguish between two simultaneous chords arpeggiated
	separately (different numbers) or together (same number).
	The up-down attribute is used if there is an arrow on the
	arpeggio sign. By default, arpeggios go from the lowest to
	highest note.
-->
<!ELEMENT arpeggiate EMPTY>
<!ATTLIST arpeggiate
    number %number-level; #IMPLIED
    direction %up-down; #IMPLIED
    %position; 
    %placement;
    %color; 
>

<!-- 
	The non-arpeggiate element indicates that this note is at
	the top or bottom of a bracket indicating to not arpeggiate
	these notes. Since this does not involve playback, it is
	only used on the top or bottom notes, not on each note
	as for the arpeggiate element.
-->
<!ELEMENT non-arpeggiate EMPTY>
<!ATTLIST non-arpeggiate
    type %top-bottom; #REQUIRED
    number %number-level; #IMPLIED
    %position; 
    %placement;
    %color; 
>

<!--
	Text underlays for lyrics, based on Humdrum with support
	for other formats. The lyric number indicates multiple
	lines, though a name can be used as well (as in Finale's
	verse/chorus/section specification). Word extensions are
	represented using the extend element. Hyphenation is 
	indicated by the syllabic element, which can be single, 
	begin, end, or middle. These represent single-syllable
	words, word-beginning syllables, word-ending syllables,
	and mid-word syllables. Multiple syllables on a single
	note are separated by elision elements. A hyphen in the
	text element should only be used for an actual hyphenated
	word. Two text elements that are not separated by an
	elision element are part of the same syllable, but may have
	different text formatting.

	Humming and laughing representations are taken from
	Humdrum. The end-line and end-paragraph elements come
	from RP-017 for Standard MIDI File Lyric meta-events;
	they help facilitate lyric display for Karaoke and
	similar applications. Language names for text elements
	come from ISO 639, with optional country subcodes from
	ISO 3166. Justification is center by default; placement is
	below by default. The print-object attribute can override
	a note's print-lyric attribute in cases where only some
	lyrics on a note are printed, as when lyrics for later verses
	are printed in a block of text rather than with each note.
-->
<!ELEMENT lyric
	((((syllabic?, text),
	   (elision?, syllabic?, text)*, extend?) |
	   extend | laughing | humming),
	  end-line?, end-paragraph?, %editorial;)>
<!ATTLIST lyric
    number NMTOKEN #IMPLIED
    name CDATA #IMPLIED
    %justify;
    %position;
    %placement;
    %color;
    %print-object;
>

<!ELEMENT text (#PCDATA)>
<!ATTLIST text
    %font;
    %color;
    %text-decoration;
    %text-rotation;
    %letter-spacing;
    xml:lang NMTOKEN #IMPLIED
    %text-direction;
>
<!ELEMENT syllabic (#PCDATA)>

<!--
	The elision element text specifies the symbol used to
	display the elision. Common values are a no-break space
	(Unicode 00A0), an underscore (Unicode 005F), or an undertie
	(Unicode 203F).
-->
<!ELEMENT elision (#PCDATA)>
<!ATTLIST elision
    %font;
    %color;
>

<!--
	The extend element represents lyric word extension / 
	melisma lines as well as figured bass extensions. The
	optional type and position attributes are added in
	Version 3.0 to provide better formatting control.
-->
<!ELEMENT extend EMPTY>
<!ATTLIST extend
    type %start-stop-continue; #IMPLIED
    %print-style;
>

<!ELEMENT laughing EMPTY>
<!ELEMENT humming EMPTY>
<!ELEMENT end-line EMPTY>
<!ELEMENT end-paragraph EMPTY>

<!--
	Figured bass elements take their position from the first
	regular note (not a grace note or chord note) that follows
	in score order. The optional duration element is used to
	indicate changes of figures under a note.	

	Figures are ordered from top to bottom. A figure-number is a
	number. Values for prefix and suffix include the accidental
	values sharp, flat, natural, double-sharp, flat-flat, and
	sharp-sharp. Suffixes include both symbols that come after
	the figure number and those that overstrike the figure number.
	The suffix value slash is used for slashed numbers indicating
	chromatic alteration. The orientation and display of the slash
	usually depends on the figure number. The prefix and suffix
	elements may contain additional values for symbols specific
	to particular figured bass styles. The value of parentheses
	is "no" if not present.
-->
<!ELEMENT figured-bass (figure+, duration?, %editorial;)>
<!ATTLIST figured-bass
    %print-style; 
    %printout;
    parentheses %yes-no; #IMPLIED
>
<!ELEMENT figure (prefix?, figure-number?, suffix?, extend?)>
<!ELEMENT prefix (#PCDATA)>
<!ATTLIST prefix
    %print-style;
>
<!ELEMENT figure-number (#PCDATA)>
<!ATTLIST figure-number
    %print-style;
>
<!ELEMENT suffix (#PCDATA)>
<!ATTLIST suffix
    %print-style;
>

<!--
	The backup and forward elements are required to coordinate
	multiple voices in one part, including music on multiple
	staves. The forward element is generally used within voices
	and staves, while the backup element is generally used to
	move between voices and staves. Thus the backup element
	does not include voice or staff elements. Duration values
	should always be positive, and should not cross measure
	boundaries or mid-measure changes in the divisions value.
-->
<!ELEMENT backup (duration, %editorial;)>
<!ELEMENT forward
	(duration, %editorial-voice;, staff?)>
 
<!-- here ends %note; -->


<!--
	The barline DTD module contains elements regarding
	barline style, repeats, and multiple endings.
-->
<!ENTITY % barline PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Barline//EN"
	"barline.mod">
%barline;<!-- here starts %barline; --> <!--
	MusicXML™ barline.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	If a barline is other than a normal single barline, it
	should be represented by a barline element that describes
	it. This includes information about repeats and multiple
	endings, as well as line style. Barline data is on the same
	level as the other musical data in a score - a child of a
	measure in a partwise score, or a part in a timewise score.
	This allows for barlines within measures, as in dotted
	barlines that subdivide measures in complex meters. The two
	fermata elements allow for fermatas on both sides of the
	barline (the lower one inverted).
	
	Barlines have a location attribute to make it easier to
	process barlines independently of the other musical data
	in a score. It is often easier to set up measures
	separately from entering notes. The location attribute
	must match where the barline element occurs within the
	rest of the musical data in the score. If location is left,
	it should be the first element in the measure, aside from
	the print, bookmark, and link elements. If location is
	right, it should be the last element, again with the
	possible exception of the print, bookmark, and link
	elements. If no location is specified, the right barline
	is the default. The segno, coda, and divisions attributes
	work the same way as in the sound element defined in the
	direction.mod file. They are used for playback when barline
	elements contain segno or coda child elements.
-->

<!-- Elements -->

<!ELEMENT barline (bar-style?, %editorial;, wavy-line?, 
	segno?, coda?, (fermata, fermata?)?, ending?, repeat?)>
<!ATTLIST barline
    location (right | left | middle) "right"
    segno CDATA #IMPLIED
    coda CDATA #IMPLIED
    divisions CDATA #IMPLIED
>

<!--
	Bar-style contains style information. Choices are
	regular, dotted, dashed, heavy, light-light, 
	light-heavy, heavy-light, heavy-heavy, tick (a
	short stroke through the top line), short (a partial
	barline between the 2nd and 4th lines), and none.
-->
<!ELEMENT bar-style (#PCDATA)>
<!ATTLIST bar-style
    %color;
>

<!--
	The editorial entity and the wavy-line, segno, and fermata
	elements are defined in the common.mod file. They can
	apply to both notes and barlines.
-->

<!--
	Endings refers to multiple (e.g. first and second) endings.
	Typically, the start type is associated with the left
	barline of the first measure in an ending. The stop and
	discontinue types are associated with the right barline of
	the last measure in an ending. Stop is used when the ending
	mark concludes with a downward jog, as is typical for first
	endings. Discontinue is used when there is no downward jog,
	as is typical for second endings that do not conclude a
	piece. The length of the jog can be specified using the
	end-length attribute. The text-x and text-y attributes
	are offsets that specify where the baseline of the start
	of the ending text appears, relative to the start of the
	ending line.

	The number attribute reflects the numeric values of what
	is under the ending line. Single endings such as "1" or 
	comma-separated multiple endings such as "1, 2" may be
	used. The ending element text is used when the text 
	displayed in the ending is different than what appears in
	the number attribute. The print-object element is used to
	indicate when an ending is present but not printed, as is
	often the case for many parts in a full score.
-->
<!ELEMENT ending (#PCDATA)>
<!ATTLIST ending
    number CDATA #REQUIRED
    type (start | stop | discontinue) #REQUIRED
    %print-object;
    %print-style;
    end-length %tenths; #IMPLIED
    text-x %tenths; #IMPLIED
    text-y %tenths; #IMPLIED
>

<!--
	Repeat marks. The start of the repeat has a forward direction
	while the end of the repeat has a backward direction. Backward
	repeats that are not part of an ending can use the times
	attribute to indicate the number of times the repeated section
	is played. The winged attribute indicates whether the repeat
	has winged extensions that appear above and below the barline.
	The straight and curved values represent single wings, while
	the double-straight and double-curved values represent double
	wings. The none value indicates no wings and is the default.
-->
<!ELEMENT repeat EMPTY>
<!ATTLIST repeat
    direction (backward | forward) #REQUIRED
    times CDATA #IMPLIED
    winged (none | straight | curved | 
		double-straight | double-curved) #IMPLIED
>
 
<!-- here ends %barline; -->


<!-- 
	The direction DTD module contains elements for musical
	directions not tied to individual notes. This includes
	harmony and chord symbol elements.
-->
<!ENTITY % direction PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Direction//EN"
	"direction.mod">
%direction;<!-- here starts %direction; --> <!--
	MusicXML™ direction.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	This direction DTD module contains the direction element
	and its children. Directions are not note-specific, but
	instead are associated with a part or the overall score.
	
	Harmony indications and general print and sound
	suggestions are likewise not necessarily attached to
	particular note elements, and are included here as well.
-->

<!-- Entities -->

<!--
	The tip-direction entity represents the direction in which
	the tip of a stick or beater points, using Unicode arrow
	terminology.
-->
<!ENTITY % tip-direction 
	"(up | down | left | right | 
	  northwest | northeast | southeast | southwest)">

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

	By default, a series of direction-type elements and a 
	series of child elements of a direction-type within a 
	single direction element follow one another in sequence
	visually. For a series of direction-type children, non-
	positional formatting attributes are carried over from
	the previous element by default.
-->
<!ELEMENT direction (direction-type+, offset?,
	%editorial-voice;, staff?, sound?)>
<!ATTLIST direction
    %placement; 
    %directive;
>

<!--
	Textual direction types may have more than 1 component
	due to multiple fonts. The dynamics element may also be
	used in the notations element, and is defined in the
	common.mod file.
-->
<!ELEMENT direction-type (rehearsal+ | segno+ | words+ |
	coda+ | wedge | dynamics+ | dashes | bracket | pedal | 
	metronome | octave-shift | harp-pedals | damp | damp-all |
	eyeglasses | string-mute | scordatura | image |
	principal-voice | accordion-registration | percussion+ | 
	other-direction)>

<!--
	Entities related to print suggestions apply to the
	individual direction-type, not to the overall direction.
-->

<!--
	Language is Italian ("it") by default. Enclosure is
	square by default. Left justification is assumed if
	not specified.
-->
<!ELEMENT rehearsal (#PCDATA)>
<!ATTLIST rehearsal
    %text-formatting;
>

<!--
	Left justification is assumed if not specified. 
	Language is Italian ("it") by default. Enclosure
	is none by default.
-->
<!ELEMENT words (#PCDATA)>
<!ATTLIST words
    %text-formatting;
>

<!--
	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. The niente attribute is yes
	if a circle appears at the point of the wedge, indicating
	a crescendo from nothing or diminuendo to nothing. It is 
	no by default, and used only when the type is crescendo,
	or the type is stop for a wedge that began with a diminuendo
	type. The line-type is solid by default. The continue type 
	is used for formatting wedges over a system break, or for
	other situations where a single wedge is divided into
	multiple segments.
-->
<!ELEMENT wedge EMPTY>
<!ATTLIST wedge
    type (crescendo | diminuendo | stop | continue) #REQUIRED
    number %number-level; #IMPLIED
    spread %tenths; #IMPLIED
    niente %yes-no; #IMPLIED
    %line-type;
    %dashed-formatting;
    %position;
    %color;
>

<!--
	Dashes, used for instance with cresc. and dim. marks.
-->
<!ELEMENT dashes EMPTY>
<!ATTLIST dashes
    type %start-stop-continue; #REQUIRED
    number %number-level; #IMPLIED
    %dashed-formatting;
    %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-continue; #REQUIRED
    number %number-level; #IMPLIED
    line-end (up | down | both | arrow | none) #REQUIRED
    end-length %tenths; #IMPLIED
    %line-type;
    %dashed-formatting;
    %position;
    %color;
>

<!-- 
	Piano pedal marks. The line attribute is yes if pedal
	lines are used. The sign attribute is yes if Ped and *
	signs are used. For MusicXML 2.0 compatibility, the sign
	attribute is yes by default if the line attribute is no,
	and is no by default if the line attribute is yes. The
	change and continue types are used when the line attribute
	is yes. The change type indicates a pedal lift and retake
	indicated with an inverted V marking. The continue type
	allows more precise formatting across system breaks and for
	more complex pedaling lines. The alignment attributes are
	ignored if the line attribute is yes.
-->
<!ELEMENT pedal EMPTY>
<!ATTLIST pedal
    type (start | stop | continue | change) #REQUIRED
    line %yes-no; #IMPLIED
    sign %yes-no; #IMPLIED
    %print-style-align; 
>

<!--
	Metronome marks and other metric relationships.
	
	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. If a font is specified for
	the per-minute element, it overrides the font specified for
	the overall metronome element. This allows separate
	specification of a music font for beat-unit and a text
	font for the numeric value in cases where a single
	metronome font is not used.

	The metronome-note and metronome-relation elements
	allow for the specification of more complicated metric
	relationships, such as swing tempo marks where 
	two eighths are equated to a quarter note / eighth note
	triplet. The metronome-type, metronome-beam, and
	metronome-dot elements work like the type, beam, and
	dot elements. The metronome-tuplet element uses the
	same element structure as the time-modification element
	along with some attributes from the tuplet element. The
	metronome-relation element describes the relationship
	symbol that goes between the two sets of metronome-note
	elements. The currently allowed value is equals, but this
	may expand in future versions. If the element is empty,
	the equals value is used. The metronome-relation and
	the following set of metronome-note elements are optional
	to allow display of an isolated Grundschlagnote.
-->
<!ELEMENT metronome 
	((beat-unit, beat-unit-dot*, 
	 (per-minute | (beat-unit, beat-unit-dot*))) |
	(metronome-note+, (metronome-relation, metronome-note+)?))>
<!ATTLIST metronome
    %print-style-align;
    %justify;
    parentheses %yes-no; #IMPLIED
>
<!ELEMENT beat-unit (#PCDATA)>
<!ELEMENT beat-unit-dot EMPTY>
<!ELEMENT per-minute (#PCDATA)> 
<!ATTLIST per-minute
    %font;
>

<!ELEMENT metronome-note
	(metronome-type, metronome-dot*,
	 metronome-beam*, metronome-tuplet?)>
<!ELEMENT metronome-relation (#PCDATA)>
<!ELEMENT metronome-type (#PCDATA)>
<!ELEMENT metronome-dot EMPTY>
<!ELEMENT metronome-beam (#PCDATA)>
<!ATTLIST metronome-beam
    number %beam-level; "1"
>
<!ELEMENT metronome-tuplet
	(actual-notes, normal-notes, 
	 (normal-type, normal-dot*)?)>
<!ATTLIST metronome-tuplet
    type %start-stop; #REQUIRED
    bracket %yes-no; #IMPLIED
    show-number (actual | both | none) #IMPLIED
>

<!--
	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 | continue) #REQUIRED
    number %number-level; #IMPLIED
    size CDATA "8"
    %dashed-formatting;
    %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 should 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-align; 
>
<!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-align; 
>
<!ELEMENT damp-all EMPTY>
<!ATTLIST damp-all
    %print-style-align; 
>

<!-- Eyeglasses, common in commercial music. -->
<!ELEMENT eyeglasses EMPTY>
<!ATTLIST eyeglasses
    %print-style-align; 
>

<!-- String mute on and mute off symbols -->
<!ELEMENT string-mute EMPTY>
<!ATTLIST string-mute
    type (on | off) #REQUIRED
    %print-style-align; 
>

<!-- 
	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.mod
	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 image element is used to include graphical images
	in a score. The required source attribute is the URL
	for the image file. The required type attribute is the
	MIME type for the image file format. Typical choices
	include application/postscript, image/gif, image/jpeg,
	image/png, and image/tiff.
-->
<!ELEMENT image EMPTY>
<!ATTLIST image
    source CDATA #REQUIRED
    type CDATA #REQUIRED
    %position;
    %halign;
    %valign-image; 
>

<!-- 
	The principal-voice element represents principal and
	secondary voices in a score, either for analysis or
	for square bracket symbols that appear in a score.
	The symbol attribute indicates the type of symbol used at
	the start of the principal-voice. Valid values are 
	Hauptstimme, Nebenstimme, plain (for a plain square
	bracket), and none. The content of the principal-voice
	element is used for analysis and may be any text value.
	When used for analysis separate from any printed score
	markings, the symbol attribute should be set to "none".
-->
<!ELEMENT principal-voice (#PCDATA)>
<!ATTLIST principal-voice
    type %start-stop; #REQUIRED
    symbol (Hauptstimme | Nebenstimme | plain | none) #REQUIRED
    %print-style-align;
>

<!--
	The accordion-registration element is use for accordion
	registration symbols. These are circular symbols divided
	horizontally into high, middle, and low sections that
	correspond to 4', 8', and 16' pipes. Each accordion-high,
	accordion-middle, and accordion-low element represents
	the presence of one or more dots in the registration
	diagram. The accordion-middle element may have text
	values of 1, 2, or 3, corresponding to have 1 to 3 dots
	in the middle section. An accordion-registration element
	needs to have at least one of the child elements present.
-->
<!ELEMENT accordion-registration
	(accordion-high?, accordion-middle?, accordion-low?)>
<!ATTLIST accordion-registration
    %print-style-align; 
>
<!ELEMENT accordion-high EMPTY>
<!ELEMENT accordion-middle (#PCDATA)>
<!ELEMENT accordion-low EMPTY>

<!--
	The percussion element is used to define percussion
	pictogram symbols. Definitions for these symbols can be
	found in Kurt Stone's "Music Notation in the Twentieth
	Century" on pages 206-212 and 223. Some values are
	added to these based on how usage has evolved in
	the 30 years since Stone's book was published.
-->
<!ELEMENT percussion
	(glass | metal | wood | pitched | membrane | effect |
	 timpani | beater | stick | stick-location | 
	 other-percussion)>
<!ATTLIST percussion
    %print-style-align;
    %enclosure; 
>

<!--
	The glass element represents pictograms for glass
	percussion instruments. The one valid value is
	wind chimes.
-->
<!ELEMENT glass (#PCDATA)>

<!--
	The metal element represents pictograms for metal
	percussion instruments. Valid values are almglocken, bell,
	bell plate, brake drum, Chinese cymbal, cowbell,
	crash cymbals, crotale, cymbal tongs, domed gong,
	finger cymbals, flexatone, gong, hi-hat, high-hat cymbals,
	handbell, sistrum, sizzle cymbal, sleigh bells,
	suspended cymbal, tam tam, triangle, and Vietnamese hat.
	The hi-hat value refers to a pictogram like Stone's
	high-hat cymbals, but without the long vertical line
	at the bottom.
-->
<!ELEMENT metal (#PCDATA)>

<!--
	The wood element represents pictograms for wood
	percussion instruments. Valid values are board clapper,
	cabasa, castanets, claves, guiro, log drum, maraca,
	maracas, ratchet, sandpaper blocks, slit drum,
	temple block, vibraslap, and wood block. The maraca
	and maracas values distinguish the one- and two-maraca
	versions of the pictogram. The castanets and vibraslap
	values are in addition to Stone's list.
-->
<!ELEMENT wood (#PCDATA)>

<!--
	The pitched element represents pictograms for pitched
	percussion instruments. Valid values are chimes,
	glockenspiel, mallet, marimba, tubular chimes, vibraphone,
	and xylophone. The chimes and tubular chimes values
	distinguish the single-line and double-line versions of the
	pictogram. The mallet value is in addition to Stone's list.
-->
<!ELEMENT pitched (#PCDATA)>

<!--
	The membrane element represents pictograms for membrane
	percussion instruments. Valid values are bass drum,
	bass drum on side, bongos, conga drum, goblet drum,
	military drum, snare drum, snare drum snares off,
	tambourine, tenor drum, timbales, and tomtom. The
	goblet drum value is in addition to Stone's list.
-->
<!ELEMENT membrane (#PCDATA)>

<!--
	The effect element represents pictograms for sound effect
	percussion instruments. Valid values are anvil, auto horn,
	bird whistle, cannon, duck call, gun shot, klaxon horn,
	lions roar, police whistle, siren, slide whistle,
	thunder sheet, wind machine, and wind whistle. The cannon
	value is in addition to Stone's list.
-->
<!ELEMENT effect (#PCDATA)>

<!--
	The timpani element represents the timpani pictogram.
-->
<!ELEMENT timpani EMPTY>

<!--
	The beater element represents pictograms for beaters,
	mallets, and sticks that do not have different materials
	represented in the pictogram. Valid values are bow,
	chime hammer, coin, finger, fingernail, fist,
	guiro scraper, hammer, hand, jazz stick, knitting needle,
	metal hammer, snare stick, spoon mallet, triangle beater,
	triangle beater plain, and wire brush. The jazz stick value
	refers to Stone's plastic tip snare stick. The triangle
	beater plain value refers to the plain line version of the
	pictogram. The finger and hammer values are in addition
	to Stone's list. The tip attribute represents the direction
	in which the tip of a beater points.
-->

<!ELEMENT beater (#PCDATA)>
<!ATTLIST beater
	tip %tip-direction; #IMPLIED 
>

<!--
	The stick element represents pictograms where the material
	in the stick, mallet, or beater is included. Valid values
	for stick-type are bass drum, double bass drum, timpani,
	xylophone, and yarn. Valid values for stick-material are
	soft, medium, hard, shaded, and x. The shaded and x values
	reflect different uses for brass, wood, and steel core
	beaters of different types. The tip attribute represents
	the direction in which the tip of a stick points.
-->

<!ELEMENT stick (stick-type, stick-material)>
<!ATTLIST stick
	tip %tip-direction; #IMPLIED
>
<!ELEMENT stick-type (#PCDATA)>
<!ELEMENT stick-material (#PCDATA)>

<!--
	The stick-location element represents pictograms for the
	location of sticks, beaters, or mallets on cymbals, gongs,
	drums, and other instruments. Valid values are center,
	rim, cymbal bell, and cymbal edge.
-->
<!ELEMENT stick-location (#PCDATA)>

<!--
	The other-percussion element represents percussion
	pictograms not defined elsewhere.
-->
<!ELEMENT other-percussion (#PCDATA)>

<!--
	The other-direction element is used to define any direction
	symbols not yet in the current version of the MusicXML
	format. This allows extended representation, though without
	application interoperability.
-->
<!ELEMENT other-direction (#PCDATA)>
<!ATTLIST other-direction
	%print-object;
    %print-style-align; 
>

<!--
	An offset is represented in terms of divisions, and
	indicates where the direction will appear relative to
	the current musical location. This affects the visual
	appearance of the direction. If the sound attribute is
	"yes", then the offset affects playback too. If the sound
	attribute is "no", then any sound associated with the
	direction takes effect at the current location. The sound
	attribute is "no" by default for compatibility with earlier
	versions of the MusicXML format. If an element within a
	direction includes a default-x attribute, the offset value
	will be ignored when determining the appearance of that
	element.
-->
<!ELEMENT offset (#PCDATA)>
<!ATTLIST offset
    sound %yes-no; #IMPLIED
>

<!-- 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.
	
	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. The print-style entity
	sets the default for the harmony, but individual elements
	can override this with their own print-style values.
	
	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*)">

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

<!--
	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.
	The root-step text element indicates how the root should
	appear in a score if not using the element contents.
	In some chord styles, this will include the root-alter
	information as well. In that case, the print-object
	attribute of the root-alter element can be set to no.
	The root-alter location attribute indicates whether
	the alteration should appear to the left or the right
	of the root-step; it is right by default.
-->
<!ELEMENT root (root-step, root-alter?)>
<!ELEMENT root-step (#PCDATA)>
<!ATTLIST root-step
    text CDATA #IMPLIED
    %print-style;
>
<!ELEMENT root-alter (#PCDATA)>
<!ATTLIST root-alter
    %print-object;
    %print-style;
    location %left-right; #IMPLIED
>
<!ELEMENT function (#PCDATA)>
<!ATTLIST function
    %print-style;
>

<!--
	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, major 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)
	    power (perfect fifth)
	    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

	For the major-minor kind, only the minor symbol is used when
	use-symbols is yes. The major symbol is set using the symbol
	attribute in the degree-value element. The corresponding
	degree-alter value will usually be 0 in this case.

	The text attribute describes how the kind should be spelled
	in a score. If use-symbols is yes, the value of the text
	attribute follows the symbol. 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.
	The alignment attributes are for the entire harmony-chord
	entity of which this kind element is a part.
-->
<!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
    %print-style;
    %halign;
    %valign;
>

<!--
	Inversion is a number indicating which inversion is used:
	0 for root position, 1 for first inversion, etc.
-->
<!ELEMENT inversion (#PCDATA)>
<!ATTLIST inversion
    %print-style;
>

<!--
	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. The attributes
	for bass-step and bass-alter work the same way as
	the corresponding attributes for root-step and root-alter.
-->
<!ELEMENT bass (bass-step, bass-alter?)>
<!ELEMENT bass-step (#PCDATA)>
<!ATTLIST bass-step
    text CDATA #IMPLIED
    %print-style;
>
<!ELEMENT bass-alter (#PCDATA)>
<!ATTLIST bass-alter
    %print-object;
    %print-style;
    location (left | right) #IMPLIED
>

<!--
	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. The plus-minus attribute is used to
	indicate if plus and minus symbols should be used
	instead of sharp and flat symbols to display the degree
	alteration; it is no by default. 

	The degree-value and degree-type text attributes specify
	how the value and type of the degree should be displayed
	in a score. The degree-value symbol attribute indicates
	that a symbol should be used in specifying the degree.
	If the symbol attribute is present, the value of the text
	attribute follows the symbol. 
	
	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)>
<!ATTLIST degree-value
    symbol (major | minor | augmented | 
		diminished | half-diminished) #IMPLIED
    text CDATA #IMPLIED
    %print-style;
>
<!ELEMENT degree-alter (#PCDATA)>
<!ATTLIST degree-alter
    %print-style;
    plus-minus %yes-no; #IMPLIED
>
<!ELEMENT degree-type (#PCDATA)>
<!ATTLIST degree-type
    text CDATA #IMPLIED
    %print-style;
>

<!--
	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 frame element's unplayed attribute indicates what to
	display above a string that has no associated frame-note
	element. Typical values are x and the empty string. If the
	attribute is not present, the display of the unplayed
	string is application-defined. 
-->
<!ELEMENT frame 
	(frame-strings, frame-frets, first-fret?, frame-note+)>
<!ATTLIST frame 
    %position;
    %color;
    %halign;
    %valign-image;
    height  %tenths;  #IMPLIED
    width   %tenths;  #IMPLIED
    unplayed CDATA    #IMPLIED
>
<!ELEMENT frame-strings (#PCDATA)>
<!ELEMENT frame-frets (#PCDATA)>

<!--
	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 optional text attribute indicates how this
	is represented in the fret diagram, while the location
	attribute indicates whether the text appears to the left
	or right of the frame.
-->
<!ELEMENT first-fret (#PCDATA)>
<!ATTLIST first-fret
    text CDATA #IMPLIED
    location %left-right; #IMPLIED
>

<!--
	The frame-note element represents each note included in
	the frame. The definitions for string, fret, and fingering
	are found in the common.mod file. An open string will
	have a fret value of 0, while a muted string will not be
	associated with a frame-note element.
-->
<!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;
>

<!--
	The grouping element is used for musical analysis. When
	the element type is "start" or "single", 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 the MusicXML format 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-single; #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 the layout.mod
	file. The part-name-display and part-abbreviation-display
	elements used in the score.mod file may also be used here
	to change how a part name or abbreviation is displayed over
	the course of a piece. They take effect when the current
	measure or a succeeding measure starts a new system.
	
	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". Version
	2.0 adds a blank-page attribute. This is a positive integer
	value that specifies the number of blank pages to insert
	before the current measure. It is ignored if new-page is
	not "yes". These blank pages have no music, but may have
	text or images specified by the credit element. This is
	used to allow a combination of pages that are all text,
	or all text and images, together with pages of music.

	Staff spacing between multiple staves is measured in
	tenths of staff lines (e.g. 100 = 10 staff lines). This is
	deprecated as of Version 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?, measure-numbering?, part-name-display?, 
    part-abbreviation-display?)>
<!ATTLIST print
    staff-spacing %tenths; #IMPLIED
    new-system %yes-no; #IMPLIED
    new-page %yes-no; #IMPLIED
    blank-page NMTOKEN #IMPLIED
    page-number CDATA #IMPLIED	
>

<!--
	The measure-numbering element describes how measure
	numbers are displayed on this part. Values may be none,
	measure, or system. The number attribute from the measure
	element is used for printing. Measures with an implicit
	attribute set to "yes" never display a measure number,
	regardless of the measure-numbering setting.
-->
<!ELEMENT measure-numbering (#PCDATA)>
<!ATTLIST measure-numbering
    %print-style-align;
>

<!-- 
	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 should 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 1.0).
	
	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.
	
	By default, a dalsegno or dacapo attribute indicates that
	the jump should occur the first time through, while a 
	tocoda attribute indicates the jump should occur the second
	time through. The time that jumps occur can be changed by
	using the time-only attribute.
	
	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 or dal segno 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 particular times through a
	repeat, the time-only attribute indicates which times to apply
	the sound element. The value is a comma-separated list of
	positive integers arranged in ascending order, indicating
	which times through the repeated section that the element
	applies.
	
	Pizzicato in a sound element effects all following notes.
	Yes indicates pizzicato, no indicates arco.

	The pan and elevation attributes are deprecated in 
	Version 2.0. The pan and elevation elements in
	the midi-instrument element should be used instead.
	The meaning of the pan and elevation attributes is
	the same as for the pan and elevation elements. If
	both are present, the mid-instrument elements take
	priority.
	
	The damper-pedal, soft-pedal, and sostenuto-pedal 
	attributes effect playback of the three common piano
	pedals and their MIDI controller equivalents. The yes
	value indicates the pedal is depressed; no indicates 
	the pedal is released. A numeric value from 0 to 100
	may also be used for half pedaling. This value is the
	percentage that the pedal is depressed. A value of 0 is
	equivalent to no, and a value of 100 is equivalent to yes.
	
	MIDI devices, MIDI instruments, and playback techniques are
	changed using the midi-device, midi-instrument, and play 
	elements defined in the common.mod file. When there are
	multiple instances of these elements, they should be grouped
	together by instrument using the id attribute values.

	The offset element is used to indicate that the sound takes
	place offset from the current score position. If the sound
	element is a child of a direction element, the sound offset
	element overrides the direction offset element if both 
	elements are present. Note that the offset reflects the
	intended musical position for the change in sound. It
	should not be used to compensate for latency issues in 
	particular hardware configurations.
-->
<!ELEMENT sound ((midi-device?, midi-instrument?, play?)*,
	offset?)>
<!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;
    pizzicato %yes-no; #IMPLIED
    pan CDATA #IMPLIED
    elevation CDATA #IMPLIED
    damper-pedal %yes-no-number; #IMPLIED
    soft-pedal %yes-no-number; #IMPLIED
    sostenuto-pedal %yes-no-number; #IMPLIED
>
 
<!-- here ends %direction; -->


<!--
	The score DTD module contains the top-level elements for
	musical scores, including the root document elements.
-->
<!ENTITY % score PUBLIC
	"-//Recordare//ELEMENTS MusicXML 3.0 Score//EN"
	"score.mod">
%score;<!-- here starts %score; --> <!--
	MusicXML™ score.mod module

	Version 3.0
	
	Copyright © 2004-2011 MakeMusic, Inc.
	http://www.makemusic.com/
	
	This MusicXML™ work is being provided by the copyright
	holder under the MusicXML Public License Version 3.0,
	available from:
	
		http://www.musicxml.org/dtds/license.html
-->

<!--
	Works and movements are optionally identified by number
	and title. The work element also may indicate a link
	to the opus document that composes multiple movements
	into a collection.
-->
<!ELEMENT work (work-number?, work-title?, opus?)>
<!ELEMENT work-number (#PCDATA)>
<!ELEMENT work-title (#PCDATA)>

<!ELEMENT opus EMPTY>
<!ATTLIST opus
    %link-attributes; 
>

<!ELEMENT movement-number (#PCDATA)>
<!ELEMENT movement-title (#PCDATA)>

<!--
	Collect score-wide defaults. This includes scaling
	and layout, defined in layout.mod, and default values
	for the music font, word font, lyric font, and 
	lyric language. The number and name attributes in
	lyric-font and lyric-language elements are typically
	used when lyrics are provided in multiple languages.
	If the number and name attributes are omitted, the 
	lyric-font and lyric-language values apply to all 
	numbers and names.
-->
<!ELEMENT defaults (scaling?, page-layout?,
	system-layout?, staff-layout*, appearance?, 
	music-font?, word-font?, lyric-font*, lyric-language*)>

<!ELEMENT music-font EMPTY>
<!ATTLIST music-font
    %font;
>
<!ELEMENT word-font EMPTY>
<!ATTLIST word-font
    %font;
>
<!ELEMENT lyric-font EMPTY>
<!ATTLIST lyric-font
    number NMTOKEN #IMPLIED
    name CDATA #IMPLIED
    %font;
>
<!ELEMENT lyric-language EMPTY>
<!ATTLIST lyric-language
    number NMTOKEN #IMPLIED
    name CDATA #IMPLIED
    xml:lang NMTOKEN #REQUIRED
>

<!--
	Credit elements refer to the title, composer, arranger,
	lyricist, copyright, dedication, and other text that usually
	appears on the first page of a score. The credit-words
	and credit-image elements are similar to the words and
	image elements for directions. However, since the 
	credit is not part of a measure, the default-x and 
	default-y attributes adjust the origin relative to the 
	bottom left-hand corner of the first page. The 
	enclosure for credit-words is none by default.

	By default, a series of credit-words elements within a
	single credit element follow one another in sequence
	visually. Non-positional formatting attributes are carried
	over from the previous element by default.

	The page attribute for the credit element, new in Version
	2.0, specifies the page number where the credit should
	appear. This is an integer value that starts with 1 for the
	first page. Its value is 1 by default. Since credits occur
	before the music, these page numbers do not refer to the
	page numbering specified by the print element's page-number
	attribute.

	The credit-type element, new in Version 3.0, indicates the
	purpose behind a credit. Multiple types of data may be
	combined in a single credit, so multiple elements may be
	used. Standard values include page number, title, subtitle,
	composer, arranger, lyricist, and rights.
-->
<!ELEMENT credit
	(credit-type*, link*, bookmark*, 
	(credit-image | 
	 (credit-words, (link*, bookmark*, credit-words)*)))>
<!ATTLIST credit
    page NMTOKEN #IMPLIED
>
<!ELEMENT credit-type (#PCDATA)>
<!ELEMENT credit-words (#PCDATA)>
<!ATTLIST credit-words
    %text-formatting;
>
<!ELEMENT credit-image EMPTY>
<!ATTLIST credit-image
    source CDATA #REQUIRED
    type CDATA #REQUIRED
    %position; 
    %halign;
    %valign-image;
>

<!--
	The part-list identifies the different musical parts in
	this movement. Each part has an ID that is used later
	within the musical data. Since parts may be encoded
	separately and combined later, identification elements
	are present at both the score and score-part levels.
	There must be at least one score-part, combined as
	desired with part-group elements that indicate braces
	and brackets. Parts are ordered from top to bottom in
	a score based on the order in which they appear in the
	part-list.
	
	Each MusicXML part corresponds to a track in a Standard
	MIDI Format 1 file. The score-instrument elements are
	used when there are multiple instruments per track.
	The midi-device element is used to make a MIDI device
	or port assignment for the given track or specific MIDI
	instruments. Initial midi-instrument assignments may be
	made here as well.

	The part-name-display and part-abbreviation-display
	elements are defined in the common.mod file, as they can
	be used within both the score-part and print elements.
-->
<!ELEMENT part-list (part-group*, score-part,
	(part-group | score-part)*)>
<!ELEMENT score-part (identification?,
	part-name, part-name-display?,
	part-abbreviation?, part-abbreviation-display?, 
	group*, score-instrument*, 
	(midi-device?, midi-instrument?)*)>
<!ATTLIST score-part
    id ID #REQUIRED
>

<!--
	The part-name indicates the full name of the musical part.
	The part-abbreviation indicates the abbreviated version of
	the name of the musical part. The part-name will often
	precede the first system, while the part-abbreviation will
	precede the other systems. The formatting attributes for
	these elements are deprecated in Version 2.0 in favor of
	the new part-name-display and part-abbreviation-display
	elements. These are defined in the common.mod file as they
	are used in both the part-list and print elements. They
	provide more complete formatting control for how part names
	and abbreviations appear in a score.
-->
<!ELEMENT part-name (#PCDATA)>
<!ATTLIST part-name
    %print-style;
    %print-object;
    %justify;
>
<!ELEMENT part-abbreviation (#PCDATA)>
<!ATTLIST part-abbreviation
    %print-style;
    %print-object;
    %justify;
>
<!--
	The part-group element indicates groupings of parts in the
	score, usually indicated by braces and brackets. Braces
	that are used for multi-staff parts should be defined in
	the attributes element for that part. The part-group start
	element appears before the first score-part in the group.
	The part-group stop element appears after the last 
	score-part in the group.
	
	The number attribute is used to distinguish overlapping
	and nested part-groups, not the sequence of groups. As
	with parts, groups can have a name and abbreviation.
	Formatting attributes for group-name and group-abbreviation
	are deprecated in Version 2.0 in favor of the new
	group-name-display and group-abbreviation-display elements.
	Formatting specified in the group-name-display and
	group-abbreviation-display elements overrides formatting
	specified in the group-name and group-abbreviation
	elements, respectively.

	The group-symbol element indicates how the symbol for
	a group is indicated in the score. Values include none,
	brace, line, bracket, and square; the default is none.
	The group-barline element indicates if the group should
	have common barlines. Values can be yes, no, or
	Mensurstrich. The group-time element indicates that the
	displayed time signatures should stretch across all parts
	and staves in the group. Values for the child elements
	are ignored at the stop of a group. 

	A part-group element is not needed for a single multi-staff
	part. By default, multi-staff parts include a brace symbol
	and (if appropriate given the bar-style) common barlines.
	The symbol formatting for a multi-staff part can be more
	fully specified using the part-symbol element, defined in
	the attributes.mod file.
-->
<!ELEMENT part-group (group-name?, group-name-display?,
	group-abbreviation?, group-abbreviation-display?,
	group-symbol?, group-barline?, group-time?, %editorial;)>
<!ATTLIST part-group
    type %start-stop; #REQUIRED
    number CDATA "1"
>

<!ELEMENT group-name (#PCDATA)>
<!ATTLIST group-name
    %print-style;
    %justify;
>
<!ELEMENT group-name-display
	((display-text | accidental-text)*)>
<!ATTLIST group-name-display
    %print-object;
>
<!ELEMENT group-abbreviation (#PCDATA)>
<!ATTLIST group-abbreviation
    %print-style;
    %justify;
>
<!ELEMENT group-abbreviation-display
	((display-text | accidental-text)*)>
<!ATTLIST group-abbreviation-display
    %print-object;
>

<!ELEMENT group-symbol (#PCDATA)>
<!ATTLIST group-symbol
    %position;
    %color;
>

<!ELEMENT group-barline (#PCDATA)>
<!ATTLIST group-barline
    %color;
>
<!ELEMENT group-time EMPTY>

<!--
	The score-instrument element allows for multiple
	instruments per score-part. As with the score-part
	element, each score-instrument has a required ID
	attribute, a name, and an optional abbreviation. The
	instrument-name and instrument-abbreviation are
	typically used within a software application, rather
	than appearing on the printed page of a score.

	A score-instrument element is also required if the
	score specifies MIDI 1.0 channels, banks, or programs.
	An initial midi-instrument assignment can also
	be made here.

	The instrument-sound and virtual-instrument elements
	are new as of Version 3.0. The instrument-sound element
	describes the default timbre of the score-instrument. This
	description is independent of a particular virtual or
	MIDI instrument specification and allows playback to be
	shared more easily between applications and libraries.
	The virtual-instrument element defines a specific virtual
	instrument used for an instrument sound. The
	virtual-library element indicates the virtual instrument
	library name, and the virtual-name element indicates the
	library-specific name for the virtual instrument.

	The solo and ensemble elements are new as of Version
	2.0. The solo element is present if performance is
	intended by a solo instrument. The ensemble element
	is present if performance is intended by an ensemble
	such as an orchestral section. The text of the 
	ensemble element contains the size of the section,
	or is empty if the ensemble size is not specified.
	
	The midi-instrument element is defined in the common.mod
	file, as it can be used within both the score-part and
	sound elements.
-->
<!ELEMENT score-instrument
	(instrument-name, instrument-abbreviation?,
	 instrument-sound?, (solo | ensemble)?,
	 virtual-instrument?)>
<!ATTLIST score-instrument
    id ID #REQUIRED
>
<!ELEMENT instrument-name (#PCDATA)>
<!ELEMENT instrument-abbreviation (#PCDATA)>
<!ELEMENT instrument-sound (#PCDATA)>
<!ELEMENT solo EMPTY>
<!ELEMENT ensemble (#PCDATA)>
<!ELEMENT virtual-instrument
	(virtual-library?, virtual-name?)>
<!ELEMENT virtual-library (#PCDATA)>
<!ELEMENT virtual-name (#PCDATA)>

<!--
	The group element allows the use of different versions of
	the part for different purposes. Typical values include
	score, parts, sound, and data. Ordering information that is
	directly encoded in MuseData can be derived from the
	ordering within a MusicXML score or opus.
-->
<!ELEMENT group (#PCDATA)>

<!--
	Here is the basic musical data that is either associated
	with a part or a measure, depending on whether partwise
	or timewise hierarchy is used.
-->
<!ENTITY % music-data
	"(note | backup | forward | direction | attributes |
	  harmony | figured-bass | print | sound | barline | 
	  grouping | link | bookmark)*">

<!--
	The score-header entity contains basic score metadata
	about the work and movement, score-wide defaults for
	layout and fonts, credits that appear on the first page,
	and the part list. 
-->
<!ENTITY % score-header
	"(work?, movement-number?, movement-title?,
	  identification?, defaults?, credit*, part-list)">

<!--
	The score is the root element for the DTD. It includes
	the score-header entity, followed either by a series of
	parts with measures inside (score-partwise) or a series
	of measures with parts inside (score-timewise). Having
	distinct top-level elements for partwise and timewise
	scores makes it easy to ensure that an XSLT stylesheet
	does not try to transform a document already in the
	desired format. The document-attributes entity includes the
	version attribute and is defined in the common.mod file.
-->
<![ %partwise; [
<!ELEMENT score-partwise (%score-header;, part+)>
<!ATTLIST score-partwise
    %document-attributes;
>	
<!ELEMENT part (measure+)>
<!ELEMENT measure (%music-data;)>
]]>
<![ %timewise; [
<!ELEMENT score-timewise (%score-header;, measure+)>
<!ATTLIST score-timewise
    %document-attributes;
>	
<!ELEMENT measure (part+)>
<!ELEMENT part (%music-data;)>
]]>
<!--
	In either format, the part element has an id attribute that
	is an IDREF back to a score-part in the part-list. Measures
	have a required number attribute (going from partwise to
	timewise, measures are grouped via the number).
-->
<!ATTLIST part
    id IDREF #REQUIRED
>
<!--
	The implicit attribute is set to "yes" for measures where
	the measure number should never appear, such as pickup
	measures and the last half of mid-measure repeats. The
	value is "no" if not specified.
	
	The non-controlling attribute is intended for use in
	multimetric music like the Don Giovanni minuet. If set
	to "yes", the left barline in this measure does not
	coincide with the left barline of measures in other
	parts. The value is "no" if not specified. 

	In partwise files, the number attribute should be the same
	for measures in different parts that share the same left
	barline. While the number attribute is often numeric, it
	does not have to be. Non-numeric values are typically used
	together with the implicit or non-controlling attributes
	being set to "yes". For a pickup measure, the number
	attribute is typically set to "0" and the implicit attribute
	is typically set to "yes". Further details about measure
	numbering can be defined using the measure-numbering
	element defined in the direction.mod file

	Measure width is specified in tenths. These are the
	global tenths specified in the scaling element, not
	local tenths as modified by the staff-size element.
	The width covers the entire measure from barline 
	or system start to barline or system end.
-->
<!ATTLIST measure
    number CDATA #REQUIRED
    implicit %yes-no; #IMPLIED
    non-controlling %yes-no; #IMPLIED
    width %tenths; #IMPLIED
>
 
<!-- here ends %score; -->



<!-- unify both definitions of score:
   entity %music-data  is defined in score.mod:

  <!ENTITY % music-data
        "(note | backup | forward | direction | attributes |
          harmony | figured-bass | print | sound | barline | 
          grouping | link | bookmark)*">

   and ONLY used for "measure" and "part" definition !
-->

<!ELEMENT score-partwise (%score-header;, (part|measure)+)>
<!ELEMENT score-timewise (%score-header;, (part|measure)+)>


<!ELEMENT part ((measure)+|%music-data;)>
<!ELEMENT measure ((part)+|%music-data;)>

<!-- geht nicht, fuehrt zu non-ll(1):
<!ELEMENT part (measure|%music-data;)+>
<!ELEMENT measure (part|%music-data;)+>

<!ELEMENT part (measure | ((note | backup | forward | direction | attributes | harmony | fig
<!ELEMENT measure (part | ((note | backup | forward | direction | attributes | harmony | fig
-->

<!--
<!ELEMENT score-partwise (%score-header;, part+)>
<!ELEMENT part-partwise (measure-partwise+)>
<!ELEMENT measure-partwise (%music-data;)>
<!ELEMENT score-timewise (%score-header;, measure-timewise+)>
<!ELEMENT measure-timewise+ (part-timewise+)>
<!ELEMENT part-timewise+ (%music-data;)>
-->


<!-- dies sind alles entities aus common.mod
  --> 
<!-- ?tdom --><?tdom attribute-entity position placement orientation directive
                        bezier font color  text-decoration justify
                        halign valign valign-image letter-spacing
                        line-height text-direction text-rotation 
?>
<!-- ???
                        enclosure print-style  print-style-align 
                        line-shape line-type dashed-formatting
               print-object print-spacing printout
                        text-formatting level-display trill-sound bend-sound
                        time-only 
                        document-attributes editorial editorial-voice
-->

<!-- ?tdom --><?tdom attribute type CDATA #IMPLIED ?>
<!-- ?tdom --><?tdom attribute name CDATA #REQUIRED ?>

<!-- entity aus note.mod
-->

<!--
<?tdom abstract percussion  (glass | metal | wood | pitched | membrane 
 | effect | timpani | beater | stick | stick-location | other-percussion)
?>

<?tdom abstract measure-style   (multiple-rest | measure-repeat | beat-repeat | slash)
?>
-->



<!-- NO !! ?tdom attribute-entity full-note ?-->

<!-- eof -->

<!-- created from file tdom_driver.dtd by the program bandmDtdTool from BandM. -->