Skip to content

Releases: orchetect/MIDIKit

0.8.11

20 Jun 08:16
Compare
Choose a tag to compare
  • MIDIFile Track: Added eventsAtBeatPositions() method

0.8.10

20 Jun 05:24
Compare
Choose a tag to compare

New

  • MIDIEvent: Added midi1RawStatusByte() method
  • MIDIEvent: Added midi1RawDataBytes() method

Improvements

  • MIDIFile: Improved memory usage and load times when loading very large MIDI files

Docs

  • Added iOS background send/receive guide (#187)
  • Minor updates

0.8.9

05 May 22:22
Compare
Choose a tag to compare

Changes

  • Bumped to Swift 5.7 minimum requirement
  • MIDIEvent.NoteCC.PerNoteController: Added registered(UInt8) static method

Docs

0.8.8

13 Mar 21:39
Compare
Choose a tag to compare
  • MIDIFile: gained Hashable conformance (#174)
  • Updated PassiveDataReader to fix a potential crash when parsing MIDIFile (#175)

0.8.7

09 Mar 05:19
Compare
Choose a tag to compare
  • MIDINote: Removed init(style:)
  • MIDIEvent.NoteOn: midi1ZeroVelocityAsNoteOff now defaults to false (#176)

0.8.6

08 Mar 10:38
Compare
Choose a tag to compare

New

  • New MIDIKItUI module with reusable SwiftUI views for endpoint lists and pickers (WIP) - see new MIDIKitUIExample project
  • MIDIIOObject: Added image property to return SwiftUI Image

Improvements

  • MIDIEndpointIdentity: locate(in:) is now public, added new matches(endpoint:) sister method
  • Collection of MIDIEndpoint: added filter(using: MIDIEndpointFilter) method

Fixes

  • MIDIFile: Fixed extended characters in text events failing to parse (#171)

0.8.5

03 Mar 05:54
Compare
Choose a tag to compare
  • MIDIInput/MIDIOutput: Renamed endpointName to name, and is now settable (#168)
  • MIDIFileEvent: Added delta convenience property
  • Added new MusicalTimeValue value type for converting between SMF delta times and bars & beats

0.8.4

24 Feb 02:47
Compare
Choose a tag to compare

New

  • MIDIKit now requires Xcode 14 to build. It still supports macOS 10.12+ and iOS 10+ once compiled.
  • MIDIDevice: Added inputs and outputs convenience properties to return endpoint arrays (#129)
  • MIDIDevices: Added inputs and outputs convenience properties to return endpoint dictionaries (#129)

Improvements

  • MIDIInput/MIDIInputConnection: Resolved potential race condition in receiver
  • Memory access for legacy MIDIPacket / MIDIPacketList is more stable
  • MIDIPacketList: Fixed bug when sending legacy packet list containing multiple packets
  • Minor documentation & unit test updates

0.8.3

16 Feb 18:55
Compare
Choose a tag to compare
  • Updated for TimecodeKit 1.6.9

0.8.2

13 Feb 01:08
Compare
Choose a tag to compare

Fixes

  • MIDI thru connections are now available on all supported platforms (#164)

    Background

    • A Core MIDI bug where all MIDI thru connections were non-functional affected all Apple platforms for two generations:
      • macOS 11.x through 12.x and iOS 14.x through 15.x were affected
      • The issue was resolved in macOS 13.0 and iOS 16.0

    Resolution

    • For non-persistent thru connections on affected platforms, MIDIKit now transparently implements an internal event pipe that replicates the functionality of Core MIDI. This means midiManager.addThruConnection() can be called and will always function as expected, regardless of platform.
    • For persistent thru connections on affected platforms, no internal/automatic workaround is possible, and calling midiManager.addThruConnection() will result in an error being thrown. For this reason it is recommended to not utilize or rely on these persistent connections, and to defer to non-persistent ones instead.