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.
- StMIDIPacket@struct MIDIPacket
- StMIDIPacketList@struct MIDIPacketList
- StMIDIEventPacket@struct MIDIEventPacket
- StMIDIEventList@struct MIDIEventList
- StMIDIUniversalMessage@struct MIDIUniversalMessage
- StMIDIMessage_64A structure that holds a 64-bit Universal MIDI Packet message.
- StMIDIMessage_96A structure that holds a 96-bit Universal MIDI Packet message.
- StMIDIMessage_128A structure that holds a 128-bit Universal MIDI Packet message.
Iterating Packet Buffers 4
Pointer types for safely traversing packet and event-list buffers.
- StUnsafeMutableMIDIPacketPointeriOS 13.0+A type that provides safe access to the bytes within a MIDI packet.
- StUnsafeMutableMIDIPacketListPointeriOS 13.0+A type that provides safe iteration over the packets in a MIDI packet list.
- StUnsafeMutableMIDIEventPacketPointeriOS 14.0+A type that provides safe access to the words within a MIDI event packet.
- StUnsafeMutableMIDIEventListPointeriOS 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.
- EnMIDIMessageTypeConstants that identify the message type of a Universal MIDI Packet.
- EnMIDICVStatusConstants that specify the status of a MIDI 2.0 channel-voice message.
- EnMIDISystemStatusConstants that specify the status of a MIDI system message.
- EnMIDISysExStatusConstants that specify the status of a system-exclusive message.
- EnMIDIUtilityStatusConstants that specify the status of a Universal MIDI Packet utility message.
- EnUMPStreamMessageStatusConstants that specify the status of a UMP stream message.
- EnUMPStreamMessageFormatStream Message Format
- EnMIDINoteAttributeConstants that specify the attribute type carried by a MIDI 2.0 note message.
- EnMIDIProtocolID@enum MIDIProtocolID
System Exclusive Transfers 2
Requests for sending system-exclusive data over MIDI 1.0 and Universal MIDI Packet streams.
- StMIDISysexSendRequest@struct MIDISysexSendRequest
- StMIDISysexSendRequestUMP@struct MIDISysexSendRequestUMP
Notifications 6
Structures and identifiers describing changes to the MIDI system and its objects.
- StMIDINotification@struct MIDINotification
- StMIDIObjectAddRemoveNotification@struct MIDIObjectAddRemoveNotification
- StMIDIObjectPropertyChangeNotification@struct MIDIObjectPropertyChangeNotification
- StMIDIIOErrorNotificationA structure that reports an input/output error for a MIDI driver device.
- EnMIDINotificationMessageID@enum MIDINotificationMessageID
- EnMIDIObjectType@enum MIDIObjectType
Thru Connections and Transforms 7
Types that route and transform MIDI events between endpoints without host involvement.
- StMIDIThruConnectionParams@struct MIDIThruConnectionParams
- StMIDIThruConnectionEndpoint@struct MIDIThruConnectionEndpoint
- StMIDITransform@struct MIDITransform
- StMIDIControlTransform@struct MIDIControlTransform
- StMIDIValueMap@struct MIDIValueMap
- EnMIDITransformType@enum MIDITransformType
- EnMIDITransformControlType@enum MIDITransformControlType
Universal MIDI Packet Endpoints 9
Classes and values that describe MIDI 2.0 endpoints, function blocks, and their capabilities.
- ClMIDIUMPEndpointiOS 18.0+@class MIDIUMPEndpoint
- ClMIDIUMPMutableEndpointiOS 18.0+@class MIDIUMPMutableEndpoint
- ClMIDIUMPEndpointManageriOS 18.0+@class MIDIUMPEndpointManager
- ClMIDIUMPFunctionBlockiOS 18.0+@class MIDIUMPFunctionBlock
- ClMIDIUMPMutableFunctionBlockiOS 18.0+@class MIDIUMPMutableFunctionBlock
- EnMIDIUMPFunctionBlockMIDI1InfoMIDI 1.0 speed information for Function Blocks
- EnMIDIUMPFunctionBlockUIHintUI hint types for Function Blocks
- EnMIDIUMPFunctionBlockDirectionFunction Block direction types
- StMIDIUMPProtocolOptions@enum MIDIUMPProtocolOptions
MIDI-CI Capability Inquiry 11
Classes and protocols that model MIDI Capability Inquiry devices, discovery, and sessions.
- ClMIDICIDeviceiOS 18.0+@class MIDICIDevice
- ClMIDICIDeviceManageriOS 18.0+@class MIDICIDeviceManager
- ClMIDICIDeviceInfoAn object that describes the identity and manufacturer details of a MIDI-CI device.
- ClMIDICIDiscoveredNodeAn object that represents a MIDI-CI node found during capability inquiry discovery.
- ClMIDICIDiscoveryManagerAn object that initiates and tracks MIDI-CI discovery on the system.
- ClMIDICISessionAn object that manages a MIDI-CI capability inquiry session with a remote device.
- ClMIDICIResponderAn object that responds to incoming MIDI-CI inquiries from other devices.
- PrMIDICIProfileResponderDelegateA protocol for responding to MIDI-CI profile requests from inquiring devices.
- StMIDICIDeviceIdentificationA structure that uniquely identifies a MIDI-CI device by manufacturer and model.
- EnMIDICIDeviceTypeConstants that specify the role of a MIDI-CI device.
- StMIDICIPropertyExchangeRequestID@typedef MIDICIPropertyExchangeRequestID
MIDI-CI Profiles 9
Types that identify and manage MIDI-CI profiles and their enabled state.
- ClMIDICIProfileiOS 12.0+@class MIDICIProfile
- ClMIDICIProfileStateiOS 12.0+An object that reports whether a MIDI-CI profile is enabled or disabled.
- ClMIDIUMPCIProfileiOS 18.0+@class MIDIUMPCIProfile
- StMIDICIProfileID@struct MIDICIProfileID
- StMIDICIProfileIDStandard@struct MIDICIProfileIDStandard
- StMIDICIProfileIDManufacturerSpecific@struct MIDICIProfileIDManufacturerSpecific
- EnMIDICIProfileType@enum MIDICIProfileType
- EnMIDICIProfileMessageType@enum MIDICIProfileMessageType
- StMIDICICategoryOptions@typedef MIDICICategoryOptions
MIDI-CI Message Categories 4
Enumerations that classify the kinds of MIDI-CI messages exchanged between devices.
- EnMIDICIPropertyExchangeMessageType@enum MIDICIPropertyExchangeMessageType
- EnMIDICIProcessInquiryMessageType@enum MIDICIProcessInquiryMessageType
- EnMIDICIManagementMessageType@enum MIDICIManagementMessageType
- EnMIDIUMPCIObjectBackingType@enum MIDIUMPCIObjectBackingType
Network MIDI 4
Classes that establish and manage MIDI sessions over the network.
- ClMIDINetworkSessioniOS 4.2+An object that manages MIDI communication over a network connection.
- ClMIDINetworkHostiOS 4.2+An object that identifies a host participating in a network MIDI session.
- ClMIDINetworkConnectioniOS 4.2+An object that represents a connection between a host and a network MIDI session.
- EnMIDINetworkConnectionPolicyConstants 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.
- ClMIDI2DeviceInfoiOS 18.0+@class MIDI2DeviceInfo
- StMIDI2DeviceManufacturerA structure that identifies the manufacturer of a MIDI 2.0 device.
- StMIDI2DeviceRevisionLevelA structure that describes the revision level of a MIDI 2.0 device.
- StMIDIDriverInterface@struct MIDIDriverInterface
- StMIDIProgramChangeOptionsAn option set that configures how a MIDI 2.0 program-change message is interpreted.
- StMIDIPerNoteManagementOptionsAn option set that configures per-note management behavior in MIDI 2.0.
Type Aliases 36
- TyMIDICIInitiatiorMUID
- TyMIDICIProfileChangedBlock
- TyMIDICISessionDisconnectBlock
- TyMIDICIProfileSpecificDataBlock
- TyMIDICIDiscoveryResponseBlock
- TyMIDIDriverRef@typedef MIDIDriverRef
- TyMIDIDeviceListRef@typedef MIDIDeviceListRef
- TyMIDIUInteger2MIDI unsigned integer types
- TyMIDIUInteger4
- TyMIDIUInteger7
- TyMIDIUInteger14
- TyMIDIUInteger28
- TyMIDIUMPGroupNumberType for all UMP Groups
- TyMIDIChannelNumberMIDI Channel, 0~15 (channels 1 through 16, respectively).
- TyMIDICIDeviceIDSome MIDI-CI messages use a CI device ID, which is either a UMP group or a reserved 7-bit value
- TyMIDICIMUIDThe unique MIDI-CI negotiation identifier (MUID) used for a MIDICIResponder connection.
Show 20 more
- TyMIDIMessage_32
- TyMIDIEventVisitorA callback function which receives a single MIDIUniversalMessage.
- TyMIDIObjectRef@typedef MIDIObjectRef
- TyMIDIClientRef@typedef MIDIClientRef
- TyMIDIPortRef@typedef MIDIPortRef
- TyMIDIDeviceRef@typedef MIDIDeviceRef
- TyMIDIEntityRef@typedef MIDIEntityRef
- TyMIDIEndpointRef@typedef MIDIEndpointRef
- TyMIDITimeStamp@typedef MIDITimeStamp
- TyMIDIUniqueID@typedef MIDIUniqueID
- TyMIDINotifyProc@typedef MIDINotifyProc
- TyMIDINotifyBlock@typedef MIDINotifyBlock
- TyMIDIReceiveBlock@typedef MIDIReceiveBlock
- TyMIDIReadProc@typedef MIDIReadProc
- TyMIDIReadBlock@typedef MIDIReadBlock
- TyMIDICompletionProc@typedef MIDICompletionProc
- TyMIDICompletionProcUMP@typedef MIDICompletionProcUMP
- TyMIDISetupRef@typedef MIDISetupRef
- TyMIDIThruConnectionRefAn opaque reference to a play-through connection.
- TyMIDIUMPFunctionBlockID@typedef MIDIUMPFunctionBlockID