You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Although most of Core MIDI is unavailable on tvOS and watchOS, it would be ideal to allow MIDIKit to build on those platforms by conditionally fencing out incompatible code or marking them as not @available.
Even though the majority of functionality will be unavailable, the benefit to this would be allowing cross-platform applications or packages whose targets include tvOS and/or watchOS to use MIDIKit as a dependency. This also allows compatibility of MIDIKit extensions like MIDIKitSMF (Standard MIDI File) to function on those platforms where the unavailable Core MIDI I/O methods are not needed.
Essentially what would be left remaining and usable would be:
Global proprietary types (MIDI.UInt7, etc.)
MIDI.Event abstracts, including filters
MIDI.Note abstract
MIDI.IO.APIVersion and MIDI.IO.ProtocolVersion
MIDI.IO.Packet and its nested types
Implementation
It may make sense to simply remove most of the I/O module by conditional compilation. The downside is the lack of symbolication, but in theory that shouldn't be a problem.
#if !os(tvOS) && !os(watchOS)// ...#endif
Otherwise, individual objects, methods and properties could be marked @available. The downside would be added clutter to the MIDIKit codebase.
This may also not even be possible because some of the Core MIDI symbolication/headers are completely missing on tvOS/watchOS.
Kind of baffling that packets/event list API is available on tvOS/watchOS but no I/O API whatsoever. What is the point of this? Google turns up nothing useful. I would assume that something like Bluetooth MIDI could have a market on the Apple TV but it doesn't look currently possible.
Actionable Items
Proposal
Although most of Core MIDI is unavailable on tvOS and watchOS, it would be ideal to allow MIDIKit to build on those platforms by conditionally fencing out incompatible code or marking them as not
@available
.Even though the majority of functionality will be unavailable, the benefit to this would be allowing cross-platform applications or packages whose targets include tvOS and/or watchOS to use MIDIKit as a dependency. This also allows compatibility of MIDIKit extensions like MIDIKitSMF (Standard MIDI File) to function on those platforms where the unavailable Core MIDI I/O methods are not needed.
Essentially what would be left remaining and usable would be:
MIDI.UInt7
, etc.)MIDI.Event
abstracts, including filtersMIDI.Note
abstractMIDI.IO.APIVersion
andMIDI.IO.ProtocolVersion
MIDI.IO.Packet
and its nested typesImplementation
It may make sense to simply remove most of the I/O module by conditional compilation. The downside is the lack of symbolication, but in theory that shouldn't be a problem.
Otherwise, individual objects, methods and properties could be marked
@available
. The downside would be added clutter to the MIDIKit codebase.This may also not even be possible because some of the Core MIDI symbolication/headers are completely missing on tvOS/watchOS.
The text was updated successfully, but these errors were encountered: