Swiftpack.co - orchetect/MIDIKit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by orchetect.
orchetect/MIDIKit 0.8.1
🎹 Modern multi-platform Swift CoreMIDI wrapper with MIDI 2.0 support.
⭐️ 94
🕓 1 week ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/orchetect/MIDIKit.git", from: "0.8.1")



CI Build Status Platforms - macOS 10.12-13.0 | iOS 10-16 Swift 5.5-5.7 Xcode 13-14 License: MIT

An elegant and modern CoreMIDI wrapper in pure Swift supporting MIDI 1.0 and MIDI 2.0.

  • Modular, user-friendly I/O
  • Automatic MIDI endpoint connection management and identity persistence
  • Strongly-typed MIDI events that seamlessly interoperate between MIDI 1.0 and MIDI 2.0
  • Automatically uses appropriate Core MIDI API and defaults to MIDI 2.0 on platforms that support it
  • Supports Swift Playgrounds on iPad and macOS
  • Full documentation available in Xcode Documentation browser, including helpful guides and getting started information


Over and above I/O and events, MIDI extension abstractions can be found in MIDIKit:

  • Reading/writing Standard MIDI Files (SMF)
  • Control Surface protocols (HUI, etc.)
  • Synchronization protocols (MTC, etc.)

Getting Started

The library is available as a Swift Package Manager (SPM) package.

Use the URL https://github.com/orchetect/MIDIKit when adding the library to a project or Swift package.

See the getting started guide for a detailed walkthrough of how to get the most out of MIDIKit.


See the online documentation or view it in Xcode's documentation browser by selecting the Product → Build Documentation menu.

This includes a getting started guide, links to examples, and troubleshooting tips.

System Compatibility

  • Xcode 13.0 / macOS 11.3 are minimum requirements to compile

  • Once compiled, MIDIKit supports macOS 10.12+ and iOS 10.0+.

    tvOS and watchOS are not supported (as there is no Core MIDI implementation) but MIDIKit will build successfully on those platforms in the event it is included as a dependency in multi-platform projects.


Coded by a bunch of 🐹 hamsters in a trenchcoat that calls itself @orchetect.


Licensed under the MIT license. See LICENSE for details.


If you enjoy using MIDIKit and want to contribute to open-source financially, GitHub sponsorship is much appreciated. Feedback and code contributions are also welcome.


Contributions are welcome. Discussion in Issues is encouraged prior to new features or modifications.


Stars: 95
Last commit: 3 hours ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

1 week ago


  • SysEx7 inits that take UInt8 data bytes now throw; Added non-throwing UInt7 overloads.
  • AnyMIDIIOObject.Property: Added name property
  • MIDIIOObject: Added propertyStringValue(for:)


  • MIDIIONotification: Fixed missing metadata for sequential remove notifications (#162)


  • MIDIIONotification: Renamed parameters for added, removed, and propertyChanged
  • MIDIIOObject: Renamed propertiesAsStrings() to propertyStringValues()


  • Example projects have been consolidated and reorganized. SwiftUI examples are now multiplatform projects that can build for iOS or macOS destinations.
  • Added new SystemNotifications SwiftUI example project
  • MIDISystemInfo example project has been improved


  • Added MIDI Show Control guide

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics