Fix validation of midnam files
authorDavid Robillard <d@drobilla.net>
Sun, 31 Jul 2016 22:48:59 +0000 (18:48 -0400)
committerDavid Robillard <d@drobilla.net>
Sun, 31 Jul 2016 22:48:59 +0000 (18:48 -0400)
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.

patchfiles/MIDIEvents10.dtd [new file with mode: 0644]
patchfiles/MIDINameDocument10.dtd

diff --git a/patchfiles/MIDIEvents10.dtd b/patchfiles/MIDIEvents10.dtd
new file mode 100644 (file)
index 0000000..cca10cd
--- /dev/null
@@ -0,0 +1,195 @@
+<!--\r
+       XML DTD for MIDI messages\r
+       \r
+       Version 1.0, 19 January 2003\r
+       \r
+       Formal Public Identifier:\r
+               "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"\r
+\r
+       URI:\r
+               "http://www.midi.org/dtds/MIDIEvents10.dtd"\r
+\r
+       Parameter entities which must be defined before use:\r
+               %ChannelRequired;               #IMPLIED\r
+                                                                       for use in contexts, where the event is always\r
+                                                                       rechannelized\r
+                                                               #REQUIRED\r
+                                                                       when channel messages require Channel attribute\r
+\r
+       e.g.\r
+               <!ENTITY % MIDIDTD PUBLIC       "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"\r
+                                                                       "http://www.midi.org/dtds/MIDIEvents10.dtd" >\r
+               %MIDIDTD;\r
+-->\r
+\r
+<!--\r
+       CHANNEL MESSAGES\r
+       \r
+       Attribute values:\r
+               Note, Velocity, Pressure, Control, Value, Number are all 0..127\r
+               except: PitchBend's Value is 0..16383\r
+-->\r
+\r
+<!ELEMENT NoteOn EMPTY>\r
+       <!ATTLIST NoteOn\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Note            NMTOKEN                                                                         #REQUIRED\r
+               Velocity        NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT NoteOff EMPTY>\r
+       <!ATTLIST NoteOff\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Note            NMTOKEN                                                                         #REQUIRED\r
+               Velocity        NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT PolyKeyPressure EMPTY>\r
+       <!ATTLIST PolyKeyPressure\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Note            NMTOKEN                                                                         #REQUIRED\r
+               Pressure        NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT ControlChange EMPTY>\r
+       <!ATTLIST ControlChange\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Control         NMTOKEN                                                                         #REQUIRED\r
+               Value           NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT ProgramChange EMPTY>\r
+       <!ATTLIST ProgramChange\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Number          NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT ChannelKeyPressure EMPTY>\r
+       <!ATTLIST ChannelKeyPressure\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Pressure        NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT PitchBendChange EMPTY>\r
+       <!ATTLIST PitchBendChange\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Value           NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!--\r
+       Channel mode messages\r
+-->\r
+<!ELEMENT AllSoundOff EMPTY>\r
+       <!ATTLIST AllSoundOff\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!ELEMENT ResetAllControllers EMPTY>\r
+       <!ATTLIST ResetAllControllers\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!ELEMENT LocalControl EMPTY>\r
+       <!ATTLIST LocalControl\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Value           (off|on)                                                                        #REQUIRED>\r
+\r
+<!ELEMENT AllNotesOff EMPTY>\r
+       <!ATTLIST AllNotesOff\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!ELEMENT OmniOff EMPTY>\r
+       <!ATTLIST OmniOff\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!ELEMENT OmniOn EMPTY>\r
+       <!ATTLIST OmniOn\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!ELEMENT MonoMode EMPTY>\r
+       <!ATTLIST MonoMode\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Value           NMTOKEN                                     #REQUIRED>\r
+\r
+<!ELEMENT PolyMode EMPTY>\r
+       <!ATTLIST PolyMode\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;>\r
+\r
+<!--\r
+       14-bit control changes:\r
+               Value is 0..16383\r
+       \r
+               ControlChange14's Control is MSB 0..31\r
+               RPNN and NRPN are 0..16383\r
+-->\r
+\r
+<!ELEMENT ControlChange14 EMPTY>\r
+       <!ATTLIST ControlChange14\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               Control         NMTOKEN                                                                         #REQUIRED\r
+               Value           NMTOKEN                                                                         #REQUIRED>      \r
+\r
+<!ELEMENT RPNChange EMPTY>\r
+       <!ATTLIST RPNChange\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               RPN                     NMTOKEN                                                                         #REQUIRED\r
+               Value           NMTOKEN                                                                         #REQUIRED>\r
+\r
+<!ELEMENT NRPNChange EMPTY>\r
+       <!ATTLIST NRPNChange\r
+               Channel         (1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)        %ChannelRequired;\r
+               NRPN            NMTOKEN                                                                         #REQUIRED\r
+               Value           NMTOKEN                                                                         #REQUIRED>\r
+\r
+\r
+<!--\r
+       SYSTEM MESSAGES\r
+-->\r
+\r
+<!ELEMENT SysEx (#PCDATA | SysExDeviceID | SysExChannel)*>             \r
+       <!-- contains string of hex bytes without radix information, e.g.:\r
+       <SysEx>F0 01 02 <SysExDeviceID/> 03 04 05 <SysExChannel Multiplier="1" Offset="32"/> F7</SysEx> \r
+       -->\r
+\r
+<!ELEMENT SysExDeviceID EMPTY>         <!-- Byte as a function of user-visible Device ID\r
+                                                                               e.g. 17 as the default on many Roland devices.\r
+                                                                               Most sysex messages will use this element. -->\r
+       <!ATTLIST SysExDeviceID\r
+               Multiplier      NMTOKEN "1"\r
+               Offset          NMTOKEN "0">    <!-- multiplier and offset are decimal -->      \r
+               \r
+<!ELEMENT SysExChannel EMPTY>          <!-- Byte as a function of MIDI Channel 1-16, for\r
+                                                                               specialized situations where a sys-ex message\r
+                                                                               is being directed to a specific MIDI channel.\r
+                                                                               Generally only older devices require use of this. -->\r
+       <!ATTLIST SysExChannel\r
+               Multiplier      NMTOKEN "1"\r
+               Offset          NMTOKEN "0">    <!-- multiplier and offset are decimal -->\r
+                       \r
+<!ELEMENT MTCQuarterFrame EMPTY>\r
+       <!ATTLIST MTCQuarterFrame\r
+               MessageType     (FrameLSNibble | FrameMSNibble |\r
+                       SecsLSNibble  | SecsMSNibble  |\r
+                       MinsLSNibble  | MinsMSNibble  |\r
+                       HrsLSNibble       | HrsMSNibbleSMPTEType)                               #REQUIRED\r
+               DataNibble              NMTOKEN                                                                 #REQUIRED>\r
+\r
+<!ELEMENT SongPositionPointer EMPTY>\r
+       <!ATTLIST SongPositionPointer\r
+               Position        NMTOKEN         #REQUIRED>      <!-- 0-16383 -->\r
+\r
+<!ELEMENT SongSelect EMPTY>\r
+       <!ATTLIST SongSelect\r
+               Number          NMTOKEN         #REQUIRED>      <!-- 0-127 -->\r
+\r
+<!ELEMENT TuneRequest EMPTY>\r
+<!ELEMENT TimingClock EMPTY>\r
+<!ELEMENT Start EMPTY>\r
+<!ELEMENT Continue EMPTY>\r
+<!ELEMENT Stop EMPTY>\r
+<!ELEMENT ActiveSensing EMPTY>\r
+<!ELEMENT SystemReset EMPTY>\r
+\r
+<!--\r
+       ENTITIES\r
+-->\r
+\r
+<!ENTITY % MIDIChannelVoiceMessage "(NoteOn | NoteOff | PolyKeyPressure | ControlChange | ProgramChange\r
+       | ChannelKeyPressure | PitchBendChange)">\r
+<!ENTITY % MIDIChannelModeMessage "(AllSoundOff | ResetAllControllers | LocalControl | AllNotesOff\r
+       | OmniOff | OmniOn | MonoMode | PolyMode)">\r
+<!ENTITY % MIDIChannelMessage "(%MIDIChannelVoiceMessage; | %MIDIChannelModeMessage;)">\r
+<!ENTITY % MIDISystemMessage "(SysEx | MTCQuarterFrame | SongPositionPointer | SongSelect\r
+       | TuneRequest | TimingClock | Start | Continue | Stop | ActiveSensing | SystemReset)">\r
+<!ENTITY % MIDIMessage "(%MIDIChannelMessage; | %MIDISystemMessage; )">\r
index 24befd1de0b3775a3d904efc798ad13f5191a955..5a95f645870cf570b877e1546938dce0835f1cab 100644 (file)
 -->\r
 <!ENTITY % ChannelRequired "#IMPLIED">\r
 <!ENTITY % MIDIDTD PUBLIC      "-//MIDI Manufacturers Association//DTD MIDIEvents 1.0//EN"\r
-                                                       "http://www.midi.org/dtds/MIDIEvents10.dtd" >\r
+                                                       "MIDIEvents10.dtd" >\r
 %MIDIDTD;\r
 \r
 <!ELEMENT MIDICommands (MIDIDelay | %MIDIChannelMessage; | SysEx)+ >\r