Files
product-vamp/include/vamp_zero/audio.hpp
T
khodowany fe42d811fa
ci / checks (push) Successful in 42m54s
Formatting
2026-09-15 00:06:02 -05:00

36 lines
1006 B
C++

#pragma once
#include <cstdint>
#include <expected>
#include <memory>
#include <mutex>
#include <modulus.hpp>
#include <sonus.hpp>
#include <vamp_zero/config.hpp>
#include <vamp_zero/types.hpp>
namespace vamp_zero {
class audio_controller {
public:
audio_controller(vamp_zero::audio_config config, sonus::engine engine);
audio_controller(vamp_zero::audio_controller const &) = delete;
auto operator=(vamp_zero::audio_controller const &) -> vamp_zero::audio_controller & = delete;
~audio_controller();
auto sync(vamp_zero::app_state const &state) -> void;
private:
auto make_metronome_config(vamp_zero::app_state const &state) const -> sonus::metronome_config;
vamp_zero::audio_config config_{};
sonus::engine engine_;
mutable std::mutex mutex_{};
std::bool_t metronome_running_{false};
std::uint32_t last_metronome_bpm_{};
};
auto create_audio_controller(vamp_zero::audio_config const &config) -> std::expected<std::unique_ptr<vamp_zero::audio_controller>, modulus::error>;
}