Files
product-vamp/include/vamp_zero/audio.hpp
T
khodowany 1a13d6b0e1
ci / checks (push) Successful in 41m34s
Cleanup
2026-09-10 09:22:26 -05:00

38 lines
1005 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>;
}