A Swift library for implementing MIDI 2.0 β UMP, MIDI-CI, and Property Exchange β in macOS and iOS applications.
Everything you need to implement the next generation of MIDI
Complete UMP support with type-safe builders, parsers, and value scaling utilities for MIDI 1.0 β 2.0 conversion.
Automatic MIDI-CI device discovery with capability negotiation and lifecycle management via CIManager.
High-level async/await API for GET, SET, and Subscribe operations with automatic chunking and timeout handling.
Clean separation from CoreMIDI with LoopbackTransport for in-process testing. Production and test code share the same interface.
Built-in MIDI-CI Responder for testing without hardware. MockDevice presets for KORG, Roland, Yamaha, and generic devices.
Batch GET/SET operations, pipeline-based workflows (GETβTransformβSET), and payload validation before transmission.
Get up and running in minutes
dependencies: [
.package(url: "https://github.com/midi2kit/MIDI2Kit-SDK.git", from: "1.0.5")
]
import MIDI2Kit
// Create client with high-level API
let client = try MIDI2Client(name: "MyApp")
try await client.start()
// Listen for devices
for await event in await client.makeEventStream() {
switch event {
case .deviceDiscovered(let device):
print("Found: \(device.displayName)")
if device.supportsPropertyExchange {
// Get device info automatically
if let info = try? await device.deviceInfo {
print(" Product: \(info.productName ?? "Unknown")")
}
}
case .deviceLost(let muid):
print("Lost device: \(muid)")
default:
break
}
}
Modular architecture for flexibility
High-level unified API with MIDI2Client and MIDI2Device. MockDevice for hardware-free testing with presets for KORG, Roland, Yamaha.
UMP types, MUID, DeviceIdentity, value scaling, and Mcoded7 encoding. The foundation for all MIDI 2.0 operations.
Protocol abstraction for MIDI I/O. CoreMIDITransport for production, LoopbackTransport for in-process testing.
MIDI-CI device discovery and capability inquiry. Automatic device lifecycle management with CIManager.
Property Exchange: GET, SET, Subscribe. PEResponder for testing, batch operations, pipeline API, and validation.
Everything you need to build with MIDI2Kit
MIDI 2.0 apps built with MIDI2Kit
MIDI 2.0 diagnostic tool. Explore MIDI-CI capabilities and Property Exchange resources of connected devices in real time.
Turn your iPhone or iPad into a 6-slider MIDI CC controller. Virtual MIDI, Bluetooth LE MIDI, and color-coded faders.