MIDI 2.0 Developer Collaboration

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 all MIDI Specifications at no charge: https://midi.org/specifications. But 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:

MIDI 2.0 Workbench

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.

Tiny USB MIDI 2.0 Device

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.

ni-midi2

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.

AM_MIDI2.0Lib

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.

*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.