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
@@ -1,7 +1,7 @@
#pragma once
#include <libremidi/backends/coremidi/config.hpp>
namespace libremidi::coremidi_ump
NAMESPACE_LIBREMIDI::coremidi_ump
{
struct input_configuration
{
@@ -4,7 +4,7 @@
#include <libremidi/detail/midi_in.hpp>
#include <libremidi/detail/midi_stream_decoder.hpp>
namespace libremidi::coremidi_ump
NAMESPACE_LIBREMIDI::coremidi_ump
{
class midi_in_impl final
@@ -26,8 +26,7 @@ public:
if (auto result = init_client(configuration); result != noErr)
{
libremidi_handle_error(
this->configuration,
"error creating MIDI client object: " + std::to_string(result));
this->configuration, "error creating MIDI client object: " + std::to_string(result));
client_open_ = from_osstatus(result);
return;
}
@@ -69,8 +68,7 @@ public:
{
close_client(*this);
libremidi_handle_error(
this->configuration, "error creating macOS MIDI input port: "
+ std::to_string(result));
this->configuration, "error creating macOS MIDI input port: " + std::to_string(result));
return from_osstatus(result);
}
@@ -79,8 +77,7 @@ public:
{
MIDIPortDispose(port);
close_client(*this);
libremidi_handle_error(
this->configuration, "error connecting macOS MIDI input port.");
libremidi_handle_error(this->configuration, "error connecting macOS MIDI input port.");
return from_osstatus(result);
}
@@ -113,10 +110,7 @@ public:
return stdx::error{};
}
stdx::error close_port() override
{
return coremidi_data::close_port();
}
stdx::error close_port() override { return coremidi_data::close_port(); }
timestamp absolute_timestamp() const noexcept override
{
@@ -5,7 +5,7 @@
#include <libremidi/detail/midi_out.hpp>
#include <libremidi/detail/ump_stream.hpp>
namespace libremidi::coremidi_ump
NAMESPACE_LIBREMIDI::coremidi_ump
{
class midi_out_impl final
: public midi2::out_api
@@ -27,8 +27,7 @@ public:
if (auto result = init_client(configuration); result != noErr)
{
libremidi_handle_error(
this->configuration,
"error creating MIDI client object: " + std::to_string(result));
this->configuration, "error creating MIDI client object: " + std::to_string(result));
client_open_ = from_osstatus(result);
return;
}
@@ -63,8 +62,7 @@ public:
if (result != noErr)
{
close_client(*this);
libremidi_handle_error(
this->configuration, "error creating macOS MIDI output port.");
libremidi_handle_error(this->configuration, "error creating macOS MIDI output port.");
return from_osstatus(result);
}
@@ -84,9 +82,7 @@ public:
if (result != noErr)
{
this->endpoint = 0;
libremidi_handle_error(
this->configuration,
"error creating macOS virtual MIDI source.");
libremidi_handle_error(this->configuration, "error creating macOS virtual MIDI source.");
return from_osstatus(result);
}
@@ -94,10 +90,7 @@ public:
return stdx::error{};
}
stdx::error close_port() override
{
return coremidi_data::close_port();
}
stdx::error close_port() override { return coremidi_data::close_port(); }
stdx::error send_ump(const uint32_t* ump_stream, std::size_t count) override
{
@@ -142,9 +135,7 @@ public:
auto result = MIDISendEventList(this->port, this->destinationId, eventList);
if (result != noErr)
{
libremidi_handle_warning(
this->configuration,
"error sending MIDI message to port.");
libremidi_handle_warning(this->configuration, "error sending MIDI message to port.");
return std::errc::io_error;
}
}
@@ -1,17 +1,20 @@
#pragma once
#include <libremidi/backends/coremidi_ump/config.hpp>
#include <libremidi/backends/coremidi/observer.hpp>
#include <libremidi/backends/coremidi_ump/config.hpp>
namespace libremidi::coremidi_ump
NAMESPACE_LIBREMIDI::coremidi_ump
{
class observer_impl final : public libremidi::observer_core
{
public:
explicit observer_impl(libremidi::observer_configuration&& conf, coremidi_ump::observer_configuration&& apiconf)
: observer_core{std::move(conf), coremidi_observer_configuration{apiconf.client_name, apiconf.on_create_context}}
explicit observer_impl(
libremidi::observer_configuration&& conf, coremidi_ump::observer_configuration&& apiconf)
: observer_core{
std::move(conf),
coremidi_observer_configuration{apiconf.client_name, apiconf.on_create_context}}
{
finish_init();
}
libremidi::API get_current_api() const noexcept override { return libremidi::API::COREMIDI_UMP; }