/* packet-sysex.c * * MIDI SysEx dissector * Tomasz Mon 2012 * * SPDX-License-Identifier: GPL-2.0-or-later */ #include "config.h" #include #include #include 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: */