Skip to main content

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

Project description

MIDI Explorer Logo MIDI Explorer

License: GPL v3 PyPI - Python Version

Downloads PyPI - 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.

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
  • 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)
      • 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
        • 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)
        • (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)
      • Read raw input
      • History: table decode input
        • Decode to monitor upon selection
      • 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.1a2.tar.gz (346.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

midiexplorer-0.0.1a2-py3-none-any.whl (362.0 kB view details)

Uploaded Python 3

File details

Details for the file midiexplorer-0.0.1a2.tar.gz.

File metadata

  • Download URL: midiexplorer-0.0.1a2.tar.gz
  • Upload date:
  • Size: 346.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.0

File hashes

Hashes for midiexplorer-0.0.1a2.tar.gz
Algorithm Hash digest
SHA256 07a54897fcebed0e9c33b901726cb0b857c230a97e54d610bffec3587294d0dd
MD5 de55ad8ee6d8008827c2646f17eb4eab
BLAKE2b-256 265e32ee5d190fcd1c224606f0c17a6a54351aebe7c63875f3f387346fc24838

See more details on using hashes here.

File details

Details for the file midiexplorer-0.0.1a2-py3-none-any.whl.

File metadata

File hashes

Hashes for midiexplorer-0.0.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 f05002f6d9363a924e42d6001fdbb2b41fc64e59ca0a0772ae0dcd21853ab5de
MD5 325adc633b3fc727a1492ca16083eded
BLAKE2b-256 87a7959dbd5257836fa667d7b326fd2ae6c21c3cb2e3f47596d82c3693a23c7a

See more details on using hashes here.

Supported by

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