A Flutter plugin for sending and receiving MIDI messages between Flutter and physical and virtual MIDI devices.
Wraps CoreMIDI/android.media.midi/ALSA in a thin dart/flutter layer. Supports
- USB and BLE MIDI connections on Android
- USB, network(session) and BLE MIDI connections on iOS and macOS.
- ALSA Midi on Linux
- Make sure your project is created with Kotlin and Swift support.
- Add flutter_midi_command: ^0.3.0 to your pubspec.yaml file.
- In ios/Podfile uncomment and change the platform to 10.0
platform :ios, '10.0'
- After building, Add a NSBluetoothAlwaysUsageDescription to info.plist in the generated Xcode project.
- On Linux, make sure ALSA is installed.
This plugin is build using Swift and Kotlin on the native side, so make sure your project supports this.
- Get a list of available MIDI devices by calling
MidiCommand().deviceswhich returns a list of
- Start scanning for BLE MIDI devices by calling
- Connect to a specific
- Stop scanning for BLE MIDI devices by calling
- Disconnect from the current device by calling
- Listen for updates in the MIDI setup by subscribing to
- 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
MidiCommandsubtypes to send PC, CC, NoteOn and NoteOff messages.
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.