PackageTrack
Sign in Get early access

flutter_midi_command_platform_interface

A common platform interface for the FlutterMidiCommand plugin.

1.1.2 4.5K downloads/mo #4004 most downloaded on pub.dev InvisibleWrench/FlutterMidiCommand

What this package is like to depend on

Last release 7 days ago

17 Aug 2026

Ships unpredictably

gaps range from 8 days to 1.7 years

Nearly every release is documented

notes for 23 of 23 stable releases

1 version withdrawn

withdrawn after publishing

6 years old

25 releases · first in 2020

13 releases in the last 12 months

see the full history below

Release timeline

25 releases · Sep 2020 to Aug 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 25
  1. 1.1.2 17 Aug 2026
    Release notes
    • FIX(ble): retry a connection sequence whose link was torn down mid-handshake. universal_ble reports that as deviceDisconnected rather than a GATT status, so the retry shipped in 1.1.1 did not apply. Unlike a GATT status the code cannot arise from a peripheral that was never reachable, so it is honoured on every platform.
    • Update federated package constraints to ^1.1.2.
    Open source →
    Release notes
    • Bump "flutter_midi_command_platform_interface" to 1.1.2 for the synchronized workspace release.
    Open source →
  2. 1.1.1 17 Aug 2026
    Release notes
    • FIX(ble): retry the whole connection sequence through transient Android GATT_ERROR 133 failures, including failures during service discovery and notification subscription.
    • FIX(ble): recognise operation-specific GATT failures from their details and preserve typed pairing-removal errors through connection-stage wrappers.
    • FIX(ble): avoid resetting connection priority when it was never raised during a failed connection attempt.
    • FIX(ble): handle stopScan failures when Bluetooth is switched off during a scan instead of surfacing an unhandled asynchronous error.
    • Update federated package constraints to ^1.1.1.
    Open source →
    Release notes
    • Bump "flutter_midi_command_platform_interface" to 1.1.1 for the synchronized workspace release.
    Open source →
  3. 1.1.0 12 Aug 2026
    Release notes
    • FIX(darwin): read every packet of a coalesced MIDIPacketList from the original list memory. Packets after the first were read from unrelated memory and anything over 256 bytes was truncated, affecting virtual devices; native devices already had a correct implementation. Virtual device timestamps now report nanoseconds, matching native devices.
    • FIX(ble): serialize writes per device so two SysEx messages sent in quick succession cannot interleave their BLE packets. The peripheral reassembles a multi-packet SysEx statefully, so interleaving silently merged two messages into corruption — the failure mode behind bulk transfers that break partway through with no BLE-level error.
    • FEAT: add MidiCommand.sendDataAwaitingDelivery, completing once the transport has written the data rather than queued it, so a bulk transfer can pace against the link rather than a fixed delay. Only the BLE transport observes delivery; platform-routed devices complete immediately, as with sendData.
    • FEAT(ble): size BLE MIDI packets from the negotiated ATT MTU and request a low-latency connection interval, both on by default. Together these cut the number of BLE writes per SysEx and lower MIDI latency. Note that they do not speed up a request/response protocol whose cost is the peripheral's turnaround: measured against a GEWA piano, the write path was ~1.4 ms of a ~495 ms per-packet round trip. New UniversalBleMidiTransport flags useNegotiatedMtu and requestHighPerformanceConnection opt out. These apply on Android, Windows and Linux; on iOS and macOS a connected device is handed over to CoreMIDI, which then owns the write path.
    • FEAT: add MidiCommand.onBleWriteFailure, reporting BLE writes the platform rejected. sendData is fire-and-forget, so this is the only signal that a packet was dropped. Bulk transfers that split a payload across many SysEx messages should treat any event as a corrupted transfer. Silent on Apple platforms for devices handed off to CoreMIDI, which has no equivalent per-write signal, so it complements rather than replaces device-level acknowledgements.
    • FIX(ble): emit the BLE MIDI timestamp byte before the closing 0xF7 in every SysEx packet. It was omitted whenever the remaining body was exactly one byte short of the packet size.
    • BREAKING (implementers only): MidiBleTransport gained onWriteFailure. Classes using implements MidiBleTransport must declare it; extends and all API consumers are unaffected. See the platform interface changelog.
    • Update federated package constraints to ^1.1.0.
    Open source →
    Release notes
    • FEAT: add MidiWriteFailure and MidiBleTransport.onWriteFailure, so a BLE transport can report writes it accepted from the fire-and-forget sendData but could not deliver. The getter has a default empty-stream implementation for transports that cannot detect write failures.
    • FEAT: add MidiBleTransport.sendDataAwaitingDelivery, which completes once the data has been written rather than queued, so a bulk transfer can pace against the link. Defaults to sendData for transports that cannot observe delivery.
    • BREAKING (implementers only): a class using implements MidiBleTransport must now declare onWriteFailure and sendDataAwaitingDelivery, because Dart requires implements to provide every member regardless of a default body. Classes using extends are unaffected, as are all consumers of the API.
    Open source →
  4. 1.0.9 06 Aug 2026
    Release notes
    • FIX(ble): stop the opportunistic MTU request from stalling Android connections. It was issued from the connection callback and, because universal_ble runs every GATT command through one queue, it sat in front of service discovery long enough for Android to drop the link with GATT_ERROR 133 (surfaced as Unknown Error 133).
    • FIX(ble): retry the BLE link once through a transient Android GATT_ERROR 133, and keep the device in the transport cache across that retry so received data still resolves to it.
    • Update federated package constraints to ^1.0.9.
    Open source →
    Release notes
    • Bump "flutter_midi_command_platform_interface" to 1.0.9.
    Open source →
  5. 1.0.8 30 Jul 2026
    Release notes
    • FIX(darwin): report CoreMIDI destinations as inputPorts and sources as outputPorts so port direction matches Android and the public device-owned API contract (#164).
    • FIX(android): disable Kotlin incremental compilation for the Android implementation so Windows builds do not fail when the app project and Pub cache are on different drives (#163).
    • Update federated package constraints to ^1.0.8.
    Open source →
    Release notes
    • DOCS: clarify that MidiDevice.inputPorts and outputPorts are described from the MIDI device's perspective.
    Open source →
  6. 1.0.7 20 Jul 2026
    Release notes
    • FIX: export MidiPairingInfoRemovedException from package:flutter_midi_command/flutter_midi_command.dart.
    • Update federated package constraints to ^1.0.7.
    Open source →
    Release notes
    • Bump "flutter_midi_command_platform_interface" to 1.0.7 for the synchronized workspace release.
    Open source →
  7. 1.0.6 18 Jul 2026
    Release notes
    • FIX: a disconnect that races an in-flight connect no longer surfaces as an unhandled async error on PlatformDispatcher.onError (#160).
    • FIX(ble): surface a typed MidiPairingInfoRemovedException when a peripheral has removed its pairing information (iOS CBErrorPeerRemovedPairingInformation), best-effort clearing the stale bond, instead of leaking a raw UniversalBleException.
    • FIX(android): don't crash when a connected USB MIDI device is unplugged; ConnectedDevice teardown now survives the IOException: EPIPE from a removed device (#158).
    • FIX(platform): don't clobber a device's transitional connecting/disconnecting state when listing devices (#159).
    Open source →
    Release notes
    • FIX: don't clobber a device's transitional connecting/disconnecting state when listing devices; a passive devices refresh no longer collapses an in-progress connect to disconnected (#159).
    • FEAT: add MidiPairingInfoRemovedException for BLE peripherals that have removed their pairing information.
    Open source →
  8. 1.0.5 13 Jul 2026
    Release notes
    • FIX(ios): keep usable non-bonding BLE MIDI connections alive when no CoreMIDI counterpart appears, and perform bonded-device handoff as an optional atomic background upgrade (#157).
    • FIX(ble): strip the BLE timestamp byte from received SysEx so SysEx round-trips on Android/Linux/Windows/Web (was corrupting the payload before 0xF7).
    • FIX(ble): make scan start/stop idempotent to avoid redundant OS scan calls that can desync the Android LE scanner.
    Open source →
    Release notes
    • Bump "flutter_midi_command_platform_interface" to 1.0.5.
    Open source →
  9. 1.0.4 13 Jul 2026
    Release notes
    • FIX(ci): track pubspec_overrides.yaml so melos bootstrap works on clean checkouts.
    • FIX(ble): hide registered devices until rediscovered.
    • FIX(ble): remove stale BLE devices on disconnect.
    • FIX: await BLE MIDI readiness in connectToDevice.
    • FIX: bluetooth discovery with latest Universal_ble.
    • FIX: suppress duplicate BLE packets after the CoreMIDI handoff.
    • FIX: subscribe to BLE MIDI notifications on platforms without a pairing.
    • FIX: update example app to iOS v14 minimum.
    • FIX: port to win32 6, csv 8 and file_picker 12 APIs.
    • FIX: example app dependency update.
    • FEAT(ble): bundle Android permissions and document platform setup.
    Open source →
    Release notes
    • Aligned the platform interface with the 1.0.4 federated workspace release.
    Open source →
  10. 1.0.3 12 Jul 2026
    Release notes
    • FIX(ble): hide registered devices until rediscovered.
    • FIX(ble): remove stale BLE devices on disconnect.
    • FIX: await BLE MIDI readiness in connectToDevice.
    • FIX: bluetooth discovery with latest Universal_ble.
    • FIX: suppress duplicate BLE packets after the CoreMIDI handoff.
    • FIX: subscribe to BLE MIDI notifications on platforms without a pairing.
    Open source →
    Release notes
    • FIX(ble): remove stale BLE devices on disconnect.
    • FIX: await BLE MIDI readiness in connectToDevice.
    Open source →
  11. 1.0.2 30 Jun 2026
    Release notes
    • FIX: update example app to iOS v14 minimum.
    • FIX: port to win32 6, csv 8 and file_picker 12 APIs.
    • FIX: example app dependency update.
    Open source →
  12. 1.0.1 30 Jun 2026
    Release notes
    • fix(darwin) fix corebluetooth to coremidi handover
    Open source →
  13. 1.0.0 29 Jun 2026 withdrawn
    Release notes
    • Aligned CI to Flutter 3.44.2 so the newer BLE dependency resolves in GitHub Actions.
    • Resolved the Windows example build failure caused by deprecated coroutine headers in older universal_ble releases.
    • Restructured into a melos-managed federated monorepo.
    • Bumped federated subpackages to 1.0.0 for the major API transition.
    • Introduced shared BLE transport package (flutter_midi_command_ble) and optional BLE wiring via configureBleTransport.
    • Migrated host API contracts to generated Pigeon interfaces.
    • Added typed host models (MidiDeviceType, MidiHostDevice, MidiPort, MidiPacket) across platform bridges.
    • Added web implementation package (flutter_midi_command_web) using browser Web MIDI.
    • Added transport capabilities/policies and stronger async connection semantics (connectToDevice completes on connection).
    • Added a typed MIDI parser/generator API (MidiMessageParser and MidiMessage.parse) with support for running status, realtime interleaving, SysEx, and NRPN/RPN message flows.
    • Expanded test coverage across shared logic, platform interface, BLE transport, and web backend.
    • Updated the example app with separate transport toggles plus distinct Refresh Devices and Scan BLE controls.
    • Improved Windows MIDI enumeration with hot-plug device updates and better multi-port full-duplex pairing.
    Open source →
    Release notes
    • Major API cleanup for the federated 1.0 architecture.
    • Typed device/port/packet models used across generated Pigeon host contracts.
    Open source →
  14. 0.4.3 09 Mar 2025
    Release notes

    added android:exported="true" to manifest

    Open source →
    Release notes
    • Merged PR4 from felixdollack
    Open source →
  15. 0.4.2 06 Nov 2024
    Release notes

    Fixed BLE congestion issues on iOS

    Open source →
    Release notes
    • No change
    Open source →
  16. 0.4.1 16 Oct 2023
    Release notes

    Fixed issues with timestamp and network sessions in Swift

    Open source →
    Release notes
    • Added isNetworkSessionEnabled and setNetworkSessionEnabled for controlling Network Sessions on iOS (introduced in FlutterMidiCommand 0.4.15)
    Open source →
  17. 0.4.0 20 Jan 2022
    Release notes

    Fixed missing future from native

    Open source →
    Release notes
    • Fixed missing future in connectDevice()
    Open source →
  18. 0.4.0-dev.1 14 May 2021 pre-release
    Release notes

    Updated to new connectDevice function which return a future Aligned status updates from native across platforms

    Open source →
  19. 0.3.4 11 Jan 2022
    Release notes

    Changed permissions to fine location for BLE on Android, required when targeting sdk 29+

    Open source →
    Release notes
    • Improved bluetooth state handling:
      • Start bluetooth subsystem only when you want, not automatically
      • Allow to retrieve bluetooth state before starting scanning
      • Allow to observe bluetooth state (poweredOn, poweredOff, ...)
    Open source →
  20. 0.3.3 27 Apr 2021
    Release notes

    Fixed nullable error in kotlin

    Open source →
    Release notes
    • Fixed device status value on Android
    Open source →
  21. 0.3.2 24 Mar 2021
    Release notes

    Fixed BLE timestamp on iOS

    Open source →
    Release notes
    • Fixed null warning
    Open source →
  22. 0.3.1 23 Mar 2021
    Release notes

    Fixed device disconnect on iOS

    Open source →
    Release notes
    • Aligned midi ports
    Open source →
  23. 0.3.0 12 Mar 2021
    Release notes

    Added linux support

    Open source →
    Release notes
    • Null safety
    Open source →
  24. 0.2.1 06 Jan 2021
    Release notes

    Added macOS implementation. Cleaned iOS code (shared with macOS).

    Open source →
    Release notes
    • Removed print.
    Open source →
  25. 0.2.0 17 Sep 2020
    Release notes

    Migrated to federated plugin using platform interface.

    Open source →
    Release notes
    • Initial release.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive