Yet another MIDI monitor, analyzer, debugger and manipulation tool.
Project description
MIDI Explorer
Yet another MIDI monitor, analyzer, debugger and manipulation tool.
The intent is to be specifications compliant to help debugging, reverse-engineering and developing products based on the MIDI protocol while learning everything there is to know in the process.
Language is currently Python to help with rapid prototyping and fast iteration. It may change at any time as I see fit.
Table of Contents
Status
Basic features implemented.
First alpha released!
Testers welcome ;)
Installation
Install Python 3.10
From python.org (recommended) or your favorite package manager.
Install PipX
Follow the instructions for your operating system.
Microsoft Windows
In a terminal
py -m pip install --user pipx
py -m pipx ensurepath
Close and reopen your terminal.
Mac OS X / Linux
python3 -m pip install --user pipx
Install MIDI Explorer
pipx install midiexplorer
Features / TODO list
- Platform support
- (WIP) Microsoft Windows
- WinMM aka Windows Multimedia MME API
- via mido's RtMidi backend
- WinRt aka UWP Windows Runtime API
- WinMM aka Windows Multimedia MME API
- (WIP) Apple Mac OS X
- Core MIDI
- via mido's RtMidi backend
- JACK MIDI (Should work but untested ATM)
- Core MIDI
- (WIP) GNU/Linux
- (WIP) ALSA
- Sequencer API
- via mido's RtMidi backend
- RawMidi API
- JACK MIDI (Should work but untested ATM)
- Sequencer API
- OSS?
- (WIP) ALSA
- (WIP) Microsoft Windows
- Documentation
- Developers
- Users
- Linting
- Code style checks? (PEP8 pycodestyle)
- Docstrings? (darglint)
- Typechecking? (mypy)
- Unit tests? (pytest)
- Coverage
- Packaging
- (WIP) PyPi
- Using Hatch
- PyInstaller
- (WIP) PyPi
- Continuous Integration? (GitHub Actions workflow)
- (WIP) MIDI protocols
- v1.0
- using a modified mido
- v2.0
- v1.0
- (WIP) Interactive GUI
- Icons
- About window
- Fonts
- Custom theme
- Node editor window
- Inputs
- Outputs
- Modules
- Probe data window
- Generator data window
- Log window
- (WIP) Actions
- Toggle fullscreen (F11)
- Toggle log (F12)
- Save state (Buggy at the moment)
- (WIP) I/O management
- Select backend?
- (WIP) List MIDI I/O
- USB / IEEE-1394 (OS level)
- Bluetooth Low Energy (BLE-MIDI)
- Requires WinRt MIDI for Microsoft Windows
- RTP-MIDI / IETF RFC 6295
- Requires rtpMIDI for Microsoft Windows
- Virtual
- Requires loopMIDI for Microsoft Windows
- Input reading modes
- Polling
- Callback
- Sort by ID/Name
- (WIP) Connections
- Port to probe
- Probe to port
- Port to port
- Port to any module
- Any module to port
- Module to module
- (WIP) Refresh
- Manual
- Auto with reconnect
- Virtual ports
- Add/Remove
- Save state
- (WIP) Modules (Plugins?)
- Instances management (Add/Remove)
- Virtual Debug Probe
- Activity monitor
- Settings
- Colors
- Live
- Selected
- Persistence
- Note-On with velocity set to 0 is Note-Off (Per specification)
- Display EOX as either a System Common or a System Exclusive message
- Notation
- English Alphabetical
- Syllabic
- German Alphabetical
- Colors
- Message type
- Channel
- System
- Channel
- Controllers
- (WIP) Notes
- Keyboard
- Staff
- Patches
- GM (General MIDI)
- Level 1 (1991)
- Level 2 (1999)
- Lite (2001)
- Proprietary
- Roland
- LA (Linear Arithmetic) (MT-32…) (1987)
- GS (General Standard) (Sound Canvas…) (1991)
- Yamaha
- XG (EXtended General MIDI)
- Level 1 (1994)
- Level 2 (1997)
- Level 3 (1998)
- Lite (2002)
- XG (EXtended General MIDI)
- Roland
- GM (General MIDI)
- (WIP) SysEx
- Basic decoding
- (Manufacturer) ID
- Device ID
- Raw payload
- Universal System Exclusive
- Sub-IDs
- Sample dump standard
- Device inquiry
- File dump
- MIDI tuning
- General MIDI system messages
- MIDI Time Code (MTC)
- MIDI Show Control (MSC)
- Notation information
- Device Control
- MIDI Machine Control (MMC)
- Basic decoding
- Settings
- Read raw input
- History: table decode input
- Decode to monitor upon selection
- Timing
- Hardware
- retrieved using a modified mido RtMidi backend
- System
- Hardware
- Thru support
- Color code
- Per source
- Per channel
- Per message type
- Activity monitor
- Splitter
- Merger
- Generator
- Generate raw output
- Buffer/Clipboard any message (raw or decoded) to output
- Translator/Filter
- Standard MIDI File (SMF)
- Analyzer
- Player
- Recorder
- Protocol analyzers/decoders
- HUI
- LCU
- MCU
- Others?
- Trigger/Response (Protocol emulator)
- HUI
- LCU
- MCU
- Others?
- Performance analyzer
- Round trip latency
- Jitter
- Bandwidth
- Correctness
- Stresser/Fuzzer
- Hardware toolbox
- (WIP) Logging
- GUI
- To file
- Overwrite
- Append
Prior art
- MIDI-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 notice
License
Author: ©2021-2022 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).
See LICENSE.
Logo and icons released under the Creative Commons Attribution-Share Alike 4.0 International.
Dependencies & License Acknowledgment
- Python v3.10
Used under the terms of the PSF License Agreement. - RtMidi
Copyright (c) 2003-2021 Gary P. Scavone
Used under the terms of the MIT License. - via python-rtmidi
Copyright (c) 2012 - 2021 Christopher Arndt
Used under the terms of the MIT License. - via mido
Copyright (c) 2013-infinity Ole Martin Bjørndalen
Used under the terms of the MIT License. - Dear ImGui
Copyright (c) 2014-2022 Omar Cornut
Used under the terms of the MIT License. - via Dear PyGui
Copyright (c) 2021 Dear PyGui, LLC
Used under the terms of the MIT License.
Fonts
- Roboto
Copyright (c) 2015 The Roboto Project Authors
Used under the terms of the Apache License, Version 2.0. - Roboto Mono
Copyright (c) 2015 The Roboto Mono Project Authors
Used under the terms of the Apache License, Version 2.0.
Logo and icons
Composite work based upon:
- MIDI connector
Copyright Fred the Oyster
Used under the terms of the Creative Commons Attribution-Share Alike 4.0 International license. - Steering Wheel
Copyright Spider
Used under the terms of the Creative Commons Attribution 4.0 International license.
Trademarks
MIDI is 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.
Other
Other trademarks are property of their respective owners and used fairly for descriptive and nominative purposes only.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for midiexplorer-0.0.1a2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f05002f6d9363a924e42d6001fdbb2b41fc64e59ca0a0772ae0dcd21853ab5de |
|
MD5 | 325adc633b3fc727a1492ca16083eded |
|
BLAKE2b-256 | 87a7959dbd5257836fa667d7b326fd2ae6c21c3cb2e3f47596d82c3693a23c7a |