6 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include <epan/packet.h>
13 #include <epan/conversation.h>
14 #include <epan/expert.h>
16 void proto_register_sysex(void);
17 void proto_reg_handoff_sysex(void);
19 /* protocols and header fields */
20 static int proto_sysex
;
21 static int hf_sysex_message_start
;
22 static int hf_sysex_manufacturer_id
;
23 static int hf_sysex_three_byte_manufacturer_id
;
24 static int hf_sysex_message_eox
;
28 static dissector_handle_t sysex_digitech_handle
;
30 static expert_field ei_sysex_message_start_byte
;
31 static expert_field ei_sysex_message_end_byte
;
32 static expert_field ei_sysex_undecoded
;
34 #define SYSEX_MANUFACTURER_DOD 0x000010
36 /* Manufacturer and Extended Manufacturer IDs as of April 2019
37 * https://www.midi.org/specifications-old/item/manufacturer-id-numbers
39 static const value_string sysex_manufacturer_id_vals
[] = {
42 {0x03, "Voyetra Turtle Beach, Inc."},
44 {0x05, "Passport Designs"},
45 {0x06, "Lexicon Inc."},
46 {0x07, "Kurzweil / Young Chang"},
49 {0x0A, "AKG Acoustics"},
50 {0x0B, "Voyce Music"},
51 {0x0C, "WaveFrame (Timeline)"},
52 {0x0D, "ADA Signal Processors, Inc."},
53 {0x0E, "Garfield Electronics"},
55 {0x10, "Oberheim / Gibson Labs"},
56 {0x11, "Apple, Inc."},
57 {0x12, "Grey Matter Response"},
58 {0x13, "Digidesign Inc."},
59 {0x14, "Palmtree Instruments"},
60 {0x15, "JLCooper Electronics"},
61 {0x16, "Lowrey Organ Company"},
62 {0x17, "Adams-Smith"},
64 {0x19, "Harmony Systems"},
68 {0x1D, "Inventronics"},
69 {0x1E, "Key Concepts"},
72 {0x21, "Proel Labs (SIEL)"},
73 {0x22, "Synthaxe (UK)"},
77 {0x26, "Ketron s.r.l."},
78 {0x27, "Jellinghaus MS"},
79 {0x28, "Southworth Music Systems"},
80 {0x29, "PPG (Germany)"},
82 {0x2B, "Solid State Logic Organ Systems"},
83 {0x2C, "Audio Veritrieb-P. Struven"},
85 {0x2E, "Soundtracs Ltd."},
88 {0x31, "Viscount International Spa (Intercontinental Electronics)"},
90 {0x33, "Clavia Digital Instruments"},
91 {0x34, "Audio Architecture"},
92 {0x35, "Generalmusic Corp SpA"},
93 {0x36, "Cheetah Marketing"},
96 {0x39, "Soundcraft Electronics"},
97 {0x3A, "Steinberg Media Technologies AG"},
99 {0x3C, "AVAB Niethammer AB"},
101 {0x3E, "Waldorf Electronics GmbH"},
103 {0x40, "Kawai Musical Instruments MFG. CO. Ltd"},
104 {0x41, "Roland Corporation"},
106 {0x43, "Yamaha Corporation"},
107 {0x44, "Casio Computer Co. Ltd"},
108 {0x46, "Kamiya Studio Co. Ltd"},
109 {0x47, "Akai Electric Co. Ltd."},
110 {0x48, "Victor Company of Japan, Ltd."},
111 {0x4B, "Fujitsu Limited"},
112 {0x4C, "Sony Corporation"},
113 {0x4E, "Teac Corporation"},
114 {0x50, "Matsushita Electric Industrial Co. , Ltd"},
115 {0x51, "Fostex Corporation"},
116 {0x52, "Zoom Corporation"},
117 {0x54, "Matsushita Communication Industrial Co., Ltd."},
118 {0x55, "Suzuki Musical Instruments MFG. Co., Ltd."},
119 {0x56, "Fuji Sound Corporation Ltd."},
120 {0x57, "Acoustic Technical Laboratory, Inc."},
121 {0x59, "Faith, Inc."},
122 {0x5A, "Internet Corporation"},
123 {0x5C, "Seekers Co. Ltd."},
124 {0x5F, "SD Card Association"},
125 /* Three special IDs specified in MIDI 1.0 Detailed Specification */
126 {0x7D, "Educational/Non-Commercial Use"},
127 {0x7E, "Non-Real Time Universal System Exclusive"},
128 {0x7F, "Real Time Universal System Exclusive"},
131 static value_string_ext sysex_manufacturer_id_vals_ext
=
132 VALUE_STRING_EXT_INIT(sysex_manufacturer_id_vals
);
134 static const value_string sysex_extended_manufacturer_id_vals
[] = {
135 {0x000001, "Time/Warner Interactive"},
136 {0x000002, "Advanced Gravis Comp. Tech Ltd."},
137 {0x000003, "Media Vision"},
138 {0x000004, "Dornes Research Group"},
139 {0x000005, "K-Muse"},
140 {0x000006, "Stypher"},
141 {0x000007, "Digital Music Corp."},
142 {0x000008, "IOTA Systems"},
143 {0x000009, "New England Digital"},
144 {0x00000A, "Artisyn"},
145 {0x00000B, "IVL Technologies Ltd."},
146 {0x00000C, "Southern Music Systems"},
147 {0x00000D, "Lake Butler Sound Company"},
148 {0x00000E, "Alesis Studio Electronics"},
149 {0x00000F, "Sound Creation"},
150 {0x000010, "DOD Electronics Corp."},
151 {0x000011, "Studer-Editech"},
153 {0x000013, "Temporal Acuity Products"},
154 {0x000014, "Perfect Fretworks"},
155 {0x000015, "KAT Inc."},
156 {0x000016, "Opcode Systems"},
157 {0x000017, "Rane Corporation"},
158 {0x000018, "Anadi Electronique"},
160 {0x00001A, "Allen & Heath Brenell"},
161 {0x00001B, "Peavey Electronics"},
162 {0x00001C, "360 Systems"},
163 {0x00001D, "Spectrum Design and Development"},
164 {0x00001E, "Marquis Music"},
165 {0x00001F, "Zeta Systems"},
166 {0x000020, "Axxes (Brian Parsonett)"},
168 {0x000022, "Indian Valley Mfg."},
169 {0x000023, "Triton"},
171 {0x000025, "Breakaway Technologies"},
172 {0x000026, "Leprecon / CAE Inc."},
173 {0x000027, "Harrison Systems Inc."},
174 {0x000028, "Future Lab/Mark Kuo"},
175 {0x000029, "Rocktron Corporation"},
176 {0x00002A, "PianoDisc"},
177 {0x00002B, "Cannon Research Group"},
178 {0x00002C, "Reserved"},
179 {0x00002D, "Rodgers Instrument LLC"},
180 {0x00002E, "Blue Sky Logic"},
181 {0x00002F, "Encore Electronics"},
182 {0x000030, "Uptown"},
184 {0x000032, "CTI Audio, Inc. (Musically Intel. Devs.)"},
185 {0x000033, "S3 Incorporated"},
186 {0x000034, "Broderbund / Red Orb"},
187 {0x000035, "Allen Organ Co."},
188 {0x000036, "Reserved"},
189 {0x000037, "Music Quest"},
191 {0x000039, "Gallien Krueger"},
193 {0x00003B, "Mark Of The Unicorn"},
194 {0x00003C, "Hotz Corporation"},
195 {0x00003D, "ETA Lighting"},
196 {0x00003E, "NSI Corporation"},
197 {0x00003F, "Ad Lib, Inc."},
198 {0x000040, "Richmond Sound Design"},
199 {0x000041, "Microsoft"},
200 {0x000042, "Mindscape (Software Toolworks)"},
201 {0x000043, "Russ Jones Marketing / Niche"},
202 {0x000044, "Intone"},
203 {0x000045, "Advanced Remote Technologies"},
204 {0x000046, "White Instruments"},
205 {0x000047, "GT Electronics/Groove Tubes"},
206 {0x000048, "Pacific Research & Engineering"},
207 {0x000049, "Timeline Vista, Inc."},
208 {0x00004A, "Mesa Boogie Ltd."},
210 {0x00004C, "Sequoia Development Group"},
211 {0x00004D, "Studio Electronics"},
212 {0x00004E, "Euphonix, Inc"},
213 {0x00004F, "InterMIDI, Inc."},
214 {0x000050, "MIDI Solutions Inc."},
215 {0x000051, "3DO Company"},
216 {0x000052, "Lightwave Research / High End Systems"},
217 {0x000053, "Micro-W Corporation"},
218 {0x000054, "Spectral Synthesis, Inc."},
219 {0x000055, "Lone Wolf"},
220 {0x000056, "Studio Technologies Inc."},
221 {0x000057, "Peterson Electro-Musical Product, Inc."},
222 {0x000058, "Atari Corporation"},
223 {0x000059, "Marion Systems Corporation"},
224 {0x00005A, "Design Event"},
225 {0x00005B, "Winjammer Software Ltd."},
226 {0x00005C, "AT&T Bell Laboratories"},
227 {0x00005D, "Reserved"},
228 {0x00005E, "Symetrix"},
229 {0x00005F, "MIDI the World"},
230 {0x000060, "Spatializer"},
231 {0x000061, "Micros 'N MIDI"},
232 {0x000062, "Accordians International"},
233 {0x000063, "EuPhonics (now 3Com)"},
234 {0x000064, "Musonix"},
235 {0x000065, "Turtle Beach Systems (Voyetra)"},
236 {0x000066, "Loud Technologies / Mackie"},
237 {0x000067, "Compuserve"},
238 {0x000068, "BEC Technologies"},
239 {0x000069, "QRS Music Inc"},
240 {0x00006A, "P.G. Music"},
241 {0x00006B, "Sierra Semiconductor"},
242 {0x00006C, "EpiGraf"},
243 {0x00006D, "Electronics Diversified Inc"},
244 {0x00006E, "Tune 1000"},
245 {0x00006F, "Advanced Micro Devices"},
246 {0x000070, "Mediamation"},
247 {0x000071, "Sabine Musical Mfg. Co. Inc."},
248 {0x000072, "Woog Labs"},
249 {0x000073, "Micropolis Corp"},
250 {0x000074, "Ta Horng Musical Instrument"},
251 {0x000075, "e-Tek Labs (Forte Tech)"},
252 {0x000076, "Electro-Voice"},
253 {0x000077, "Midisoft Corporation"},
254 {0x000078, "QSound Labs"},
255 {0x000079, "Westrex"},
256 {0x00007A, "Nvidia"},
257 {0x00007B, "ESS Technology"},
258 {0x00007C, "Media Trix Peripherals"},
259 {0x00007D, "Brooktree Corp"},
260 {0x00007E, "Otari Corp"},
261 {0x00007F, "Key Electronics, Inc."},
262 {0x000100, "Shure Incorporated"},
263 {0x000101, "AuraSound"},
264 {0x000102, "Crystal Semiconductor"},
265 {0x000103, "Conexant (Rockwell)"},
266 {0x000104, "Silicon Graphics"},
267 {0x000105, "M-Audio (Midiman)"},
268 {0x000106, "PreSonus"},
269 {0x000108, "Topaz Enterprises"},
270 {0x000109, "Cast Lighting"},
271 {0x00010A, "Microsoft"},
272 {0x00010B, "Sonic Foundry"},
273 {0x00010C, "Line 6 (Fast Forward) (Yamaha)"},
274 {0x00010D, "Beatnik Inc"},
275 {0x00010E, "Van Koevering Company"},
276 {0x00010F, "Altech Systems"},
277 {0x000110, "S & S Research"},
278 {0x000111, "VLSI Technology"},
279 {0x000112, "Chromatic Research"},
280 {0x000113, "Sapphire"},
282 {0x000115, "Justonic Tuning"},
283 {0x000116, "TorComp Research Inc."},
284 {0x000117, "Newtek Inc."},
285 {0x000118, "Sound Sculpture"},
286 {0x000119, "Walker Technical"},
287 {0x00011A, "Digital Harmony (PAVO)"},
288 {0x00011B, "InVision Interactive"},
289 {0x00011C, "T-Square Design"},
290 {0x00011D, "Nemesys Music Technology"},
291 {0x00011E, "DBX Professional (Harman Intl)"},
292 {0x00011F, "Syndyne Corporation"},
293 {0x000120, "Bitheadz"},
294 {0x000121, "Cakewalk Music Software"},
295 {0x000122, "Analog Devices"},
296 {0x000123, "National Semiconductor"},
297 {0x000124, "Boom Theory / Adinolfi Alternative Percussion"},
298 {0x000125, "Virtual DSP Corporation"},
299 {0x000126, "Antares Systems"},
300 {0x000127, "Angel Software"},
301 {0x000128, "St Louis Music"},
302 {0x000129, "Passport Music Software LLC (Gvox)"},
303 {0x00012A, "Ashley Audio Inc."},
304 {0x00012B, "Vari-Lite Inc."},
305 {0x00012C, "Summit Audio Inc."},
306 {0x00012D, "Aureal Semiconductor Inc."},
307 {0x00012E, "SeaSound LLC"},
308 {0x00012F, "U.S. Robotics"},
309 {0x000130, "Aurisis Research"},
310 {0x000131, "Nearfield Research"},
311 {0x000132, "FM7 Inc"},
312 {0x000133, "Swivel Systems"},
313 {0x000134, "Hyperactive Audio Systems"},
314 {0x000135, "MidiLite (Castle Studios Productions)"},
315 {0x000136, "Radikal Technologies"},
316 {0x000137, "Roger Linn Design"},
317 {0x000138, "TC-Helicon Vocal Technologies"},
318 {0x000139, "Event Electronics"},
319 {0x00013A, "Sonic Network Inc"},
320 {0x00013B, "Realtime Music Solutions"},
321 {0x00013C, "Apogee Digital"},
322 {0x00013D, "Classical Organs, Inc."},
323 {0x00013E, "Microtools Inc."},
324 {0x00013F, "Numark Industries"},
325 {0x000140, "Frontier Design Group, LLC"},
326 {0x000141, "Recordare LLC"},
327 {0x000142, "Starr Labs"},
328 {0x000143, "Voyager Sound Inc."},
329 {0x000144, "Manifold Labs"},
330 {0x000145, "Aviom Inc."},
331 {0x000146, "Mixmeister Technology"},
332 {0x000147, "Notation Software"},
333 {0x000148, "Mercurial Communications"},
334 {0x000149, "Wave Arts"},
335 {0x00014A, "Logic Sequencing Devices"},
336 {0x00014B, "Axess Electronics"},
337 {0x00014C, "Muse Research"},
338 {0x00014D, "Open Labs"},
339 {0x00014E, "Guillemot Corp"},
340 {0x00014F, "Samson Technologies"},
341 {0x000150, "Electronic Theatre Controls"},
342 {0x000151, "Blackberry (RIM)"},
343 {0x000152, "Mobileer"},
344 {0x000153, "Synthogy"},
345 {0x000154, "Lynx Studio Technology Inc."},
346 {0x000155, "Damage Control Engineering LLC"},
347 {0x000156, "Yost Engineering, Inc."},
348 {0x000157, "Brooks & Forsman Designs LLC / DrumLite"},
349 {0x000158, "Infinite Response"},
350 {0x000159, "Garritan Corp"},
351 {0x00015A, "Plogue Art et Technologie, Inc"},
352 {0x00015B, "RJM Music Technology"},
353 {0x00015C, "Custom Solutions Software"},
354 {0x00015D, "Sonarcana LLC / Highly Liquid"},
355 {0x00015E, "Centrance"},
356 {0x00015F, "Kesumo LLC"},
357 {0x000160, "Stanton (Gibson Brands)"},
358 {0x000161, "Livid Instruments"},
359 {0x000162, "First Act / 745 Media"},
360 {0x000163, "Pygraphics, Inc."},
361 {0x000164, "Panadigm Innovations Ltd"},
362 {0x000165, "Avedis Zildjian Co"},
363 {0x000166, "Auvital Music Corp"},
364 {0x000167, "You Rock Guitar (was: Inspired Instruments)"},
365 {0x000168, "Chris Grigg Designs"},
366 {0x000169, "Slate Digital LLC"},
367 {0x00016A, "Mixware"},
368 {0x00016B, "Social Entropy"},
369 {0x00016C, "Source Audio LLC"},
370 {0x00016D, "Ernie Ball / Music Man"},
371 {0x00016E, "Fishman"},
372 {0x00016F, "Custom Audio Electronics"},
373 {0x000170, "American Audio/DJ"},
374 {0x000171, "Mega Control Systems"},
375 {0x000172, "Kilpatrick Audio"},
376 {0x000173, "iConnectivity"},
377 {0x000174, "Fractal Audio"},
378 {0x000175, "NetLogic Microsystems"},
379 {0x000176, "Music Computing"},
380 {0x000177, "Nektar Technology Inc"},
381 {0x000178, "Zenph Sound Innovations"},
382 {0x000179, "DJTechTools.com"},
383 {0x00017A, "Rezonance Labs"},
384 {0x00017B, "Decibel Eleven"},
386 {0x00017D, "Media Overkill"},
387 {0x00017E, "Confusion Studios"},
388 {0x00017F, "moForte Inc"},
389 {0x000200, "Miselu Inc"},
390 {0x000201, "Amelia's Compass LLC"},
391 {0x000202, "Zivix LLC"},
392 {0x000203, "Artiphon"},
393 {0x000204, "Synclavier Digital"},
394 {0x000205, "Light & Sound Control Devices LLC"},
395 {0x000206, "Retronyms Inc"},
396 {0x000207, "JS Technologies"},
397 {0x000208, "Quicco Sound"},
398 {0x000209, "A-Designs Audio"},
399 {0x00020A, "McCarthy Music Corp"},
400 {0x00020B, "Denon DJ"},
401 {0x00020C, "Keith Robert Murray"},
402 {0x00020D, "Google"},
403 {0x00020E, "ISP Technologies"},
404 {0x00020F, "Abstrakt Instruments LLC"},
405 {0x000210, "Meris LLC"},
406 {0x000211, "Sensorpoint LLC"},
407 {0x000212, "Hi-Z Labs"},
408 {0x000213, "Imitone"},
409 {0x000214, "Intellijel Designs Inc."},
410 {0x000215, "Dasz Instruments Inc."},
411 {0x000216, "Remidi"},
412 {0x000217, "Disaster Area Designs LLC"},
413 {0x000218, "Universal Audio"},
414 {0x000219, "Carter Duncan Corp"},
415 {0x00021A, "Essential Technology"},
416 {0x00021B, "Cantux Research LLC"},
417 {0x00021C, "Hummel Technologies"},
418 {0x00021D, "Sensel Inc"},
419 {0x00021E, "DBML Group"},
420 {0x00021F, "Madrona Labs"},
421 {0x000220, "Mesa Boogie"},
422 {0x000221, "Effigy Labs"},
423 {0x000222, "MK2 Image Ltd"},
424 {0x000223, "Red Panda LLC"},
425 {0x000224, "OnSong LLC"},
426 {0x000225, "Jamboxx Inc."},
427 {0x000226, "Electro-Harmonix "},
428 {0x000227, "RnD64 Inc"},
429 {0x000228, "Neunaber Technology LLC "},
430 {0x000229, "Kaom Inc."},
431 {0x00022A, "Hallowell EMC"},
432 {0x00022B, "Sound Devices, LLC"},
433 {0x00022C, "Spectrasonics, Inc"},
434 {0x00022D, "Second Sound, LLC"},
435 {0x002000, "Dream SAS"},
436 {0x002001, "Strand Lighting"},
437 {0x002002, "Amek Div of Harman Industries"},
438 {0x002003, "Casa Di Risparmio Di Loreto"},
439 {0x002004, "Böhm electronic GmbH"},
440 {0x002005, "Syntec Digital Audio"},
441 {0x002006, "Trident Audio Developments"},
442 {0x002007, "Real World Studio"},
443 {0x002008, "Evolution Synthesis, Ltd"},
444 {0x002009, "Yes Technology"},
445 {0x00200A, "Audiomatica"},
446 {0x00200B, "Bontempi SpA (Sigma)"},
447 {0x00200C, "F.B.T. Elettronica SpA"},
448 {0x00200D, "MidiTemp GmbH"},
449 {0x00200E, "LA Audio (Larking Audio)"},
450 {0x00200F, "Zero 88 Lighting Limited"},
451 {0x002010, "Micon Audio Electronics GmbH"},
452 {0x002011, "Forefront Technology"},
453 {0x002012, "Studio Audio and Video Ltd."},
454 {0x002013, "Kenton Electronics"},
455 {0x002014, "Celco/ Electrosonic"},
457 {0x002016, "Marshall Products Limited"},
459 {0x002018, "BSS Audio Ltd."},
460 {0x002019, "MA Lighting Technology"},
461 {0x00201A, "Fatar SRL c/o Music Industries"},
462 {0x00201B, "QSC Audio Products Inc."},
463 {0x00201C, "Artisan Classic Organ Inc."},
464 {0x00201D, "Orla Spa"},
465 {0x00201E, "Pinnacle Audio (Klark Teknik PLC)"},
466 {0x00201F, "TC Electronics"},
467 {0x002020, "Doepfer Musikelektronik GmbH"},
468 {0x002021, "Creative ATC / E-mu"},
469 {0x002022, "Seyddo/Minami"},
470 {0x002023, "LG Electronics (Goldstar)"},
471 {0x002024, "Midisoft sas di M.Cima & C"},
472 {0x002025, "Samick Musical Inst. Co. Ltd."},
473 {0x002026, "Penny and Giles (Bowthorpe PLC)"},
474 {0x002027, "Acorn Computer"},
475 {0x002028, "LSC Electronics Pty. Ltd."},
476 {0x002029, "Focusrite/Novation"},
477 {0x00202A, "Samkyung Mechatronics"},
478 {0x00202B, "Medeli Electronics Co."},
479 {0x00202C, "Charlie Lab SRL"},
480 {0x00202D, "Blue Chip Music Technology"},
481 {0x00202E, "BEE OH Corp"},
482 {0x00202F, "LG Semicon America"},
484 {0x002031, "EMAGIC"},
485 {0x002032, "Behringer GmbH"},
486 {0x002033, "Access Music Electronics"},
487 {0x002034, "Synoptic"},
488 {0x002035, "Hanmesoft"},
489 {0x002036, "Terratec Electronic GmbH"},
490 {0x002037, "Proel SpA"},
491 {0x002038, "IBK MIDI"},
493 {0x00203A, "Propellerhead Software"},
494 {0x00203B, "Red Sound Systems Ltd"},
495 {0x00203C, "Elektron ESI AB"},
496 {0x00203D, "Sintefex Audio"},
497 {0x00203E, "MAM (Music and More)"},
498 {0x00203F, "Amsaro GmbH"},
499 {0x002040, "CDS Advanced Technology BV (Lanbox)"},
500 {0x002041, "Mode Machines (Touched By Sound GmbH)"},
501 {0x002042, "DSP Arts"},
502 {0x002043, "Phil Rees Music Tech"},
503 {0x002044, "Stamer Musikanlagen GmbH"},
504 {0x002045, "Musical Muntaner S.A. dba Soundart"},
505 {0x002046, "C-Mexx Software"},
506 {0x002047, "Klavis Technologies"},
507 {0x002048, "Noteheads AB"},
508 {0x002049, "Algorithmix"},
509 {0x00204A, "Skrydstrup R&D"},
510 {0x00204B, "Professional Audio Company"},
511 {0x00204C, "NewWave Labs (MadWaves)"},
512 {0x00204D, "Vermona"},
514 {0x00204F, "Wave Idea"},
515 {0x002050, "Hartmann GmbH"},
516 {0x002051, "Lion's Tracs"},
517 {0x002052, "Analogue Systems"},
518 {0x002053, "Focal-JMlab"},
519 {0x002054, "Ringway Electronics (Chang-Zhou) Co Ltd"},
520 {0x002055, "Faith Technologies (Digiplug)"},
521 {0x002056, "Showworks"},
522 {0x002057, "Manikin Electronic"},
523 {0x002058, "1 Come Tech"},
524 {0x002059, "Phonic Corp"},
525 {0x00205A, "Dolby Australia (Lake)"},
526 {0x00205B, "Silansys Technologies"},
527 {0x00205C, "Winbond Electronics"},
528 {0x00205D, "Cinetix Medien und Interface GmbH"},
529 {0x00205E, "A&G Soluzioni Digitali"},
530 {0x00205F, "Sequentix GmbH"},
531 {0x002060, "Oram Pro Audio"},
532 {0x002061, "Be4 Ltd"},
533 {0x002062, "Infection Music"},
534 {0x002063, "Central Music Co. (CME)"},
535 {0x002064, "genoQs Machines GmbH"},
536 {0x002065, "Medialon"},
537 {0x002066, "Waves Audio Ltd"},
538 {0x002067, "Jerash Labs"},
539 {0x002068, "Da Fact"},
540 {0x002069, "Elby Designs"},
541 {0x00206A, "Spectral Audio"},
542 {0x00206B, "Arturia"},
544 {0x00206D, "C-Thru Music"},
545 {0x00206E, "Ya Horng Electronic Co LTD"},
546 {0x00206F, "SM Pro Audio"},
547 {0x002070, "OTO Machines"},
548 {0x002071, "ELZAB S.A. (G LAB)"},
549 {0x002072, "Blackstar Amplification Ltd"},
550 {0x002073, "M3i Technologies GmbH"},
551 {0x002074, "Gemalto (from Xiring)"},
552 {0x002075, "Prostage SL"},
553 {0x002076, "Teenage Engineering"},
554 {0x002077, "Tobias Erichsen Consulting"},
555 {0x002078, "Nixer Ltd"},
556 {0x002079, "Hanpin Electron Co Ltd"},
557 {0x00207A, "\"MIDI-hardware\" R.Sowa"},
558 {0x00207B, "Beyond Music Industrial Ltd"},
559 {0x00207C, "Kiss Box B.V."},
560 {0x00207D, "Misa Digital Technologies Ltd"},
561 {0x00207E, "AI Musics Technology Inc"},
562 {0x00207F, "Serato Inc LP"},
564 {0x002101, "Kyodday (Tokai)"},
565 {0x002102, "Mutable Instruments"},
566 {0x002103, "PreSonus Software Ltd"},
567 {0x002104, "Ingenico (was Xiring)"},
568 {0x002105, "Fairlight Instruments Pty Ltd"},
569 {0x002106, "Musicom Lab"},
570 {0x002107, "Modal Electronics (Modulus/VacoLoco)"},
571 {0x002108, "RWA (Hong Kong) Limited"},
572 {0x002109, "Native Instruments"},
573 {0x00210A, "Naonext"},
575 {0x00210C, "Teknel Research"},
576 {0x00210D, "Ploytec GmbH"},
577 {0x00210E, "Surfin Kangaroo Studio"},
578 {0x00210F, "Philips Electronics HK Ltd"},
579 {0x002110, "ROLI Ltd"},
580 {0x002111, "Panda-Audio Ltd"},
581 {0x002112, "BauM Software"},
582 {0x002113, "Machinewerks Ltd."},
583 {0x002114, "Xiamen Elane Electronics"},
584 {0x002115, "Marshall Amplification PLC"},
585 {0x002116, "Kiwitechnics Ltd"},
586 {0x002117, "Rob Papen"},
587 {0x002118, "Spicetone OU"},
588 {0x002119, "V3Sound"},
589 {0x00211A, "IK Multimedia"},
590 {0x00211B, "Novalia Ltd"},
591 {0x00211C, "Modor Music"},
592 {0x00211D, "Ableton"},
593 {0x00211E, "Dtronics"},
594 {0x00211F, "ZAQ Audio"},
595 {0x002120, "Muabaobao Education Technology Co Ltd"},
596 {0x002121, "Flux Effects"},
597 {0x002122, "Audiothingies (MCDA)"},
598 {0x002123, "Retrokits"},
599 {0x002124, "Morningstar FX Pte Ltd"},
600 {0x002125, "Changsha Hotone Audio Co Ltd"},
601 {0x002126, "Expressive E"},
602 {0x002127, "Expert Sleepers Ltd"},
603 {0x002128, "Timecode-Vision Technology"},
604 {0x002129, "Hornberg Research GbR"},
605 {0x00212A, "Sonic Potions"},
606 {0x00212B, "Audiofront"},
607 {0x00212C, "Fred's Lab"},
608 {0x00212D, "Audio Modeling"},
609 {0x00212E, "C. Bechstein Digital GmbH"},
610 {0x00212F, "Motas Electronics Ltd"},
611 {0x002130, "MIND Music Labs"},
612 {0x002131, "Sonic Academy Ltd"},
613 {0x002132, "Bome Software"},
614 {0x002133, "AODYO SAS"},
615 {0x002134, "Pianoforce S.R.O"},
616 {0x002135, "Dreadbox P.C."},
617 {0x002136, "TouchKeys Instruments Ltd"},
618 {0x002137, "The Gigrig Ltd"},
619 {0x002138, "ALM Co"},
620 {0x002139, "CH Sound Design"},
621 {0x00213A, "Beat Bars"},
622 {0x00213B, "Blokas"},
623 {0x00213C, "GEWA Music GmbH"},
624 {0x00213D, "dadamachines"},
625 {0x00213E, "Augmented Instruments Ltd (Bela)"},
626 {0x00213F, "Supercritical Ltd"},
627 {0x004000, "Crimson Technology Inc."},
628 {0x004001, "Softbank Mobile Corp"},
629 {0x004003, "D&M Holdings Inc."},
632 static value_string_ext sysex_extended_manufacturer_id_vals_ext
=
633 VALUE_STRING_EXT_INIT(sysex_extended_manufacturer_id_vals
);
635 /* dissector for System Exclusive MIDI data */
637 dissect_sysex_command(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void* data _U_
)
639 uint8_t sysex_helper
;
642 proto_item
*ti
= NULL
;
643 proto_tree
*tree
= NULL
;
645 int manufacturer_payload_len
;
646 uint8_t manufacturer_id
;
647 uint32_t three_byte_manufacturer_id
= 0xFFFFFF;
649 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "SYSEX");
650 col_set_str(pinfo
->cinfo
, COL_INFO
, "MIDI System Exclusive Command");
652 data_len
= tvb_reported_length(tvb
);
654 ti
= proto_tree_add_protocol_format(parent_tree
, proto_sysex
, tvb
, 0, -1, "MIDI System Exclusive Command");
655 tree
= proto_item_add_subtree(ti
, ett_sysex
);
657 /* Check start byte (System Exclusive - 0xF0) */
658 sysex_helper
= tvb_get_uint8(tvb
, 0);
659 item
= proto_tree_add_item(tree
, hf_sysex_message_start
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
660 if (sysex_helper
!= 0xF0)
662 expert_add_info(pinfo
, item
, &ei_sysex_message_start_byte
);
667 manufacturer_id
= tvb_get_uint8(tvb
, offset
);
668 /* Three-byte manufacturer ID starts with 00 */
669 if (manufacturer_id
== 0)
671 three_byte_manufacturer_id
= tvb_get_ntoh24(tvb
, offset
);
672 proto_tree_add_item(tree
, hf_sysex_three_byte_manufacturer_id
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
675 /* One-byte manufacturer ID */
678 proto_tree_add_item(tree
, hf_sysex_manufacturer_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
682 /* Following data is menufacturer-specific */
683 manufacturer_payload_len
= data_len
- offset
- 1;
684 if (manufacturer_payload_len
> 0)
686 tvbuff_t
*payload_tvb
= tvb_new_subset_length(tvb
, offset
, manufacturer_payload_len
);
687 switch (three_byte_manufacturer_id
)
689 case SYSEX_MANUFACTURER_DOD
:
691 offset
+= call_dissector(sysex_digitech_handle
, payload_tvb
, pinfo
, parent_tree
);
699 if (offset
< data_len
- 1)
701 proto_tree_add_expert(tree
, pinfo
, &ei_sysex_undecoded
, tvb
, offset
, data_len
- offset
- 1);
704 /* Check end byte (EOX - 0xF7) */
705 sysex_helper
= tvb_get_uint8(tvb
, data_len
- 1);
706 item
= proto_tree_add_item(tree
, hf_sysex_message_eox
, tvb
, data_len
- 1, 1, ENC_BIG_ENDIAN
);
707 if (sysex_helper
!= 0xF7)
709 expert_add_info(pinfo
, item
, &ei_sysex_message_end_byte
);
711 return tvb_captured_length(tvb
);
715 proto_register_sysex(void)
717 static hf_register_info hf
[] = {
718 { &hf_sysex_message_start
,
719 { "SysEx message start", "sysex.start", FT_UINT8
, BASE_HEX
,
720 NULL
, 0, "System Exclusive Message start (0xF0)", HFILL
}},
721 { &hf_sysex_manufacturer_id
,
722 { "Manufacturer ID", "sysex.manufacturer_id", FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
,
723 &sysex_manufacturer_id_vals_ext
, 0, NULL
, HFILL
}},
724 { &hf_sysex_three_byte_manufacturer_id
,
725 { "Manufacturer ID", "sysex.manufacturer_id", FT_UINT24
, BASE_HEX
|BASE_EXT_STRING
,
726 &sysex_extended_manufacturer_id_vals_ext
, 0, NULL
, HFILL
}},
727 { &hf_sysex_message_eox
,
728 { "EOX", "sysex.eox", FT_UINT8
, BASE_HEX
,
729 NULL
, 0, "System Exclusive Message end (0xF7)", HFILL
}},
732 static int *sysex_subtrees
[] = {
736 static ei_register_info ei
[] = {
737 { &ei_sysex_message_start_byte
, { "sysex.message_start_byte", PI_PROTOCOL
, PI_WARN
, "SYSEX Error: Wrong start byte", EXPFILL
}},
738 { &ei_sysex_message_end_byte
, { "sysex.message_end_byte", PI_PROTOCOL
, PI_WARN
, "SYSEX Error: Wrong end byte", EXPFILL
}},
739 { &ei_sysex_undecoded
, { "sysex.undecoded", PI_UNDECODED
, PI_WARN
, "Not dissected yet (report to wireshark.org)", EXPFILL
}},
742 expert_module_t
* expert_sysex
;
744 proto_sysex
= proto_register_protocol("MIDI System Exclusive", "SYSEX", "sysex");
745 proto_register_field_array(proto_sysex
, hf
, array_length(hf
));
746 proto_register_subtree_array(sysex_subtrees
, array_length(sysex_subtrees
));
747 expert_sysex
= expert_register_protocol(proto_sysex
);
748 expert_register_field_array(expert_sysex
, ei
, array_length(ei
));
750 register_dissector("sysex", dissect_sysex_command
, proto_sysex
);
754 proto_reg_handoff_sysex(void)
756 sysex_digitech_handle
= find_dissector_add_dependency("sysex_digitech", proto_sysex
);
765 * indent-tabs-mode: nil
768 * ex: set shiftwidth=4 tabstop=8 expandtab:
769 * :indentSize=4:tabSize=8:noTabs=true: