Fountain Coach logoFOUNTAIN COACHMIDI2 · MACHINE-READABLE SPECIFICATION
FCIS · MIDI2 · PUBLISHED PROJECTION

MIDI 2.0 Conformance Checklist (Status Quo)

This document summarizes current implementation state against the MIDI 2.0 specifications. Each item links to concrete code and tests as evidence, and highlights gaps to close.

Property Exchange (MIDI-CI; M2-103-UM)

  • Negotiation flow: Implemented

    • Evidence: Sources/MIDI2/MidiCiPropertyExchangeBody.swift:1, Sources/MIDI2CI/CIHandshake.swift:1, Tests/MIDI2Tests/MidiCiHandshakeIntegrationTests.swift:23
  • Large data transfer (chunking): Implemented

    • Evidence: Sources/MIDI2CI/PropertyExchange.swift:60 (chunked GET/SET/NOTIFY), Tests/MIDI2Tests/PropertyExchangeChunkingTests.swift:1
  • Encodings: Implemented

    • Evidence: zlib (conditional) and mcoded7 helpers in Sources/MIDI2CI/CompressionCodec.swift:1; tests in Tests/MIDI2Tests/PropertyExchangeCompressionTests.swift:1
  • Profile Inquiry and Enable/Disable: Implemented

    • Evidence: Sources/MIDI2/MidiCiProfilesBody.swift:1, Sources/MIDI2CI/ProfileSession.swift:1, Sources/MIDI2CI/CIHandshake.swift:1; tests in Tests/MIDI2Tests/ProfileSessionTests.swift:1
  • Profile Configuration Details: Implemented for the owned core runtimes

    • Evidence: Swift Sources/MIDI2CI/ProfileSession.swift and TypeScript midi2.js/src/profile-session.ts; lifecycle and negative tests in Tests/MIDI2Tests/ProfileDetailsTests.swift, Tests/MIDI2Tests/ProfileDetailsNegativeTests.swift, and midi2.js/src/__tests__/profile-session.test.ts.
  • Function Block discovery: Implemented

    • Evidence: Sources/MIDI2/Stream/FunctionBlockMessage.swift:1 (direction/bandwidth/active/uiHints), Sources/MIDI2/Stream/FunctionBlockDiscovery.swift:1, Tests/MIDI2Tests/StreamFunctionBlockDiscoveryTests.swift:1 (roundtrip + errors), Tests/MIDI2Tests/StreamNegotiationTests.swift:1 (profile associations + validation)

UMP Stream Configuration (M2-104-UM §5)

  • Endpoint Discovery (Endpoint/Device Info): Implemented
    • Evidence: Sources/MIDI2/Stream/EndpointDiscoveryMessage.swift:1 (major/minor/maxGroups mapping, reserved validation), Tests/MIDI2Tests/StreamMappingTests.swift:1
  • Stream Configuration Request/Reply: Implemented (JR fallback + mismatch notification policy)
    • Evidence: Sources/MIDI2/Stream/StreamConfigurationMessage.swift:1; negotiation state + mismatch reasons in Sources/MIDI2/Stream/NegotiationSession.swift:1; demo in Sources/midi2demo/StreamConfig.swift:252; tests in Tests/MIDI2Tests/StreamNegotiationTests.swift:1
  • Group Terminal Blocks (GTB): Implemented
    • Evidence: Sources/MIDI2/Stream/GroupTerminalBlocks.swift:1; tests in Tests/MIDI2Tests/GroupTerminalBlocksTests.swift:1; negotiation guards in Sources/MIDI2/Stream/NegotiationSession.swift:1

Jitter Reduction (JR)

  • JR Clock (sender): Implemented
    • Evidence: Sources/MIDI2/System/Utility.swift:1, Tests/MIDI2Tests/System/JitterReductionTests.swift:1, Sources/jitterdemo/JitterApp.swift:1
  • JR Timestamp (receiver offset): Implemented
    • Evidence: Sources/MIDI2/System/JitterReductionReceiver.swift:1, Tests/MIDI2Tests/System/JitterReductionTests.swift:1; VRT-Protocol jr/clock_timestamp.json

SysEx8 Packetization

  • Basic fragmentation: Implemented
    • Evidence: Sources/MIDI2/Data/SysEx8.swift:1, Tests/MIDI2Tests/SysEx8Tests.swift:1
  • Continuation/termination flags: Implemented
    • Evidence: Strict validation + edge/invalid sequence tests (Tests/MIDI2Tests/SysEx8InvalidSequenceTests.swift:1); VRT-Protocol sysex8/invalid_cases.json

UMP Format Extensions and Reserved IDs

  • Utility messages beyond JR: Implemented for the owned core runtimes
    • Evidence: DCTPQ and Delta Clockstamp are encoded/decoded in Sources/MIDI2/System/Utility.swift and midi2.js/src/ump.ts, with boundary tests.
  • Future reserved message IDs: Covered for the declared core decoder surface
    • Evidence: Tests/MIDI2Tests/NegativeTests/, midi2.js/src/__tests__/negative.test.ts, and docs/negative-test-matrix.md. This is not a claim that every optional or future specification extension is implemented.

Testing and Validation

  • Conformance test coverage: Improved
    • Evidence: New negative tests for Stream §5, SysEx8, MDS, profiles reports, PE compression; CI with coverage gate.
  • Schema regression (VRT-Protocol): Validation infrastructure, outside runtime completeness
    • Evidence: docs/vrt-protocol/, Scripts/generate_vrt_protocol.py, and midi2.js/src/__tests__/vrt-protocol.test.ts.
  • Interop with hardware: Explicitly excluded from the software-runtime claim
    • Evidence: docs/runtime-completeness.json and docs/claims.json.
    • Boundary: No physical MIDI2 devices are available in this repository, so no hardware interoperability result is claimed.