Files
viseq/include/libremidi/detail/midi_in.hpp
T

57 lines
1.3 KiB
C++
Raw Normal View History

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/observer_configuration.hpp>
2024-10-09 02:01:23 +02:00
#include <libremidi/input_configuration.hpp>
2024-10-28 19:24:18 +01:00
#include <libremidi/error_handler.hpp>
2024-10-09 02:01:23 +02:00
namespace libremidi
{
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));
}
}