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.

Property Exchange is part of the MIDI-CI specification. Property Exchange is a method for sending JSON over SysEx between two Devices to get and set Device properties. Each MIDI Device is unique and provides an experience different from another Device. Property Exchange allows you to discover and use almost any Device in a consistent way. Contained here are key Property Exchange specifications. Many other Property Exchange specifications have dependencies on the files in this collection.

M2-105-UM MIDI-CI Property Exchange Foundational Resources.
This specification defines three Foundational Resources: DeviceInfo, ChannelList, and JSONSchema.

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

Property Exchange is part of the MIDI-CI specification. Property Exchange is a method for sending JSON over System Exclusive to exchange data between two devices. This document describes the Property Data for AllCtrlList, ChCtrlList and CtrlMapList Resources.


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 specification defines two Resources, ModeList and CurrentMode. If a Property Exchange Device has Modes, then it should support the ModeList Resource and CurrentMode Resource.

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