summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sysex.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/packet-sysex.c
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-sysex.c')
-rw-r--r--epan/dissectors/packet-sysex.c770
1 files changed, 770 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sysex.c b/epan/dissectors/packet-sysex.c
new file mode 100644
index 00000000..d22ef9cd
--- /dev/null
+++ b/epan/dissectors/packet-sysex.c
@@ -0,0 +1,770 @@
+/* packet-sysex.c
+ *
+ * MIDI SysEx dissector
+ * Tomasz Mon 2012
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/expert.h>
+
+void proto_register_sysex(void);
+void proto_reg_handoff_sysex(void);
+
+/* protocols and header fields */
+static int proto_sysex = -1;
+static int hf_sysex_message_start = -1;
+static int hf_sysex_manufacturer_id = -1;
+static int hf_sysex_three_byte_manufacturer_id = -1;
+static int hf_sysex_message_eox = -1;
+
+static gint ett_sysex = -1;
+
+static dissector_handle_t sysex_digitech_handle;
+
+static expert_field ei_sysex_message_start_byte = EI_INIT;
+static expert_field ei_sysex_message_end_byte = EI_INIT;
+static expert_field ei_sysex_undecoded = EI_INIT;
+
+#define SYSEX_MANUFACTURER_DOD 0x000010
+
+/* Manufacturer and Extended Manufacturer IDs as of April 2019
+ * https://www.midi.org/specifications-old/item/manufacturer-id-numbers
+ */
+static const value_string sysex_manufacturer_id_vals[] = {
+ {0x01, "Sequential"},
+ {0x02, "IDP"},
+ {0x03, "Voyetra Turtle Beach, Inc."},
+ {0x04, "Moog Music"},
+ {0x05, "Passport Designs"},
+ {0x06, "Lexicon Inc."},
+ {0x07, "Kurzweil / Young Chang"},
+ {0x08, "Fender"},
+ {0x09, "MIDI9"},
+ {0x0A, "AKG Acoustics"},
+ {0x0B, "Voyce Music"},
+ {0x0C, "WaveFrame (Timeline)"},
+ {0x0D, "ADA Signal Processors, Inc."},
+ {0x0E, "Garfield Electronics"},
+ {0x0F, "Ensoniq"},
+ {0x10, "Oberheim / Gibson Labs"},
+ {0x11, "Apple, Inc."},
+ {0x12, "Grey Matter Response"},
+ {0x13, "Digidesign Inc."},
+ {0x14, "Palmtree Instruments"},
+ {0x15, "JLCooper Electronics"},
+ {0x16, "Lowrey Organ Company"},
+ {0x17, "Adams-Smith"},
+ {0x18, "E-mu"},
+ {0x19, "Harmony Systems"},
+ {0x1A, "ART"},
+ {0x1B, "Baldwin"},
+ {0x1C, "Eventide"},
+ {0x1D, "Inventronics"},
+ {0x1E, "Key Concepts"},
+ {0x1F, "Clarity"},
+ {0x20, "Passac"},
+ {0x21, "Proel Labs (SIEL)"},
+ {0x22, "Synthaxe (UK)"},
+ {0x23, "Stepp"},
+ {0x24, "Hohner"},
+ {0x25, "Twister"},
+ {0x26, "Ketron s.r.l."},
+ {0x27, "Jellinghaus MS"},
+ {0x28, "Southworth Music Systems"},
+ {0x29, "PPG (Germany)"},
+ {0x2A, "JEN"},
+ {0x2B, "Solid State Logic Organ Systems"},
+ {0x2C, "Audio Veritrieb-P. Struven"},
+ {0x2D, "Neve"},
+ {0x2E, "Soundtracs Ltd."},
+ {0x2F, "Elka"},
+ {0x30, "Dynacord"},
+ {0x31, "Viscount International Spa (Intercontinental Electronics)"},
+ {0x32, "Drawmer"},
+ {0x33, "Clavia Digital Instruments"},
+ {0x34, "Audio Architecture"},
+ {0x35, "Generalmusic Corp SpA"},
+ {0x36, "Cheetah Marketing"},
+ {0x37, "C.T.M."},
+ {0x38, "Simmons UK"},
+ {0x39, "Soundcraft Electronics"},
+ {0x3A, "Steinberg Media Technologies AG"},
+ {0x3B, "Wersi Gmbh"},
+ {0x3C, "AVAB Niethammer AB"},
+ {0x3D, "Digigram"},
+ {0x3E, "Waldorf Electronics GmbH"},
+ {0x3F, "Quasimidi"},
+ {0x40, "Kawai Musical Instruments MFG. CO. Ltd"},
+ {0x41, "Roland Corporation"},
+ {0x42, "Korg Inc."},
+ {0x43, "Yamaha Corporation"},
+ {0x44, "Casio Computer Co. Ltd"},
+ {0x46, "Kamiya Studio Co. Ltd"},
+ {0x47, "Akai Electric Co. Ltd."},
+ {0x48, "Victor Company of Japan, Ltd."},
+ {0x4B, "Fujitsu Limited"},
+ {0x4C, "Sony Corporation"},
+ {0x4E, "Teac Corporation"},
+ {0x50, "Matsushita Electric Industrial Co. , Ltd"},
+ {0x51, "Fostex Corporation"},
+ {0x52, "Zoom Corporation"},
+ {0x54, "Matsushita Communication Industrial Co., Ltd."},
+ {0x55, "Suzuki Musical Instruments MFG. Co., Ltd."},
+ {0x56, "Fuji Sound Corporation Ltd."},
+ {0x57, "Acoustic Technical Laboratory, Inc."},
+ {0x59, "Faith, Inc."},
+ {0x5A, "Internet Corporation"},
+ {0x5C, "Seekers Co. Ltd."},
+ {0x5F, "SD Card Association"},
+ /* Three special IDs specified in MIDI 1.0 Detailed Specification */
+ {0x7D, "Educational/Non-Commercial Use"},
+ {0x7E, "Non-Real Time Universal System Exclusive"},
+ {0x7F, "Real Time Universal System Exclusive"},
+ {0,NULL}
+};
+static value_string_ext sysex_manufacturer_id_vals_ext =
+ VALUE_STRING_EXT_INIT(sysex_manufacturer_id_vals);
+
+static const value_string sysex_extended_manufacturer_id_vals[] = {
+ {0x000001, "Time/Warner Interactive"},
+ {0x000002, "Advanced Gravis Comp. Tech Ltd."},
+ {0x000003, "Media Vision"},
+ {0x000004, "Dornes Research Group"},
+ {0x000005, "K-Muse"},
+ {0x000006, "Stypher"},
+ {0x000007, "Digital Music Corp."},
+ {0x000008, "IOTA Systems"},
+ {0x000009, "New England Digital"},
+ {0x00000A, "Artisyn"},
+ {0x00000B, "IVL Technologies Ltd."},
+ {0x00000C, "Southern Music Systems"},
+ {0x00000D, "Lake Butler Sound Company"},
+ {0x00000E, "Alesis Studio Electronics"},
+ {0x00000F, "Sound Creation"},
+ {0x000010, "DOD Electronics Corp."},
+ {0x000011, "Studer-Editech"},
+ {0x000012, "Sonus"},
+ {0x000013, "Temporal Acuity Products"},
+ {0x000014, "Perfect Fretworks"},
+ {0x000015, "KAT Inc."},
+ {0x000016, "Opcode Systems"},
+ {0x000017, "Rane Corporation"},
+ {0x000018, "Anadi Electronique"},
+ {0x000019, "KMX"},
+ {0x00001A, "Allen & Heath Brenell"},
+ {0x00001B, "Peavey Electronics"},
+ {0x00001C, "360 Systems"},
+ {0x00001D, "Spectrum Design and Development"},
+ {0x00001E, "Marquis Music"},
+ {0x00001F, "Zeta Systems"},
+ {0x000020, "Axxes (Brian Parsonett)"},
+ {0x000021, "Orban"},
+ {0x000022, "Indian Valley Mfg."},
+ {0x000023, "Triton"},
+ {0x000024, "KTI"},
+ {0x000025, "Breakaway Technologies"},
+ {0x000026, "Leprecon / CAE Inc."},
+ {0x000027, "Harrison Systems Inc."},
+ {0x000028, "Future Lab/Mark Kuo"},
+ {0x000029, "Rocktron Corporation"},
+ {0x00002A, "PianoDisc"},
+ {0x00002B, "Cannon Research Group"},
+ {0x00002C, "Reserved"},
+ {0x00002D, "Rodgers Instrument LLC"},
+ {0x00002E, "Blue Sky Logic"},
+ {0x00002F, "Encore Electronics"},
+ {0x000030, "Uptown"},
+ {0x000031, "Voce"},
+ {0x000032, "CTI Audio, Inc. (Musically Intel. Devs.)"},
+ {0x000033, "S3 Incorporated"},
+ {0x000034, "Broderbund / Red Orb"},
+ {0x000035, "Allen Organ Co."},
+ {0x000036, "Reserved"},
+ {0x000037, "Music Quest"},
+ {0x000038, "Aphex"},
+ {0x000039, "Gallien Krueger"},
+ {0x00003A, "IBM"},
+ {0x00003B, "Mark Of The Unicorn"},
+ {0x00003C, "Hotz Corporation"},
+ {0x00003D, "ETA Lighting"},
+ {0x00003E, "NSI Corporation"},
+ {0x00003F, "Ad Lib, Inc."},
+ {0x000040, "Richmond Sound Design"},
+ {0x000041, "Microsoft"},
+ {0x000042, "Mindscape (Software Toolworks)"},
+ {0x000043, "Russ Jones Marketing / Niche"},
+ {0x000044, "Intone"},
+ {0x000045, "Advanced Remote Technologies"},
+ {0x000046, "White Instruments"},
+ {0x000047, "GT Electronics/Groove Tubes"},
+ {0x000048, "Pacific Research & Engineering"},
+ {0x000049, "Timeline Vista, Inc."},
+ {0x00004A, "Mesa Boogie Ltd."},
+ {0x00004B, "FSLI"},
+ {0x00004C, "Sequoia Development Group"},
+ {0x00004D, "Studio Electronics"},
+ {0x00004E, "Euphonix, Inc"},
+ {0x00004F, "InterMIDI, Inc."},
+ {0x000050, "MIDI Solutions Inc."},
+ {0x000051, "3DO Company"},
+ {0x000052, "Lightwave Research / High End Systems"},
+ {0x000053, "Micro-W Corporation"},
+ {0x000054, "Spectral Synthesis, Inc."},
+ {0x000055, "Lone Wolf"},
+ {0x000056, "Studio Technologies Inc."},
+ {0x000057, "Peterson Electro-Musical Product, Inc."},
+ {0x000058, "Atari Corporation"},
+ {0x000059, "Marion Systems Corporation"},
+ {0x00005A, "Design Event"},
+ {0x00005B, "Winjammer Software Ltd."},
+ {0x00005C, "AT&T Bell Laboratories"},
+ {0x00005D, "Reserved"},
+ {0x00005E, "Symetrix"},
+ {0x00005F, "MIDI the World"},
+ {0x000060, "Spatializer"},
+ {0x000061, "Micros 'N MIDI"},
+ {0x000062, "Accordians International"},
+ {0x000063, "EuPhonics (now 3Com)"},
+ {0x000064, "Musonix"},
+ {0x000065, "Turtle Beach Systems (Voyetra)"},
+ {0x000066, "Loud Technologies / Mackie"},
+ {0x000067, "Compuserve"},
+ {0x000068, "BEC Technologies"},
+ {0x000069, "QRS Music Inc"},
+ {0x00006A, "P.G. Music"},
+ {0x00006B, "Sierra Semiconductor"},
+ {0x00006C, "EpiGraf"},
+ {0x00006D, "Electronics Diversified Inc"},
+ {0x00006E, "Tune 1000"},
+ {0x00006F, "Advanced Micro Devices"},
+ {0x000070, "Mediamation"},
+ {0x000071, "Sabine Musical Mfg. Co. Inc."},
+ {0x000072, "Woog Labs"},
+ {0x000073, "Micropolis Corp"},
+ {0x000074, "Ta Horng Musical Instrument"},
+ {0x000075, "e-Tek Labs (Forte Tech)"},
+ {0x000076, "Electro-Voice"},
+ {0x000077, "Midisoft Corporation"},
+ {0x000078, "QSound Labs"},
+ {0x000079, "Westrex"},
+ {0x00007A, "Nvidia"},
+ {0x00007B, "ESS Technology"},
+ {0x00007C, "Media Trix Peripherals"},
+ {0x00007D, "Brooktree Corp"},
+ {0x00007E, "Otari Corp"},
+ {0x00007F, "Key Electronics, Inc."},
+ {0x000100, "Shure Incorporated"},
+ {0x000101, "AuraSound"},
+ {0x000102, "Crystal Semiconductor"},
+ {0x000103, "Conexant (Rockwell)"},
+ {0x000104, "Silicon Graphics"},
+ {0x000105, "M-Audio (Midiman)"},
+ {0x000106, "PreSonus"},
+ {0x000108, "Topaz Enterprises"},
+ {0x000109, "Cast Lighting"},
+ {0x00010A, "Microsoft"},
+ {0x00010B, "Sonic Foundry"},
+ {0x00010C, "Line 6 (Fast Forward) (Yamaha)"},
+ {0x00010D, "Beatnik Inc"},
+ {0x00010E, "Van Koevering Company"},
+ {0x00010F, "Altech Systems"},
+ {0x000110, "S & S Research"},
+ {0x000111, "VLSI Technology"},
+ {0x000112, "Chromatic Research"},
+ {0x000113, "Sapphire"},
+ {0x000114, "IDRC"},
+ {0x000115, "Justonic Tuning"},
+ {0x000116, "TorComp Research Inc."},
+ {0x000117, "Newtek Inc."},
+ {0x000118, "Sound Sculpture"},
+ {0x000119, "Walker Technical"},
+ {0x00011A, "Digital Harmony (PAVO)"},
+ {0x00011B, "InVision Interactive"},
+ {0x00011C, "T-Square Design"},
+ {0x00011D, "Nemesys Music Technology"},
+ {0x00011E, "DBX Professional (Harman Intl)"},
+ {0x00011F, "Syndyne Corporation"},
+ {0x000120, "Bitheadz"},
+ {0x000121, "Cakewalk Music Software"},
+ {0x000122, "Analog Devices"},
+ {0x000123, "National Semiconductor"},
+ {0x000124, "Boom Theory / Adinolfi Alternative Percussion"},
+ {0x000125, "Virtual DSP Corporation"},
+ {0x000126, "Antares Systems"},
+ {0x000127, "Angel Software"},
+ {0x000128, "St Louis Music"},
+ {0x000129, "Passport Music Software LLC (Gvox)"},
+ {0x00012A, "Ashley Audio Inc."},
+ {0x00012B, "Vari-Lite Inc."},
+ {0x00012C, "Summit Audio Inc."},
+ {0x00012D, "Aureal Semiconductor Inc."},
+ {0x00012E, "SeaSound LLC"},
+ {0x00012F, "U.S. Robotics"},
+ {0x000130, "Aurisis Research"},
+ {0x000131, "Nearfield Research"},
+ {0x000132, "FM7 Inc"},
+ {0x000133, "Swivel Systems"},
+ {0x000134, "Hyperactive Audio Systems"},
+ {0x000135, "MidiLite (Castle Studios Productions)"},
+ {0x000136, "Radikal Technologies"},
+ {0x000137, "Roger Linn Design"},
+ {0x000138, "TC-Helicon Vocal Technologies"},
+ {0x000139, "Event Electronics"},
+ {0x00013A, "Sonic Network Inc"},
+ {0x00013B, "Realtime Music Solutions"},
+ {0x00013C, "Apogee Digital"},
+ {0x00013D, "Classical Organs, Inc."},
+ {0x00013E, "Microtools Inc."},
+ {0x00013F, "Numark Industries"},
+ {0x000140, "Frontier Design Group, LLC"},
+ {0x000141, "Recordare LLC"},
+ {0x000142, "Starr Labs"},
+ {0x000143, "Voyager Sound Inc."},
+ {0x000144, "Manifold Labs"},
+ {0x000145, "Aviom Inc."},
+ {0x000146, "Mixmeister Technology"},
+ {0x000147, "Notation Software"},
+ {0x000148, "Mercurial Communications"},
+ {0x000149, "Wave Arts"},
+ {0x00014A, "Logic Sequencing Devices"},
+ {0x00014B, "Axess Electronics"},
+ {0x00014C, "Muse Research"},
+ {0x00014D, "Open Labs"},
+ {0x00014E, "Guillemot Corp"},
+ {0x00014F, "Samson Technologies"},
+ {0x000150, "Electronic Theatre Controls"},
+ {0x000151, "Blackberry (RIM)"},
+ {0x000152, "Mobileer"},
+ {0x000153, "Synthogy"},
+ {0x000154, "Lynx Studio Technology Inc."},
+ {0x000155, "Damage Control Engineering LLC"},
+ {0x000156, "Yost Engineering, Inc."},
+ {0x000157, "Brooks & Forsman Designs LLC / DrumLite"},
+ {0x000158, "Infinite Response"},
+ {0x000159, "Garritan Corp"},
+ {0x00015A, "Plogue Art et Technologie, Inc"},
+ {0x00015B, "RJM Music Technology"},
+ {0x00015C, "Custom Solutions Software"},
+ {0x00015D, "Sonarcana LLC / Highly Liquid"},
+ {0x00015E, "Centrance"},
+ {0x00015F, "Kesumo LLC"},
+ {0x000160, "Stanton (Gibson Brands)"},
+ {0x000161, "Livid Instruments"},
+ {0x000162, "First Act / 745 Media"},
+ {0x000163, "Pygraphics, Inc."},
+ {0x000164, "Panadigm Innovations Ltd"},
+ {0x000165, "Avedis Zildjian Co"},
+ {0x000166, "Auvital Music Corp"},
+ {0x000167, "You Rock Guitar (was: Inspired Instruments)"},
+ {0x000168, "Chris Grigg Designs"},
+ {0x000169, "Slate Digital LLC"},
+ {0x00016A, "Mixware"},
+ {0x00016B, "Social Entropy"},
+ {0x00016C, "Source Audio LLC"},
+ {0x00016D, "Ernie Ball / Music Man"},
+ {0x00016E, "Fishman"},
+ {0x00016F, "Custom Audio Electronics"},
+ {0x000170, "American Audio/DJ"},
+ {0x000171, "Mega Control Systems"},
+ {0x000172, "Kilpatrick Audio"},
+ {0x000173, "iConnectivity"},
+ {0x000174, "Fractal Audio"},
+ {0x000175, "NetLogic Microsystems"},
+ {0x000176, "Music Computing"},
+ {0x000177, "Nektar Technology Inc"},
+ {0x000178, "Zenph Sound Innovations"},
+ {0x000179, "DJTechTools.com"},
+ {0x00017A, "Rezonance Labs"},
+ {0x00017B, "Decibel Eleven"},
+ {0x00017C, "CNMAT"},
+ {0x00017D, "Media Overkill"},
+ {0x00017E, "Confusion Studios"},
+ {0x00017F, "moForte Inc"},
+ {0x000200, "Miselu Inc"},
+ {0x000201, "Amelia's Compass LLC"},
+ {0x000202, "Zivix LLC"},
+ {0x000203, "Artiphon"},
+ {0x000204, "Synclavier Digital"},
+ {0x000205, "Light & Sound Control Devices LLC"},
+ {0x000206, "Retronyms Inc"},
+ {0x000207, "JS Technologies"},
+ {0x000208, "Quicco Sound"},
+ {0x000209, "A-Designs Audio"},
+ {0x00020A, "McCarthy Music Corp"},
+ {0x00020B, "Denon DJ"},
+ {0x00020C, "Keith Robert Murray"},
+ {0x00020D, "Google"},
+ {0x00020E, "ISP Technologies"},
+ {0x00020F, "Abstrakt Instruments LLC"},
+ {0x000210, "Meris LLC"},
+ {0x000211, "Sensorpoint LLC"},
+ {0x000212, "Hi-Z Labs"},
+ {0x000213, "Imitone"},
+ {0x000214, "Intellijel Designs Inc."},
+ {0x000215, "Dasz Instruments Inc."},
+ {0x000216, "Remidi"},
+ {0x000217, "Disaster Area Designs LLC"},
+ {0x000218, "Universal Audio"},
+ {0x000219, "Carter Duncan Corp"},
+ {0x00021A, "Essential Technology"},
+ {0x00021B, "Cantux Research LLC"},
+ {0x00021C, "Hummel Technologies"},
+ {0x00021D, "Sensel Inc"},
+ {0x00021E, "DBML Group"},
+ {0x00021F, "Madrona Labs"},
+ {0x000220, "Mesa Boogie"},
+ {0x000221, "Effigy Labs"},
+ {0x000222, "MK2 Image Ltd"},
+ {0x000223, "Red Panda LLC"},
+ {0x000224, "OnSong LLC"},
+ {0x000225, "Jamboxx Inc."},
+ {0x000226, "Electro-Harmonix "},
+ {0x000227, "RnD64 Inc"},
+ {0x000228, "Neunaber Technology LLC "},
+ {0x000229, "Kaom Inc."},
+ {0x00022A, "Hallowell EMC"},
+ {0x00022B, "Sound Devices, LLC"},
+ {0x00022C, "Spectrasonics, Inc"},
+ {0x00022D, "Second Sound, LLC"},
+ {0x002000, "Dream SAS"},
+ {0x002001, "Strand Lighting"},
+ {0x002002, "Amek Div of Harman Industries"},
+ {0x002003, "Casa Di Risparmio Di Loreto"},
+ {0x002004, "Böhm electronic GmbH"},
+ {0x002005, "Syntec Digital Audio"},
+ {0x002006, "Trident Audio Developments"},
+ {0x002007, "Real World Studio"},
+ {0x002008, "Evolution Synthesis, Ltd"},
+ {0x002009, "Yes Technology"},
+ {0x00200A, "Audiomatica"},
+ {0x00200B, "Bontempi SpA (Sigma)"},
+ {0x00200C, "F.B.T. Elettronica SpA"},
+ {0x00200D, "MidiTemp GmbH"},
+ {0x00200E, "LA Audio (Larking Audio)"},
+ {0x00200F, "Zero 88 Lighting Limited"},
+ {0x002010, "Micon Audio Electronics GmbH"},
+ {0x002011, "Forefront Technology"},
+ {0x002012, "Studio Audio and Video Ltd."},
+ {0x002013, "Kenton Electronics"},
+ {0x002014, "Celco/ Electrosonic"},
+ {0x002015, "ADB"},
+ {0x002016, "Marshall Products Limited"},
+ {0x002017, "DDA"},
+ {0x002018, "BSS Audio Ltd."},
+ {0x002019, "MA Lighting Technology"},
+ {0x00201A, "Fatar SRL c/o Music Industries"},
+ {0x00201B, "QSC Audio Products Inc."},
+ {0x00201C, "Artisan Clasic Organ Inc."},
+ {0x00201D, "Orla Spa"},
+ {0x00201E, "Pinnacle Audio (Klark Teknik PLC)"},
+ {0x00201F, "TC Electronics"},
+ {0x002020, "Doepfer Musikelektronik GmbH"},
+ {0x002021, "Creative ATC / E-mu"},
+ {0x002022, "Seyddo/Minami"},
+ {0x002023, "LG Electronics (Goldstar)"},
+ {0x002024, "Midisoft sas di M.Cima & C"},
+ {0x002025, "Samick Musical Inst. Co. Ltd."},
+ {0x002026, "Penny and Giles (Bowthorpe PLC)"},
+ {0x002027, "Acorn Computer"},
+ {0x002028, "LSC Electronics Pty. Ltd."},
+ {0x002029, "Focusrite/Novation"},
+ {0x00202A, "Samkyung Mechatronics"},
+ {0x00202B, "Medeli Electronics Co."},
+ {0x00202C, "Charlie Lab SRL"},
+ {0x00202D, "Blue Chip Music Technology"},
+ {0x00202E, "BEE OH Corp"},
+ {0x00202F, "LG Semicon America"},
+ {0x002030, "TESI"},
+ {0x002031, "EMAGIC"},
+ {0x002032, "Behringer GmbH"},
+ {0x002033, "Access Music Electronics"},
+ {0x002034, "Synoptic"},
+ {0x002035, "Hanmesoft"},
+ {0x002036, "Terratec Electronic GmbH"},
+ {0x002037, "Proel SpA"},
+ {0x002038, "IBK MIDI"},
+ {0x002039, "IRCAM"},
+ {0x00203A, "Propellerhead Software"},
+ {0x00203B, "Red Sound Systems Ltd"},
+ {0x00203C, "Elektron ESI AB"},
+ {0x00203D, "Sintefex Audio"},
+ {0x00203E, "MAM (Music and More)"},
+ {0x00203F, "Amsaro GmbH"},
+ {0x002040, "CDS Advanced Technology BV (Lanbox)"},
+ {0x002041, "Mode Machines (Touched By Sound GmbH)"},
+ {0x002042, "DSP Arts"},
+ {0x002043, "Phil Rees Music Tech"},
+ {0x002044, "Stamer Musikanlagen GmbH"},
+ {0x002045, "Musical Muntaner S.A. dba Soundart"},
+ {0x002046, "C-Mexx Software"},
+ {0x002047, "Klavis Technologies"},
+ {0x002048, "Noteheads AB"},
+ {0x002049, "Algorithmix"},
+ {0x00204A, "Skrydstrup R&D"},
+ {0x00204B, "Professional Audio Company"},
+ {0x00204C, "NewWave Labs (MadWaves)"},
+ {0x00204D, "Vermona"},
+ {0x00204E, "Nokia"},
+ {0x00204F, "Wave Idea"},
+ {0x002050, "Hartmann GmbH"},
+ {0x002051, "Lion's Tracs"},
+ {0x002052, "Analogue Systems"},
+ {0x002053, "Focal-JMlab"},
+ {0x002054, "Ringway Electronics (Chang-Zhou) Co Ltd"},
+ {0x002055, "Faith Technologies (Digiplug)"},
+ {0x002056, "Showworks"},
+ {0x002057, "Manikin Electronic"},
+ {0x002058, "1 Come Tech"},
+ {0x002059, "Phonic Corp"},
+ {0x00205A, "Dolby Australia (Lake)"},
+ {0x00205B, "Silansys Technologies"},
+ {0x00205C, "Winbond Electronics"},
+ {0x00205D, "Cinetix Medien und Interface GmbH"},
+ {0x00205E, "A&G Soluzioni Digitali"},
+ {0x00205F, "Sequentix GmbH"},
+ {0x002060, "Oram Pro Audio"},
+ {0x002061, "Be4 Ltd"},
+ {0x002062, "Infection Music"},
+ {0x002063, "Central Music Co. (CME)"},
+ {0x002064, "genoQs Machines GmbH"},
+ {0x002065, "Medialon"},
+ {0x002066, "Waves Audio Ltd"},
+ {0x002067, "Jerash Labs"},
+ {0x002068, "Da Fact"},
+ {0x002069, "Elby Designs"},
+ {0x00206A, "Spectral Audio"},
+ {0x00206B, "Arturia"},
+ {0x00206C, "Vixid"},
+ {0x00206D, "C-Thru Music"},
+ {0x00206E, "Ya Horng Electronic Co LTD"},
+ {0x00206F, "SM Pro Audio"},
+ {0x002070, "OTO Machines"},
+ {0x002071, "ELZAB S.A. (G LAB)"},
+ {0x002072, "Blackstar Amplification Ltd"},
+ {0x002073, "M3i Technologies GmbH"},
+ {0x002074, "Gemalto (from Xiring)"},
+ {0x002075, "Prostage SL"},
+ {0x002076, "Teenage Engineering"},
+ {0x002077, "Tobias Erichsen Consulting"},
+ {0x002078, "Nixer Ltd"},
+ {0x002079, "Hanpin Electron Co Ltd"},
+ {0x00207A, "\"MIDI-hardware\" R.Sowa"},
+ {0x00207B, "Beyond Music Industrial Ltd"},
+ {0x00207C, "Kiss Box B.V."},
+ {0x00207D, "Misa Digital Technologies Ltd"},
+ {0x00207E, "AI Musics Technology Inc"},
+ {0x00207F, "Serato Inc LP"},
+ {0x002100, "Limex"},
+ {0x002101, "Kyodday (Tokai)"},
+ {0x002102, "Mutable Instruments"},
+ {0x002103, "PreSonus Software Ltd"},
+ {0x002104, "Ingenico (was Xiring)"},
+ {0x002105, "Fairlight Instruments Pty Ltd"},
+ {0x002106, "Musicom Lab"},
+ {0x002107, "Modal Electronics (Modulus/VacoLoco)"},
+ {0x002108, "RWA (Hong Kong) Limited"},
+ {0x002109, "Native Instruments"},
+ {0x00210A, "Naonext"},
+ {0x00210B, "MFB"},
+ {0x00210C, "Teknel Research"},
+ {0x00210D, "Ploytec GmbH"},
+ {0x00210E, "Surfin Kangaroo Studio"},
+ {0x00210F, "Philips Electronics HK Ltd"},
+ {0x002110, "ROLI Ltd"},
+ {0x002111, "Panda-Audio Ltd"},
+ {0x002112, "BauM Software"},
+ {0x002113, "Machinewerks Ltd."},
+ {0x002114, "Xiamen Elane Electronics"},
+ {0x002115, "Marshall Amplification PLC"},
+ {0x002116, "Kiwitechnics Ltd"},
+ {0x002117, "Rob Papen"},
+ {0x002118, "Spicetone OU"},
+ {0x002119, "V3Sound"},
+ {0x00211A, "IK Multimedia"},
+ {0x00211B, "Novalia Ltd"},
+ {0x00211C, "Modor Music"},
+ {0x00211D, "Ableton"},
+ {0x00211E, "Dtronics"},
+ {0x00211F, "ZAQ Audio"},
+ {0x002120, "Muabaobao Education Technology Co Ltd"},
+ {0x002121, "Flux Effects"},
+ {0x002122, "Audiothingies (MCDA)"},
+ {0x002123, "Retrokits"},
+ {0x002124, "Morningstar FX Pte Ltd"},
+ {0x002125, "Changsha Hotone Audio Co Ltd"},
+ {0x002126, "Expressive E"},
+ {0x002127, "Expert Sleepers Ltd"},
+ {0x002128, "Timecode-Vision Technology"},
+ {0x002129, "Hornberg Research GbR"},
+ {0x00212A, "Sonic Potions"},
+ {0x00212B, "Audiofront"},
+ {0x00212C, "Fred's Lab"},
+ {0x00212D, "Audio Modeling"},
+ {0x00212E, "C. Bechstein Digital GmbH"},
+ {0x00212F, "Motas Electronics Ltd"},
+ {0x002130, "MIND Music Labs"},
+ {0x002131, "Sonic Academy Ltd"},
+ {0x002132, "Bome Software"},
+ {0x002133, "AODYO SAS"},
+ {0x002134, "Pianoforce S.R.O"},
+ {0x002135, "Dreadbox P.C."},
+ {0x002136, "TouchKeys Instruments Ltd"},
+ {0x002137, "The Gigrig Ltd"},
+ {0x002138, "ALM Co"},
+ {0x002139, "CH Sound Design"},
+ {0x00213A, "Beat Bars"},
+ {0x00213B, "Blokas"},
+ {0x00213C, "GEWA Music GmbH"},
+ {0x00213D, "dadamachines"},
+ {0x00213E, "Augmented Instruments Ltd (Bela)"},
+ {0x00213F, "Supercritical Ltd"},
+ {0x004000, "Crimson Technology Inc."},
+ {0x004001, "Softbank Mobile Corp"},
+ {0x004003, "D&M Holdings Inc."},
+ {0,NULL}
+};
+static value_string_ext sysex_extended_manufacturer_id_vals_ext =
+ VALUE_STRING_EXT_INIT(sysex_extended_manufacturer_id_vals);
+
+/* dissector for System Exclusive MIDI data */
+static int
+dissect_sysex_command(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_)
+{
+ guint8 sysex_helper;
+ gint data_len;
+ proto_item *item;
+ proto_item *ti = NULL;
+ proto_tree *tree = NULL;
+ gint offset = 0;
+ gint manufacturer_payload_len;
+ guint8 manufacturer_id;
+ guint32 three_byte_manufacturer_id = 0xFFFFFF;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SYSEX");
+ col_set_str(pinfo->cinfo, COL_INFO, "MIDI System Exclusive Command");
+
+ data_len = tvb_reported_length(tvb);
+
+ ti = proto_tree_add_protocol_format(parent_tree, proto_sysex, tvb, 0, -1, "MIDI System Exclusive Command");
+ tree = proto_item_add_subtree(ti, ett_sysex);
+
+ /* Check start byte (System Exclusive - 0xF0) */
+ sysex_helper = tvb_get_guint8(tvb, 0);
+ item = proto_tree_add_item(tree, hf_sysex_message_start, tvb, offset, 1, ENC_BIG_ENDIAN);
+ if (sysex_helper != 0xF0)
+ {
+ expert_add_info(pinfo, item, &ei_sysex_message_start_byte);
+ }
+
+ offset++;
+
+ manufacturer_id = tvb_get_guint8(tvb, offset);
+ /* Three-byte manufacturer ID starts with 00 */
+ if (manufacturer_id == 0)
+ {
+ three_byte_manufacturer_id = tvb_get_ntoh24(tvb, offset);
+ proto_tree_add_item(tree, hf_sysex_three_byte_manufacturer_id, tvb, offset, 3, ENC_BIG_ENDIAN);
+ offset += 3;
+ }
+ /* One-byte manufacturer ID */
+ else
+ {
+ proto_tree_add_item(tree, hf_sysex_manufacturer_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset++;
+ }
+
+ /* Following data is menufacturer-specific */
+ manufacturer_payload_len = data_len - offset - 1;
+ if (manufacturer_payload_len > 0)
+ {
+ tvbuff_t *payload_tvb = tvb_new_subset_length(tvb, offset, manufacturer_payload_len);
+ switch (three_byte_manufacturer_id)
+ {
+ case SYSEX_MANUFACTURER_DOD:
+ {
+ offset += call_dissector(sysex_digitech_handle, payload_tvb, pinfo, parent_tree);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ if (offset < data_len - 1)
+ {
+ proto_tree_add_expert(tree, pinfo, &ei_sysex_undecoded, tvb, offset, data_len - offset - 1);
+ }
+
+ /* Check end byte (EOX - 0xF7) */
+ sysex_helper = tvb_get_guint8(tvb, data_len - 1);
+ item = proto_tree_add_item(tree, hf_sysex_message_eox, tvb, data_len - 1, 1, ENC_BIG_ENDIAN);
+ if (sysex_helper != 0xF7)
+ {
+ expert_add_info(pinfo, item, &ei_sysex_message_end_byte);
+ }
+ return tvb_captured_length(tvb);
+}
+
+void
+proto_register_sysex(void)
+{
+ static hf_register_info hf[] = {
+ { &hf_sysex_message_start,
+ { "SysEx message start", "sysex.start", FT_UINT8, BASE_HEX,
+ NULL, 0, "System Exclusive Message start (0xF0)", HFILL }},
+ { &hf_sysex_manufacturer_id,
+ { "Manufacturer ID", "sysex.manufacturer_id", FT_UINT8, BASE_HEX|BASE_EXT_STRING,
+ &sysex_manufacturer_id_vals_ext, 0, NULL, HFILL }},
+ { &hf_sysex_three_byte_manufacturer_id,
+ { "Manufacturer ID", "sysex.manufacturer_id", FT_UINT24, BASE_HEX|BASE_EXT_STRING,
+ &sysex_extended_manufacturer_id_vals_ext, 0, NULL, HFILL }},
+ { &hf_sysex_message_eox,
+ { "EOX", "sysex.eox", FT_UINT8, BASE_HEX,
+ NULL, 0, "System Exclusive Message end (0xF7)", HFILL}},
+ };
+
+ static gint *sysex_subtrees[] = {
+ &ett_sysex
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_sysex_message_start_byte, { "sysex.message_start_byte", PI_PROTOCOL, PI_WARN, "SYSEX Error: Wrong start byte", EXPFILL }},
+ { &ei_sysex_message_end_byte, { "sysex.message_end_byte", PI_PROTOCOL, PI_WARN, "SYSEX Error: Wrong end byte", EXPFILL }},
+ { &ei_sysex_undecoded, { "sysex.undecoded", PI_UNDECODED, PI_WARN, "Not dissected yet (report to wireshark.org)", EXPFILL }},
+ };
+
+ expert_module_t* expert_sysex;
+
+ proto_sysex = proto_register_protocol("MIDI System Exclusive", "SYSEX", "sysex");
+ proto_register_field_array(proto_sysex, hf, array_length(hf));
+ proto_register_subtree_array(sysex_subtrees, array_length(sysex_subtrees));
+ expert_sysex = expert_register_protocol(proto_sysex);
+ expert_register_field_array(expert_sysex, ei, array_length(ei));
+
+ register_dissector("sysex", dissect_sysex_command, proto_sysex);
+}
+
+void
+proto_reg_handoff_sysex(void)
+{
+ sysex_digitech_handle = find_dissector_add_dependency("sysex_digitech", proto_sysex);
+}
+
+/*
+ * Editor modelines
+ *
+ * Local Variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */