Contributing to the MIDI 2.0 Developer Community

MIDI2.dev aims to promote the adoption of MIDI 2.0 by providing tools and libraries useful to developers. Resources include C++ Libraries, USB helpers, testing applications, and more from leading contributors to the MIDI 2.0 specifications. Our repositories are at https://github.com/midi2-dev
The MIDI Association* publishes MIDI Specifications and developer support articles. Every developer should also take advantage of the many benefits of joining The MIDI Association as paid corporate members: https://midi.org/about
Contents of the Github:
The MIDI 2.0 Workbench is a free tool to help developers develop, debug (and deploy) MIDI 2.0 Applications and Devices. It runs on Windows, Mac and Linux. The Workbench connects to your device or software, to test various MIDI 2.0 implementation features against official specifications. The MIDI 2.0 Workbench is the only automated tool that generates the MIDI 2.0 Compliance Checklist required to license the MIDI 2.0 Logo from the MIDI Association. The MIDI 2.0 Workbench is currently available as source code for you to compile. We will release binaries shortly.

AmeNote ProtoZOA MIDI 2.0 Dev Hardware Tool and Open Source Firmware
The AmeNote ProtoZOA hardware platform is a flexible prototyping tool for MIDI 2.0 and is the standard testing device chosen by and funded in part by the MIDI Association. Open source firmware provides MIDI 2.0 interfaces and functions for developers to use in their own hardware and software products. ProtoZOA provides a USB MIDI 2.0 Class Compliant Device on a Raspberry Pico, designed specifically to jump-start prototyping and validation of Universal MIDI Packet (UMP) functions and fuel the MIDI 2.0 revolution. ProtoZOA integrates closely with the MIDI 2.0 Workbench.
This is a Tiny USB Device driver for USB MIDI 1.0 and USB MIDI 2.0 as a unified device. Allows implementor to create hardware MIDI devices which are fully compliant with USB Device Class specifications. Includes the fallback mechanism from 2.0 to 1.0 as defined in USB MIDI 2.0.
USB MIDI 2.0 Descriptor Builder
This is tool for easily creating valid descriptors for USB MIDI 2.0 Devices, which are so easy to get wrong. Fill in properties in a form to generate an output of the necessary descriptors. Supports the tusb_ump library, a USB Device used in the ProtoZOA, and the Linux MIDI2 Gadget Driver.
The library provides the basic functionality of UMP 1.1 and MIDI-CI 1.2 by providing base classes for all UMP 1.1 packet types, (Universal) System Exclusive messages and MIDI-CI messages. There are concrete types for controllers, velocity and pitch, plus type aliases for common message field types. Mathematical operators allow to do integer / fixed point math on pitches and controllers, type constructors allow initialization with values of different resolution. Conrete instances of packets or messages are created using factory functions. Incoming packets and messages are inspected using data views. The library is completed by a number of helper functionalities dealing with conversion from / to MIDI 1 byte stream data format, collecting sysex messages and more.
Piano Profile Velocity Checker
A tool from Kawai that supports the development of MIDI 2.0 Piano Profile devices. The Piano Profile defines a Default Note On Velocity Curve, so that a passage played on one piano is reproduced with the same intended dynamics on another. To bring a Sender device into conformance with this curve, a performance matching a reference performance is recorded on the target piano, and the two SMFs are compared. This tool supports that comparison: it aligns coincident notes between the reference SMF and the target piano’s SMF, calculates the Note On velocity difference for each velocity value, and outputs the results as a CSV. Developers can see how far the target device deviates from the reference and adjust its velocity curve accordingly.
Piano Profile Wave File Amplitude Analyzer
WaveFileAmplitudeAnalyzer.m is an Octave (similar to Matlab) script for analyzing audio file for use to make compliant piano implementations of the MIDI Piano Profile.
This is a general purposes Library for building MIDI 2.0 Devices and Applications. This library is targeted to work on everything from Arduinos through to large scale applications. It provides foundational building blocks, processing, and translations needed for most MIDI 2.0 Devices and Applications.
Ergonomic, versatile, strong types wrapping MIDI 2.0 message data. This RUST implementation of MIDI 2.0 is based on the 1.1 revision of the specifications. See the official MIDI 2.0 specification for more details on the data protocol standard.
KissBox Network UMP Wireshark Plugin
This plugin allows Wireshark to decode incoming Network UMP (Universal MIDI Packet) from a network adapter
C++17 library implementing the Network MIDI 2.0 protocol (M2-124-UM v1.0) for embedded and desktop platforms. Developed by AmeNote Inc..
*Note: This MIDI2 Developer Collaboration is not a project of the The MIDI Association, but was founded by key participants in the development of MIDI 2.0, working as members of the MIDI Association. The MIDI 2.0 Logo is a registered trademark of the MIDI Association, used under license. The M2 Logo is a trademark of the MIDI2 Developer Collaboration at MIDI2.dev.
Copyright 2023 AmeNote, Inc.