Package: midiexplorer
MIDI ExplorerYet another MIDI monitor, analyzer, debugger and manipulation tool.The intent is to bespecificationscompliant to help debugging,
reverse-engineering and developing products based on the MIDI protocol while learning everything there is to know in the
process.The reference specifications used are linked below and comes from the following standards bodies:MIDI Association, ex MIDI Manufacturers Association (MMA)USAAssociation of Musical Electronics Industry (AMEI)JapanMIDI Standards Committee (MSC)JapanThere is two specification supplement types:Recommended Practices (RP) 001-054Confirmation of Approval for MIDI Standard (CA) 018-035A nicehistory list is provided by the MSC[JP].I have made a translated and slightly updatedGoogle Sheetfor easier browsing.Language is currently Python to help with rapid prototyping and fast iteration. It may change at any time as I see fit.Table of ContentsStatusInstallationFeatures & TODODocumentationQualityMIDI protocolsPlatform supportInteractive GUIMIDI implementation chartsPrior artLegal noticeLicenseDependencies & License AcknowledgmentTrademarksStatusBasic features implemented.First alpha released!Testers welcome ;)Installation (Python)Install Python 3.10Frompython.org(recommended) or your favorite package manager.Install PipXFollow the instructions for your operating system.Microsoft WindowsIn a terminalpy -m pip install --user pipxpy -m pipx ensurepathClose and reopen your terminal.Mac OS X / Linuxpython3 -m pip install --user pipxInstall MIDI Explorerpipx install midiexplorerInstallation (Native)Nuitka (alpha)You may also build a compiled, single-file executable from a properly configured venv using:python -m nuitka --follow-imports --include-package=rtmidi --include-package=mido --include-package=dearpygui --include-package=dearpygui_ext --include-package=midiexplorer --include-package-data=midiexplorer --onefile --disable-console --windows-icon-from-ico=src\midiexplorer\icons\midiexplorer.ico src/midiexplorerFeatures & TODODocumentationDevelopersCommentsDocstrings (PEP257)Type Hinting (PEP484)UsersSphinxautodocRead The DocsQualityLintingCode style checks? (PEP8pycodestyle)Docstrings? (darglint)Typechecking? (mypy)Unit tests? (pytest)CoveragePackagingPyPiUsingHatchGet version for Git
usinghatch-vcsPyInstallerWIPNuitkaMicrosoft WindowsApple Mac OS XGNU/LinuxPyOxidiser?InstallersMicrosoft WindowsNSIS?WiX?Apple Mac OS XGNU/LinuxAppImage?Continuous Integration? (GitHub Actions workflow)MIDI protocols(WIP)v1.0includes RP-001/RP-002/RP-003/RP-004/RP-005/RP-006/RP-007/RP-008/RP-009/RP-010/RP-011/RP-012/RP-013/RP-014(1983 - February 1996)Using amodified midov2.0(Planned long term: after v1.0 and all its extensions are fully stable)Platform supportMicrosoft WindowsWinMM akaWindows Multimedia MME APIvia mido's RtMidi backendWinRt akaUWP Windows Runtime APIRtMidi related  issueApple Mac OS XCore MIDIvia mido's RtMidi backendJACK MIDI(Should work but untested ATM)GNU/LinuxALSASequencer APIvia mido's RtMidi backendRawMidi APIJACK MIDI(Should work but untested ATM)OSS?(Legacy API)Interactive GUIIconsFontsCustom themeAbout windowConnections window (Node editor based)InputsOutputsModulesHistory window (Table)Monitor data window (Decoding with live feedback)Generator data window(WIP)Standard MIDI file windowLog windowInsert commentSave to fileOverwriteAppendActions (Menus and/or keyboard shortcuts)Toggle connections (F1)Toggle history (F2)Toggle monitor (F3)Toggle generator (F4)Toggle standard MIDI file (F5)Toggle full-screen (F11)Toggle log (F12)Save & restore windows state(Buggy at the moment)I/O managementList MIDI I/OUSB MIDI 1.0OS LevelDirect Access?USB MIDI 2.0OS Level?Direct Access?IEEE-1394RP-027 (MMA)MIDI Media Adaptation Layer for IEEE-1394 v1.0RP-027 (AMEI/MSC)MIDI Media Adaptation Layer for IEEE-1394 v1.0OS Level?(Probably works but no hardware to test with)Direct Access?Bluetooth Low Energy (BLE-MIDI)RP-052 (MMA)Specification for MIDI over Bluetooth Low Energy (BLE-MIDI) v1.0RP-052 (AMEI/MSC)Specification for MIDI over Bluetooth Low Energy (BLE-MIDI) v1.0OS LevelRequiresWinRt MIDIfor
Microsoft WindowsDirect Access?RTP-MIDIRTP Payload Format for MIDI (MMA)IETF RFC 6295RTP Payload Format for MIDI(Partial)OS LevelRequiresrtpMIDIfor Microsoft Windows(Works with Microsoft Windows. Untested on other OS)Direct Access?VirtualOS LevelRequiresloopMIDIfor Microsoft WindowsNativeProvided by RtMidi for Linux & Apple Mac OS XCustom Hardware(Planned in the near future. Prototyping in progress.)5-Pin DINCA-033 (MMA)MIDI 1.0 Electrical Specification Update [2014]CA-033 (AMEI/MSC)MIDI 1.0 Electrical Specification Update [2014]2.5mm TRS JackRP-054 (MMA)Specification for use of TRS Connectors with MIDI DevicesRP-054 (AMEI/MSC)Specification for use of TRS Connectors with MIDI DevicesMobile Musical InterfaceRP-048/amd1 (MMA)Mobile Musical Interface Specification v1.0.6RP-048/Amd1 (AMEI/MSC)Mobile Musical Instrument Specification v1.1 / Mobile Musical Interface Specification v1.0.6RP-048 (AMEI/MSC)Mobile Musical Interface Specification v1.0.2Select mido backend?(Only RtMidi suits our needs)Input reading modesPollingCallbackSort by ID/Name(Forced name sorting is enough for now)ConnectionsPort to probeProbe to portPort to portPort to any moduleAny module to portModule to moduleRefreshManualAuto with reconnectVirtual portsAdd/RemoveSave/restore connections statusTimingSystem(Computed using the highest resolution local clock available)Hardware(Retrieved using a modified mido RtMidi backend)History view (Table decode)InputOutputSelection decodes to monitorSelection prepares generatorColor code?Per sourcePer channelPer message typeModulesPlugins based architecture?Usingpluggy?Instances management?(Add/Remove, multiple instances of a module…)Virtual Debug ProbeRead raw inputThru supportActivity monitorSettingsColorsLiveSelectedPersistenceNote-On with velocity set to 0 is Note-Off (Per specification)Display EOX as either a System Common or a System Exclusive messageNotationEnglish AlphabeticalSyllabicGerman AlphabeticalStatelessMessage typeChannelSystemChannelControllersRedefinition of CC91 and CC93RP-023 (MMA)Renaming of CC91 and CC93RP-023 (AMEI/MSC)Redefinition of CC91 and CC93StatefulNotesKeyboardVelocityStaffControllersValueData Increment / DecrementRP-018 (MMA)Response to Data Inc/Dec ControllersRP-018 (AMEI/MSC)Response to Data Increment/Decrement ControllerSound Controller DefaultsRP-021 (MMA)Sound Controller Defaults (Revised)RP-021 (AMEI/MSC)Defaults for Sound Controllers(Partial decoding)High Resolution Velocity PrefixCA-031 (MMA)CC #88 High Resolution Velocity PrefixCA-031 (AMEI/MSC)CC#88 High Resolution Velocity PrefixRegistered Parameter Numbers (RPN)(Partial decoding)00 Pitch Bend Sensitivity(Partial decoding)01 Fine Tuning(Partial decoding)02 Coarse TuningRedefinition of RPN 01/02RP-022 (MMA)Redefinition of RPN 01/02RP-022 (AMEI/MSC)Channel Fine/Coarse Tuning(Partial decoding)03 Tuning Program Select(Partial decoding)04 Tuning Bank Select(Partial decoding)05 GM2 Modulation Depth RangeCA-026 (MMA)Modulation Depth Range RPNCA-026 (AMEI/MSC)Modulation Depth Range RPN06 MIDI Polyphonic Expression v1.1 (MPE)RP-053/CA-034/M1-100-UMMIDI Polyphonic Expression v1.1CA-034 (AMEI/MSC)MPE Configuration RPN…61 (0x3D) Three Dimensional Sound ControllerRP-049 (MMA)Three Dimensional Sound ControllersRP-049 (AMEI/MSC)Three Dimensional Sound ControllersNon Registered Parameter Numbers (NRPN)Program Changes, Bank Select & PatchesGeneral MIDI System (MMA)(GM)Level 1 (GM1/GM-1) (1991)MMA0007/RP-003General MIDI System Level 1RP-015 (AMEI/MSC)Response to Reset All ControllersLevel 2 (GM2/GM-2) (1999)RP-024/RP-036/RP-037/RP-045 (MMA)General MIDI 2 v1.2aRP-024 (AMEI/MSC)General MIDI Level 2 Recommended PracticeRP-024General MIDI 2 (AMEI/MSC)v1.2aRP-036 (AMEI/MSC)Default Pan CurveRP-037 (AMEI/MSC)GM2 MIDI Tuning AmendmentLite (GML) (2001)RP-033 (MMA)General MIDI Lite v1.0RP-033 (AMEI/MSC)General MIDI Lite v1.0ProprietaryRolandLinear Arithmetic (LA) (MT-32…) (1987)General Standard (GS) (Sound Canvas…) (1991)YamahaEXtendedGeneral MIDI (XG)Level 1 (1994)Level 2 (1997)Level 3 (1998)Lite (2002)System Exclusive (SysEx)Basic decodingManufacturer IDDevice IDRaw payload(WIP)Universal System Exclusive
(Realtime & Non-Realtime)Sub-IDs 1 & 2 type decodingPayloads decodingMIDI Show Control (MSC)RP-002/RP-014 (MMA)MIDI Show Control 1.1.1MIDI Time Code (MTC)MMA0001/RP-004/RP-008 (MMA)MIDI Time Code v4.2.1Notation informationRP-005/RP-006File dumpRP-009MIDI tuningRP-012MIDI Machine Control (MMC)MMA-0016/RP-013 (MMA)MIDI Machine Control 1.0File Reference System Exclusive MessageCA-018 (MMA)File Reference System Exclusive MessageCA-018 (AMEI/MSC)File Reference System Exclusive MessageSample Dump Size, Rate and Name ExtensionsCA-019 (MMA)Sample Dump Size, Rate and Name ExtensionsCA-019 (AMEI/MSC)Sample Dump Size, Rate and Name ExtensionsGM2 Midi Tuning MessagesCA-020/CA-021/RP-020 (MMA)MIDI Tuning MessagesCA-020 (AMEI/MSC)MIDI Tuning Bank and Dump ExtensionsCA-021 (AMEI/MSC)Scale/Octave TuningCA-021/Amd1 (AMEI/MSC)Amendment to Scale/Octave TuningRP-020 (AMEI/MSC)GM2 Controller Destination SettingCA-022 (MMA)Controller Destination SettingCA-022 (AMEI/MSC)Controller Destination SettingGM2 Key-Based Instrument ControllersCA-023 (MMA)Key-Based Instrument ControllersCA-023 (AMEI/MSC)Key-Based Instrument ControllersGM2 Global Parameter ControlCA-024 (MMA)Global Parameter ControlCA-024 (AMEI/MSC)Global Parameter ControlGM2 Master Fine & Coarse TuningCA-025 (MMA)Master Fine/Coarse Tuning[CA-025 (AMEI/MSC)]https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca25.pdf)
Master Fine/Coarse TuningGM2 System Level 2 MessageCA-027 (AMEI/MSC)General MIDI Level 2 Universal System Exclusive MessageExtension 00-01 to File Reference SysEx MessageCA-028 (AMEI/MSC)Extension 00-01 to File Reference Sysex MessageGM-Lite Scalable Polyphony MIDI Specification (SP-MIDI)[RP-034/RP-035 (MMA)](çhttps://www.midi.org/specifications/file-format-specifications/mobile-midi/scalable-polyphony-midi-sp-midi-2)
Scalable Polyphony MIDI Specification and Device Profiles v1.0bRP-034/RP-035 (AMEI/MSC)Scalable Polyphony MIDI Specification and Device Profiles v1.0aGM-Lite Maximum Instantaneous Polyphony (MIP)CA-029 (AMEI/MSC)Maximum Instantaneous Polyphony (MIP)Mobile Phone Control MessageRP-046 (MMA)Mobile Phone Control MessageCA-030 (MMA)Mobile Phone Control Universal Real Time System Exclusive MessageMIDI Visual Control (MVC)CA-032/RP-050 (MMA)MIDI Visual Control Specification v1.0CA-032 (AMEI/MSC)MIDI Visual Control Universal Non Realtime System Exclusive MessageRP-050 (AMEI/MSC)MIDI Visual Control Specification v1.0MIDI Capability Inquiry (MIDI-CI)CA-035 (AMEI/MSC)MIDI Capability Inquiry (MIDI-CI) SpecificationCA-035 Spec (AMEI/MSC)MIDI Capability Inquiry (MIDI-CI) v1.0GeneratorDecode raw hex stringGenerate raw outputBuffer/Clipboard any message (raw or decoded) to outputFile formatsWIPStandard MIDI File (SMF)RP-001 (MMA)Standard MIDI Files 1.0WIPAnalyzerPlayerRecorderExtensionsLyrics Events DefinitionRP-017 (MMA)SMF Lyric Meta Event DefinitionRP-017 (AMEI/MSC)SMF Lyric Meta Event DefinitionRP-026 (AMEI/MSC)SMF Lyric Meta EventRP-026SMF with Lyrics Application Guide (AMEI/MSC)RP-026SMF with Lyrics Data Creation GuidelineDevice & Program NameRP-019 (MMA)SMF Device Name and Program Name Meta EventsRP-019 (AMEI/MSC)SMF Device Name and Program Name Meta EventInternational Standard MIDI Code (ISMC)RP-051 (AMEI/MSC)International Standard MIDI CodeDownloadable Sounds (DLS)Level 1 (DLS1/DLS-1)RP-016/MMA-0017 (MMA)Downloadable Sounds Level 1 v1.1bRP-016 (AMEI/MSC)Downloadable Sounds Level 1 v1.1aMMA-0017 (AMEI/MSC)Downloadable Sounds Level 1 v1.1bLevel 2 (DLS2/DLS-2)RP-025/Amd2 (MMA)Downloadable Sounds Level 2.2 v1.0RP-025 (AMEI/MSC)Downloadable Sounds Level 2 v1.0RP-025/Amd1 (AMEI/MSC)Downloadable Sounds Level 2.1 v1.0RP-025/Amd2 (AMEI/MSC)Downloadable Sounds Level 2.2 v1.0GM-Lite Mobile DLS SpecificationRP-041 (MMA)Mobile DLS (Downloadable Sounds Format for Mobile Applications) v1.0aRP-041 (AMEI/MSC)Password:amei2005Mobile DLS (Downloadable Sounds Format for Mobile Applications) v1.0aRMIDRP-029 (AMEI/MSC)Bundling SMF and DLS data in an "RMID" FileeXtensible Music Format (XMF)RP-030/RP-031/RP-032/RP-039/RP-040/RP-042/RP-043/RP-045/RP-047 (MMA)XMF Specification Incorporating all Recommended Practices v1.2RP-030 (AMEI/MSC)Specification for XMF Meta File Format v1.00aRP-031 (AMEI/MSC)Type 0 and Type 1 XMF Files (SMF + DLS)RP-032 (AMEI/MSC)SMF Meta Event for XMF Patch Type PrefixRP-039 (AMEI/MSC)XMF Meta File Format Updates 1.01RP-040 (AMEI/MSC)XMF Compression Definition for ZLIBRP-042 (AMEI/MSC)Mobile XMF Content Format SpecificationRP-043 (AMEI/MSC)XMF Meta File Format 2.00RP-045 (AMEI/MSC)Audio Clips for Mobile XMFRP-047 (AMEI/MSC)ID3 Metadata for XMF FilesSupport karaoke formats?.KAR Tune 1000 Corp. [CA] MIDI Karaoke file type 1 (Soft Karaoke).MID+.TXK KaraDOS.CRT Tune 1000 Corp Soft Concert.ST3 Creative Labs [KR] Star 3 / Real OrcheSupport proprietary formats?AlesisDataDisk (v1.x)DataDisk SQ (v2.x)EnsoniqASR seriesEPS seriesSQ-80 (.efs)TS seriesVFX-SD, SD-1KawaiQ-80Korg01/W seriesT seriesPianoDiscPianoDisc SequenceRolandMC-50, MC-500YamahaE-SEQ (Clavinova, Disklavier, DOM-30, DRC-20)XFConverterSMF between typesFrom/to other formats?SplitterMergerTranslator/FilterProtocol analyzers/decodersHUILCUMCUOthers?Trigger/Response (Protocol emulator)HUILCUMCUOthers?Performance analyzerRound trip latencyJitterBandwidthCorrectnessStresser/FuzzerHardware toolboxMIDI implementation chartsreStrucuredText (reST) Templatesv1.0 (MIDI 1.0)v2.0RP-028 (MMA)MIDI IMPLEMENTATION CHART V2 INSTRUCTIONSRP-028 (AMEI/MSC)Version 2 MIDI Implementation ChartRP-028 MIDI IMPLEMENTATION CHART V2 INSTRUCTIONS (AMEI/MSC)Generator from logged traffic?Prior artMIDI-OX(Win)Snoize MIDI Monitor(Mac)Midi View(Win/Mac)OBD Software Midi Monitor 2002(Win)Morson PocketMIDI(Win/Mac/iOS)Drumstick MIDI Monitor aka KMidiMon(Linux)Legal noticeLicenseAuthor: ©2021-2023 Raphaël Doursenaud.This software is released under the terms of the GNU General Public License, version 3.0 or later (GPL-3.0-or-later).SeeLICENSE.Logo and icons released under theCreative Commons Attribution-Share Alike 4.0 International.Dependencies & License AcknowledgmentPythonv3.10Copyright © 2001-2022 Python Software Foundation.Used under the terms of the PSF License Agreement.RtMidiCopyright (c) 2003-2021 Gary P. Scavone.Used under the terms of the MIT license.viapython-rtmidiCopyright (c) 2012 - 2021 Christopher Arndt.Used under the terms of the MIT license.viamidoCopyright (c) 2013-infinity Ole Martin Bjørndalen.Used under the terms of the MIT license.Dear ImGuiCopyright (c) 2014-2022 Omar Cornut.Used under the terms of the MIT license.viaDear PyGuiCopyright (c) 2021 Dear PyGui, LLC.Used under the terms of the MIT license.FontsRobotoCopyright (c) 2015 The Roboto Project Authors.Used under the terms of the Apache License, Version 2.0.Roboto MonoCopyright (c) 2015 The Roboto Mono Project Authors.Used under the terms of the Apache License, Version 2.0.Logo and iconsComposite work based upon:MIDI connectorCopyrightFred the OysterUsed under the terms of theCreative Commons Attribution-Share Alike 4.0 Internationallicense.Steering WheelCopyrightSpiderUsed under the terms of theCreative Commons Attribution 4.0 Internationallicense.TrademarksMIDIis a trademark of the MIDI Manufacturers Association (MMA) in the United States of America.This is not a registered trademark in the European Union and France where I reside.OtherOther trademarks are property of their respective owners and used fairly for descriptive and nominative purposes only.