thespian/include/thespian/metronome.hpp
2024-02-08 23:04:55 +01:00

25 lines
559 B
C++

#pragma once
#include <chrono>
#include <functional>
#include <memory>
namespace thespian {
struct metronome_impl;
using metronome_dtor = void (*)(metronome_impl *);
using metronome_ref = std::unique_ptr<metronome_impl, metronome_dtor>;
struct metronome {
auto start() -> void;
auto stop() -> void;
metronome_ref ref;
};
[[nodiscard]] auto create_metronome(std::chrono::microseconds us) -> metronome;
void start_metronome(metronome_impl *);
void stop_metronome(metronome_impl *);
void destroy_metronome(metronome_impl *);
} // namespace thespian