2 XML DTD for MIDI messages
\r
4 Version 1.0, 19 January 2003
\r
6 Formal Public Identifier:
\r
7 "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
\r
10 "http://www.midi.org/dtds/MIDIEvents10.dtd"
\r
12 Parameter entities which must be defined before use:
\r
13 %ChannelRequired; #IMPLIED
\r
14 for use in contexts, where the event is always
\r
17 when channel messages require Channel attribute
\r
20 <!ENTITY % MIDIDTD PUBLIC "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
\r
21 "http://www.midi.org/dtds/MIDIEvents10.dtd" >
\r
29 Note, Velocity, Pressure, Control, Value, Number are all 0..127
\r
30 except: PitchBend's Value is 0..16383
\r
33 <!ELEMENT NoteOn EMPTY>
\r
35 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
36 Note NMTOKEN #REQUIRED
\r
37 Velocity NMTOKEN #REQUIRED>
\r
39 <!ELEMENT NoteOff EMPTY>
\r
41 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
42 Note NMTOKEN #REQUIRED
\r
43 Velocity NMTOKEN #REQUIRED>
\r
45 <!ELEMENT PolyKeyPressure EMPTY>
\r
46 <!ATTLIST PolyKeyPressure
\r
47 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
48 Note NMTOKEN #REQUIRED
\r
49 Pressure NMTOKEN #REQUIRED>
\r
51 <!ELEMENT ControlChange EMPTY>
\r
52 <!ATTLIST ControlChange
\r
53 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
54 Control NMTOKEN #REQUIRED
\r
55 Value NMTOKEN #REQUIRED>
\r
57 <!ELEMENT ProgramChange EMPTY>
\r
58 <!ATTLIST ProgramChange
\r
59 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
60 Number NMTOKEN #REQUIRED>
\r
62 <!ELEMENT ChannelKeyPressure EMPTY>
\r
63 <!ATTLIST ChannelKeyPressure
\r
64 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
65 Pressure NMTOKEN #REQUIRED>
\r
67 <!ELEMENT PitchBendChange EMPTY>
\r
68 <!ATTLIST PitchBendChange
\r
69 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
70 Value NMTOKEN #REQUIRED>
\r
73 Channel mode messages
\r
75 <!ELEMENT AllSoundOff EMPTY>
\r
76 <!ATTLIST AllSoundOff
\r
77 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
79 <!ELEMENT ResetAllControllers EMPTY>
\r
80 <!ATTLIST ResetAllControllers
\r
81 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
83 <!ELEMENT LocalControl EMPTY>
\r
84 <!ATTLIST LocalControl
\r
85 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
86 Value (off|on) #REQUIRED>
\r
88 <!ELEMENT AllNotesOff EMPTY>
\r
89 <!ATTLIST AllNotesOff
\r
90 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
92 <!ELEMENT OmniOff EMPTY>
\r
94 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
96 <!ELEMENT OmniOn EMPTY>
\r
98 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
100 <!ELEMENT MonoMode EMPTY>
\r
102 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
103 Value NMTOKEN #REQUIRED>
\r
105 <!ELEMENT PolyMode EMPTY>
\r
107 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
\r
110 14-bit control changes:
\r
113 ControlChange14's Control is MSB 0..31
\r
114 RPNN and NRPN are 0..16383
\r
117 <!ELEMENT ControlChange14 EMPTY>
\r
118 <!ATTLIST ControlChange14
\r
119 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
120 Control NMTOKEN #REQUIRED
\r
121 Value NMTOKEN #REQUIRED>
\r
123 <!ELEMENT RPNChange EMPTY>
\r
124 <!ATTLIST RPNChange
\r
125 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
126 RPN NMTOKEN #REQUIRED
\r
127 Value NMTOKEN #REQUIRED>
\r
129 <!ELEMENT NRPNChange EMPTY>
\r
130 <!ATTLIST NRPNChange
\r
131 Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
\r
132 NRPN NMTOKEN #REQUIRED
\r
133 Value NMTOKEN #REQUIRED>
\r
140 <!ELEMENT SysEx (#PCDATA | SysExDeviceID | SysExChannel)*>
\r
141 <!-- contains string of hex bytes without radix information, e.g.:
\r
142 <SysEx>F0 01 02 <SysExDeviceID/> 03 04 05 <SysExChannel Multiplier="1" Offset="32"/> F7</SysEx>
\r
145 <!ELEMENT SysExDeviceID EMPTY> <!-- Byte as a function of user-visible Device ID
\r
146 e.g. 17 as the default on many Roland devices.
\r
147 Most sysex messages will use this element. -->
\r
148 <!ATTLIST SysExDeviceID
\r
149 Multiplier NMTOKEN "1"
\r
150 Offset NMTOKEN "0"> <!-- multiplier and offset are decimal -->
\r
152 <!ELEMENT SysExChannel EMPTY> <!-- Byte as a function of MIDI Channel 1-16, for
\r
153 specialized situations where a sys-ex message
\r
154 is being directed to a specific MIDI channel.
\r
155 Generally only older devices require use of this. -->
\r
156 <!ATTLIST SysExChannel
\r
157 Multiplier NMTOKEN "1"
\r
158 Offset NMTOKEN "0"> <!-- multiplier and offset are decimal -->
\r
160 <!ELEMENT MTCQuarterFrame EMPTY>
\r
161 <!ATTLIST MTCQuarterFrame
\r
162 MessageType (FrameLSNibble | FrameMSNibble |
\r
163 SecsLSNibble | SecsMSNibble |
\r
164 MinsLSNibble | MinsMSNibble |
\r
165 HrsLSNibble | HrsMSNibbleSMPTEType) #REQUIRED
\r
166 DataNibble NMTOKEN #REQUIRED>
\r
168 <!ELEMENT SongPositionPointer EMPTY>
\r
169 <!ATTLIST SongPositionPointer
\r
170 Position NMTOKEN #REQUIRED> <!-- 0-16383 -->
\r
172 <!ELEMENT SongSelect EMPTY>
\r
173 <!ATTLIST SongSelect
\r
174 Number NMTOKEN #REQUIRED> <!-- 0-127 -->
\r
176 <!ELEMENT TuneRequest EMPTY>
\r
177 <!ELEMENT TimingClock EMPTY>
\r
178 <!ELEMENT Start EMPTY>
\r
179 <!ELEMENT Continue EMPTY>
\r
180 <!ELEMENT Stop EMPTY>
\r
181 <!ELEMENT ActiveSensing EMPTY>
\r
182 <!ELEMENT SystemReset EMPTY>
\r
188 <!ENTITY % MIDIChannelVoiceMessage "(NoteOn | NoteOff | PolyKeyPressure | ControlChange | ProgramChange
\r
189 | ChannelKeyPressure | PitchBendChange)">
\r
190 <!ENTITY % MIDIChannelModeMessage "(AllSoundOff | ResetAllControllers | LocalControl | AllNotesOff
\r
191 | OmniOff | OmniOn | MonoMode | PolyMode)">
\r
192 <!ENTITY % MIDIChannelMessage "(%MIDIChannelVoiceMessage; | %MIDIChannelModeMessage;)">
\r
193 <!ENTITY % MIDISystemMessage "(SysEx | MTCQuarterFrame | SongPositionPointer | SongSelect
\r
194 | TuneRequest | TimingClock | Start | Continue | Stop | ActiveSensing | SystemReset)">
\r
195 <!ENTITY % MIDIMessage "(%MIDIChannelMessage; | %MIDISystemMessage; )">
\r