Skip to main content

Yet another MIDI monitor, analyzer, debugger and manipulation tool.

Project description

MIDI Explorer Logo MIDI Explorer

PyPI - Version PyPI - Python Version

Yet another MIDI monitor, analyzer, debugger and manipulation tool.

GUI

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. Testers welcome ;)

Alpha coming soon!

Installation

Install Python 3.10 first from python.org.

Install PipX:

Microsoft Windows

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

Common

pipx install midiexplorer

Features / TODO list

  • Platform support
  • Documentation
  • Linting
    • Code style checks? (PEP8 pycodestyle)
    • Docstrings? (darglint)
    • Typechecking? (mypy)
  • Unit tests? (pytest)
    • Coverage
  • Packaging
  • Continuous Integration? (GitHub Actions workflow)
  • (WIP) MIDI protocols
  • (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 for Microsoft Windows
      • RTP-MIDI / IETF RFC 6295
      • Virtual
    • 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
          • Persistence
          • Note-On with velocity set to 0 is Note-Off (Per specification)
        • Message type
          • Channel
          • System
        • Channel
        • Controllers
        • (WIP) SysEx
          • Basic decoding
          • 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)
        • (WIP) Notes
          • Keyboard
          • Staff
      • Read raw input
      • Table decode input
      • Timing
        • Hardware
          • retrieved using a modified mido RtMidi backend
        • System
      • Thru support
      • Color code
        • Per source
        • Per channel
        • Per message type
    • 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

Legal notice

License

GPLv3

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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

midiexplorer-0.0.1a0.tar.gz (1.2 MB view hashes)

Uploaded Source

Built Distribution

midiexplorer-0.0.1a0-py3-none-any.whl (350.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page