Feature matrix

This table shows which feature is supported by which backend so far, for advanced features.

It may be because the backend does not provide the ability at all (N/A), or because it has not been implemented yet.

Linux & BSD

ALSA RawALSA SeqPipeWire
MIDI 1YesYesYes
MIDI 2YesYesN/A
Virtual portsN/AYesYes
ObserverYesYesYes
SchedulingNoNoNo

Special features

  • The ALSA Raw back-end allows to perform chunked sending of MIDI messages, which can be useful to upload firmwares.

  • libasound and libpipewire are always loaded through dlopen. JACK can also be, optionally.

This allows libremidi to be built on a system with e.g. PipeWire support without preventing application loading if the end user does not use it.

Windows

WinMMUWPWinMIDI
MIDI 1YesYesNo
MIDI 2N/AN/AYes
Virtual portsN/ANoNo
ObserverYesYesYes
SchedulingNoNoNo

Mac & iOS

CoreMIDI
MIDI 1Yes
MIDI 2Yes
Virtual portsYes
ObserverYes
SchedulingNo

Web

Emscripten WebMIDI
MIDI 1Yes
MIDI 2N/A
Virtual portsN/A
ObserverYes
SchedulingNo

Shared backends

JACK
MIDI 1Yes
MIDI 2N/A
Virtual portsYes
ObserverYes
SchedulingNo