<!--
	MusicXML™ Sounds DTD

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

<!--
	Starting with Version 3.0, the MusicXML format includes a
	standard set of instrument sounds to identify musical
	timbres. These values are used in the instrument-sound
	element.

	The standard sounds are listed in the sounds.xml file
	included with MusicXML 3.0. This is the document type
	definition for that file.

	Suggested use:
	
	<!DOCTYPE sounds PUBLIC
		"-//Recordare//DTD MusicXML 3.0 Sounds//EN"
		"http://www.musicxml.org/dtds/sounds.dtd">
-->

<!-- Elements -->

<!--
	Sounds is the document element.
-->
<!ELEMENT sounds (sound+)>

<!--
	The sound element lists one of the standard sounds available
	in MusicXML 3.0. The required id attribute lists the MusicXML
	sound identifier string used by the instrument-sound element.

	The optional any, solo, and ensemble elements can be used for
	mapping MusicXML sound IDs to an application's or virtual
	instrument library's method of identifying sounds. These
	methods could include Sibelius SoundWorld IDs, capella
	genericsound IDs, and General MIDI patch numbers.

	The any element is used when a MusicXML ID refers to a single
	application or library sound ID, regardless of whether a
	solo or ensemble sound is used. The solo and ensemble elements
	are used when an application has different IDs for solo and
	ensemble sounds, as represented by the solo and ensemble
	elements in a MusicXML score file. The number attribute for
	the ensemble element represents the size of the ensemble,
	corresponding to the content of the ensemble element in a
	MusicXML score file.

	The primary attribute is used to distinguish a primary choice
	when multiple options are available in a single sounds.xml
	file. The primary attribute for the sound element is used when
	multiple sound elements map to the same application or library
	ID. In this case, the primary attribute indicates which of the
	MusicXML IDs is primary when mapping to a MusicXML sound id.

	Multiple any, solo, and ensemble elements can be used when
	multiple application sounds map to the same MusicXML sound id.
	The primary attribute indicates which of the any, solo, or
	ensemble elements is primary when mapping from a MusicXML
	sound id.
-->
<!ELEMENT sound (any* | (solo*, ensemble*))>
<!ATTLIST sound
    id ID #REQUIRED
    primary (yes | no) #IMPLIED
>
<!ELEMENT any (#PCDATA)>
<!ATTLIST any
    primary (yes | no) #IMPLIED
>
<!ELEMENT solo (#PCDATA)>
<!ATTLIST solo
    primary (yes | no) #IMPLIED
>
<!ELEMENT ensemble (#PCDATA)>
<!ATTLIST ensemble
    number NMTOKEN #IMPLIED
    primary (yes | no) #IMPLIED
>
