Getting started with MIDI 2.0 development - On-demand

Are you a developer wanting to learn how MIDI 2.0 works under the hood? In this series learn from members of the team who helped write the specifications and learn all you need to know to get started working with MIDI 2.0 right away.

Course instructor: Brett Porter

Course level

This workshop will provide developers with knowledge and code for starting MIDI 2.0 development. At first, the concepts of MIDI 2.0 are explained. Then, the participants will co-develop a first implementation of a MIDI-CI parser for robust device discovery, and for querying and offering profiles. For that, a stub workspace will be provided. Exercises will let the participants practice the newly learned concepts. Last, but not least, this workshop also includes automated testing as a tool to verify the implementation.

What you'll learn

  • Session 1: MIDI-CI, Profiles, protocol negotiation, PE, UMP, Concepts, Tools and MIDI-CI Message Layout
  • Session 2: Workspace setup, Starting with a unit test, Implementing a MIDI 2.0 message parser and Implement MIDI 2.0 discovery
  • Session 3: Making the parser more robust, MUID collision handling, Multi-port and MIDI Thru issues and unit tests + implementation
  • Session 4: Use CasesSending and receiving Profile messages, Implementation and tests and Quick introduction to PE and to UMP

Requirements

  • A computer and internet connection
  • Xcode (macOS)/Visual Studio (Windows)
  • JUCE workspace

Course content

  • ---- Part 1 - Background and MIDI-CI
  • ---- Session 1 presentation slides
  • ---- Quiz 1 + Answers
  • ---- Validate your learning with an exercise
  • ---- MIDI 2.0 Specification collection download
  • ---- Property Exchange Foundational Resources download
  • ---- Part 2 - Profiles
  • ---- Quiz 2 + Answers
  • ---- Part 3 - Property Exchange
  • ---- Quiz 3 + Answers
  • ---- Part 4 - UMP
  • ---- Quiz 4 + Answers
  • ---- Part 5 - Closing slides & Small talk
  • ---- Session 2 presentation
  • ---- Session 2 zip file to download
  • ---- Session 2 breakout room activities - updated
  • ---- Profile: Default Control Change Mapping download
  • ---- Part 1 - Test-driven development
  • ---- Exercise 1 - Testing
  • ---- Exercise 1 - Solutions
  • ---- Part 2 - MIDI-CI Parser
  • ---- Exercise 2 - “Project” Workspace Setup
  • ---- Exercise 2 - Solutions
  • ---- Part 3 - Unit Tests - Discovery
  • ---- Exercise 3 - Coverage
  • ---- Exercise 3 - Solutions
  • ---- Part 4 - Implementing Discovery + Exercise 4 (Discovery) & Solutions
  • ---- Week 3 presentation slides
  • ---- Download file and links
  • ---- Test program to download
  • ---- Week 3 exercises
  • ---- Part 1 - Profiles Introduction
  • ---- Part 2 - Exercise 1 + Solutions
  • ---- Part 3 - Addendum to Previous Session
  • ---- Part 4 - Profiles implementation
  • ---- Exercise 2 + Solutions
  • ---- Part 5 - Class Design
  • ---- Part 6 - Unit Testing - Profiles
  • ---- Part 7 - Exercise 3 + Solutions
  • ---- Part 8 - Profile Handler Implementation
  • ---- Exercise 4 +Solutions
  • ---- Session 4 zip file to download
  • ---- Breakout room activities
  • ---- Week 4 presentation slides
  • ---- Part 1 - Property Exchange
  • ---- Exercise 1 + Solutions
  • ---- Part 2 - PE Implementation
  • ---- Exercise 2 + Solutions
  • ---- Part 3 - Protocol Negotiation and UMP
  • ---- Exercise 3 + Solutions
  • ---- Part 4 - MIDI 2 Channel Voice Messages
  • ---- Exercise 4 + Solutions

Who is this course for

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

Useful links

About the workshop leader

Brett Porter is Lead Software Engineer at Artiphon, member of the MIDI Association Executive Board, and chair of the MIDI 2 Prototyping and Testing Working Group. He is based in the New York City area.