Playback Mode Pages
ci / checks (push) Successful in 50m29s

This commit is contained in:
khodowany
2026-10-06 23:11:25 -05:00
parent 125aaa1637
commit d2f493c17b
33 changed files with 620 additions and 130 deletions
+1 -1
View File
@@ -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;
+1
View File
@@ -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;
+5 -3
View File
@@ -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>;
}
+18
View File
@@ -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;