summaryrefslogtreecommitdiff
path: root/patchfiles
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-07-31 18:48:59 -0400
committerDavid Robillard <d@drobilla.net>2016-07-31 18:48:59 -0400
commit5583929a3491075df4e1862579e8df7318dc7370 (patch)
tree66fd8b82c65921c353d3ab8f91378df29a41e22d /patchfiles
parent57e9b502a703fcb62316a31b0db14367fc77deb9 (diff)
Fix validation of midnam files
The MMA in all their wisdom has broken midi.org, so modify the DTD to use a local system name which xmllint will find in the current directory.
Diffstat (limited to 'patchfiles')
-rw-r--r--patchfiles/MIDIEvents10.dtd195
-rw-r--r--patchfiles/MIDINameDocument10.dtd2
2 files changed, 196 insertions, 1 deletions
diff --git a/patchfiles/MIDIEvents10.dtd b/patchfiles/MIDIEvents10.dtd
new file mode 100644
index 0000000000..cca10cd712
--- /dev/null
+++ b/patchfiles/MIDIEvents10.dtd
@@ -0,0 +1,195 @@
+<!--
+ XML DTD for MIDI messages
+
+ Version 1.0, 19 January 2003
+
+ Formal Public Identifier:
+ "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
+
+ URI:
+ "http://www.midi.org/dtds/MIDIEvents10.dtd"
+
+ Parameter entities which must be defined before use:
+ %ChannelRequired; #IMPLIED
+ for use in contexts, where the event is always
+ rechannelized
+ #REQUIRED
+ when channel messages require Channel attribute
+
+ e.g.
+ <!ENTITY % MIDIDTD PUBLIC "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
+ "http://www.midi.org/dtds/MIDIEvents10.dtd" >
+ %MIDIDTD;
+-->
+
+<!--
+ CHANNEL MESSAGES
+
+ Attribute values:
+ Note, Velocity, Pressure, Control, Value, Number are all 0..127
+ except: PitchBend's Value is 0..16383
+-->
+
+<!ELEMENT NoteOn EMPTY>
+ <!ATTLIST NoteOn
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Note NMTOKEN #REQUIRED
+ Velocity NMTOKEN #REQUIRED>
+
+<!ELEMENT NoteOff EMPTY>
+ <!ATTLIST NoteOff
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Note NMTOKEN #REQUIRED
+ Velocity NMTOKEN #REQUIRED>
+
+<!ELEMENT PolyKeyPressure EMPTY>
+ <!ATTLIST PolyKeyPressure
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Note NMTOKEN #REQUIRED
+ Pressure NMTOKEN #REQUIRED>
+
+<!ELEMENT ControlChange EMPTY>
+ <!ATTLIST ControlChange
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Control NMTOKEN #REQUIRED
+ Value NMTOKEN #REQUIRED>
+
+<!ELEMENT ProgramChange EMPTY>
+ <!ATTLIST ProgramChange
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Number NMTOKEN #REQUIRED>
+
+<!ELEMENT ChannelKeyPressure EMPTY>
+ <!ATTLIST ChannelKeyPressure
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Pressure NMTOKEN #REQUIRED>
+
+<!ELEMENT PitchBendChange EMPTY>
+ <!ATTLIST PitchBendChange
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Value NMTOKEN #REQUIRED>
+
+<!--
+ Channel mode messages
+-->
+<!ELEMENT AllSoundOff EMPTY>
+ <!ATTLIST AllSoundOff
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!ELEMENT ResetAllControllers EMPTY>
+ <!ATTLIST ResetAllControllers
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!ELEMENT LocalControl EMPTY>
+ <!ATTLIST LocalControl
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Value (off|on) #REQUIRED>
+
+<!ELEMENT AllNotesOff EMPTY>
+ <!ATTLIST AllNotesOff
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!ELEMENT OmniOff EMPTY>
+ <!ATTLIST OmniOff
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!ELEMENT OmniOn EMPTY>
+ <!ATTLIST OmniOn
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!ELEMENT MonoMode EMPTY>
+ <!ATTLIST MonoMode
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Value NMTOKEN #REQUIRED>
+
+<!ELEMENT PolyMode EMPTY>
+ <!ATTLIST PolyMode
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;>
+
+<!--
+ 14-bit control changes:
+ Value is 0..16383
+
+ ControlChange14's Control is MSB 0..31
+ RPNN and NRPN are 0..16383
+-->
+
+<!ELEMENT ControlChange14 EMPTY>
+ <!ATTLIST ControlChange14
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ Control NMTOKEN #REQUIRED
+ Value NMTOKEN #REQUIRED>
+
+<!ELEMENT RPNChange EMPTY>
+ <!ATTLIST RPNChange
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ RPN NMTOKEN #REQUIRED
+ Value NMTOKEN #REQUIRED>
+
+<!ELEMENT NRPNChange EMPTY>
+ <!ATTLIST NRPNChange
+ Channel (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16) %ChannelRequired;
+ NRPN NMTOKEN #REQUIRED
+ Value NMTOKEN #REQUIRED>
+
+
+<!--
+ SYSTEM MESSAGES
+-->
+
+<!ELEMENT SysEx (#PCDATA | SysExDeviceID | SysExChannel)*>
+ <!-- contains string of hex bytes without radix information, e.g.:
+ <SysEx>F0 01 02 <SysExDeviceID/> 03 04 05 <SysExChannel Multiplier="1" Offset="32"/> F7</SysEx>
+ -->
+
+<!ELEMENT SysExDeviceID EMPTY> <!-- Byte as a function of user-visible Device ID
+ e.g. 17 as the default on many Roland devices.
+ Most sysex messages will use this element. -->
+ <!ATTLIST SysExDeviceID
+ Multiplier NMTOKEN "1"
+ Offset NMTOKEN "0"> <!-- multiplier and offset are decimal -->
+
+<!ELEMENT SysExChannel EMPTY> <!-- Byte as a function of MIDI Channel 1-16, for
+ specialized situations where a sys-ex message
+ is being directed to a specific MIDI channel.
+ Generally only older devices require use of this. -->
+ <!ATTLIST SysExChannel
+ Multiplier NMTOKEN "1"
+ Offset NMTOKEN "0"> <!-- multiplier and offset are decimal -->
+
+<!ELEMENT MTCQuarterFrame EMPTY>
+ <!ATTLIST MTCQuarterFrame
+ MessageType (FrameLSNibble | FrameMSNibble |
+ SecsLSNibble | SecsMSNibble |
+ MinsLSNibble | MinsMSNibble |
+ HrsLSNibble | HrsMSNibbleSMPTEType) #REQUIRED
+ DataNibble NMTOKEN #REQUIRED>
+
+<!ELEMENT SongPositionPointer EMPTY>
+ <!ATTLIST SongPositionPointer
+ Position NMTOKEN #REQUIRED> <!-- 0-16383 -->
+
+<!ELEMENT SongSelect EMPTY>
+ <!ATTLIST SongSelect
+ Number NMTOKEN #REQUIRED> <!-- 0-127 -->
+
+<!ELEMENT TuneRequest EMPTY>
+<!ELEMENT TimingClock EMPTY>
+<!ELEMENT Start EMPTY>
+<!ELEMENT Continue EMPTY>
+<!ELEMENT Stop EMPTY>
+<!ELEMENT ActiveSensing EMPTY>
+<!ELEMENT SystemReset EMPTY>
+
+<!--
+ ENTITIES
+-->
+
+<!ENTITY % MIDIChannelVoiceMessage "(NoteOn | NoteOff | PolyKeyPressure | ControlChange | ProgramChange
+ | ChannelKeyPressure | PitchBendChange)">
+<!ENTITY % MIDIChannelModeMessage "(AllSoundOff | ResetAllControllers | LocalControl | AllNotesOff
+ | OmniOff | OmniOn | MonoMode | PolyMode)">
+<!ENTITY % MIDIChannelMessage "(%MIDIChannelVoiceMessage; | %MIDIChannelModeMessage;)">
+<!ENTITY % MIDISystemMessage "(SysEx | MTCQuarterFrame | SongPositionPointer | SongSelect
+ | TuneRequest | TimingClock | Start | Continue | Stop | ActiveSensing | SystemReset)">
+<!ENTITY % MIDIMessage "(%MIDIChannelMessage; | %MIDISystemMessage; )">
diff --git a/patchfiles/MIDINameDocument10.dtd b/patchfiles/MIDINameDocument10.dtd
index 24befd1de0..5a95f64587 100644
--- a/patchfiles/MIDINameDocument10.dtd
+++ b/patchfiles/MIDINameDocument10.dtd
@@ -150,7 +150,7 @@
-->
<!ENTITY % ChannelRequired "#IMPLIED">
<!ENTITY % MIDIDTD PUBLIC "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"
- "http://www.midi.org/dtds/MIDIEvents10.dtd" >
+ "MIDIEvents10.dtd" >
%MIDIDTD;
<!ELEMENT MIDICommands (MIDIDelay | %MIDIChannelMessage; | SysEx)+ >