🎡 v1.0.5 β€” MIDI-CI Responder & MockDevice

MIDI2Kit

A Swift library for implementing MIDI 2.0 β€” UMP, MIDI-CI, and Property Exchange β€” in macOS and iOS applications.

Get Started Documentation

Built for MIDI 2.0

Everything you need to implement the next generation of MIDI

πŸ“¦

Universal MIDI Packet

Complete UMP support with type-safe builders, parsers, and value scaling utilities for MIDI 1.0 ↔ 2.0 conversion.

πŸ”

Device Discovery

Automatic MIDI-CI device discovery with capability negotiation and lifecycle management via CIManager.

πŸ”„

Property Exchange

High-level async/await API for GET, SET, and Subscribe operations with automatic chunking and timeout handling.

πŸ”Œ

Transport Abstraction

Clean separation from CoreMIDI with LoopbackTransport for in-process testing. Production and test code share the same interface.

πŸ§ͺ

MockDevice & Responder

Built-in MIDI-CI Responder for testing without hardware. MockDevice presets for KORG, Roland, Yamaha, and generic devices.

⚑

Batch & Pipeline Operations

Batch GET/SET operations, pipeline-based workflows (GET→Transform→SET), and payload validation before transmission.

Quick Start

Get up and running in minutes

Package.swift
dependencies: [
    .package(url: "https://github.com/midi2kit/MIDI2Kit-SDK.git", from: "1.0.5")
]
DeviceDiscovery.swift
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
    }
}

Modules

Modular architecture for flexibility

Documentation

Everything you need to build with MIDI2Kit

Apps

MIDI 2.0 apps built with MIDI2Kit