PackageTrack
Sign in Get early access

flutter_midi_command

A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices.

1.1.2 4.7K downloads/mo #3945 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.2 years

Nearly every release is documented

notes for 63 of 64 stable releases

1 version withdrawn

withdrawn after publishing

8 years old

72 releases · first in 2018

14 releases in the last 12 months

see the full history below

Release timeline

72 releases · Nov 2018 to Aug 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 72
  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 →
  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 →
  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 →
  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 →
  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 →
  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 →
  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 →
  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 →
  9. 1.0.4 13 Jul 2026
    Release notes

    flutter_midi_command v1.0.4

    Open source →
    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 →
  10. 1.0.3 12 Jul 2026
    Release notes

    flutter_midi_command v1.0.3

    Open source →
    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 →
  11. 1.0.2 30 Jun 2026
    Release notes

    flutter_midi_command v1.0.2

    Open source →
    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 →
  14. 0.5.4 25 Mar 2026

    Nothing published for this version

  15. 0.5.3 15 Jan 2025
    Release notes

    Adds a runtime check to ensure MIDI is available on the android device before starting. See #125 for further details. Make plugin work with Flutter 3.27.0 and Android Studio Lady Bug. #127 Removed package name from AndroidManifest.xml #126 Fix reconnect issue #120

    Open source →
  16. 0.5.2 06 Sep 2024
    Release notes

    Added Recorder to Example App Merge PR #118, Thanks to Donkermand

    Open source →
  17. 0.5.1 08 Jun 2024
    Release notes

    Added BLE support on Windows

    Open source →
  18. 0.4.17 26 May 2024
    Release notes

    Updated Android Gradle

    Open source →
  19. 0.4.16 21 May 2024
    Release notes

    Fixed SysEx error on macOS when sending big data chunks of SysEx

    Open source →
  20. 0.4.15 16 Oct 2023
    Release notes

    Fixed more threading bugs on iOS Added iOS specific API for enabling Network Session (not implemented on other platforms)

    Open source →
  21. 0.4.14 16 Oct 2023
    Release notes

    Updated FFI dependency for Linux to ^2.0.0

    Open source →
  22. 0.4.13 29 Sep 2023
    Release notes

    Fixed Linux package dependency

    Open source →
  23. 0.4.12 28 Sep 2023
    Release notes

    Fixed threading issue on iOS Added MIDI Sense and Clock messages

    Open source →
  24. 0.4.11 19 Mar 2023
    Release notes

    Merge PRs from anzbert, bringing example app and gradle settings up to date

    Open source →
  25. 0.4.10 26 Jan 2023
    Release notes

    Fixed NRPN Messages Added NRPN to example app

    Open source →
  26. 0.4.9 21 Nov 2022
    Release notes

    Updated Android permissions. Example fix

    Open source →
  27. 0.4.8 19 May 2022
    Release notes

    Fixed an issue where BLE devices would disappear from the device list on iOS, once connected.

    Open source →
  28. 0.4.7 03 May 2022
    Release notes

    Added null_checks for latest flutter sdk (kotlin) fixed NRPN / added RPN

    Open source →
  29. 0.4.5 11 Mar 2022
    Release notes

    Added Pitch bend message type More controls in example app

    Open source →
  30. 0.4.4 09 Mar 2022
    Release notes

    Fixed issue with single messages, credit to https://github.com/anzbert

    Open source →
  31. 0.4.3 13 Feb 2022
    Release notes

    added android:exported="true" to manifest

    Open source →
  32. 0.4.2 07 Feb 2022
    Release notes

    Fixed BLE congestion issues on iOS

    Open source →
  33. 0.4.1 01 Feb 2022
    Release notes

    Fixed issues with timestamp and network sessions in Swift

    Open source →
  34. 0.4.0 20 Jan 2022
    Release notes

    Fixed missing future from native

    Open source →
  35. 0.4.0-dev.8 12 Jan 2022 pre-release
    Release notes

    Fixed reflection bug on Android

    Open source →
  36. 0.4.0-dev.7 11 Jan 2022 pre-release
    Release notes

    Added virtual midi device support on Android

    Open source →
  37. 0.4.0-dev.5 30 Sep 2021 pre-release
    Release notes

    Fixed an issue with receiving consecutive SysEx messages on iOS Split packet into the (max) size reported by the connected device instead of fixed to 20 bytes, on iOS

    Open source →
  38. 0.4.0-dev.4 17 Sep 2021 pre-release
    Release notes

    Added support for virtual MIDI devices on iOS

    Open source →
  39. 0.4.0-dev.3 31 Aug 2021 pre-release
    Release notes

    Fixes in iOS timestamp values

    Open source →
  40. 0.4.0-dev.2 21 May 2021 pre-release
    Release notes

    Aligned behavior of running messages across iOS and Android. Running messages are sent to the app layer as individual messages.

    Open source →
  41. 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 →
  42. 0.3.7 28 Apr 2021
    Release notes

    Better workaround for an issue with receiving sysex messages on Android via BLE

    Open source →
  43. 0.3.6 28 Apr 2021
    Release notes

    Workaround for an issue with receiving long sysex messages on Android via BLE

    Open source →
  44. 0.3.5 27 Apr 2021
    Release notes

    Fixed an issue with BLE device IDs on Android Fixed an issue where BLE devices would appear in device list as native devices as well as bluetooth devices after being connected

    Open source →
  45. 0.3.4 26 Apr 2021
    Release notes

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

    Open source →
  46. 0.3.3 26 Apr 2021
    Release notes

    Fixed nullable error in kotlin

    Open source →
  47. 0.3.2 22 Apr 2021
    Release notes

    Fixed BLE timestamp on iOS

    Open source →
  48. 0.3.1 21 Apr 2021
    Release notes

    Fixed device disconnect on iOS

    Open source →
  49. 0.3.0 23 Mar 2021
    Release notes

    Added linux support

    Open source →
  50. 0.2.6 05 Nov 2020
    Release notes

    Fix example app on macos

    Open source →
  51. 0.2.5 04 Nov 2020
    Release notes

    Fix MIDI Session Support on iOS Simulator

    Open source →
  52. 0.2.4 15 Oct 2020
    Release notes

    iOS Pod fix

    Open source →
  53. 0.2.3 11 Oct 2020
    Release notes

    Android compile fix

    Open source →
  54. 0.2.2 26 Sep 2020
    Release notes

    Cleanup and docs

    Open source →
  55. 0.2.1 24 Sep 2020
    Release notes

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

    Open source →
  56. 0.2.0 17 Sep 2020
    Release notes

    Migrated to federated plugin using platform interface.

    Open source →
  57. 0.1.7 29 Jun 2020
    Release notes

    Bugfix - sending cabled MIDI on iOS

    Open source →
  58. 0.1.6 25 May 2020
    Release notes

    Bugfix, android setup/plugin init

    Open source →
  59. 0.1.5 12 May 2020
    Release notes

    Updated Android plugin structure Fixed iOS compilation error, with latest Dart Fixed BLE Midi parsing on iOS

    Open source →
  60. 0.1.4 27 Feb 2020
    Release notes

    Updated Gradle version Merge PR #8

    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