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.
| ALSA Raw | ALSA Seq | PipeWire |
| MIDI 1 | Yes | Yes | Yes |
| MIDI 2 | Yes | Yes | N/A |
| Virtual ports | N/A | Yes | Yes |
| Observer | Yes | Yes | Yes |
| Scheduling | No | No | No |
-
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.
| WinMM | UWP | WinMIDI |
| MIDI 1 | Yes | Yes | No |
| MIDI 2 | N/A | N/A | Yes |
| Virtual ports | N/A | No | No |
| Observer | Yes | Yes | Yes |
| Scheduling | No | No | No |
| CoreMIDI |
| MIDI 1 | Yes |
| MIDI 2 | Yes |
| Virtual ports | Yes |
| Observer | Yes |
| Scheduling | No |
| Emscripten WebMIDI |
| MIDI 1 | Yes |
| MIDI 2 | N/A |
| Virtual ports | N/A |
| Observer | Yes |
| Scheduling | No |
| JACK |
| MIDI 1 | Yes |
| MIDI 2 | N/A |
| Virtual ports | Yes |
| Observer | Yes |
| Scheduling | No |