Skip to content

CoreMIDI iOS xcode13.0 beta3

Rachel Kang edited this page Jul 30, 2021 · 3 revisions

#CoreMIDI.framework

diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h	2021-06-22 17:34:09.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h	2021-07-13 00:34:09.000000000 -0400
@@ -225,28 +225,28 @@
  	@brief  A block called when a device notifies that a profile has been enabled or disabled.
 */
 typedef void (^MIDICIProfileChangedBlock)(
-				MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, BOOL enabled);
+				MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, BOOL enabled) MIDICI1_1_AVAILABILITY;
 
 /*!
      @fn     MIDICISessionDisconnectBlock
      @brief  A block called when a MIDICISession has been disconnected. If called, the MIDICISession should be destroyed.
 */
 typedef void (^MIDICISessionDisconnectBlock)(
-                MIDICISession *session, NSError *error);
+                MIDICISession *session, NSError *error) MIDICI1_1_AVAILABILITY;
 
 /*!
      @fn     MIDICIProfileSpecificDataBlock
      @brief  A block called when a MIDICISession or MIDICIResponder receives profile-specific data.
 */
 typedef void (^MIDICIProfileSpecificDataBlock)(
-                MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, NSData *profileSpecificData);
+                MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, NSData *profileSpecificData) MIDICI1_1_AVAILABILITY;
 
 /*!
      @fn     MIDICIDiscoveryResponseBlock
      @brief  A block called when a MIDI-CI node discovery is complete.
 */
 typedef void (^MIDICIDiscoveryResponseBlock)(
-                NSArray<MIDICIDiscoveredNode *> *discoveredNodes);
+                NSArray<MIDICIDiscoveredNode *> *discoveredNodes) MIDICI1_1_AVAILABILITY;
 
 // =================================================================================================
 
diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h	2021-06-17 14:34:03.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h	2021-07-13 00:40:02.000000000 -0400
@@ -323,7 +323,7 @@
 					
 					New for CoreMIDI 1.1.
 */
-extern const CFStringRef kMIDIDriverPropertyUsesSerial		API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos);
+extern const CFStringRef kMIDIDriverPropertyUsesSerial		API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 #ifdef __cplusplus
@@ -359,7 +359,7 @@
 extern OSStatus		MIDIDeviceCreate(MIDIDriverRef __nullable owner,
 							CFStringRef name, CFStringRef manufacturer,
 							CFStringRef model, MIDIDeviceRef *outDevice)
-																API_AVAILABLE(macos(10.0), ios(4.2));
+																API_AVAILABLE(macos(10.0), ios(4.2))  API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -378,7 +378,7 @@
 						The device to be disposed.
 	@result			An OSStatus result code.
 */
-extern OSStatus		MIDIDeviceDispose(MIDIDeviceRef device)		API_AVAILABLE(macos(10.3), ios(4.2));
+extern OSStatus		MIDIDeviceDispose(MIDIDeviceRef device)		API_AVAILABLE(macos(10.3), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 // ___________________________________________________________________________________________
 //	MIDIDeviceList
@@ -395,7 +395,7 @@
 	@result			The number of devices in the list, or 0 if an error occurred.
 */
 extern ItemCount		MIDIDeviceListGetNumberOfDevices(MIDIDeviceListRef devList)
-																API_AVAILABLE(macos(10.0), ios(4.2));
+																API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -411,7 +411,7 @@
 	@result			A reference to a device, or NULL if an error occurred.
 */
 extern MIDIDeviceRef	MIDIDeviceListGetDevice(MIDIDeviceListRef devList, ItemCount index0)
-																API_AVAILABLE(macos(10.0), ios(4.2));
+																API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -426,7 +426,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus		MIDIDeviceListAddDevice(MIDIDeviceListRef devList, MIDIDeviceRef dev)
-																API_AVAILABLE(macos(10.0), ios(4.2));
+																API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -439,7 +439,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus		MIDIDeviceListDispose(MIDIDeviceListRef devList)
-																API_AVAILABLE(macos(10.1), ios(4.2));
+																API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 // ___________________________________________________________________________________________
@@ -473,7 +473,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus		MIDIEndpointSetRefCons(MIDIEndpointRef endpt,
-					void * __nullable ref1, void * __nullable ref2)					API_AVAILABLE(macos(10.0), ios(4.2));
+					void * __nullable ref1, void * __nullable ref2)					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -491,7 +491,7 @@
 */
 extern OSStatus		MIDIEndpointGetRefCons(MIDIEndpointRef endpt,
 					void * __nonnull * __nullable ref1, void * __nonnull * __nullable ref2)
-																					API_AVAILABLE(macos(10.0), ios(4.2));
+																					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 // ___________________________________________________________________________________________
 
@@ -515,7 +515,7 @@
 
 	@result			The CFRunLoopRef of the server's driver I/O thread.
 */
-extern CFRunLoopRef	MIDIGetDriverIORunLoop(void)			API_AVAILABLE(macos(10.0), ios(4.2));
+extern CFRunLoopRef	MIDIGetDriverIORunLoop(void)			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -533,7 +533,7 @@
 	@result			The requested device list.
 */
 extern MIDIDeviceListRef	MIDIGetDriverDeviceList(MIDIDriverRef __nonnull driver)
-															API_AVAILABLE(macos(10.1), ios(4.2));
+															API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -551,7 +551,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus			MIDIDriverEnableMonitoring(MIDIDriverRef __nonnull driver, Boolean enabled)
-															API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos);
+															API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 #ifdef __cplusplus
diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h	2021-06-11 13:34:05.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h	2021-07-13 00:36:41.000000000 -0400
@@ -16,6 +16,12 @@
 #define CoreMIDI_MIDIMessage_h
 
 #include <CoreFoundation/CFBase.h>
+#include <CoreMIDI/MIDIServices.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 
 //==================================================================================================
 #pragma mark -
@@ -87,22 +93,45 @@
 	kMIDIStatusSystemReset			= 0xFF
 };
 
-// kMIDIMessageTypeSysEx / Data (MT=3) message status nibbles.
+// kMIDIMessageTypeSysEx / kMIDIMessageTypeData128 status nibbles.
 typedef CF_ENUM(unsigned int, MIDISysExStatus) {
 	kMIDISysExStatusComplete        = 0x0,
 	kMIDISysExStatusStart           = 0x1,
 	kMIDISysExStatusContinue        = 0x2,
-	kMIDISysExStatusEnd             = 0x3
+	kMIDISysExStatusEnd             = 0x3,
+
+	// MIDI 2.0
+	kMIDISysExMixedDataSetHeader	= 0x8,
+	kMIDISysExMixedDataSetPayload	= 0x9
+};
+
+// kMIDIMessageTypeUtility status nibbles.
+typedef CF_ENUM(unsigned int, MIDIUtilityStatus) {
+	kMIDIUtilityStatusNOOP						= 0x0,
+	kMIDIUtilityStatusJitterReductionClock		= 0x1,
+	kMIDIUtilityStatusJitterReductionTimestamp	= 0x2
 };
 
 // MIDI 2.0 Note On/Off Message Attribute Types
-enum {
+typedef CF_ENUM(UInt8, MIDINoteAttributeType) {
 	kMIDINoteAttributeNone					= 0x0,	// no attribute data
 	kMIDINoteAttributeManufacturerSpecific	= 0x1,	// Manufacturer-specific = unknown
 	kMIDINoteAttributeProfileSpecific		= 0x2,	// MIDI-CI profile-specific data
 	kMIDINoteAttributePitch					= 0x3	// Pitch 7.9
 };
 
+// MIDI 2.0 Program Change Options
+typedef CF_OPTIONS(UInt8, MIDIProgramChangeOptions) {
+    kMIDIProgramChangeBankValid = 0x1
+};
+
+// MIDI 2.0 Per Note Management Options
+typedef CF_OPTIONS(UInt8, MIDIPerNoteManagementOptions) {
+    kMIDIPerNoteManagementReset = 0x1,
+    kMIDIPerNoteManagementDetach = 0x2
+};
+
+
 
 //==================================================================================================
 #pragma mark -
@@ -280,4 +309,228 @@
 	return MIDI2ChannelVoiceMessage(group, kMIDICVStatusPerNotePitchBend, channel, (UInt16)(noteNumber) << 8, value);
 }
 
+//==================================================================================================
+#pragma mark -
+#pragma mark UMP message helper functions for reading
+
+/*!
+    @struct    MIDIUniversalMessage
+    @abstract  A representation of all possible messages stored in a Universal MIDI packet.
+*/
+typedef struct MIDIUniversalMessage {
+	MIDIMessageType  type;    //!< determines which variant in the union is active
+	UInt8            group;   //!< 4 bit MIDI group
+	UInt8            reserved[3];
+
+	union {
+		struct {
+			MIDIUtilityStatus status;  //!< determines which variant is active
+			union {
+				UInt16 jitterReductionClock;      //!< active when status is kMIDIUtilityStatusJitterReductionClock
+				UInt16 jitterReductionTimestamp;  //!< active when status is kMIDIUtilityStatusJitterReductionTimestamp
+			};
+		} utility;   //!< active when type is kMIDIMessageTypeUtility
+
+		struct {
+			MIDISystemStatus status;  //!< determines which variant is active
+			union {
+				UInt8  timeCode;             //!< active when status is kMIDIStatusMTC
+				UInt16 songPositionPointer;  //!< active when status is kMIDIStatusSongPosPointer
+				UInt8  songSelect;           //!< active when status is kMIDIStatusSongSelect
+			};
+		} system;   //!< active when type is kMIDIMessageTypeSystem
+
+		struct {
+			MIDICVStatus  status;   //!< determines which variant is active
+			UInt8         channel;  //!< MIDI channel 0-15
+			UInt8         reserved[3];
+			union {
+				struct {
+					UInt8 number;    //!< 7 bit note number
+					UInt8 velocity;  //!< 7 bit note velocity
+				} note;   //!< active when status is kMIDICVStatusNoteOff or kMIDICVStatusNoteOn
+
+				struct
+				{
+					UInt8 noteNumber;  //!< 7 bit note number
+					UInt8 pressure;    //!< 7 bit poly pressure data
+				} polyPressure;   //!< active when status is kMIDICVStatusPolyPressure
+
+				struct {
+					UInt8 index;  //!< 7 bit index of control parameter
+					UInt8 data;   //!< 7 bit value for control parameter
+				} controlChange;  //!< active when status is kMIDICVStatusControlChange
+
+				UInt8  program;          //!< 7 bit program nr, active when status is kMIDICVStatusProgramChange
+				UInt8  channelPressure;  //!< 7 bit channel pressure, active when status is kMIDICVStatusChannelPressure
+				UInt16 pitchBend;        //!< 7 bit pitch bend active when status is kMIDICVStatusPitchBend
+			};
+		} channelVoice1;   //!< active when type is kMIDIMessageTypeChannelVoice1
+
+		struct {
+			MIDISysExStatus status;
+			UInt8           channel;  //!< MIDI channel 0-15
+			UInt8           data[6];  //!< SysEx data, 7 bit values
+			UInt8           reserved;
+		} sysEx;   //!< active when type is kMIDIMessageTypeSysEx
+
+		struct {
+			MIDICVStatus  status;   //!< determines which variant is active
+			UInt8         channel;  //!< MIDI channel
+			UInt8         reserved[3];
+			union {
+				struct {
+					UInt8                 number;         //!< 7 bit note number
+					MIDINoteAttributeType attributeType;  //!< attribute type
+					UInt16                velocity;       //!< note velocity
+					UInt16                attribute;      //!< attribute data
+				} note;    //!< active when status is kMIDICVStatusNoteOff or kMIDICVStatusNoteOn
+
+				struct
+				{
+					UInt8  noteNumber;  //!< 7 bit note number
+					UInt8  reserved;
+					UInt32 pressure;    //!< pressure value
+				} polyPressure;         //!< active when status is kMIDICVStatusPolyPressure
+
+				struct {
+					UInt8  index;     //!< 7 bit controller number
+					UInt8  reserved;
+					UInt32 data;      //!< controller value
+				} controlChange;      //!< active when status is kMIDICVStatusControlChange
+
+				struct {
+					MIDIProgramChangeOptions options;
+					UInt8   program;     //!< 7 bit program number
+					UInt8   reserved[2];
+					UInt16  bank;        //!< 14 bit bank
+				} programChange;         //!< active when status is kMIDICVStatusProgramChange
+
+				struct {
+					UInt32 data;         //!< channel pressure data
+					UInt8  reserved[2];
+				} channelPressure;       //!< active when status is kMIDICVStatusChannelPressure
+
+				struct {
+					UInt32 data;         //!< pitch bend data
+					UInt8  reserved[2];
+				} pitchBend;             //!< active when status is kMIDICVStatusPitchBend
+
+				struct {
+					UInt8  noteNumber;   //!< 7 bit note number
+					UInt8  index;        //!< 7 bit controller number
+					UInt32 data;         //!< controller data
+				} perNoteController;     //!< active when status is kMIDICVStatusRegisteredPNC or kMIDICVStatusAssignablePNC
+
+				struct {
+					UInt8  bank;    //!< 7 bit bank
+					UInt8  index;   //!< 7 bit controller number
+					UInt32 data;    //!< controller data
+				} controller;       //!< active when status is any of kMIDICVStatusRegisteredControl, kMIDICVStatusAssignableControl, kMIDICVStatusRelRegisteredControl, or kMIDICVStatusRelAssignableControl
+
+				struct {
+					UInt8  noteNumber;   //!< 7 bit note number
+					UInt8  reserved;
+					UInt32 bend;         //!< per note pitch bend value
+				} perNotePitchBend;      //!< active when status is kMIDICVStatusPerNotePitchBend
+
+				struct {
+					UInt8 note;         //!< 7 bit note number
+					MIDIPerNoteManagementOptions options;
+					UInt8 reserved[4];
+				} perNoteManagement;    //!< active when status is kMIDICVStatusPerNoteMgmt
+			};
+		} channelVoice2;  //!< active when type is kMIDIMessageTypeChannelVoice2
+
+		struct {
+			MIDISysExStatus status;    //!< determines which variant is active
+			union {
+				struct {
+					UInt8 byteCount;   //!< byte count of data including stream ID (1-14 bytes)
+					UInt8 streamID;
+					UInt8 data[13];
+					UInt8 reserved;
+				} sysex8;   //!< active when status any of kMIDISysExStatusComplete, kMIDISysExStatusStart, kMIDISysExStatusContinue, or kMIDISysExStatusEnd
+
+				struct {
+					UInt8 mdsID;      //!< mixed data set ID
+					UInt8 data[14];
+					UInt8 reserved;
+				} mixedDataSet;   //!< active when status is kMIDISysExMixedDataSetHeader or kMIDISysExMixedDataSetPayload
+			};
+		} data128;   //!< active when type is kMIDIMessageTypeData128
+
+		struct {
+			UInt32 words[4];  //!< up to four 32 bit words
+		} unknown;            //!< active when type is kMIDIMessageTypeUnknownF
+	};
+} MIDIUniversalMessage;
+
+
+/*!
+	@typedef	MIDIEventVisitor
+
+	@abstract	A callback function which receives a single MIDIUniversalMessage.
+
+	@discussion
+		This callback function is called by MIDIEventListForEachEvent on every UMP
+		that has been parsed from a MIDIEventList. From the provided `MIDIUniversalMessage`
+		the MIDI information can be accessed, e.g.:
+		```
+		void myMIDIMessageVisitor(void* context, MIDITimeStamp timeStamp, MIDIUniversalMessage message) {
+			switch (message.type) {
+			case kMIDIMessageTypeSystem:
+				...
+			case kMIDIMessageTypeChannelVoice2:
+				switch (message.channelVoice2.status) {
+				case kMIDICVStatusNoteOff:
+					// access message.channelVoice2.note.number, etc.
+					...
+				case kMIDICVStatusNoteOn:
+					...
+				case kMIDICVStatusPerNotePitchBend:
+					...
+				}
+			}
+		}
+		```
+
+	@param		context
+		A context provided by the client via call to MIDIEventListForEachEvent.
+
+	@param		timeStamp
+		The timestamp of the current UMP.
+
+	@param		message
+		A filled MIDIUniversalMessage struct that has been parsed from a single UMP.
+*/
+typedef void (*MIDIEventVisitor)(void* context, MIDITimeStamp timeStamp, MIDIUniversalMessage message);
+
+/*!
+	@typedef		MIDIEventListForEachEvent
+	@abstract		Parses UMPs from a MIDIEventList.
+	@discussion
+		MIDIEventListForEachEvent iterates over all UMPs in the provided MIDIEventList.
+		It parses each UMP and fills a MIDIUniversalMessage struct. It calls the provided
+		visitor on each of these UMPs. In case of an unknown UMP the raw UMP words will be provided.
+
+	@param			evtlist
+						The MIDIEventList which is to be parsed.
+
+	@param			visitor
+						The visitor that is called on each UMP in evtlist.
+
+	@param			visitorContext
+						A context for the visitor that is passed to it when being called.
+
+*/
+extern void MIDIEventListForEachEvent(
+	const MIDIEventList* evtlist, MIDIEventVisitor visitor, void* visitorContext)
+									API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif // CoreMIDI_MIDIMessage_h
diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h	2021-06-17 03:43:51.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h	2021-07-13 00:34:10.000000000 -0400
@@ -362,7 +362,7 @@
 						identifies the source of the data.
 */
 typedef void
-(*MIDIReadProc)(const MIDIPacketList *pktlist, void * __nullable readProcRefCon, void * __nullable srcConnRefCon);
+(*MIDIReadProc)(const MIDIPacketList *pktlist, void * __nullable readProcRefCon, void * __nullable srcConnRefCon) API_DEPRECATED("use MIDIReceiveBlock and MIDIEventLists", macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@typedef		MIDIReadBlock
@@ -382,7 +382,7 @@
 						identifies the source of the data.
 */
 typedef void
-(^MIDIReadBlock)(const MIDIPacketList *pktlist, void * __nullable srcConnRefCon);
+(^MIDIReadBlock)(const MIDIPacketList *pktlist, void * __nullable srcConnRefCon) API_DEPRECATED("use MIDIReceiveBlock and MIDIEventLists", macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@typedef		MIDICompletionProc
@@ -708,7 +708,7 @@
 		A setup editor may allow the user to set the names of both driver-owned and external
 		devices.
 */
-extern const CFStringRef	kMIDIPropertyName					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyName					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyManufacturer
@@ -721,7 +721,7 @@
 
 		Creators of virtual endpoints may set this property on their endpoints.
 */
-extern const CFStringRef	kMIDIPropertyManufacturer			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyManufacturer			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyModel
@@ -734,7 +734,7 @@
 
 		Creators of virtual endpoints may set this property on their endpoints.
 */
-extern const CFStringRef	kMIDIPropertyModel					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyModel					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyUniqueID
@@ -745,7 +745,7 @@
 		this property on their endpoints, though doing so may fail if the chosen ID is not
 		unique.
 */
-extern const CFStringRef	kMIDIPropertyUniqueID				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyUniqueID				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyDeviceID
@@ -758,7 +758,7 @@
 
 		Setup editors may allow the user to set this property on external devices.
 */
-extern const CFStringRef	kMIDIPropertyDeviceID				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyDeviceID				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceiveChannels
@@ -774,7 +774,7 @@
 
 		Virtual destination may set this property on their endpoints.
 */
-extern const CFStringRef	kMIDIPropertyReceiveChannels		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceiveChannels		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitChannels
@@ -784,7 +784,7 @@
 		The value is a bitmap of channels on which the object transmits: 1=ch 1, 2=ch 2, 4=ch 3
 		... 0x8000=ch 16.
 */
-extern const CFStringRef	kMIDIPropertyTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyMaxSysExSpeed
@@ -795,7 +795,7 @@
 		The value is the maximum rate, in bytes/second, at which sysex messages may
 		be sent reliably to this object. (The default value is 3125, as with MIDI 1.0)
 */
-extern const CFStringRef	kMIDIPropertyMaxSysExSpeed			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyMaxSysExSpeed			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -817,7 +817,7 @@
 		time, it receives timestamped messages as soon as they are sent, and must do its own
 		internal scheduling of received events.
 */
-extern const CFStringRef	kMIDIPropertyAdvanceScheduleTimeMuSec	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyAdvanceScheduleTimeMuSec	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyIsEmbeddedEntity
@@ -826,7 +826,7 @@
 
 		0 if there are external MIDI connectors, 1 if not.
 */
-extern const CFStringRef	kMIDIPropertyIsEmbeddedEntity			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsEmbeddedEntity			API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -837,7 +837,7 @@
 		1 if the endpoint broadcasts messages to all of the other endpoints in the device, 0 if
 		not.  Set by the owning driver; should not be touched by other clients.
 */
-extern const CFStringRef	kMIDIPropertyIsBroadcast				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsBroadcast				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertySingleRealtimeEntity
@@ -852,7 +852,7 @@
 		entity on which incoming realtime messages from the device will appear to have
 		originated from.
 */
-extern const CFStringRef	kMIDIPropertySingleRealtimeEntity		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertySingleRealtimeEntity		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyConnectionUniqueID
@@ -873,7 +873,7 @@
 		signifies a MIDI Thru connection to another external device/entity/endpoint (again,
 		it is strongly recommended that it be an endpoint).
 */
-extern const CFStringRef	kMIDIPropertyConnectionUniqueID			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyConnectionUniqueID			API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -885,7 +885,7 @@
 		the device; should not be touched by other clients. Property is inherited from the
 		device by its entities and endpoints.
 */
-extern const CFStringRef	kMIDIPropertyOffline					API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyOffline					API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyPrivate
@@ -896,7 +896,7 @@
 		but they will still appear in the API; only affects whether the owned endpoints are
 		hidden.
 */
-extern const CFStringRef	kMIDIPropertyPrivate					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyPrivate					API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyDriverOwner
@@ -907,7 +907,7 @@
 		not be touched by other clients. Property is inherited from the device by its entities
 		and endpoints.
 */
-extern const CFStringRef	kMIDIPropertyDriverOwner				API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyDriverOwner				API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyFactoryPatchNameFile
@@ -919,7 +919,7 @@
 		Added in CoreMIDI 1.1 (Mac OS X 10.1).  DEPRECATED as of CoreMIDI 1.3. Use
 		kMIDIPropertyNameConfiguration instead.
 */
-extern const CFStringRef	kMIDIPropertyFactoryPatchNameFile		API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos);
+extern const CFStringRef	kMIDIPropertyFactoryPatchNameFile		API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 /*!
@@ -932,7 +932,7 @@
 		Added in CoreMIDI 1.1 (Mac OS X 10.1).  DEPRECATED as of CoreMIDI 1.3. Use
 		kMIDIPropertyNameConfiguration instead.
 */
-extern const CFStringRef	kMIDIPropertyUserPatchNameFile			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos);
+extern const CFStringRef	kMIDIPropertyUserPatchNameFile			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyNameConfiguration
@@ -969,7 +969,7 @@
 		other than the ones they are interested in changing and to properly structure the
 		dictionary.
 */
-extern const CFStringRef	kMIDIPropertyNameConfiguration			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfigurationDictionary", macos(10.2, 10.15), ios(4.2, 13.0), tvos(12.0, 13.0));
+extern const CFStringRef	kMIDIPropertyNameConfiguration			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfigurationDictionary", macos(10.2, 10.15), ios(4.2, 13.0)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
     @constant        kMIDIPropertyNameConfigurationDictionary
@@ -1001,7 +1001,7 @@
         other than the ones they are interested in changing and to properly structure the
         dictionary.
 */
-extern const CFStringRef    kMIDIPropertyNameConfigurationDictionary            API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
+extern const CFStringRef    kMIDIPropertyNameConfigurationDictionary            API_AVAILABLE(macos(10.15), ios(13.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyImage
@@ -1015,7 +1015,7 @@
 
 		A studio setup editor should allow the user to choose icons for external devices.
 */
-extern const CFStringRef	kMIDIPropertyImage						API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyImage						API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyDriverVersion
@@ -1024,7 +1024,7 @@
 		driver (only for driver- owned devices).  Drivers need not set this property;
 		applications should not write to it.
 */
-extern const CFStringRef	kMIDIPropertyDriverVersion				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyDriverVersion				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertySupportsGeneralMIDI
@@ -1032,7 +1032,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity implements
 		the General MIDI specification.
 */
-extern const CFStringRef	kMIDIPropertySupportsGeneralMIDI		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertySupportsGeneralMIDI		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertySupportsMMC
@@ -1040,7 +1040,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity implements
 		the MIDI Machine Control portion of the MIDI specification.
 */
-extern const CFStringRef	kMIDIPropertySupportsMMC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertySupportsMMC				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyCanRoute
@@ -1049,7 +1049,7 @@
 		MIDI messages to or from other external MIDI devices (as with MIDI patch bays). This
 		should NOT be set on devices which are controlled by drivers.
 */
-extern const CFStringRef	kMIDIPropertyCanRoute					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyCanRoute					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesClock
@@ -1057,7 +1057,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity  responds
 		to MIDI beat clock messages.
 */
-extern const CFStringRef	kMIDIPropertyReceivesClock				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesClock				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesMTC
@@ -1065,7 +1065,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity responds
 		to MIDI Time Code messages.
 */
-extern const CFStringRef	kMIDIPropertyReceivesMTC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesMTC				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesNotes
@@ -1073,7 +1073,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity responds
 		to MIDI Note On messages.
 */
-extern const CFStringRef	kMIDIPropertyReceivesNotes				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesNotes				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesProgramChanges
@@ -1081,7 +1081,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity responds
 		to MIDI program change messages.
 */
-extern const CFStringRef	kMIDIPropertyReceivesProgramChanges		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesProgramChanges		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesBankSelectMSB
@@ -1089,7 +1089,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity responds
 		to MIDI bank select MSB messages (control 0).
 */
-extern const CFStringRef	kMIDIPropertyReceivesBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyReceivesBankSelectLSB
@@ -1097,7 +1097,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity responds
 		to MIDI bank select LSB messages (control 32).
 */
-extern const CFStringRef	kMIDIPropertyReceivesBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyReceivesBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsClock
@@ -1105,7 +1105,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI beat clock messages.
 */
-extern const CFStringRef	kMIDIPropertyTransmitsClock				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsClock				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsMTC
@@ -1113,7 +1113,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI Time Code messages.
 */
-extern const CFStringRef	kMIDIPropertyTransmitsMTC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsMTC				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsNotes
@@ -1121,7 +1121,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI note messages.
 */
-extern const CFStringRef	kMIDIPropertyTransmitsNotes				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsNotes				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsProgramChanges
@@ -1129,7 +1129,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI program change messages.
 */
-extern const CFStringRef	kMIDIPropertyTransmitsProgramChanges	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsProgramChanges	API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsBankSelectMSB
@@ -1137,7 +1137,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI bank select MSB messages (control 0).
 */
-extern const CFStringRef	kMIDIPropertyTransmitsBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyTransmitsBankSelectLSB
@@ -1145,7 +1145,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity transmits
 		MIDI bank select LSB messages (control 32).
 */
-extern const CFStringRef	kMIDIPropertyTransmitsBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyTransmitsBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyPanDisruptsStereo
@@ -1154,7 +1154,7 @@
 		10), when sent to the device or entity, cause undesirable effects when playing stereo
 		sounds (e.g. converting the signal to mono).
 */
-extern const CFStringRef	kMIDIPropertyPanDisruptsStereo			API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyPanDisruptsStereo			API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyIsSampler
@@ -1162,7 +1162,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity plays
 		audio samples in response to MIDI note messages.
 */
-extern const CFStringRef	kMIDIPropertyIsSampler					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsSampler					API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyIsDrumMachine
@@ -1170,7 +1170,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity's sound
 		presets tend to be collections of non-transposable samples (e.g. drum kits).
 */
-extern const CFStringRef	kMIDIPropertyIsDrumMachine				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsDrumMachine				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyIsMixer
@@ -1178,7 +1178,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity mixes
 		external audio signals, controlled by MIDI messages.
 */
-extern const CFStringRef	kMIDIPropertyIsMixer					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsMixer					API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyIsEffectUnit
@@ -1186,7 +1186,7 @@
 		device/entity property, integer (0/1). Indicates whether the device or entity is
 		primarily a MIDI-controlled audio effect unit (i.e. does not generate sound on its own).
 */
-extern const CFStringRef	kMIDIPropertyIsEffectUnit				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyIsEffectUnit				API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyMaxReceiveChannels
@@ -1197,7 +1197,7 @@
 		(fully multitimbral devices). Other values are possible, for example devices which are
 		multi-timbral but have fewer than 16 "parts".
 */
-extern const CFStringRef	kMIDIPropertyMaxReceiveChannels			API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyMaxReceiveChannels			API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyMaxTransmitChannels
@@ -1206,7 +1206,7 @@
 		which a device may simultaneously transmit MIDI Channel Messages. Common values are 0, 1
 		and 16.
 */
-extern const CFStringRef	kMIDIPropertyMaxTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyMaxTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyDriverDeviceEditorApp
@@ -1215,7 +1215,7 @@
 		configure this driver-owned devices. Drivers may set this property on their owned
 		devices. Applications must not write to it.
 */
-extern const CFStringRef	kMIDIPropertyDriverDeviceEditorApp		API_AVAILABLE(macos(10.3), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyDriverDeviceEditorApp		API_AVAILABLE(macos(10.3), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertySupportsShowControl
@@ -1223,7 +1223,7 @@
 		device/entity property, integer (0/1). Indicates whether the device implements the MIDI
 		Show Control specification.
 */
-extern const CFStringRef	kMIDIPropertySupportsShowControl		API_AVAILABLE(macos(10.4), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertySupportsShowControl		API_AVAILABLE(macos(10.4), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@constant		kMIDIPropertyDisplayName
@@ -1235,7 +1235,7 @@
 
 		For objects other than endpoints, the display name is the same as the name.
 */
-extern const CFStringRef	kMIDIPropertyDisplayName				API_AVAILABLE(macos(10.4), ios(4.2), tvos(12.0));
+extern const CFStringRef	kMIDIPropertyDisplayName				API_AVAILABLE(macos(10.4), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	constant		kMIDIPropertyProtocolID
@@ -1246,7 +1246,7 @@
 		negotiation, by setting this property on the endpoint. Clients can observe changes to
 		this property.
 */
-extern const CFStringRef	kMIDIPropertyProtocolID					API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+extern const CFStringRef	kMIDIPropertyProtocolID					API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	Clients
@@ -1276,7 +1276,7 @@
 MIDIClientCreate(	CFStringRef					name,
 					MIDINotifyProc __nullable	notifyProc,
 					void * __nullable			notifyRefCon,
-					MIDIClientRef *				outClient )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+					MIDIClientRef *				outClient )				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIClientCreateWithBlock
@@ -1300,7 +1300,7 @@
 MIDIClientCreateWithBlock(
 					CFStringRef					name,
 					MIDIClientRef *				outClient,
-					MIDINotifyBlock __nullable	notifyBlock )			API_AVAILABLE(macos(10.11), ios(9.0), tvos(12.0));
+					MIDINotifyBlock __nullable	notifyBlock )			API_AVAILABLE(macos(10.11), ios(9.0)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1321,7 +1321,7 @@
 		disposing all of an application's MIDIClients is strongly discouraged.
 */
 extern OSStatus
-MIDIClientDispose(	MIDIClientRef client )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIClientDispose(	MIDIClientRef client )					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	Ports
@@ -1358,7 +1358,7 @@
 								CFStringRef		portName,
 								MIDIProtocolID	protocol,
 								MIDIPortRef *	outPort,
-								MIDIReceiveBlock receiveBlock )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+								MIDIReceiveBlock receiveBlock )	API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIInputPortCreate
@@ -1393,7 +1393,7 @@
 						void * __nullable	refCon,
 						MIDIPortRef * 		outPort )
 				API_DEPRECATED_WITH_REPLACEMENT("MIDIInputPortCreateWithProtocol",
-												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIInputPortCreateWithBlock
@@ -1425,7 +1425,7 @@
 								MIDIPortRef *	outPort,
 								MIDIReadBlock	readBlock )
 					API_DEPRECATED_WITH_REPLACEMENT("MIDIInputPortCreateWithProtocol",
-													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIOutputPortCreate
@@ -1453,7 +1453,7 @@
 extern OSStatus
 MIDIOutputPortCreate(	MIDIClientRef	client,
 						CFStringRef		portName,
-						MIDIPortRef *	outPort )			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+						MIDIPortRef *	outPort )			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIPortDispose
@@ -1470,7 +1470,7 @@
 		client's ports are automatically disposed at that time.
 */
 extern OSStatus
-MIDIPortDispose(	MIDIPortRef port )						API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIPortDispose(	MIDIPortRef port )						API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1491,7 +1491,7 @@
 extern OSStatus
 MIDIPortConnectSource(	MIDIPortRef		port,
 						MIDIEndpointRef	source,
-						void * __nullable			connRefCon )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+						void * __nullable			connRefCon )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1509,7 +1509,7 @@
 */
 extern OSStatus
 MIDIPortDisconnectSource(	MIDIPortRef		port,
-							MIDIEndpointRef	source )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+							MIDIEndpointRef	source )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 //==================================================================================================
@@ -1524,7 +1524,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfDevices(void)								API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetNumberOfDevices(void)								API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1554,7 +1554,7 @@
 		entities to locate endpoints.
 */
 extern MIDIDeviceRef
-MIDIGetDevice(	ItemCount deviceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetDevice(	ItemCount deviceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIDeviceGetNumberOfEntities
@@ -1568,7 +1568,7 @@
 					error occurred.
 */
 extern ItemCount
-MIDIDeviceGetNumberOfEntities(	MIDIDeviceRef device )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIDeviceGetNumberOfEntities(	MIDIDeviceRef device )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIDeviceGetEntity
@@ -1585,7 +1585,7 @@
 */
 extern MIDIEntityRef
 MIDIDeviceGetEntity(	MIDIDeviceRef	device,
-						ItemCount		entityIndex0 )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+						ItemCount		entityIndex0 )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	Entities
@@ -1602,7 +1602,7 @@
 					error occurred.
 */
 extern ItemCount
-MIDIEntityGetNumberOfSources(	MIDIEntityRef entity )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIEntityGetNumberOfSources(	MIDIEntityRef entity )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIEntityGetSource
@@ -1619,7 +1619,7 @@
 */
 extern MIDIEndpointRef
 MIDIEntityGetSource(	MIDIEntityRef entity,
-						ItemCount sourceIndex0 )			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+						ItemCount sourceIndex0 )			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIEntityGetNumberOfDestinations
@@ -1633,7 +1633,7 @@
 					if an error occurred.
 */
 extern ItemCount
-MIDIEntityGetNumberOfDestinations(	MIDIEntityRef entity )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIEntityGetNumberOfDestinations(	MIDIEntityRef entity )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIEntityGetDestination
@@ -1650,7 +1650,7 @@
 */
 extern MIDIEndpointRef
 MIDIEntityGetDestination(	MIDIEntityRef	entity,
-							ItemCount		destIndex0 )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+							ItemCount		destIndex0 )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIEntityGetDevice
@@ -1664,7 +1664,7 @@
 */
 extern OSStatus
 MIDIEntityGetDevice(		MIDIEntityRef		inEntity,
-							MIDIDeviceRef * __nullable		outDevice)	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+							MIDIDeviceRef * __nullable		outDevice)	API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	Endpoints
@@ -1678,7 +1678,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfSources(void)								API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetNumberOfSources(void)								API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1692,7 +1692,7 @@
 	@result			A reference to a source, or NULL if an error occurred.
 */
 extern MIDIEndpointRef
-MIDIGetSource(	ItemCount sourceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetSource(	ItemCount sourceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1704,7 +1704,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfDestinations(void)							API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetNumberOfDestinations(void)							API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 /*!
@@ -1718,7 +1718,7 @@
 	@result			A reference to a destination, or NULL if an error occurred.
 */
 extern MIDIEndpointRef
-MIDIGetDestination(	ItemCount destIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIGetDestination(	ItemCount destIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIEndpointGetEntity
@@ -1735,7 +1735,7 @@
 */
 extern OSStatus
 MIDIEndpointGetEntity(		MIDIEndpointRef		inEndpoint,
-							MIDIEntityRef * __nullable		outEntity)	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+							MIDIEntityRef * __nullable		outEntity)	API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIDestinationCreateWithProtocol
@@ -1777,7 +1777,7 @@
 									CFStringRef  		name,
 									MIDIProtocolID		protocol,
 									MIDIEndpointRef *	outDest,
-									MIDIReceiveBlock	readBlock ) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+									MIDIReceiveBlock	readBlock ) API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIDestinationCreate
@@ -1820,7 +1820,7 @@
 						void * __nullable	refCon,
 						MIDIEndpointRef *	outDest )
 				API_DEPRECATED_WITH_REPLACEMENT("MIDIDestinationCreateWithProtocol",
-												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIDestinationCreateWithBlock
@@ -1860,7 +1860,7 @@
 								MIDIEndpointRef * 	outDest,
 								MIDIReadBlock 		readBlock )
 					API_DEPRECATED_WITH_REPLACEMENT("MIDIDestinationCreateWithProtocol",
-													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDISourceCreateWithProtocol
@@ -1897,7 +1897,7 @@
 MIDISourceCreateWithProtocol(	MIDIClientRef 		client,
 								CFStringRef  		name,
 								MIDIProtocolID		protocol,
-								MIDIEndpointRef * 	outSrc ) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+								MIDIEndpointRef * 	outSrc ) API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDISourceCreate
@@ -1930,7 +1930,7 @@
 					CFStringRef  		name,
 					MIDIEndpointRef * 	outSrc )
 			API_DEPRECATED_WITH_REPLACEMENT("MIDISourceCreateWithProtocol",
-											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIEndpointDispose
@@ -1943,7 +1943,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDIEndpointDispose(	MIDIEndpointRef endpt )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDIEndpointDispose(	MIDIEndpointRef endpt )				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 //==================================================================================================
@@ -1963,7 +1963,7 @@
 		adds them.
 */
 extern ItemCount
-MIDIGetNumberOfExternalDevices(void)						API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+MIDIGetNumberOfExternalDevices(void)						API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIGetExternalDevice
@@ -1979,7 +1979,7 @@
 		Use this to enumerate the external devices in the system.
 */
 extern MIDIDeviceRef
-MIDIGetExternalDevice(	ItemCount deviceIndex0 )			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+MIDIGetExternalDevice(	ItemCount deviceIndex0 )			API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	Objects and Properties
@@ -2003,7 +2003,7 @@
 extern OSStatus
 MIDIObjectGetIntegerProperty(	MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								SInt32 *		outValue )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								SInt32 *		outValue )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectSetIntegerProperty
@@ -2024,7 +2024,7 @@
 extern OSStatus
 MIDIObjectSetIntegerProperty(	MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								SInt32			value )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								SInt32			value )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectGetStringProperty
@@ -2045,7 +2045,7 @@
 extern OSStatus
 MIDIObjectGetStringProperty(	MIDIObjectRef			obj,
 								CFStringRef				propertyID,
-								CFStringRef __nullable * __nonnull str )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								CFStringRef __nullable * __nonnull str )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectSetStringProperty
@@ -2066,7 +2066,7 @@
 extern OSStatus
 MIDIObjectSetStringProperty(	MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFStringRef		str )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								CFStringRef		str )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectGetDataProperty
@@ -2088,7 +2088,7 @@
 extern OSStatus
 MIDIObjectGetDataProperty(		MIDIObjectRef			obj,
 								CFStringRef				propertyID,
-								CFDataRef __nullable * __nonnull outData )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								CFDataRef __nullable * __nonnull outData )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectSetDataProperty
@@ -2109,7 +2109,7 @@
 extern OSStatus
 MIDIObjectSetDataProperty(		MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFDataRef		data )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+								CFDataRef		data )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectGetDictionaryProperty
@@ -2131,7 +2131,7 @@
 MIDIObjectGetDictionaryProperty(	MIDIObjectRef					obj,
 									CFStringRef						propertyID,
 									CFDictionaryRef __nullable * __nonnull outDict )
-															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectSetDictionaryProperty
@@ -2152,7 +2152,7 @@
 extern OSStatus
 MIDIObjectSetDictionaryProperty(MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFDictionaryRef dict )		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+								CFDictionaryRef dict )		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectGetProperties
@@ -2178,7 +2178,7 @@
 extern OSStatus
 MIDIObjectGetProperties(		MIDIObjectRef 		obj,
 								CFPropertyListRef __nullable * __nonnull outProperties,
-								Boolean				deep )	API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+								Boolean				deep )	API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectRemoveProperty
@@ -2194,7 +2194,7 @@
 extern OSStatus
 MIDIObjectRemoveProperty(		MIDIObjectRef 		obj,
 								CFStringRef			propertyID )
-															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIObjectFindByUniqueID
@@ -2220,7 +2220,7 @@
 MIDIObjectFindByUniqueID(	MIDIUniqueID 		inUniqueID,
 							MIDIObjectRef * __nullable outObject,
 							MIDIObjectType * __nullable outObjectType)
-															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
+															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //==================================================================================================
 #pragma mark	MIDI I/O
@@ -2245,7 +2245,7 @@
 extern OSStatus
 MIDISendEventList(	MIDIPortRef 				port,
 					MIDIEndpointRef 			dest,
-					const MIDIEventList *		evtlist )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+					const MIDIEventList *		evtlist )	API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDISend
@@ -2269,7 +2269,7 @@
 			MIDIEndpointRef 		dest,
 			const MIDIPacketList *	pktlist )
 	API_DEPRECATED_WITH_REPLACEMENT("MIDISendEventList",
-									macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+									macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
     
 /*!
 	@function		MIDISendSysex
@@ -2284,7 +2284,7 @@
 		request->data must point to a single MIDI system-exclusive message, or portion thereof.
 */
 extern OSStatus
-MIDISendSysex(	MIDISysexSendRequest *request )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
+MIDISendSysex(	MIDISysexSendRequest *request )				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIReceivedEventList
@@ -2309,7 +2309,7 @@
 */
 extern OSStatus
 MIDIReceivedEventList(	MIDIEndpointRef			src,
-						const MIDIEventList *	evtlist )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+						const MIDIEventList *	evtlist )	API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIReceived
@@ -2336,7 +2336,7 @@
 MIDIReceived(	MIDIEndpointRef			src,
 				const MIDIPacketList * 	pktlist )
 		API_DEPRECATED_WITH_REPLACEMENT("MIDIReceivedEventList",
-										macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+										macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIFlushOutput
@@ -2353,7 +2353,7 @@
 		scheduled for future delivery.
 */
 extern OSStatus
-MIDIFlushOutput(	MIDIEndpointRef		dest )				API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+MIDIFlushOutput(	MIDIEndpointRef		dest )				API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
 	@function		MIDIRestart
@@ -2366,7 +2366,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDIRestart(void)											API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
+MIDIRestart(void)											API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 
 
@@ -2404,7 +2404,7 @@
 */
 extern MIDIEventPacket *
 MIDIEventListInit(	MIDIEventList *evtlist,
-					MIDIProtocolID protocol)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+					MIDIProtocolID protocol)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0), watchos(8.0));
 
 /*!
 	@function		MIDIEventListAdd
@@ -2442,7 +2442,7 @@
 					MIDIEventPacket *	curPacket,
 					MIDITimeStamp		time,
 					ByteCount			wordCount,
-					const UInt32 *		words)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
+					const UInt32 *		words)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0), watchos(8.0));
 
 //==================================================================================================
 #pragma mark Packet Lists (Deprecated in favor of Event Lists)
@@ -2490,7 +2490,7 @@
 extern MIDIPacket *
 MIDIPacketListInit(	MIDIPacketList *pktlist )
 			API_DEPRECATED_WITH_REPLACEMENT("MIDIEventListInit",
-											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 /*!
 	@function		MIDIPacketListAdd
@@ -2528,7 +2528,7 @@
 					ByteCount			nData,
 					const Byte *		data)
 			API_DEPRECATED_WITH_REPLACEMENT("MIDIEventListAdd",
-											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 
 #ifdef __cplusplus
diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h	2021-06-22 17:34:09.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h	2021-07-13 00:38:06.000000000 -0400
@@ -78,7 +78,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDISetupCreate(	MIDISetupRef *outSetup )					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+MIDISetupCreate(	MIDISetupRef *outSetup )					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 //  -----------------------------------------------------------------------------
@@ -96,7 +96,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDISetupDispose(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+MIDISetupDispose(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -120,7 +120,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDISetupInstall(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+MIDISetupInstall(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 //  -----------------------------------------------------------------------------
@@ -141,7 +141,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDISetupGetCurrent(	MIDISetupRef *outSetup )				API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+MIDISetupGetCurrent(	MIDISetupRef *outSetup )				API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 
 //  -----------------------------------------------------------------------------
@@ -165,7 +165,7 @@
 */
 extern OSStatus
 MIDISetupToData(	MIDISetupRef	setup,
-					CFDataRef __nullable * __nonnull outData )	API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+					CFDataRef __nullable * __nonnull outData )	API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -188,7 +188,7 @@
 */
 extern OSStatus
 MIDISetupFromData(	CFDataRef 		data, 
-					MIDISetupRef *	outSetup)					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
+					MIDISetupRef *	outSetup)					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -223,7 +223,7 @@
 MIDIDeviceNewEntity(MIDIDeviceRef device, CFStringRef name, MIDIProtocolID protocol,
 					Boolean embedded, ItemCount numSourceEndpoints,
 					ItemCount numDestinationEndpoints, MIDIEntityRef *newEntity)
-															API_AVAILABLE(macos(11.0), ios(14.0));
+															API_AVAILABLE(macos(11.0), ios(14.0)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -255,7 +255,7 @@
 MIDIDeviceAddEntity(MIDIDeviceRef device, CFStringRef name, 
 					Boolean embedded, ItemCount numSourceEndpoints,
 					ItemCount numDestinationEndpoints, MIDIEntityRef *newEntity)
-				API_DEPRECATED_WITH_REPLACEMENT("MIDIDeviceNewEntity", macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED));
+				API_DEPRECATED_WITH_REPLACEMENT("MIDIDeviceNewEntity", macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -274,7 +274,7 @@
 */
 extern OSStatus
 MIDIDeviceRemoveEntity(MIDIDeviceRef device, MIDIEntityRef entity)
-																API_AVAILABLE(macos(10.1), ios(4.2));
+																API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -298,7 +298,7 @@
 */
 extern OSStatus
 MIDIEntityAddOrRemoveEndpoints(MIDIEntityRef entity, ItemCount numSourceEndpoints,
-					ItemCount numDestinationEndpoints)			API_AVAILABLE(macos(10.2), ios(4.2));
+					ItemCount numDestinationEndpoints)			API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -315,7 +315,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupAddDevice(		MIDIDeviceRef device )					API_AVAILABLE(macos(10.1), ios(4.2));
+MIDISetupAddDevice(		MIDIDeviceRef device )					API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -337,7 +337,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupRemoveDevice(	MIDIDeviceRef device )				API_AVAILABLE(macos(10.1), ios(4.2));
+MIDISetupRemoveDevice(	MIDIDeviceRef device )				API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -351,7 +351,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupAddExternalDevice(	MIDIDeviceRef device )			API_AVAILABLE(macos(10.1), ios(4.2));
+MIDISetupAddExternalDevice(	MIDIDeviceRef device )			API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -365,7 +365,7 @@
 						The device to be removed.
 */
 extern OSStatus
-MIDISetupRemoveExternalDevice( MIDIDeviceRef device )		API_AVAILABLE(macos(10.1), ios(4.2));
+MIDISetupRemoveExternalDevice( MIDIDeviceRef device )		API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -395,7 +395,7 @@
 */
 extern OSStatus
 MIDIGetSerialPortOwner(	CFStringRef			portName, 
-						CFStringRef __nullable * __nonnull outDriverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
+						CFStringRef __nullable * __nonnull outDriverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -418,7 +418,7 @@
 */
 extern OSStatus
 MIDISetSerialPortOwner(	CFStringRef			portName, 
-						CFStringRef			driverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
+						CFStringRef			driverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -440,7 +440,7 @@
 	@result			An OSStatus result code.	
 */
 extern OSStatus
-MIDIGetSerialPortDrivers(	CFArrayRef __nullable * __nonnull outDriverNames )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
+MIDIGetSerialPortDrivers(	CFArrayRef __nullable * __nonnull outDriverNames )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos, watchos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -467,7 +467,7 @@
 extern OSStatus		
 MIDIExternalDeviceCreate(CFStringRef name, CFStringRef manufacturer, 
 							CFStringRef model, MIDIDeviceRef *outDevice)
-															API_AVAILABLE(macos(10.1), ios(4.2));
+															API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 #ifdef __cplusplus
 }
diff -ruN /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h
--- /Applications/Xcode_13.0.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h	2021-06-22 17:37:08.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h	2021-07-13 00:38:06.000000000 -0400
@@ -292,7 +292,7 @@
 extern void
 MIDIThruConnectionParamsInitialize(
                             MIDIThruConnectionParams *      inConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
     @function   MIDIThruConnectionCreate
@@ -311,7 +311,7 @@
 MIDIThruConnectionCreate(   CFStringRef __nullable          inPersistentOwnerID,
                             CFDataRef                       inConnectionParams,
                             MIDIThruConnectionRef *         outConnection )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
     @function   MIDIThruConnectionDispose
@@ -322,7 +322,7 @@
 */
 extern OSStatus
 MIDIThruConnectionDispose(  MIDIThruConnectionRef           connection )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
     @function   MIDIThruConnectionGetParams
@@ -339,7 +339,7 @@
 extern OSStatus
 MIDIThruConnectionGetParams(MIDIThruConnectionRef           connection,
                             CFDataRef __nonnull * __nonnull outConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
     @function   MIDIThruConnectionSetParams
@@ -353,7 +353,7 @@
 extern OSStatus
 MIDIThruConnectionSetParams(MIDIThruConnectionRef           connection,
                             CFDataRef                       inConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 /*!
     @function   MIDIThruConnectionFind
@@ -367,7 +367,7 @@
 extern OSStatus
 MIDIThruConnectionFind(     CFStringRef                     inPersistentOwnerID,
                             CFDataRef __nonnull * __nonnull outConnectionList )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2));
+                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
 
 #ifdef __cplusplus
 }
Clone this wiki locally