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")

MIDIKit

MIDIKit

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

Abstractions

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.

Documentation

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.

Author

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

License

Licensed under the MIT license. See LICENSE for details.

Sponsoring

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

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

GitHub

link
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

0.8.1
1 week ago

New

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

Fixes

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

Changes

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

Examples

  • 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

Docs

  • Added MIDI Show Control guide

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