summaryrefslogtreecommitdiff
path: root/patchfiles/MIDINameDocument10.dtd
blob: 5a95f645870cf570b877e1546938dce0835f1cab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<!--
	XML DTD for MIDINameDocument
	
	Version 1.0, 19 January 2003
	
	Formal Public Identifier:
		"-//MIDI Manufacturers Association//DTD MIDINameDocument 1.0//EN"
	URI:
		"http://www.midi.org/dtds/MIDINameDocument10.dtd"
-->

<!--
	ENTITIES - used internally
-->

<!ENTITY % namelist "PatchNameList | NoteNameList | ControlNameList | ValueNameList">
<!ENTITY % noteorctl_listorref "(NoteNameList | UsesNoteNameList)?, (ControlNameList | 
								UsesControlNameList)?">

<!--
	ELEMENTS AND ATTRIBUTES
-->

<!ELEMENT MIDINameDocument	(Author, (MasterDeviceNames+ | ExtendingDeviceNames+ | 
							StandardDeviceMode+)) >

<!ELEMENT Author (#PCDATA)>

<!ELEMENT MasterDeviceNames		(((Manufacturer, Model+) | Device), 
								(CustomDeviceMode | SupportsStandardDeviceMode)+, 
								ChannelNameSet*, (%namelist;)*) >

<!ELEMENT ExtendingDeviceNames	(((Manufacturer, Model+)? | Device), (%namelist;)+) >

<!ELEMENT Manufacturer (#PCDATA)>

<!ELEMENT Model (#PCDATA)>

<!ELEMENT Device EMPTY>
<!ATTLIST Device
				Name		CDATA	#REQUIRED
				UniqueID	NMTOKEN	#REQUIRED>

<!ELEMENT StandardDeviceMode (DeviceModeEnable?, DeviceModeDisable?, ChannelNameSetAssignments, 
								ChannelNameSet+, (%namelist;)*) >
<!ATTLIST StandardDeviceMode
				Name	CDATA	#REQUIRED>

<!ELEMENT CustomDeviceMode (DeviceModeEnable?, DeviceModeDisable?, ChannelNameSetAssignments, 
								(%namelist;)*) >
<!ATTLIST CustomDeviceMode
				Name	CDATA	#REQUIRED>

<!ELEMENT DeviceModeEnable	(MIDICommands)>
<!ELEMENT DeviceModeDisable	(MIDICommands)>

<!ELEMENT SupportsStandardDeviceMode EMPTY>
<!ATTLIST SupportsStandardDeviceMode
				Name	CDATA	#REQUIRED>

<!ELEMENT ChannelNameSetAssignments (ChannelNameSetAssign+)>
<!ELEMENT ChannelNameSetAssign EMPTY>
<!ATTLIST ChannelNameSetAssign
				Channel		NMTOKEN			#REQUIRED
				NameSet		CDATA			#REQUIRED>

<!ELEMENT ChannelNameSet	(AvailableForChannels, %noteorctl_listorref;, PatchBank+) >
<!ATTLIST ChannelNameSet
				Name		CDATA			#REQUIRED>

<!ELEMENT AvailableForChannels (AvailableChannel+)>
<!ELEMENT AvailableChannel EMPTY>
<!ATTLIST AvailableChannel
				Channel		NMTOKEN			#REQUIRED
				Available	(false | true)	"true">

<!ELEMENT PatchBank (MIDICommands?, (UsesPatchNameList | PatchNameList))>
<!ATTLIST PatchBank
				Name		CDATA			#IMPLIED
				ROM			(false | true)	"false">

<!ELEMENT UsesPatchNameList EMPTY>
<!ATTLIST UsesPatchNameList
				Name	CDATA	#REQUIRED>

<!ELEMENT PatchNameList (Patch*)>
<!ATTLIST PatchNameList
				Name	CDATA	#IMPLIED>

<!ELEMENT Patch (PatchMIDICommands?, ChannelNameSetAssignments?, %noteorctl_listorref; ) >
<!ATTLIST Patch
				Number			CDATA	#REQUIRED
				Name			CDATA	#REQUIRED
				ProgramChange	NMTOKEN	#IMPLIED>

<!ELEMENT UsesNoteNameList EMPTY>
<!ATTLIST UsesNoteNameList
				Name	CDATA	#REQUIRED>

<!ELEMENT NoteNameList (NoteGroup | Note)+>
<!ATTLIST NoteNameList
				Name	CDATA	#IMPLIED>

<!ELEMENT NoteGroup (Note*)>
<!ATTLIST NoteGroup
				Name	CDATA	#IMPLIED>

<!ELEMENT Note EMPTY>
<!ATTLIST Note
				Number	NMTOKEN	#REQUIRED
				Name	CDATA	#REQUIRED>

<!ELEMENT UsesControlNameList EMPTY>
<!ATTLIST UsesControlNameList
				Name	CDATA	#REQUIRED>

<!ELEMENT ControlNameList (Control+)>
<!ATTLIST ControlNameList
				Name	CDATA	#IMPLIED>

<!ELEMENT Control (Values?)>
<!ATTLIST Control
				Type	(7bit | 14bit | RPN | NRPN)	"7bit"
				Number	NMTOKEN						#REQUIRED
				Name	CDATA						#REQUIRED>

<!ELEMENT Values (ValueNameList | UsesValueNameList)?>
<!ATTLIST Values
				Min		NMTOKEN	#REQUIRED
				Max		NMTOKEN	#REQUIRED
				Default	NMTOKEN	#IMPLIED
				Units	NMTOKEN	#IMPLIED
				Mapping	NMTOKEN	#IMPLIED>

<!ELEMENT UsesValueNameList EMPTY>
<!ATTLIST UsesValueNameList
				Name	CDATA	#REQUIRED>

<!ELEMENT ValueNameList (Value+)>
<!ATTLIST ValueNameList
				Name	CDATA	#IMPLIED>

<!ELEMENT Value EMPTY>
<!ATTLIST Value
				Number	NMTOKEN	#REQUIRED
				Name	CDATA	#REQUIRED>

<!--
	Include MIDI.dtd, defining elements referenced by MIDICommands
-->
<!ENTITY % ChannelRequired "#IMPLIED">
<!ENTITY % MIDIDTD PUBLIC	"-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
							"MIDIEvents10.dtd" >
%MIDIDTD;

<!ELEMENT MIDICommands (MIDIDelay | %MIDIChannelMessage; | SysEx)+ >
<!ELEMENT PatchMIDICommands (MIDIDelay | %MIDIChannelMessage; )+ >

<!ELEMENT MIDIDelay EMPTY>
<!ATTLIST MIDIDelay
				Milliseconds	CDATA	#REQUIRED>