MIDI 2.0 - Introduction to the Universal MIDI Packet - Workshop 1

Are you a developer wanting to start programming the new MIDI 2.0 packet format, UMP? In these workshops, learn from a member of the team who wrote the specifications and learn all you need to know to get started working with UMP.

Course Instructor: Florian Bomers

Course level

MIDI 2.0 is set to power the next generation of hardware and software with enhanced features for discovery, expression and faster communication. The Universal MIDI Packet (UMP) is a fundamental aspect of MIDI 2.0, which allows programs to negotiate and communicate with MIDI 1.0 and MIDI 2.0 products.

In this workshop, you will learn from a member of the MIDI 2.0 working group, which wrote the specifications, how to get started working with UMP, and write a simple C++ program that utilises UMP.

Overview

This workshop will provide developers with knowledge and code for starting MIDI 2.0 Universal MIDI Packet (UMP) development in C++. The concepts of UMP will be explained. Then, the participants will co-develop a first simple implementation of a generic UMP parser in plain C++. For that, a stub workspace will be provided. Exercises will let the participants practice the newly learned concepts.

What you'll learn

  • Understand the core concepts of UMP
  • Be able to build applications in C++ using UMP

Requirements

  • Some experience with C++ coding
  • Have a development environment set up and ready with Xcode (macOS) or Visual Studio (Windows).
  • Working knowledge of MIDI 1.0
  • A computer and internet connection
  • Xcode (macOS) / Visual Studio (Windows)

Course content

  • ---- Preparation links
  • ---- Zip file to download
  • ---- Exercises to download
  • ---- Presentation slides
  • ---- Introduction
  • ---- MIDI 2.0 Recap
  • ---- MIDI 2.0 vs. UMP
  • ---- MIDI 2.0 Summary
  • ---- Exercises 1
  • ---- Examine the UMP Packet
  • ---- UMP Message Layout Examples
  • ---- Exercises 2
  • ---- Designing a UMP C++ Class
  • ---- The UMPacket Class
  • ---- Words, Bytes, and Bits
  • ---- Exercises 3
  • ---- Translation MIDI 1.0 to and from MIDI 2.0
  • ---- Translating MIDI 2.0 to MIDI 1.0
  • ---- Translator class MIDI 1.0 to MIDI 2.0
  • ---- Value Scaling
  • ---- Translator class MIDI 2.0 to MIDI 1.0
  • ---- Exercises 4
  • ---- What's Next
  • ---- Wrap-Up

Who is this course for

  • Developers wanting to learn how the new MIDI 2.0 packet format works under the hood, and how to get started writing software for it right away.

Useful links

About the workshop leader

Florian Bomers runs his own company Bome Software, creating MIDI tools and hardware. He has been an active MIDI 2.0 working group member since its inception. He serves on the Technical Standards Board of the MIDI Association and chairs the MIDI 2.0 Transports Working Group. He is based in Munich, Germany.