Skip to content

CoreMIDI macOS xcode13.0 rc

Alex Soto edited this page Sep 14, 2021 · 1 revision

#CoreMIDI.framework

diff -ruN /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h	2021-08-07 05:22:25.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDICapabilityInquiry.h	2021-08-03 21:51:56.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) MIDICI1_1_AVAILABILITY;
+				MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, BOOL enabled);
 
 /*!
      @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) MIDICI1_1_AVAILABILITY;
+                MIDICISession *session, NSError *error);
 
 /*!
      @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) MIDICI1_1_AVAILABILITY;
+                MIDICISession *session, MIDIChannelNumber channel, MIDICIProfile *profile, NSData *profileSpecificData);
 
 /*!
      @fn     MIDICIDiscoveryResponseBlock
      @brief  A block called when a MIDI-CI node discovery is complete.
 */
 typedef void (^MIDICIDiscoveryResponseBlock)(
-                NSArray<MIDICIDiscoveredNode *> *discoveredNodes) MIDICI1_1_AVAILABILITY;
+                NSArray<MIDICIDiscoveredNode *> *discoveredNodes);
 
 // =================================================================================================
 
diff -ruN /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h	2021-08-07 05:22:25.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIDriver.h	2021-08-03 21:51:56.000000000 -0400
@@ -294,19 +294,18 @@
 /* 43C98C3C-306C-11D5-AF73-003065A8301E */
 
 /*!
-	@define			kMIDIDriverInterface3ID
+	@define			kMIDIDriverInterfaceXID
  
-	@abstract		The UUID for version 3 of the MIDI driver interface.
+	@abstract		The UUID for a provisional MIDI driver interface.
  
-	@discussion		This UUID uses UniversalMIDIPacket I/O functions.
-					See the description of the MIDIDriverInterface structure for
+	@discussion		See the description of the MIDIDriverInterface structure for
 					information about different versions of the MIDI driver interface.
  
 					This provisional driver interface is provided for the purpose of
                     prototyping MIDI 2.0 driver support. This driver interface will be replaced
                     in the future when transport specifications are defined.
 */
-#define kMIDIDriverInterface3ID \
+#define kMIDIDriverInterfaceXID \
 	CFUUIDGetConstantUUIDWithBytes(NULL, 0x2F, 0xD9, 0x4D, 0x0F, 0x8C, 0x2A, 0x48, 0x2A, 0x8A, 0xD8, 0x7D, 0x9E, 0xA3, 0x81, 0xC9, 0xC1)
 /* 2FD94D0F-8C2A-482A-8AD8-7D9EA381C9C1 */
 
@@ -323,7 +322,7 @@
 					
 					New for CoreMIDI 1.1.
 */
-extern const CFStringRef kMIDIDriverPropertyUsesSerial		API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+extern const CFStringRef kMIDIDriverPropertyUsesSerial		API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos);
 
 
 #ifdef __cplusplus
@@ -359,7 +358,7 @@
 extern OSStatus		MIDIDeviceCreate(MIDIDriverRef __nullable owner,
 							CFStringRef name, CFStringRef manufacturer,
 							CFStringRef model, MIDIDeviceRef *outDevice)
-																API_AVAILABLE(macos(10.0), ios(4.2))  API_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.0), ios(4.2));
 
 
 /*!
@@ -378,7 +377,7 @@
 						The device to be disposed.
 	@result			An OSStatus result code.
 */
-extern OSStatus		MIDIDeviceDispose(MIDIDeviceRef device)		API_AVAILABLE(macos(10.3), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+extern OSStatus		MIDIDeviceDispose(MIDIDeviceRef device)		API_AVAILABLE(macos(10.3), ios(4.2));
 
 // ___________________________________________________________________________________________
 //	MIDIDeviceList
@@ -395,7 +394,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_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.0), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -411,7 +410,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_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.0), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -426,7 +425,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus		MIDIDeviceListAddDevice(MIDIDeviceListRef devList, MIDIDeviceRef dev)
-																API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.0), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -439,7 +438,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus		MIDIDeviceListDispose(MIDIDeviceListRef devList)
-																API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.1), ios(4.2));
 
 
 // ___________________________________________________________________________________________
@@ -473,7 +472,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)) API_UNAVAILABLE(tvos, watchos);
+					void * __nullable ref1, void * __nullable ref2)					API_AVAILABLE(macos(10.0), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -491,7 +490,7 @@
 */
 extern OSStatus		MIDIEndpointGetRefCons(MIDIEndpointRef endpt,
 					void * __nonnull * __nullable ref1, void * __nonnull * __nullable ref2)
-																					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+																					API_AVAILABLE(macos(10.0), ios(4.2));
 
 // ___________________________________________________________________________________________
 
@@ -515,7 +514,7 @@
 
 	@result			The CFRunLoopRef of the server's driver I/O thread.
 */
-extern CFRunLoopRef	MIDIGetDriverIORunLoop(void)			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+extern CFRunLoopRef	MIDIGetDriverIORunLoop(void)			API_AVAILABLE(macos(10.0), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -533,7 +532,7 @@
 	@result			The requested device list.
 */
 extern MIDIDeviceListRef	MIDIGetDriverDeviceList(MIDIDriverRef __nonnull driver)
-															API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+															API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -551,7 +550,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus			MIDIDriverEnableMonitoring(MIDIDriverRef __nonnull driver, Boolean enabled)
-															API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos, watchos);
+															API_AVAILABLE(macos(10.1)) API_UNAVAILABLE(ios, tvos);
 
 
 #ifdef __cplusplus
diff -ruN /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h	2021-08-09 03:22:49.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIMessages.h	2021-03-16 04:44:10.000000000 -0400
@@ -16,12 +16,6 @@
 #define CoreMIDI_MIDIMessage_h
 
 #include <CoreFoundation/CFBase.h>
-#include <CoreMIDI/MIDIServices.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 
 //==================================================================================================
 #pragma mark -
@@ -34,8 +28,7 @@
 	kMIDIMessageTypeChannelVoice1   =   0x2,	// 1 word - MIDI 1.0
 	kMIDIMessageTypeSysEx           =   0x3,	// 2 words (Data, but primarily SysEx)
 	kMIDIMessageTypeChannelVoice2   =   0x4,	// 2 words - MIDI 2.0
-	kMIDIMessageTypeData128         =   0x5,	// 4 words
-	kMIDIMessageTypeUnknownF		=	0xF
+	kMIDIMessageTypeData128         =   0x5		// 4 words
 	
 	// Sizes of undefined message types:
 	// 6: 1 word
@@ -89,49 +82,25 @@
 	kMIDIStatusContinue				= 0xFB,
 	kMIDIStatusStop					= 0xFC,
 	kMIDIStatusActiveSending		= 0xFE,
-	kMIDIStatusActiveSensing		= kMIDIStatusActiveSending,
 	kMIDIStatusSystemReset			= 0xFF
 };
 
-// kMIDIMessageTypeSysEx / kMIDIMessageTypeData128 status nibbles.
+// kMIDIMessageTypeSysEx / Data (MT=3) message status nibbles.
 typedef CF_ENUM(unsigned int, MIDISysExStatus) {
 	kMIDISysExStatusComplete        = 0x0,
 	kMIDISysExStatusStart           = 0x1,
 	kMIDISysExStatusContinue        = 0x2,
-	kMIDISysExStatusEnd             = 0x3,
-
-	// MIDI 2.0
-	kMIDISysExStatusMixedDataSetHeader	= 0x8,
-	kMIDISysExStatusMixedDataSetPayload	= 0x9
-};
-
-// kMIDIMessageTypeUtility status nibbles.
-typedef CF_ENUM(unsigned int, MIDIUtilityStatus) {
-	kMIDIUtilityStatusNOOP						= 0x0,
-	kMIDIUtilityStatusJitterReductionClock		= 0x1,
-	kMIDIUtilityStatusJitterReductionTimestamp	= 0x2
+	kMIDISysExStatusEnd             = 0x3
 };
 
 // MIDI 2.0 Note On/Off Message Attribute Types
-typedef CF_ENUM(UInt8, MIDINoteAttribute) {
+enum {
 	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 -
@@ -206,22 +175,6 @@
     return (MIDIMessage_32)((UInt32)((kMIDIMessageTypeSystem << 4) | (group & 0xF)) << 24 | (UInt32)(status) << 16 | (UInt32)(byte1 & 0x7F) << 8 | (UInt32)(byte2 & 0x7F));
 }
 
-CF_INLINE MIDIMessage_64 MIDI1UPSysEx(UInt8 group, UInt8 status, UInt8 bytesUsed, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6) {
-    MIDIMessage_64 sysExOut = {};
-    sysExOut.word0 = (UInt32)((kMIDIMessageTypeSysEx << 4) | (group & 0xF)) << 24 | (UInt32)((status << 4) | (bytesUsed)) << 16 | (UInt32)(byte1 & 0x7F) << 8 | (UInt32)(byte2 & 0x7F);
-    sysExOut.word1 = (UInt32)(byte3 & 0x7F) << 24 | (UInt32)(byte4 & 0x7F) << 16 | (UInt32)(byte5 & 0x7F) << 8 | (UInt32)(byte6 & 0x7F);
-    return sysExOut;
-}
-
-CF_INLINE MIDIMessage_64 MIDI1UPSysExArray(UInt8 group, UInt8 status, const Byte *begin, const Byte *end)
-{
-    Byte arrayCopy[6] = {};
-    int numberOfBytes = end <= begin ? 0 : end - begin;
-    for (int i = 0; i < numberOfBytes; ++i)
-        arrayCopy[i] = *(begin + i);
-    return MIDI1UPSysEx(group, status, numberOfBytes, arrayCopy[0], arrayCopy[1], arrayCopy[2], arrayCopy[3], arrayCopy[4], arrayCopy[5]);
-}
-
 //==================================================================================================
 #pragma mark -
 #pragma mark MIDI 2.0 Message helper functions
@@ -309,228 +262,4 @@
 	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
-					MIDINoteAttribute     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 kMIDISysExStatusMixedDataSetHeader or kMIDISysExStatusMixedDataSetPayload
-			};
-		} 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-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h	2021-08-09 03:22:49.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h	2021-08-03 21:51:56.000000000 -0400
@@ -362,7 +362,7 @@
 						identifies the source of the data.
 */
 typedef void
-(*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;
+(*MIDIReadProc)(const MIDIPacketList *pktlist, void * __nullable readProcRefCon, void * __nullable srcConnRefCon);
 
 /*!
 	@typedef		MIDIReadBlock
@@ -382,7 +382,7 @@
 						identifies the source of the data.
 */
 typedef void
-(^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;
+(^MIDIReadBlock)(const MIDIPacketList *pktlist, void * __nullable srcConnRefCon);
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyName					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyManufacturer			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyModel					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyUniqueID				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyDeviceID				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceiveChannels		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyMaxSysExSpeed			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyAdvanceScheduleTimeMuSec	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsEmbeddedEntity			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsBroadcast				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertySingleRealtimeEntity		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyConnectionUniqueID			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyOffline					API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyPrivate					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyDriverOwner				API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 /*!
 	@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, watchos);
+extern const CFStringRef	kMIDIPropertyFactoryPatchNameFile		API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos);
 
 
 /*!
@@ -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, watchos);
+extern const CFStringRef	kMIDIPropertyUserPatchNameFile			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfiguration", macos(10.1, 10.2)) API_UNAVAILABLE(ios, tvos);
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+extern const CFStringRef	kMIDIPropertyNameConfiguration			API_DEPRECATED_WITH_REPLACEMENT("kMIDIPropertyNameConfigurationDictionary", macos(10.2, 10.15), ios(4.2, 13.0), tvos(12.0, 13.0));
 
 /*!
     @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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef    kMIDIPropertyNameConfigurationDictionary            API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyImage						API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyDriverVersion				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertySupportsGeneralMIDI		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertySupportsMMC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyCanRoute					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesClock				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesMTC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesNotes				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesProgramChanges		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyReceivesBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsClock				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsMTC				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsNotes				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsProgramChanges	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsBankSelectMSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyTransmitsBankSelectLSB		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyPanDisruptsStereo			API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsSampler					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsDrumMachine				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsMixer					API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyIsEffectUnit				API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyMaxReceiveChannels			API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyMaxTransmitChannels		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyDriverDeviceEditorApp		API_AVAILABLE(macos(10.3), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertySupportsShowControl		API_AVAILABLE(macos(10.4), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyDisplayName				API_AVAILABLE(macos(10.4), ios(4.2), tvos(12.0));
 
 /*!
 	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)) API_UNAVAILABLE(tvos, watchos);
+extern const CFStringRef	kMIDIPropertyProtocolID					API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 //==================================================================================================
 #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)) API_UNAVAILABLE(tvos, watchos);
+					MIDIClientRef *				outClient )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIClientCreateWithBlock
@@ -1300,7 +1300,7 @@
 MIDIClientCreateWithBlock(
 					CFStringRef					name,
 					MIDIClientRef *				outClient,
-					MIDINotifyBlock __nullable	notifyBlock )			API_AVAILABLE(macos(10.11), ios(9.0)) API_UNAVAILABLE(tvos, watchos);
+					MIDINotifyBlock __nullable	notifyBlock )			API_AVAILABLE(macos(10.11), ios(9.0), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+MIDIClientDispose(	MIDIClientRef client )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 //==================================================================================================
 #pragma mark	Ports
@@ -1358,7 +1358,7 @@
 								CFStringRef		portName,
 								MIDIProtocolID	protocol,
 								MIDIPortRef *	outPort,
-								MIDIReceiveBlock receiveBlock )	API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
+								MIDIReceiveBlock receiveBlock )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@function		MIDIOutputPortCreate
@@ -1453,7 +1453,7 @@
 extern OSStatus
 MIDIOutputPortCreate(	MIDIClientRef	client,
 						CFStringRef		portName,
-						MIDIPortRef *	outPort )			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+						MIDIPortRef *	outPort )			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+MIDIPortDispose(	MIDIPortRef port )						API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -1491,7 +1491,7 @@
 extern OSStatus
 MIDIPortConnectSource(	MIDIPortRef		port,
 						MIDIEndpointRef	source,
-						void * __nullable			connRefCon )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+						void * __nullable			connRefCon )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -1509,7 +1509,7 @@
 */
 extern OSStatus
 MIDIPortDisconnectSource(	MIDIPortRef		port,
-							MIDIEndpointRef	source )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+							MIDIEndpointRef	source )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 //==================================================================================================
@@ -1524,7 +1524,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfDevices(void)								API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetNumberOfDevices(void)								API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -1554,7 +1554,7 @@
 		entities to locate endpoints.
 */
 extern MIDIDeviceRef
-MIDIGetDevice(	ItemCount deviceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetDevice(	ItemCount deviceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIDeviceGetNumberOfEntities
@@ -1568,7 +1568,7 @@
 					error occurred.
 */
 extern ItemCount
-MIDIDeviceGetNumberOfEntities(	MIDIDeviceRef device )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIDeviceGetNumberOfEntities(	MIDIDeviceRef device )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIDeviceGetEntity
@@ -1585,7 +1585,7 @@
 */
 extern MIDIEntityRef
 MIDIDeviceGetEntity(	MIDIDeviceRef	device,
-						ItemCount		entityIndex0 )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+						ItemCount		entityIndex0 )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 //==================================================================================================
 #pragma mark	Entities
@@ -1602,7 +1602,7 @@
 					error occurred.
 */
 extern ItemCount
-MIDIEntityGetNumberOfSources(	MIDIEntityRef entity )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIEntityGetNumberOfSources(	MIDIEntityRef entity )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIEntityGetSource
@@ -1619,7 +1619,7 @@
 */
 extern MIDIEndpointRef
 MIDIEntityGetSource(	MIDIEntityRef entity,
-						ItemCount sourceIndex0 )			API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+						ItemCount sourceIndex0 )			API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIEntityGetNumberOfDestinations
@@ -1633,7 +1633,7 @@
 					if an error occurred.
 */
 extern ItemCount
-MIDIEntityGetNumberOfDestinations(	MIDIEntityRef entity )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIEntityGetNumberOfDestinations(	MIDIEntityRef entity )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIEntityGetDestination
@@ -1650,7 +1650,7 @@
 */
 extern MIDIEndpointRef
 MIDIEntityGetDestination(	MIDIEntityRef	entity,
-							ItemCount		destIndex0 )	API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+							ItemCount		destIndex0 )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIEntityGetDevice
@@ -1664,7 +1664,7 @@
 */
 extern OSStatus
 MIDIEntityGetDevice(		MIDIEntityRef		inEntity,
-							MIDIDeviceRef * __nullable		outDevice)	API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+							MIDIDeviceRef * __nullable		outDevice)	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 //==================================================================================================
 #pragma mark	Endpoints
@@ -1678,7 +1678,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfSources(void)								API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetNumberOfSources(void)								API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetSource(	ItemCount sourceIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -1704,7 +1704,7 @@
 					occurred.
 */
 extern ItemCount
-MIDIGetNumberOfDestinations(void)							API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetNumberOfDestinations(void)							API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 /*!
@@ -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)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetDestination(	ItemCount destIndex0 )					API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIEndpointGetEntity
@@ -1735,7 +1735,7 @@
 */
 extern OSStatus
 MIDIEndpointGetEntity(		MIDIEndpointRef		inEndpoint,
-							MIDIEntityRef * __nullable		outEntity)	API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+							MIDIEntityRef * __nullable		outEntity)	API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIDestinationCreateWithProtocol
@@ -1777,7 +1777,7 @@
 									CFStringRef  		name,
 									MIDIProtocolID		protocol,
 									MIDIEndpointRef *	outDest,
-									MIDIReceiveBlock	readBlock ) API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
+									MIDIReceiveBlock	readBlock ) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+												macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+													macos(10.11, API_TO_BE_DEPRECATED), ios(9.0, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@function		MIDISourceCreateWithProtocol
@@ -1897,7 +1897,7 @@
 MIDISourceCreateWithProtocol(	MIDIClientRef 		client,
 								CFStringRef  		name,
 								MIDIProtocolID		protocol,
-								MIDIEndpointRef * 	outSrc ) API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
+								MIDIEndpointRef * 	outSrc ) API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@function		MIDIEndpointDispose
@@ -1943,7 +1943,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDIEndpointDispose(	MIDIEndpointRef endpt )				API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIEndpointDispose(	MIDIEndpointRef endpt )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 
 //==================================================================================================
@@ -1963,7 +1963,7 @@
 		adds them.
 */
 extern ItemCount
-MIDIGetNumberOfExternalDevices(void)						API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetNumberOfExternalDevices(void)						API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+MIDIGetExternalDevice(	ItemCount deviceIndex0 )			API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 //==================================================================================================
 #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)) API_UNAVAILABLE(tvos, watchos);
+								SInt32 *		outValue )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectSetIntegerProperty
@@ -2024,7 +2024,7 @@
 extern OSStatus
 MIDIObjectSetIntegerProperty(	MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								SInt32			value )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+								SInt32			value )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+								CFStringRef __nullable * __nonnull str )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectSetStringProperty
@@ -2066,7 +2066,7 @@
 extern OSStatus
 MIDIObjectSetStringProperty(	MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFStringRef		str )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+								CFStringRef		str )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+								CFDataRef __nullable * __nonnull outData )	API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectSetDataProperty
@@ -2109,7 +2109,7 @@
 extern OSStatus
 MIDIObjectSetDataProperty(		MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFDataRef		data )		API_AVAILABLE(macos(10.0), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+								CFDataRef		data )		API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectGetDictionaryProperty
@@ -2131,7 +2131,7 @@
 MIDIObjectGetDictionaryProperty(	MIDIObjectRef					obj,
 									CFStringRef						propertyID,
 									CFDictionaryRef __nullable * __nonnull outDict )
-															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectSetDictionaryProperty
@@ -2152,7 +2152,7 @@
 extern OSStatus
 MIDIObjectSetDictionaryProperty(MIDIObjectRef	obj,
 								CFStringRef		propertyID,
-								CFDictionaryRef dict )		API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+								CFDictionaryRef dict )		API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+								Boolean				deep )	API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectRemoveProperty
@@ -2194,7 +2194,7 @@
 extern OSStatus
 MIDIObjectRemoveProperty(		MIDIObjectRef 		obj,
 								CFStringRef			propertyID )
-															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIObjectFindByUniqueID
@@ -2220,7 +2220,7 @@
 MIDIObjectFindByUniqueID(	MIDIUniqueID 		inUniqueID,
 							MIDIObjectRef * __nullable outObject,
 							MIDIObjectType * __nullable outObjectType)
-															API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+															API_AVAILABLE(macos(10.2), ios(4.2), tvos(12.0));
 
 //==================================================================================================
 #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)) API_UNAVAILABLE(tvos, watchos);
+					const MIDIEventList *		evtlist )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+									macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
     
 /*!
 	@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)) API_UNAVAILABLE(tvos, watchos);
+MIDISendSysex(	MIDISysexSendRequest *request )				API_AVAILABLE(macos(10.0), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIReceivedEventList
@@ -2309,7 +2309,7 @@
 */
 extern OSStatus
 MIDIReceivedEventList(	MIDIEndpointRef			src,
-						const MIDIEventList *	evtlist )	API_AVAILABLE(macos(11.0), ios(14.0)) API_UNAVAILABLE(tvos, watchos);
+						const MIDIEventList *	evtlist )	API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+										macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@function		MIDIFlushOutput
@@ -2353,7 +2353,7 @@
 		scheduled for future delivery.
 */
 extern OSStatus
-MIDIFlushOutput(	MIDIEndpointRef		dest )				API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIFlushOutput(	MIDIEndpointRef		dest )				API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 /*!
 	@function		MIDIRestart
@@ -2366,7 +2366,7 @@
 	@result			An OSStatus result code.
 */
 extern OSStatus
-MIDIRestart(void)											API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDIRestart(void)											API_AVAILABLE(macos(10.1), ios(4.2), tvos(12.0));
 
 
 
@@ -2404,7 +2404,7 @@
 */
 extern MIDIEventPacket *
 MIDIEventListInit(	MIDIEventList *evtlist,
-					MIDIProtocolID protocol)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(15.0), watchos(8.0));
+					MIDIProtocolID protocol)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.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(15.0), watchos(8.0));
+					const UInt32 *		words)			API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.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_PROHIBITED __WATCHOS_PROHIBITED;
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 /*!
 	@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_PROHIBITED __WATCHOS_PROHIBITED;
+											macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED), tvos(12.0, API_TO_BE_DEPRECATED));
 
 
 #ifdef __cplusplus
diff -ruN /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h	2021-08-07 08:51:54.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDISetup.h	2021-08-03 21:51:56.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, watchos);
+MIDISetupCreate(	MIDISetupRef *outSetup )					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 
 //  -----------------------------------------------------------------------------
@@ -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, watchos);
+MIDISetupDispose(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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, watchos);
+MIDISetupInstall(	MIDISetupRef setup )						API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 
 //  -----------------------------------------------------------------------------
@@ -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, watchos);
+MIDISetupGetCurrent(	MIDISetupRef *outSetup )				API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 
 //  -----------------------------------------------------------------------------
@@ -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, watchos);
+					CFDataRef __nullable * __nonnull outData )	API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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, watchos);
+					MIDISetupRef *	outSetup)					API_DEPRECATED("No longer supported", macos(10.0, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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)) __TVOS_PROHIBITED __WATCHOS_PROHIBITED;
+															API_AVAILABLE(macos(11.0), ios(14.0));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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_UNAVAILABLE(tvos, watchos);
+				API_DEPRECATED_WITH_REPLACEMENT("MIDIDeviceNewEntity", macos(10.0, API_TO_BE_DEPRECATED), ios(4.2, API_TO_BE_DEPRECATED));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -274,7 +274,7 @@
 */
 extern OSStatus
 MIDIDeviceRemoveEntity(MIDIDeviceRef device, MIDIEntityRef entity)
-																API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+																API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -298,7 +298,7 @@
 */
 extern OSStatus
 MIDIEntityAddOrRemoveEndpoints(MIDIEntityRef entity, ItemCount numSourceEndpoints,
-					ItemCount numDestinationEndpoints)			API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+					ItemCount numDestinationEndpoints)			API_AVAILABLE(macos(10.2), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -315,7 +315,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupAddDevice(		MIDIDeviceRef device )					API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDISetupAddDevice(		MIDIDeviceRef device )					API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -337,7 +337,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupRemoveDevice(	MIDIDeviceRef device )				API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDISetupRemoveDevice(	MIDIDeviceRef device )				API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -351,7 +351,7 @@
 						The device to be added.
 */
 extern OSStatus
-MIDISetupAddExternalDevice(	MIDIDeviceRef device )			API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDISetupAddExternalDevice(	MIDIDeviceRef device )			API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -365,7 +365,7 @@
 						The device to be removed.
 */
 extern OSStatus
-MIDISetupRemoveExternalDevice( MIDIDeviceRef device )		API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+MIDISetupRemoveExternalDevice( MIDIDeviceRef device )		API_AVAILABLE(macos(10.1), ios(4.2));
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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, watchos);
+						CFStringRef __nullable * __nonnull outDriverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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, watchos);
+						CFStringRef			driverName )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -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, watchos);
+MIDIGetSerialPortDrivers(	CFArrayRef __nullable * __nonnull outDriverNames )	API_DEPRECATED("No longer supported", macos(10.1, 10.6)) API_UNAVAILABLE(ios, tvos);
 
 //  -----------------------------------------------------------------------------
 /*!
@@ -467,7 +467,7 @@
 extern OSStatus		
 MIDIExternalDeviceCreate(CFStringRef name, CFStringRef manufacturer, 
 							CFStringRef model, MIDIDeviceRef *outDevice)
-															API_AVAILABLE(macos(10.1), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+															API_AVAILABLE(macos(10.1), ios(4.2));
 
 #ifdef __cplusplus
 }
diff -ruN /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h
--- /Applications/Xcode_13.0.0-beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h	2021-08-09 03:22:49.000000000 -0400
+++ /Applications/Xcode_13.0.0-rc.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIThruConnection.h	2021-08-03 21:51:56.000000000 -0400
@@ -292,7 +292,7 @@
 extern void
 MIDIThruConnectionParamsInitialize(
                             MIDIThruConnectionParams *      inConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 /*!
     @function   MIDIThruConnectionCreate
@@ -311,7 +311,7 @@
 MIDIThruConnectionCreate(   CFStringRef __nullable          inPersistentOwnerID,
                             CFDataRef                       inConnectionParams,
                             MIDIThruConnectionRef *         outConnection )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 /*!
     @function   MIDIThruConnectionDispose
@@ -322,7 +322,7 @@
 */
 extern OSStatus
 MIDIThruConnectionDispose(  MIDIThruConnectionRef           connection )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 /*!
     @function   MIDIThruConnectionGetParams
@@ -339,7 +339,7 @@
 extern OSStatus
 MIDIThruConnectionGetParams(MIDIThruConnectionRef           connection,
                             CFDataRef __nonnull * __nonnull outConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 /*!
     @function   MIDIThruConnectionSetParams
@@ -353,7 +353,7 @@
 extern OSStatus
 MIDIThruConnectionSetParams(MIDIThruConnectionRef           connection,
                             CFDataRef                       inConnectionParams )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 /*!
     @function   MIDIThruConnectionFind
@@ -367,7 +367,7 @@
 extern OSStatus
 MIDIThruConnectionFind(     CFStringRef                     inPersistentOwnerID,
                             CFDataRef __nonnull * __nonnull outConnectionList )
-                                                                API_AVAILABLE(macos(10.2), ios(4.2)) API_UNAVAILABLE(tvos, watchos);
+                                                                API_AVAILABLE(macos(10.2), ios(4.2));
 
 #ifdef __cplusplus
 }
Clone this wiki locally