Official MIDI Specifications

Property Exchange

Property Exchange is part of the MIDI Capability Inquiry (MIDI-CI) specification and MIDI 2.0. Property Exchange is a method for getting and setting various data, called Resources, between two Devices. Resources are exchanged inside two payload fields of System Exclusive Messages defined by MIDI-CI, the Header Data field and Property Data field. This document defines only the contents of the Header Data and Property Data fields. For information on how to transmit and receive these Resource payloads inside MIDI-CI System Exclusive messages, see the MIDI Capability Inquiry specification and Common Rules for MIDI-CI Property Exchange specification.
This specification defines three Foundational Resources: DeviceInfo, ChannelList, and JSONSchema.
This specification defines two Resources, ModeList and CurrentMode. If a Property Exchange Device has Modes, then it should support the ModeList Resource and CurrentMode Resource.
MIDI-CI defines an architecture that allows Devices with bidirectional communication to agree to use extended MIDI capabilities beyond those defined in MIDI 1.0, while carefully protecting backward compatibility. MIDI-CI features “fall back” mechanisms so that if a Device does not support new features MIDI continues to work as defined by MIDI 1.0. Goals of MIDI-CI design:
Fully backward compatible: supports continued MIDI 1.0 functionality for any Devices that do not recognize extended MIDI features enabled by MIDI-CI.
  1. Allow easy configuration between MIDI-CI Devices.
  2. Sender can know the capabilities of a Receiver.
  3. Sender and Receiver can negotiate auto-configuration details
  4. Define method for negotiating choice of Protocol between Devices.
  5. Define method for using Profiles.
  6. Define method for Discovering, Getting, and Setting a wide range of Device Properties. 

Property Exchange is a set of MIDI-CI messages used to access a wide range of properties in MIDI devices. The exchange of properties takes place between a MIDI-CI Initiator and a MIDI-CI Responder.

This Common Rules for Property Exchange document provides a complement to the MIDI-CI specification by defining details of the Property Exchange mechanism and rules for the data payload in MIDI-CI Property Exchange messages. Further Property Exchange specifications define schemas and various data payloads that use the rules in MIDI-CI and this document to achieve specific tasks.
This specification defines the ProgramList Resource. If a Property Exchange Device has Programs selectable by Bank Select and Program Change messages, then it should support the ProgramList Resource.

This document defines three Property Exchange Resources: ChannelMode, BasicChannelRx, and BasicChannelTx. These Resources are used to Get and Set information related to the choice of MIDI Channels which are actively in use by a Device.

There is an additional Property Resource defined to address the use of MIDI Channels, ChannelList, which is not defined in this document but is in MIDI-CI Property Exchange Foundational Resources: DeviceInfo, ChannelList, JSONSchema. Devices which have complex usage of MIDI Channels should also implement the ChannelList Resource.


This document defines the LocalOn Resource which uses Property Exchange to Get and Set the "Local On/Off" setting of a Property Exchange Device.


This document defines the MaxSysex8Streams Resource which uses Property Exchange to discover how many simultaneous System Exclusive 8 messages are supported by a Device when using the MIDI 2.0 Protocol.

The Property Exchange Resources described in this document allow for an Initiator to send or receive Device State, or in other words, to capture a snapshot which might be sent back to the Device at a later time. The primary goal of this application of Property Exchange is to GET the current memory of a MIDI Device. This allows a Digital Audio Workstation (DAW) or other Initiator to store the State of a Responder Device between closing and opening of a project. Before a DAW closes a project, it performs the GET inquiry and the target Device sends a REPLY with all data necessary to restore the current State at a later time. When the DAW reopens a project, the target Device can be restored to its prior State by sending an Inquiry: Set Property Data Message.

This document defines the ExternalSync Resource. If a Property Exchange Device has a clock which is able to synchronize to external MIDI sync messages, then the Device should support the ExternalSync Resource.