2024-10-09 02:01:23 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include <libremidi/detail/midi_api.hpp>
|
2024-10-28 19:24:18 +01:00
|
|
|
#include <libremidi/error_handler.hpp>
|
2026-06-23 00:05:41 +02:00
|
|
|
#include <libremidi/input_configuration.hpp>
|
|
|
|
|
#include <libremidi/observer_configuration.hpp>
|
2024-10-09 02:01:23 +02:00
|
|
|
|
2026-06-23 00:05:41 +02:00
|
|
|
NAMESPACE_LIBREMIDI
|
2024-10-09 02:01:23 +02:00
|
|
|
{
|
|
|
|
|
class midi_in_api : public midi_api
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
midi_in_api() = default;
|
|
|
|
|
~midi_in_api() override = default;
|
|
|
|
|
midi_in_api(const midi_in_api&) = delete;
|
|
|
|
|
midi_in_api(midi_in_api&&) = delete;
|
|
|
|
|
midi_in_api& operator=(const midi_in_api&) = delete;
|
|
|
|
|
midi_in_api& operator=(midi_in_api&&) = delete;
|
|
|
|
|
|
2024-10-28 19:24:18 +01:00
|
|
|
[[nodiscard]] virtual stdx::error
|
|
|
|
|
open_port(const input_port& pt, std::string_view local_port_name)
|
|
|
|
|
= 0;
|
2024-10-09 02:01:23 +02:00
|
|
|
[[nodiscard]] virtual timestamp absolute_timestamp() const noexcept = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
namespace midi1
|
|
|
|
|
{
|
|
|
|
|
class in_api : public midi_in_api
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
using midi_in_api::midi_in_api;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace midi2
|
|
|
|
|
{
|
|
|
|
|
class in_api : public midi_in_api
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
using midi_in_api::midi_in_api;
|
|
|
|
|
|
|
|
|
|
bool firstMessage{true};
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T, typename Arg>
|
|
|
|
|
std::unique_ptr<midi_in_api> make(libremidi::input_configuration&& conf, Arg&& arg)
|
|
|
|
|
{
|
|
|
|
|
return std::make_unique<T>(std::move(conf), std::move(arg));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T, typename Arg>
|
|
|
|
|
std::unique_ptr<midi_in_api> make(libremidi::ump_input_configuration&& conf, Arg&& arg)
|
|
|
|
|
{
|
|
|
|
|
return std::make_unique<T>(std::move(conf), std::move(arg));
|
|
|
|
|
}
|
|
|
|
|
}
|