libremidi 4.5.0

libremidi is a cross-platform C++20 library for real-time and MIDI file input and output. This is a fork / rewrite based on two libraries: RtMidi ModernMIDI Additionally, for MIDI 2 parsing support we use cmidi2!

Tags library midi audio music jack alsa cpp
License Mixed
State stable

Recent Releases

4.5.003 Mar 2024 21:25 minor feature: lt;p gt; lt;a href="https://discord.gg/8Hzm4UduaS" rel="nofollow" gt; lt;img src="https://camo.githubusercontent.com/eaec13fca41fbdf09a2b013e8307bdd0f93bba4eadfcee86e4b97590478ef3d2/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3932383330373637313537393339343137393f636f6c6f723d373338394438266c6162656c3d646973636f7264266c6f676f3d446973636f7264267374796c653d666f722d7468652d6261646765" alt="Discord" data-canonical-src="https://img.shields.io/discord/928307671579394179?color=7389D8 amp;amp;label=discord amp;amp;logo=Discord amp;amp;style=for-the-badge" style="max-width: 100 ;" gt; lt;/a gt; lt;a href="https://github.com/sponsors/jcelerier" gt; lt;img src="https://camo.githubusercontent.com/b6772963b6d41ea2dd8e9134c1143da8abf7fb7dd7820a5b34fb65ec5d788662/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73706f6e736f72732f6a63656c65726965723f636f6c6f723d70696e6b266c6162656c3d73706f6e736f7273253230254532253944254134254546254238253846267374796c653d666f722d7468652d6261646765" alt="GitHub Sponsors" data-canonical-src="https://img.shields.io/github/sponsors/jcelerier?color=pink amp;amp;label=sponsors 20 E2 9D A4 EF B8 8F amp;amp;style=for-the-badge" style="max-width: 100 ;" gt; lt;/a gt; lt;/p gt;. lt;h1 gt;New features lt;/h1 gt;. lt;ul gt;. lt;li gt;Remade and extended the documentation: lt;a href="https://celtera.github.io/libremidi" rel="nofollow" gt;https://celtera.github.io/libremidi lt;/a gt; lt;/li gt;. lt;li gt;Experimental PipeWire back-end lt;/li gt;. lt;/ul gt;. lt;h1 gt;Changes lt;/h1 gt;. lt;ul gt;. lt;li gt;MIDI 1 logic refactored across all back-ends to make sure they all behave exactly the same wrt timestamping and filtering. lt;/li gt;. lt;/ul gt;.
4.4.011 Feb 2024 23:37 major feature: 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.
4.3.008 Feb 2024 14:23 major feature: 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