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
+43 -19
View File
@@ -7,7 +7,7 @@
#include <cmath>
namespace libremidi
NAMESPACE_LIBREMIDI
{
LIBREMIDI_INLINE
@@ -53,14 +53,13 @@ LIBREMIDI_INLINE libremidi::API get_compiled_api_by_name(std::string_view name)
midi2::for_all_backends([&](auto b) { apis.push_back(b.API); });
return apis;
}
LIBREMIDI_INLINE
libremidi::API midi_api(const std::any& conf)
libremidi::API midi_api(const input_api_configuration& conf)
{
libremidi::API ret = libremidi::API::UNSPECIFIED;
midi_any::for_all_backends([&]<typename T>(T) {
if (std::any_cast<typename T::midi_in_configuration>(&conf)
|| std::any_cast<typename T::midi_out_configuration>(&conf)
|| std::any_cast<typename T::midi_observer_configuration>(&conf))
if (get_if<typename T::midi_in_configuration>(&conf))
{
ret = T::API;
}
@@ -68,9 +67,34 @@ libremidi::API midi_api(const std::any& conf)
return ret;
}
LIBREMIDI_INLINE
std::any midi_in_configuration_for(libremidi::API api)
libremidi::API midi_api(const output_api_configuration& conf)
{
std::any ret;
libremidi::API ret = libremidi::API::UNSPECIFIED;
midi_any::for_all_backends([&]<typename T>(T) {
if (get_if<typename T::midi_out_configuration>(&conf))
{
ret = T::API;
}
});
return ret;
}
LIBREMIDI_INLINE
libremidi::API midi_api(const observer_api_configuration& conf)
{
libremidi::API ret = libremidi::API::UNSPECIFIED;
midi_any::for_all_backends([&]<typename T>(T) {
if (get_if<typename T::midi_observer_configuration>(&conf))
{
ret = T::API;
}
});
return ret;
}
LIBREMIDI_INLINE
input_api_configuration midi_in_configuration_for(libremidi::API api)
{
input_api_configuration ret;
midi_any::for_backend(api, [&]<typename T>(T) {
using conf_type = typename T::midi_in_configuration;
ret = conf_type{};
@@ -79,9 +103,9 @@ std::any midi_in_configuration_for(libremidi::API api)
}
LIBREMIDI_INLINE
std::any midi_out_configuration_for(libremidi::API api)
output_api_configuration midi_out_configuration_for(libremidi::API api)
{
std::any ret;
output_api_configuration ret;
midi_any::for_backend(api, [&]<typename T>(T) {
using conf_type = typename T::midi_out_configuration;
ret = conf_type{};
@@ -90,9 +114,9 @@ std::any midi_out_configuration_for(libremidi::API api)
}
LIBREMIDI_INLINE
std::any observer_configuration_for(libremidi::API api)
observer_api_configuration observer_configuration_for(libremidi::API api)
{
std::any ret;
observer_api_configuration ret;
midi_any::for_backend(api, [&]<typename T>(T) {
using conf_type = typename T::midi_observer_configuration;
ret = conf_type{};
@@ -101,13 +125,13 @@ std::any observer_configuration_for(libremidi::API api)
}
LIBREMIDI_INLINE
std::any midi_in_configuration_for(const libremidi::observer& obs)
input_api_configuration midi_in_configuration_for(const libremidi::observer& obs)
{
return midi_in_configuration_for(obs.get_current_api());
}
LIBREMIDI_INLINE
std::any midi_out_configuration_for(const libremidi::observer& obs)
output_api_configuration midi_out_configuration_for(const libremidi::observer& obs)
{
// FIXME reuse context when meaningful, e.g. ALSA, JACK...
return midi_out_configuration_for(obs.get_current_api());
@@ -144,19 +168,19 @@ catch (const std::exception& e)
namespace midi1
{
LIBREMIDI_INLINE
std::any in_default_configuration()
input_api_configuration in_default_configuration()
{
return midi_in_configuration_for(default_api());
}
LIBREMIDI_INLINE
std::any out_default_configuration()
output_api_configuration out_default_configuration()
{
return midi_out_configuration_for(default_api());
}
LIBREMIDI_INLINE
std::any observer_default_configuration()
observer_api_configuration observer_default_configuration()
{
return observer_configuration_for(default_api());
}
@@ -165,19 +189,19 @@ std::any observer_default_configuration()
namespace midi2
{
LIBREMIDI_INLINE
std::any in_default_configuration()
input_api_configuration in_default_configuration()
{
return midi_in_configuration_for(default_api());
}
LIBREMIDI_INLINE
std::any out_default_configuration()
output_api_configuration out_default_configuration()
{
return midi_out_configuration_for(default_api());
}
LIBREMIDI_INLINE
std::any observer_default_configuration()
observer_api_configuration observer_default_configuration()
{
return observer_configuration_for(default_api());
}