28 lines
1.2 KiB
C++
28 lines
1.2 KiB
C++
#pragma once
|
|
#include <expected>
|
|
#include <filesystem>
|
|
#include <string_view>
|
|
#include <boost/json.hpp>
|
|
#include <sonus.hpp>
|
|
#include <vamp_zero/types.hpp>
|
|
|
|
|
|
namespace vamp_zero {
|
|
|
|
auto parse_beat(boost::json::value const &value) -> std::expected<vamp_zero::beat_position, modulus::error>;
|
|
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<std::uint32_t>;
|
|
auto parse_audio_assets(std::string_view json) -> std::expected<std::vector<vamp_zero::audio_asset>, modulus::error>;
|
|
auto validate_audio_assets(vamp_zero::catalog const &catalog, std::filesystem::path const &assets) -> std::expected<void, modulus::error>;
|
|
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<sonus::prepared_transport, modulus::error>;
|
|
|
|
struct performance_position {
|
|
std::size_t page{};
|
|
std::string phase{};
|
|
};
|
|
|
|
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;
|
|
|
|
}
|