libremidi update to v5.4.3 and added virtual midi out as default

This commit is contained in:
Sebastian
2026-06-23 00:05:41 +02:00
parent dc0003232a
commit 51cd271b6f
166 changed files with 8135 additions and 2009 deletions
+100 -9
View File
@@ -1,11 +1,51 @@
#pragma once
#if defined(MSC_VER)
#define LIBREMIDI_VERSION "5.4.3"
// clang-format off
#if !defined(LIBREMIDI_BASE_NAMESPACE)
#define LIBREMIDI_BASE_NAMESPACE libremidi
#endif
#if defined(LIBREMIDI_MODULE_BUILD)
#define LIBREMIDI_MODULE_EXPORT export
#define LIBREMIDI_MODULE_BEGIN_EXPORT export {
#define LIBREMIDI_MODULE_END_EXPORT }
#define NAMESPACE_LIBREMIDI export namespace LIBREMIDI_BASE_NAMESPACE
#define NAMESPACE_STDX export namespace stdx
#define LIBREMIDI_STATIC inline
#define LIBREMIDI_STATIC_IMPLEMENTATION inline
#define LIBREMIDI_STATIC_INLINE_IMPLEMENTATION inline
#define LIBREMIDI_INLINE_IMPLEMENTATION
#define LIBREMIDI_ANONYMOUS_NAMESPACE detail
#else
#define LIBREMIDI_MODULE_EXPORT
#define LIBREMIDI_MODULE_BEGIN_EXPORT
#define LIBREMIDI_MODULE_END_EXPORT
#define NAMESPACE_LIBREMIDI namespace LIBREMIDI_BASE_NAMESPACE
#define NAMESPACE_STDX namespace stdx
#define LIBREMIDI_STATIC static inline
#if defined(LIBREMIDI_HEADER_ONLY)
#define LIBREMIDI_STATIC_IMPLEMENTATION static
#define LIBREMIDI_STATIC_INLINE_IMPLEMENTATION static inline
#define LIBREMIDI_INLINE_IMPLEMENTATION inline
#else
#define LIBREMIDI_STATIC_IMPLEMENTATION static
#define LIBREMIDI_STATIC_INLINE_IMPLEMENTATION static
#define LIBREMIDI_INLINE_IMPLEMENTATION
#endif
#define LIBREMIDI_ANONYMOUS_NAMESPACE
#endif
// clang-format on
#if defined(_MSC_VER)
#define NOMINMAX 1
#define WIN32_LEAN_AND_MEAN
#endif
#if defined(LIBREMIDI_EXPORTS)
// Dynamic exports
#if defined(LIBREMIDI_EXPORTS) || defined(LIBREMIDI_MODULE_BUILD)
#if defined(_MSC_VER)
#define LIBREMIDI_EXPORT __declspec(dllexport)
#elif defined(__GNUC__) || defined(__clang__)
@@ -15,8 +55,7 @@
#define LIBREMIDI_EXPORT
#endif
#define LIBREMIDI_VERSION "4.5.0"
// Boost check to prevent ABI issues
#if defined(LIBREMIDI_USE_BOOST)
#if !__has_include(<boost/container/small_vector.hpp>)
#error \
@@ -28,31 +67,77 @@
#endif
#endif
// Use boost::small_vector if available
#if __has_include(<boost/container/small_vector.hpp>) && !defined(LIBREMIDI_NO_BOOST)
#if LIBREMIDI_SLIM_MESSAGE > 0
#include <boost/container/static_vector.hpp>
namespace libremidi
NAMESPACE_LIBREMIDI
{
using midi_bytes = boost::container::static_vector<unsigned char, LIBREMIDI_SLIM_MESSAGE>;
}
#else
#include <boost/container/small_vector.hpp>
namespace libremidi
NAMESPACE_LIBREMIDI
{
static constexpr int small_vector_minimum_size
LIBREMIDI_STATIC constexpr int small_vector_minimum_size
= sizeof(boost::container::small_vector<unsigned char, 1>);
using midi_bytes = boost::container::small_vector<unsigned char, small_vector_minimum_size>;
}
#endif
#else
#include <vector>
namespace libremidi
NAMESPACE_LIBREMIDI
{
using midi_bytes = std::vector<unsigned char>;
}
#endif
// Use boost::variant2 if available
#define LIBREMIDI_NO_BOOST_VARIANT2 1
#if __has_include(<boost/variant2.hpp>) && !defined(LIBREMIDI_NO_BOOST_VARIANT2)
#include <boost/variant2.hpp>
#define LIBREMIDI_VARIANT_IS_BOOST_VARIANT2
namespace libremidi_variant_alias = boost::variant2;
#endif
#if !defined(LIBREMIDI_VARIANT_IS_BOOST_VARIANT2)
#include <variant>
namespace libremidi_variant_alias = std;
#endif
namespace libremidi
{
using monostate = libremidi_variant_alias::monostate;
template <typename T>
concept nothrow_move_constructible = std::is_nothrow_move_constructible_v<T>;
template <nothrow_move_constructible... Args>
using variant = libremidi_variant_alias::variant<Args...>;
template <typename... Args>
using slow_variant = libremidi_variant_alias::variant<Args...>;
template <std::size_t N, typename T>
using variant_element = libremidi_variant_alias::variant_alternative<N, T>;
template <std::size_t N, typename T>
using variant_element_t = libremidi_variant_alias::variant_alternative_t<N, T>;
using libremidi_variant_alias::operator==;
using libremidi_variant_alias::operator!=;
using libremidi_variant_alias::operator<;
using libremidi_variant_alias::operator>;
using libremidi_variant_alias::operator<=;
using libremidi_variant_alias::operator>=;
// using boost::variant2::in_place;
// using libremidi_variant_alias::in_place;
using libremidi_variant_alias::get;
using libremidi_variant_alias::get_if;
using libremidi_variant_alias::in_place_index;
using libremidi_variant_alias::in_place_type;
using libremidi_variant_alias::visit;
}
#if __has_include(<midi/universal_packet.h>) && defined(LIBREMIDI_USE_NI_MIDI2)
#define LIBREMIDI_NI_MIDI2_COMPAT 1
#endif
@@ -62,3 +147,9 @@ using midi_bytes = std::vector<unsigned char>;
#else
#define LIBREMIDI_INLINE
#endif
#if __cpp_contracts >= 202502L
#define LIBREMIDI_PRECONDITION(...) pre(__VA_ARGS__)
#else
#define LIBREMIDI_PRECONDITION(...)
#endif