@@ -25,7 +25,7 @@ public:
|
||||
auto refresh_connection() -> std::optional<vamp_zero::app_state>;
|
||||
auto set_observer(std::function<void(vamp_zero::app_state)> observer) -> void;
|
||||
auto finish_playback(std::uint64_t session, std::string error = {}, std::shared_ptr<vamp_zero::catalog const> catalog = {}) -> void;
|
||||
auto update_performance(std::uint64_t session, std::size_t page, std::string phase, std::shared_ptr<vamp_zero::catalog const> catalog) -> void;
|
||||
auto update_performance(std::uint64_t session, std::size_t page, std::string phase, std::shared_ptr<vamp_zero::catalog const> catalog, std::optional<std::size_t> measure = {}) -> void;
|
||||
private:
|
||||
auto pico_connected_locked() const -> std::bool_t;
|
||||
auto snapshot_locked() const -> vamp_zero::app_state;
|
||||
|
||||
@@ -19,6 +19,7 @@ auto prepare_performance(vamp_zero::score_document const &score, vamp_zero::app_
|
||||
struct performance_position {
|
||||
std::size_t page{};
|
||||
std::string phase{};
|
||||
std::optional<std::size_t> measure{};
|
||||
};
|
||||
|
||||
auto performance_at(vamp_zero::score_document const &score, std::uint64_t frames, std::uint32_t bpm) -> vamp_zero::performance_position;
|
||||
|
||||
@@ -28,8 +28,10 @@ private:
|
||||
std::vector<entry> entries_{};
|
||||
};
|
||||
|
||||
auto score_page_count(vamp_zero::score_document const &score) -> std::size_t;
|
||||
auto validated_page_path(vamp_zero::score_document const &score, std::size_t index) -> std::expected<std::string, modulus::error>;
|
||||
auto validate_score_page(vamp_zero::score_document const &score, std::size_t index) -> std::expected<void, modulus::error>;
|
||||
auto score_page_count(vamp_zero::score_document const &score, bool playback = false) -> std::size_t;
|
||||
auto validated_page_path(vamp_zero::score_document const &score, std::size_t index, bool playback = false) -> std::expected<std::string, modulus::error>;
|
||||
auto validate_score_page(vamp_zero::score_document const &score, std::size_t index, bool playback = false) -> std::expected<void, modulus::error>;
|
||||
auto page_rectangle(luma::rect bounds) -> luma::rect;
|
||||
auto measure_highlight(vamp_zero::score_page const &page, std::optional<std::size_t> measure, luma::rect image) -> std::optional<luma::rect>;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -23,6 +25,18 @@ struct score_page {
|
||||
std::size_t measure_count{};
|
||||
vamp_zero::beat_position start_beat{};
|
||||
vamp_zero::beat_position end_beat{};
|
||||
struct measure_label {
|
||||
std::size_t measure{};
|
||||
std::array<double, 4> bounds{};
|
||||
};
|
||||
struct system {
|
||||
std::size_t first_measure{};
|
||||
std::size_t measure_count{};
|
||||
vamp_zero::beat_position start_beat{};
|
||||
vamp_zero::beat_position end_beat{};
|
||||
std::vector<measure_label> labels{};
|
||||
};
|
||||
std::vector<system> systems{};
|
||||
};
|
||||
|
||||
struct score_document {
|
||||
@@ -41,6 +55,8 @@ struct score_document {
|
||||
vamp_zero::beat_position duration{};
|
||||
vamp_zero::beat_position sustain_start{};
|
||||
std::uint32_t count_in_beats{4};
|
||||
std::vector<vamp_zero::score_page> playback_pages{};
|
||||
std::vector<vamp_zero::beat_position> measure_boundaries{};
|
||||
};
|
||||
|
||||
struct library_part {
|
||||
@@ -54,6 +70,7 @@ struct library_part {
|
||||
std::size_t total_pages{};
|
||||
std::string title_image{};
|
||||
std::string song_id{};
|
||||
std::size_t playback_pages{};
|
||||
};
|
||||
|
||||
struct song_group {
|
||||
@@ -116,6 +133,7 @@ struct app_state {
|
||||
std::uint64_t score_session{};
|
||||
std::uint64_t input_revision{};
|
||||
std::bool_t pico_connected{false};
|
||||
std::optional<std::size_t> active_measure{};
|
||||
};
|
||||
|
||||
auto to_string(vamp_zero::app_mode value) -> std::string;
|
||||
|
||||
Reference in New Issue
Block a user