Libremidi Versions Save

A modern C++ MIDI 1 / MIDI 2 real-time & file I/O library. Supports Windows, macOS, Linux and WebMIDI.

v4.5.0

2 months ago

Discord GitHub Sponsors

New features

Changes

  • MIDI 1 logic refactored across all back-ends to make sure they all behave exactly the same wrt timestamping and filtering.

v4.4.0

3 months ago

New features

  • Add Debian (bullseye, bookworm, trixie) to the CI to make sure ALSA UMP and RawMidi support gets tested
  • Fix iOS support and add iOS CI (thanks @fwcd !)
  • Add compatibility with ni-midi2: the libremidi::ump type will convert automatically from / to midi::universal_packet and it is possible to send directly some ni-midi2 data types through libremidi::midi_out
  • Added an example of very basic MIDI-CI interoperation with MIDI2.0Workbench: https://github.com/jcelerier/libremidi/blob/master/examples/midi2_interop.cpp
  • Observer: add a track_any flag to track MIDI ports that are not reported as being hardware or software.
  • UMP: allow send_ump to handle UMP streams, not only single UMP packets.

Bugfixes

  • Fix sysex concatenation on WinMM
  • Various MIDI 2-related fixes across the entire stack
  • Work-in-progress on RawMidi MIDI2 backend - output should work, input not there yet. Testing and reporting issues highly appreciated!
  • Some compatibility bugfixes, better detection of available features in cmake

Other

  • Revamp and cleanup the cmake backends in separate files for clarity.

v4.3.0

3 months ago
  • Improvements to timing handling:

    • Added a Custom timestamping mechanism which allows the user to provide a custom callback to run timestamping as close as possible to the event's reception.
    • Added midi_in::absolute_timestamp() to get the origin timestamp for driver-provided ticks as accurately as possible.
      • e.g. in practice this is taking the time just near the ALSA queue creation or WinMM MIDI open.
  • Bugfixes in JACK

  • Many warning fixes - thanks @lilggamegenius for the extensive work!

  • Fix MIDI dump example - thanks @chdiesch!

  • Add SOVERSION to dynamic library