flutter_midi_command
A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices.
Wraps CoreMIDI and android.media.midi in a thin dart/flutter layer. Works with USB and BLE MIDI connections on Android, and USB, network(session) and BLE MIDI connections on iOS.
Getting Started
This plugin is build using Swift and Kotlin on the native side, so make sure your project supports this.
Import flutter_midi_command
import 'package:flutter_midi_command/flutter_midi_command.dart';
- Get a list of available MIDI devices by calling
MidiCommand().devices
which returns a list ofMidiDevice
- Start scanning for BLE MIDI devices by calling
MidiCommand().startScanningForBluetoothDevices()
- Connect to a specific
MidiDevice
by callingMidiCommand.connectToDevice(selectedDevice)
- Stop scanning for BLE MIDI devices by calling
MidiCommand().stopScanningForBluetoothDevices()
- Disconnect from the current device by calling
MidiCommand.disconnectDevice()
- Listen for updates in the MIDI setup by subscribing to
MidiCommand().onMidiSetupChanged
- Listen for incoming MIDI messages on from the current device by subscribing to
MidiCommand().onMidiDataReceived
, after which the listener will recieve inbound MIDI messages as an UInt8List of variable length. - Send a MIDI message by calling
MidiCommand.sendData(data)
, where data is an UInt8List of bytes following the MIDI spec. - Or use the various
MidiCommand
subtypes to send PC, CC, NoteOn and NoteOff messsages.
See example folder for how to use.
For help getting started with Flutter, view our online documentation.
For help on editing plugin code, view the documentation.
Libraries
Dart
- dart:io/network_policy.dart
- dart:ui
- Built-in types and core primitives for a Flutter application. [...]
- dart:async
- Support for asynchronous programming, with classes such as Future and Stream. [...]
- dart:collection
- Classes and utilities that supplement the collection support in dart:core. [...]
- dart:convert
- Encoders and decoders for converting between different data representations, including JSON and UTF-8. [...]
- dart:core
- Built-in types, collections, and other core functionality for every Dart program. [...]
- dart:developer
- Interact with developer tools such as the debugger and inspector. [...]
- dart:math
- Mathematical constants and functions, plus a random number generator. [...]
- dart:typed_data
- Lists that efficiently handle fixed sized data (for example, unsigned 8 byte integers) and SIMD numeric types. [...]
- dart:ffi
- Foreign Function Interface for interoperability with the C programming language. [...]
- dart:io
- File, socket, HTTP, and other I/O support for non-web applications. [...]
- dart:isolate
- Concurrent programming using isolates: independent workers that are similar to threads but don't share memory, communicating only via messages. [...]
- dart:html
- HTML elements and other resources for web-based applications that need to interact with the browser and the DOM (Document Object Model). [...]
- dart:js
- Low-level support for interoperating with JavaScript. [...]
- dart:js_util
-
Utility methods to manipulate
package:js
annotated JavaScript interop objects in cases where the name to call is not known at runtime. [...]