#pragma once #include #include #include #include #include #include namespace vamp_zero { auto parse_beat(boost::json::value const &value) -> std::expected; auto frame_at(vamp_zero::beat_position beat, std::uint32_t bpm) -> std::uint64_t; auto available_tempos(vamp_zero::app_state const &state) -> std::vector; auto parse_audio_assets(std::string_view json) -> std::expected, modulus::error>; auto validate_audio_assets(vamp_zero::catalog const &catalog, std::filesystem::path const &assets) -> std::expected; auto prepare_performance(vamp_zero::score_document const &score, vamp_zero::app_state const &state, std::filesystem::path const &assets, std::float32_t click_volume) -> std::expected; struct performance_position { std::size_t page{}; std::string phase{}; std::optional measure{}; }; auto performance_at(vamp_zero::score_document const &score, std::uint64_t frames, std::uint32_t bpm) -> vamp_zero::performance_position; auto automatic(vamp_zero::audio_state const &audio) -> bool; }