1@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
2@prefix doap:  <http://usefulinc.com/ns/doap#> .
3@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
4@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
5@prefix midi:  <http://lv2plug.in/ns/ext/midi#> .
6@prefix mod:   <http://moddevices.com/ns/mod#> .
7@prefix pprop: <http://lv2plug.in/ns/ext/port-props#> .
8@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
10@prefix units: <http://lv2plug.in/ns/extensions/units#> .
11@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .
12
13<http://gareus.org/rgareus#me>
14	a foaf:Person;
15	foaf:name "Robin Gareus";
16	foaf:mbox <mailto:robin@gareus.org>;
17	foaf:homepage <http://gareus.org/> .
18
19<http://gareus.org/oss/lv2/@LV2NAME@>
20	a lv2:Plugin, doap:Project, lv2:UtilityPlugin;
21	doap:license <http://usefulinc.com/doap/licenses/gpl>;
22	doap:maintainer <http://gareus.org/rgareus#me>;
23	doap:name "MIDI Event Generator";
24	@VERSION@
25	lv2:optionalFeature lv2:hardRTCapable;
26	lv2:requiredFeature urid:map;
27	rdfs:comment "A MIDI debug utility to generate arbitrary messages.";
28
29	@MODBRAND@
30	@MODLABEL@
31	@SIGNATURE@
32
33	lv2:port [
34		a atom:AtomPort, lv2:OutputPort;
35		atom:bufferType atom:Sequence;
36		atom:supports midi:MidiEvent;
37		lv2:index 0;
38		lv2:symbol "midiout";
39		lv2:name "MIDI Out";
40	] , [
41		a lv2:InputPort, lv2:ControlPort;
42		lv2:index 1;
43		lv2:symbol "bytes";
44		lv2:name "Bytes to Send";
45		lv2:minimum 0;
46		lv2:default 0;
47		lv2:maximum 3;
48		lv2:portProperty lv2:integer, lv2:enumeration;
49		lv2:scalePoint [ rdf:value 0 ; rdfs:label "Automatic"; ] ;
50		lv2:scalePoint [ rdf:value 1 ; rdfs:label "1 byte"; ] ;
51		lv2:scalePoint [ rdf:value 2 ; rdfs:label "2 bytes"; ] ;
52		lv2:scalePoint [ rdf:value 3 ; rdfs:label "3 bytes"; ] ;
53	] , [
54		a lv2:InputPort, lv2:ControlPort;
55		lv2:index 2;
56		lv2:symbol "b1";
57		lv2:name "Byte 1";
58		lv2:minimum 128;
59		lv2:default 176;
60		lv2:maximum 255;
61		lv2:portProperty lv2:integer, lv2:enumeration;
62		lv2:scalePoint [ rdf:value 128 ; rdfs:label "(0x80) Note Off C01"; ] ;
63		lv2:scalePoint [ rdf:value 129 ; rdfs:label "(0x81) Note Off C02"; ] ;
64		lv2:scalePoint [ rdf:value 130 ; rdfs:label "(0x82) Note Off C03"; ] ;
65		lv2:scalePoint [ rdf:value 131 ; rdfs:label "(0x83) Note Off C04"; ] ;
66		lv2:scalePoint [ rdf:value 132 ; rdfs:label "(0x84) Note Off C04"; ] ;
67		lv2:scalePoint [ rdf:value 133 ; rdfs:label "(0x85) Note Off C06"; ] ;
68		lv2:scalePoint [ rdf:value 134 ; rdfs:label "(0x86) Note Off C07"; ] ;
69		lv2:scalePoint [ rdf:value 135 ; rdfs:label "(0x87) Note Off C08"; ] ;
70		lv2:scalePoint [ rdf:value 136 ; rdfs:label "(0x88) Note Off C09"; ] ;
71		lv2:scalePoint [ rdf:value 137 ; rdfs:label "(0x89) Note Off C10"; ] ;
72		lv2:scalePoint [ rdf:value 138 ; rdfs:label "(0x8A) Note Off C11"; ] ;
73		lv2:scalePoint [ rdf:value 139 ; rdfs:label "(0x8B) Note Off C12"; ] ;
74		lv2:scalePoint [ rdf:value 140 ; rdfs:label "(0x8C) Note Off C13"; ] ;
75		lv2:scalePoint [ rdf:value 141 ; rdfs:label "(0x8D) Note Off C14"; ] ;
76		lv2:scalePoint [ rdf:value 142 ; rdfs:label "(0x8E) Note Off C15"; ] ;
77		lv2:scalePoint [ rdf:value 143 ; rdfs:label "(0x8F) Note Off C16"; ] ;
78		lv2:scalePoint [ rdf:value 144 ; rdfs:label "(0x90) Note On C01"; ] ;
79		lv2:scalePoint [ rdf:value 145 ; rdfs:label "(0x91) Note On C02"; ] ;
80		lv2:scalePoint [ rdf:value 146 ; rdfs:label "(0x92) Note On C03"; ] ;
81		lv2:scalePoint [ rdf:value 147 ; rdfs:label "(0x93) Note On C04"; ] ;
82		lv2:scalePoint [ rdf:value 148 ; rdfs:label "(0x94) Note On C04"; ] ;
83		lv2:scalePoint [ rdf:value 149 ; rdfs:label "(0x95) Note On C06"; ] ;
84		lv2:scalePoint [ rdf:value 150 ; rdfs:label "(0x96) Note On C07"; ] ;
85		lv2:scalePoint [ rdf:value 151 ; rdfs:label "(0x97) Note On C08"; ] ;
86		lv2:scalePoint [ rdf:value 152 ; rdfs:label "(0x98) Note On C09"; ] ;
87		lv2:scalePoint [ rdf:value 153 ; rdfs:label "(0x99) Note On C10"; ] ;
88		lv2:scalePoint [ rdf:value 154 ; rdfs:label "(0x9A) Note On C11"; ] ;
89		lv2:scalePoint [ rdf:value 155 ; rdfs:label "(0x9B) Note On C12"; ] ;
90		lv2:scalePoint [ rdf:value 156 ; rdfs:label "(0x9C) Note On C13"; ] ;
91		lv2:scalePoint [ rdf:value 157 ; rdfs:label "(0x9D) Note On C14"; ] ;
92		lv2:scalePoint [ rdf:value 158 ; rdfs:label "(0x9E) Note On C15"; ] ;
93		lv2:scalePoint [ rdf:value 159 ; rdfs:label "(0x9F) Note On C16"; ] ;
94		lv2:scalePoint [ rdf:value 160 ; rdfs:label "(0xA0) Poly. Aftertouch C01"; ] ;
95		lv2:scalePoint [ rdf:value 161 ; rdfs:label "(0xA1) Poly. Aftertouch C02"; ] ;
96		lv2:scalePoint [ rdf:value 162 ; rdfs:label "(0xA2) Poly. Aftertouch C03"; ] ;
97		lv2:scalePoint [ rdf:value 163 ; rdfs:label "(0xA3) Poly. Aftertouch C04"; ] ;
98		lv2:scalePoint [ rdf:value 164 ; rdfs:label "(0xA4) Poly. Aftertouch C04"; ] ;
99		lv2:scalePoint [ rdf:value 165 ; rdfs:label "(0xA5) Poly. Aftertouch C06"; ] ;
100		lv2:scalePoint [ rdf:value 166 ; rdfs:label "(0xA6) Poly. Aftertouch C07"; ] ;
101		lv2:scalePoint [ rdf:value 167 ; rdfs:label "(0xA7) Poly. Aftertouch C08"; ] ;
102		lv2:scalePoint [ rdf:value 168 ; rdfs:label "(0xA8) Poly. Aftertouch C09"; ] ;
103		lv2:scalePoint [ rdf:value 169 ; rdfs:label "(0xA9) Poly. Aftertouch C10"; ] ;
104		lv2:scalePoint [ rdf:value 170 ; rdfs:label "(0xAA) Poly. Aftertouch C11"; ] ;
105		lv2:scalePoint [ rdf:value 171 ; rdfs:label "(0xAB) Poly. Aftertouch C12"; ] ;
106		lv2:scalePoint [ rdf:value 172 ; rdfs:label "(0xAC) Poly. Aftertouch C13"; ] ;
107		lv2:scalePoint [ rdf:value 173 ; rdfs:label "(0xAD) Poly. Aftertouch C14"; ] ;
108		lv2:scalePoint [ rdf:value 174 ; rdfs:label "(0xAE) Poly. Aftertouch C15"; ] ;
109		lv2:scalePoint [ rdf:value 175 ; rdfs:label "(0xAF) Poly. Aftertouch C16"; ] ;
110		lv2:scalePoint [ rdf:value 176 ; rdfs:label "(0xB0) Control Change C01"; ] ;
111		lv2:scalePoint [ rdf:value 177 ; rdfs:label "(0xB1) Control Change C02"; ] ;
112		lv2:scalePoint [ rdf:value 178 ; rdfs:label "(0xB2) Control Change C03"; ] ;
113		lv2:scalePoint [ rdf:value 179 ; rdfs:label "(0xB3) Control Change C04"; ] ;
114		lv2:scalePoint [ rdf:value 180 ; rdfs:label "(0xB4) Control Change C04"; ] ;
115		lv2:scalePoint [ rdf:value 181 ; rdfs:label "(0xB5) Control Change C06"; ] ;
116		lv2:scalePoint [ rdf:value 182 ; rdfs:label "(0xB6) Control Change C07"; ] ;
117		lv2:scalePoint [ rdf:value 183 ; rdfs:label "(0xB7) Control Change C08"; ] ;
118		lv2:scalePoint [ rdf:value 184 ; rdfs:label "(0xB8) Control Change C09"; ] ;
119		lv2:scalePoint [ rdf:value 185 ; rdfs:label "(0xB9) Control Change C10"; ] ;
120		lv2:scalePoint [ rdf:value 186 ; rdfs:label "(0xBA) Control Change C11"; ] ;
121		lv2:scalePoint [ rdf:value 187 ; rdfs:label "(0xBB) Control Change C12"; ] ;
122		lv2:scalePoint [ rdf:value 188 ; rdfs:label "(0xBC) Control Change C13"; ] ;
123		lv2:scalePoint [ rdf:value 189 ; rdfs:label "(0xBD) Control Change C14"; ] ;
124		lv2:scalePoint [ rdf:value 190 ; rdfs:label "(0xBE) Control Change C15"; ] ;
125		lv2:scalePoint [ rdf:value 191 ; rdfs:label "(0xBF) Control Change C16"; ] ;
126		lv2:scalePoint [ rdf:value 192 ; rdfs:label "(0xC0) Program Change C01"; ] ;
127		lv2:scalePoint [ rdf:value 193 ; rdfs:label "(0xC1) Program Change C02"; ] ;
128		lv2:scalePoint [ rdf:value 194 ; rdfs:label "(0xC2) Program Change C03"; ] ;
129		lv2:scalePoint [ rdf:value 195 ; rdfs:label "(0xC3) Program Change C04"; ] ;
130		lv2:scalePoint [ rdf:value 196 ; rdfs:label "(0xC4) Program Change C04"; ] ;
131		lv2:scalePoint [ rdf:value 197 ; rdfs:label "(0xC5) Program Change C06"; ] ;
132		lv2:scalePoint [ rdf:value 198 ; rdfs:label "(0xC6) Program Change C07"; ] ;
133		lv2:scalePoint [ rdf:value 199 ; rdfs:label "(0xC7) Program Change C08"; ] ;
134		lv2:scalePoint [ rdf:value 200 ; rdfs:label "(0xC8) Program Change C09"; ] ;
135		lv2:scalePoint [ rdf:value 201 ; rdfs:label "(0xC9) Program Change C10"; ] ;
136		lv2:scalePoint [ rdf:value 202 ; rdfs:label "(0xCA) Program Change C11"; ] ;
137		lv2:scalePoint [ rdf:value 203 ; rdfs:label "(0xCB) Program Change C12"; ] ;
138		lv2:scalePoint [ rdf:value 204 ; rdfs:label "(0xCC) Program Change C13"; ] ;
139		lv2:scalePoint [ rdf:value 205 ; rdfs:label "(0xCD) Program Change C14"; ] ;
140		lv2:scalePoint [ rdf:value 206 ; rdfs:label "(0xCE) Program Change C15"; ] ;
141		lv2:scalePoint [ rdf:value 207 ; rdfs:label "(0xCF) Program Change C16"; ] ;
142		lv2:scalePoint [ rdf:value 208 ; rdfs:label "(0xD0) Chn. Aftertouch C01"; ] ;
143		lv2:scalePoint [ rdf:value 209 ; rdfs:label "(0xD1) Chn. Aftertouch C02"; ] ;
144		lv2:scalePoint [ rdf:value 210 ; rdfs:label "(0xD2) Chn. Aftertouch C03"; ] ;
145		lv2:scalePoint [ rdf:value 211 ; rdfs:label "(0xD3) Chn. Aftertouch C04"; ] ;
146		lv2:scalePoint [ rdf:value 212 ; rdfs:label "(0xD4) Chn. Aftertouch C04"; ] ;
147		lv2:scalePoint [ rdf:value 213 ; rdfs:label "(0xD5) Chn. Aftertouch C06"; ] ;
148		lv2:scalePoint [ rdf:value 214 ; rdfs:label "(0xD6) Chn. Aftertouch C07"; ] ;
149		lv2:scalePoint [ rdf:value 215 ; rdfs:label "(0xD7) Chn. Aftertouch C08"; ] ;
150		lv2:scalePoint [ rdf:value 216 ; rdfs:label "(0xD8) Chn. Aftertouch C09"; ] ;
151		lv2:scalePoint [ rdf:value 217 ; rdfs:label "(0xD9) Chn. Aftertouch C10"; ] ;
152		lv2:scalePoint [ rdf:value 218 ; rdfs:label "(0xDA) Chn. Aftertouch C11"; ] ;
153		lv2:scalePoint [ rdf:value 219 ; rdfs:label "(0xDB) Chn. Aftertouch C12"; ] ;
154		lv2:scalePoint [ rdf:value 220 ; rdfs:label "(0xDC) Chn. Aftertouch C13"; ] ;
155		lv2:scalePoint [ rdf:value 221 ; rdfs:label "(0xDD) Chn. Aftertouch C14"; ] ;
156		lv2:scalePoint [ rdf:value 222 ; rdfs:label "(0xDE) Chn. Aftertouch C15"; ] ;
157		lv2:scalePoint [ rdf:value 223 ; rdfs:label "(0xDF) Chn. Aftertouch C16"; ] ;
158		lv2:scalePoint [ rdf:value 224 ; rdfs:label "(0xE0) PitchBend C01"; ] ;
159		lv2:scalePoint [ rdf:value 225 ; rdfs:label "(0xE1) PitchBend C02"; ] ;
160		lv2:scalePoint [ rdf:value 226 ; rdfs:label "(0xE2) PitchBend C03"; ] ;
161		lv2:scalePoint [ rdf:value 227 ; rdfs:label "(0xE3) PitchBend C04"; ] ;
162		lv2:scalePoint [ rdf:value 228 ; rdfs:label "(0xE4) PitchBend C04"; ] ;
163		lv2:scalePoint [ rdf:value 229 ; rdfs:label "(0xE5) PitchBend C06"; ] ;
164		lv2:scalePoint [ rdf:value 230 ; rdfs:label "(0xE6) PitchBend C07"; ] ;
165		lv2:scalePoint [ rdf:value 231 ; rdfs:label "(0xE7) PitchBend C08"; ] ;
166		lv2:scalePoint [ rdf:value 232 ; rdfs:label "(0xE8) PitchBend C09"; ] ;
167		lv2:scalePoint [ rdf:value 233 ; rdfs:label "(0xE9) PitchBend C10"; ] ;
168		lv2:scalePoint [ rdf:value 234 ; rdfs:label "(0xEA) PitchBend C11"; ] ;
169		lv2:scalePoint [ rdf:value 235 ; rdfs:label "(0xEB) PitchBend C12"; ] ;
170		lv2:scalePoint [ rdf:value 236 ; rdfs:label "(0xEC) PitchBend C13"; ] ;
171		lv2:scalePoint [ rdf:value 237 ; rdfs:label "(0xED) PitchBend C14"; ] ;
172		lv2:scalePoint [ rdf:value 238 ; rdfs:label "(0xEE) PitchBend C15"; ] ;
173		lv2:scalePoint [ rdf:value 239 ; rdfs:label "(0xEF) PitchBend C16"; ] ;
174		lv2:scalePoint [ rdf:value 240 ; rdfs:label "(0xF0) N/A - SysEx"; ] ;
175		lv2:scalePoint [ rdf:value 241 ; rdfs:label "(0xF1) N/A - MTC QFrame"; ] ;
176		lv2:scalePoint [ rdf:value 242 ; rdfs:label "(0xF2) Song Position"; ] ;
177		lv2:scalePoint [ rdf:value 243 ; rdfs:label "(0xF3) Song Select"; ] ;
178		lv2:scalePoint [ rdf:value 244 ; rdfs:label "(0xF4) Undefined - Reserved"; ] ;
179		lv2:scalePoint [ rdf:value 245 ; rdfs:label "(0xF5) Undefined - Reserved"; ] ;
180		lv2:scalePoint [ rdf:value 246 ; rdfs:label "(0xF6) Tune request"; ] ;
181		lv2:scalePoint [ rdf:value 247 ; rdfs:label "(0xF7) End of SysEx [EOX]"; ] ;
182		lv2:scalePoint [ rdf:value 248 ; rdfs:label "(0xF8) Timing clock"; ] ;
183		lv2:scalePoint [ rdf:value 249 ; rdfs:label "(0xF9) Undefined - Reserved"; ] ;
184		lv2:scalePoint [ rdf:value 250 ; rdfs:label "(0xFA) MClk Start"; ] ;
185		lv2:scalePoint [ rdf:value 251 ; rdfs:label "(0xFB) MClk Stop"; ] ;
186		lv2:scalePoint [ rdf:value 252 ; rdfs:label "(0xFC) MClk Continue"; ] ;
187		lv2:scalePoint [ rdf:value 253 ; rdfs:label "(0xFD) Undefined - Reserved"; ] ;
188		lv2:scalePoint [ rdf:value 254 ; rdfs:label "(0xFE) Active Sensing"; ] ;
189		lv2:scalePoint [ rdf:value 255 ; rdfs:label "(0xFF) System Reset"; ] ;
190	] , [
191		a lv2:InputPort, lv2:ControlPort;
192		lv2:index 3;
193		lv2:symbol "b2";
194		lv2:name "Byte 2";
195		lv2:minimum 0;
196		lv2:default 0;
197		lv2:maximum 127;
198		lv2:portProperty lv2:integer;
199	] , [
200		a lv2:InputPort, lv2:ControlPort;
201		lv2:index 4;
202		lv2:symbol "b3";
203		lv2:name "Byte 3";
204		lv2:minimum 0;
205		lv2:default 0;
206		lv2:maximum 127;
207		lv2:portProperty lv2:integer;
208	] , [
209		a lv2:InputPort, lv2:ControlPort;
210		lv2:index 5;
211		lv2:symbol "trigger";
212		lv2:name "Send";
213		lv2:minimum 0;
214		lv2:default 0;
215		lv2:maximum 1;
216		lv2:portProperty lv2:integer, lv2:toggled, pprop:trigger;
217	]
218	.
219