TechnologiesAudio

CoreMIDI

iOSmacOStvOSwatchOSvisionOS

CoreMIDI provides MIDI services for communicating with musical instruments and controllers, supporting both MIDI 1.0 and MIDI 2.0 messages. You send and receive events using packet and message structures such as MIDIPacket, MIDIPacketList, MIDIEventPacket, MIDIEventList, and MIDIUniversalMessage, classifying them by type with enumerations like MIDIMessageType, MIDICVStatus, and MIDISysExStatus. The framework also models MIDI-CI capability inquiry through classes such as MIDICIDevice, MIDICIDeviceManager, MIDICIProfile, and MIDICISession, and supports networked MIDI over connections built from MIDINetworkHost, MIDINetworkConnection, and MIDINetworkSession. It is available on iOS, macOS, tvOS, watchOS, and visionOS.

MIDI Packets and Event Lists 8

Structures that carry timestamped MIDI 1.0 and MIDI 2.0 data through the system.

  • St
    MIDIPacket
    @struct MIDIPacket
  • St
    MIDIPacketList
    @struct MIDIPacketList
  • St
    MIDIEventPacket
    @struct MIDIEventPacket
  • St
    MIDIEventList
    @struct MIDIEventList
  • St
    MIDIUniversalMessage
    @struct MIDIUniversalMessage
  • St
    MIDIMessage_64
    A structure that holds a 64-bit Universal MIDI Packet message.
  • St
    MIDIMessage_96
    A structure that holds a 96-bit Universal MIDI Packet message.
  • St
    MIDIMessage_128
    A structure that holds a 128-bit Universal MIDI Packet message.

Iterating Packet Buffers 4

Pointer types for safely traversing packet and event-list buffers.

  • St
    UnsafeMutableMIDIPacketPointeriOS 13.0+
    A type that provides safe access to the bytes within a MIDI packet.
  • St
    UnsafeMutableMIDIPacketListPointeriOS 13.0+
    A type that provides safe iteration over the packets in a MIDI packet list.
  • St
    UnsafeMutableMIDIEventPacketPointeriOS 14.0+
    A type that provides safe access to the words within a MIDI event packet.
  • St
    UnsafeMutableMIDIEventListPointeriOS 14.0+
    A type that provides safe iteration over the event packets in a MIDI event list.

Message Classification 9

Enumerations that identify the type and status of MIDI 1.0 and MIDI 2.0 messages.

  • En
    MIDIMessageType
    Constants that identify the message type of a Universal MIDI Packet.
  • En
    MIDICVStatus
    Constants that specify the status of a MIDI 2.0 channel-voice message.
  • En
    MIDISystemStatus
    Constants that specify the status of a MIDI system message.
  • En
    MIDISysExStatus
    Constants that specify the status of a system-exclusive message.
  • En
    MIDIUtilityStatus
    Constants that specify the status of a Universal MIDI Packet utility message.
  • En
    UMPStreamMessageStatus
    Constants that specify the status of a UMP stream message.
  • En
    UMPStreamMessageFormat
    Stream Message Format
  • En
    MIDINoteAttribute
    Constants that specify the attribute type carried by a MIDI 2.0 note message.
  • En
    MIDIProtocolID
    @enum MIDIProtocolID

System Exclusive Transfers 2

Requests for sending system-exclusive data over MIDI 1.0 and Universal MIDI Packet streams.

  • St
    MIDISysexSendRequest
    @struct MIDISysexSendRequest
  • St
    MIDISysexSendRequestUMP
    @struct MIDISysexSendRequestUMP

Notifications 6

Structures and identifiers describing changes to the MIDI system and its objects.

  • St
    MIDINotification
    @struct MIDINotification
  • St
    MIDIObjectAddRemoveNotification
    @struct MIDIObjectAddRemoveNotification
  • St
    MIDIObjectPropertyChangeNotification
    @struct MIDIObjectPropertyChangeNotification
  • St
    MIDIIOErrorNotification
    A structure that reports an input/output error for a MIDI driver device.
  • En
    MIDINotificationMessageID
    @enum MIDINotificationMessageID
  • En
    MIDIObjectType
    @enum MIDIObjectType

Thru Connections and Transforms 7

Types that route and transform MIDI events between endpoints without host involvement.

  • St
    MIDIThruConnectionParams
    @struct MIDIThruConnectionParams
  • St
    MIDIThruConnectionEndpoint
    @struct MIDIThruConnectionEndpoint
  • St
    MIDITransform
    @struct MIDITransform
  • St
    MIDIControlTransform
    @struct MIDIControlTransform
  • St
    MIDIValueMap
    @struct MIDIValueMap
  • En
    MIDITransformType
    @enum MIDITransformType
  • En
    MIDITransformControlType
    @enum MIDITransformControlType

Universal MIDI Packet Endpoints 9

Classes and values that describe MIDI 2.0 endpoints, function blocks, and their capabilities.

  • Cl
    MIDIUMPEndpointiOS 18.0+
    @class MIDIUMPEndpoint
  • Cl
    MIDIUMPMutableEndpointiOS 18.0+
    @class MIDIUMPMutableEndpoint
  • Cl
    MIDIUMPEndpointManageriOS 18.0+
    @class MIDIUMPEndpointManager
  • Cl
    MIDIUMPFunctionBlockiOS 18.0+
    @class MIDIUMPFunctionBlock
  • Cl
    MIDIUMPMutableFunctionBlockiOS 18.0+
    @class MIDIUMPMutableFunctionBlock
  • En
    MIDIUMPFunctionBlockMIDI1Info
    MIDI 1.0 speed information for Function Blocks
  • En
    MIDIUMPFunctionBlockUIHint
    UI hint types for Function Blocks
  • En
    MIDIUMPFunctionBlockDirection
    Function Block direction types
  • St
    MIDIUMPProtocolOptions
    @enum MIDIUMPProtocolOptions

MIDI-CI Capability Inquiry 11

Classes and protocols that model MIDI Capability Inquiry devices, discovery, and sessions.

  • Cl
    MIDICIDeviceiOS 18.0+
    @class MIDICIDevice
  • Cl
    MIDICIDeviceManageriOS 18.0+
    @class MIDICIDeviceManager
  • Cl
    MIDICIDeviceInfo
    An object that describes the identity and manufacturer details of a MIDI-CI device.
  • Cl
    MIDICIDiscoveredNode
    An object that represents a MIDI-CI node found during capability inquiry discovery.
  • Cl
    MIDICIDiscoveryManager
    An object that initiates and tracks MIDI-CI discovery on the system.
  • Cl
    MIDICISession
    An object that manages a MIDI-CI capability inquiry session with a remote device.
  • Cl
    MIDICIResponder
    An object that responds to incoming MIDI-CI inquiries from other devices.
  • Pr
    MIDICIProfileResponderDelegate
    A protocol for responding to MIDI-CI profile requests from inquiring devices.
  • St
    MIDICIDeviceIdentification
    A structure that uniquely identifies a MIDI-CI device by manufacturer and model.
  • En
    MIDICIDeviceType
    Constants that specify the role of a MIDI-CI device.
  • St
    MIDICIPropertyExchangeRequestID
    @typedef MIDICIPropertyExchangeRequestID

MIDI-CI Profiles 9

Types that identify and manage MIDI-CI profiles and their enabled state.

  • Cl
    MIDICIProfileiOS 12.0+
    @class MIDICIProfile
  • Cl
    MIDICIProfileStateiOS 12.0+
    An object that reports whether a MIDI-CI profile is enabled or disabled.
  • Cl
    MIDIUMPCIProfileiOS 18.0+
    @class MIDIUMPCIProfile
  • St
    MIDICIProfileID
    @struct MIDICIProfileID
  • St
    MIDICIProfileIDStandard
    @struct MIDICIProfileIDStandard
  • St
    MIDICIProfileIDManufacturerSpecific
    @struct MIDICIProfileIDManufacturerSpecific
  • En
    MIDICIProfileType
    @enum MIDICIProfileType
  • En
    MIDICIProfileMessageType
    @enum MIDICIProfileMessageType
  • St
    MIDICICategoryOptions
    @typedef MIDICICategoryOptions

MIDI-CI Message Categories 4

Enumerations that classify the kinds of MIDI-CI messages exchanged between devices.

  • En
    MIDICIPropertyExchangeMessageType
    @enum MIDICIPropertyExchangeMessageType
  • En
    MIDICIProcessInquiryMessageType
    @enum MIDICIProcessInquiryMessageType
  • En
    MIDICIManagementMessageType
    @enum MIDICIManagementMessageType
  • En
    MIDIUMPCIObjectBackingType
    @enum MIDIUMPCIObjectBackingType

Network MIDI 4

Classes that establish and manage MIDI sessions over the network.

  • Cl
    MIDINetworkSessioniOS 4.2+
    An object that manages MIDI communication over a network connection.
  • Cl
    MIDINetworkHostiOS 4.2+
    An object that identifies a host participating in a network MIDI session.
  • Cl
    MIDINetworkConnectioniOS 4.2+
    An object that represents a connection between a host and a network MIDI session.
  • En
    MIDINetworkConnectionPolicy
    Constants that specify which hosts may connect to a network MIDI session.

Device Information and Options 6

Structures describing MIDI 2.0 device identity, drivers, and per-message options.

  • Cl
    MIDI2DeviceInfoiOS 18.0+
    @class MIDI2DeviceInfo
  • St
    MIDI2DeviceManufacturer
    A structure that identifies the manufacturer of a MIDI 2.0 device.
  • St
    MIDI2DeviceRevisionLevel
    A structure that describes the revision level of a MIDI 2.0 device.
  • St
    MIDIDriverInterface
    @struct MIDIDriverInterface
  • St
    MIDIProgramChangeOptions
    An option set that configures how a MIDI 2.0 program-change message is interpreted.
  • St
    MIDIPerNoteManagementOptions
    An option set that configures per-note management behavior in MIDI 2.0.

Type Aliases 36

  • Ty
    MIDICIInitiatiorMUID
  • Ty
    MIDICIProfileChangedBlock
  • Ty
    MIDICISessionDisconnectBlock
  • Ty
    MIDICIProfileSpecificDataBlock
  • Ty
    MIDICIDiscoveryResponseBlock
  • Ty
    MIDIDriverRef
    @typedef MIDIDriverRef
  • Ty
    MIDIDeviceListRef
    @typedef MIDIDeviceListRef
  • Ty
    MIDIUInteger2
    MIDI unsigned integer types
  • Ty
    MIDIUInteger4
  • Ty
    MIDIUInteger7
  • Ty
    MIDIUInteger14
  • Ty
    MIDIUInteger28
  • Ty
    MIDIUMPGroupNumber
    Type for all UMP Groups
  • Ty
    MIDIChannelNumber
    MIDI Channel, 0~15 (channels 1 through 16, respectively).
  • Ty
    MIDICIDeviceID
    Some MIDI-CI messages use a CI device ID, which is either a UMP group or a reserved 7-bit value
  • Ty
    MIDICIMUID
    The unique MIDI-CI negotiation identifier (MUID) used for a MIDICIResponder connection.
Show 20 more
  • Ty
    MIDIMessage_32
  • Ty
    MIDIEventVisitor
    A callback function which receives a single MIDIUniversalMessage.
  • Ty
    MIDIObjectRef
    @typedef MIDIObjectRef
  • Ty
    MIDIClientRef
    @typedef MIDIClientRef
  • Ty
    MIDIPortRef
    @typedef MIDIPortRef
  • Ty
    MIDIDeviceRef
    @typedef MIDIDeviceRef
  • Ty
    MIDIEntityRef
    @typedef MIDIEntityRef
  • Ty
    MIDIEndpointRef
    @typedef MIDIEndpointRef
  • Ty
    MIDITimeStamp
    @typedef MIDITimeStamp
  • Ty
    MIDIUniqueID
    @typedef MIDIUniqueID
  • Ty
    MIDINotifyProc
    @typedef MIDINotifyProc
  • Ty
    MIDINotifyBlock
    @typedef MIDINotifyBlock
  • Ty
    MIDIReceiveBlock
    @typedef MIDIReceiveBlock
  • Ty
    MIDIReadProc
    @typedef MIDIReadProc
  • Ty
    MIDIReadBlock
    @typedef MIDIReadBlock
  • Ty
    MIDICompletionProc
    @typedef MIDICompletionProc
  • Ty
    MIDICompletionProcUMP
    @typedef MIDICompletionProcUMP
  • Ty
    MIDISetupRef
    @typedef MIDISetupRef
  • Ty
    MIDIThruConnectionRef
    An opaque reference to a play-through connection.
  • Ty
    MIDIUMPFunctionBlockID
    @typedef MIDIUMPFunctionBlockID

Extends 1

UnsafePointer
← Audio