Skip to content

Releases: orchetect/MIDIKit

0.10.1

10 Feb 00:18
Compare
Choose a tag to compare

Fixes

  • MIDIKitSync: MTCDecoder: timecode property and timecode parameter in timecodeChangedHandler callback closure now updates subframes component instead of it always remaining 0 (#232)

Improvements

  • MIDIKitSync: MTCDecoder: Initial timecode value now takes on initialLocalFrameRate frame rate by default in init if non-nil

Changes

  • MIDIKitSync: MTCReceiver & MTCDecoder: Renamed displayNeedsUpdate parameter to isFrameChanged in timecodeChangedHandler callback closure

0.10.0

03 Feb 00:35
Compare
Choose a tag to compare

Overview

This release represents an overhaul of internals to make MIDIKit Swift 6 strict concurrency compatible.

Efforts have been made to retain as much flexibility and backwards-compatibility as possible while adopting new language features and requirements where appropriate.

Note

Minimum platform requirements are now macOS 10.15, iOS 13, tvOS 13, watchOS 6.
Xcode 16 is required to build.

Improvements

  • Refactors for Swift 6 strict concurrency (#222, #228)
    • MIDIKitIO:
      • MIDIManager: Now conforms to Sendable
      • ObservableMIDIManager: Refactored to be @Observable (observable devices and endpoints properties)
      • The prior ObservableMIDIManager class which conforms to ObservableObject has been renamed ObservableObjectMIDIManager for legacy support (observable devices and endpoints properties)
      • MIDIEndpoints: Added inputsOwned and outputsOwned properties for convenience
      • MIDI1Parser and MIDI2Parser: Now conform to Sendable
    • MIDIKitControlSurfaces:
      • HUIHost and HUISurface: Now conform to @Observable and Sendable
    • MIDIKitSync:
      • MTCGenerator and MTCReceiver: Now conform to Sendable

Changes

  • All package library products are no longer forced as static
  • MIDIManager: Removed NSObject superclass inheritance

Deprecations

  • Removed unofficialBusSelect MIDI event - unsupported by Apple operating systems (c9bade9)

Maintenance

  • Migrated unit tests to Swift Testing (#228)
  • Removed XCTestUtils dependency (#228)
  • Codebase cleanup
  • Updated documentation
  • Updated example projects

0.9.10

24 Jan 00:49
815affd
Compare
Choose a tag to compare

Fixed

  • MIDIKitSMF: Fixed MIDI file parse bug when file contains an unrecognized chunk type

0.9.9

14 Nov 08:10
Compare
Choose a tag to compare

Maintenance

  • Updated for TimecodeKit 2.3.3

0.9.8

20 Oct 00:12
Compare
Choose a tag to compare

Note

This release bumps the package toolchain version to Swift 5.9, and minimum platforms to macOS 10.13 and iOS 12

Added

  • MIDIKitSMF: Fixed text decoding bug introduced in macOS 15.0
  • Added missing Identifiable conformances to types

Maintenance

  • Preliminary refactors for Swift 6 (not yet passing strict checks)
  • Minor example project cleanup
  • Updated and cleaned up unit tests

0.9.7

21 Jul 22:08
Compare
Choose a tag to compare

Maintenance

0.9.6

07 May 20:14
Compare
Choose a tag to compare

Fixed

  • Fixed incorrect CC number in programChange event MIDI 1.0 raw bytes generation (#211)

Maintenance

  • Fixed minor bug in SwiftUI Multiplatform/EndpointPickers example project (#202)
  • Mitigation for Swift 5.10 @_implementationOnly compiler warnings (12d8f13)
  • Updated unit tests
  • Minor docs updates

0.9.5

27 Dec 03:47
b4947ed
Compare
Choose a tag to compare

New

  • MIDIReceiverOptions: Added .bundleRPNAndNRPNDataEntryLSB receiver option (#198)

Changed

  • MIDIReceiver: eventsWithMetadata receiver has been renamed to events and inherits its events, timeStamp, source closure parameters
  • MIDIReceiver: object(_:held:options:) is now replaced by strong(_:options:) or weak(_:options:) and, as such, no longer carries a held property
  • Removed redundant MIDIReceiveHandler class
  • Renamed MIDIReceiveHandlerProtocol to MIDIReceiverProtocol and made it public

Fixed

  • MIDIEvent.pressure: Debug description now includes both MIDI 1.0 & MIDI 2.0 value representation, consistent with other event descriptions

Maintenance

  • Internal refactors to reduce MIDIReceiver boilerplate
  • Updated docs
  • Minor example project updates

0.9.4

10 Nov 16:09
73b4779
Compare
Choose a tag to compare

New

  • Added new ObservableMIDIManager subclass of MIDIManager that provides two new @Published properties: observableDevices and observableEndpoints
  • MIDIKitUI SwiftUI components are now fully functional (see the MIDIKitUI example project)
  • Significant updates to the EndpointPickers example project to use endpoint display name as a fallback endpoint identity

Improvements

  • Refactored MIDIEndpointFilter Collection methods and resolved ambiguities

Fixed

  • Fixed potential crash in rare cases when Core MIDI property getter produces an error

Maintenance

  • All example projects have been further cleaned up and various issues resolved
  • Unit tests updated
  • Docs updated

0.9.3

30 Oct 08:18
Compare
Choose a tag to compare
  • Added Sendable conformance to most concrete types
  • Refactored Error types to be LocalizedError, added missing description strings
  • Refactored MIDIReceiver to use new MIDIReceiverOptions option set