diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/packet-sysex.c | |
parent | Initial commit. (diff) | |
download | wireshark-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.c | 770 |
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: + */ |