18class AutomationProgramCompiler;
55class AutomationProgram {
59 std::shared_ptr<const timebase::CompiledTempoMap>
tempo_map,
66 return instance_token_;
78 return std::get_if<timeline::DeviceParameterTarget>(&target_);
83 const std::shared_ptr<const timebase::CompiledTempoMap>&
tempo_map_owner() const noexcept {
86 std::span<const AutomationProgramSegment>
segments() const noexcept {
90 return leading_value_;
93 return segments_.empty();
100 std::shared_ptr<const timebase::CompiledTempoMap>
tempo_map,
107 std::shared_ptr<const timebase::CompiledTempoMap> tempo_map_;
108 std::vector<AutomationProgramSegment> segments_;
109 float leading_value_ = 0.0f;
118 std::size_t segment_index)
noexcept;
Immutable tick- and sample-domain form of one automation lane.
Definition automation_program.hpp:55
const timeline::AutomationTarget & target() const noexcept
Definition automation_program.hpp:71
const timeline::DeviceParameterTarget * device_target() const noexcept
The device parameter this lane drives, or none when it drives a control the owning track holds itself...
Definition automation_program.hpp:77
const timebase::CompiledTempoMap & tempo_map() const noexcept
Definition automation_program.hpp:80
friend class detail::AutomationProgramCompiler
Definition automation_program.hpp:97
ProgramGeneration generation() const noexcept
Definition automation_program.hpp:62
std::span< const AutomationProgramSegment > segments() const noexcept
Definition automation_program.hpp:86
AutomationProgramInstanceToken instance_token() const noexcept
Definition automation_program.hpp:65
float leading_value() const noexcept
Definition automation_program.hpp:89
bool empty() const noexcept
Definition automation_program.hpp:92
timeline::ItemId lane_id() const noexcept
Definition automation_program.hpp:68
const std::shared_ptr< const timebase::CompiledTempoMap > & tempo_map_owner() const noexcept
Definition automation_program.hpp:83
static runtime::Result< std::shared_ptr< const AutomationProgram >, AutomationProgramError > compile(const timeline::AutomationLane &lane, std::shared_ptr< const timebase::CompiledTempoMap > tempo_map, ProgramGeneration generation)
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
Definition compiled_tempo_map.hpp:91
Immutable ownership of one authored automation curve and its logical target.
Definition automation_lane.hpp:72
ParameterTarget AutomationTarget
Exhaustive authored-target set.
Definition automation_lane.hpp:21
AutomationInterpolation
Interpolation applied from an automation point to its successor.
Definition automation_curve.hpp:20
@ Continuous
Definition automation_curve.hpp:22
Definition automation_program.hpp:17
Definition audio_renderer.hpp:20
AutomationProgramErrorCode
Definition automation_program.hpp:26
@ UnsupportedTarget
Definition automation_program.hpp:29
@ InstanceTokenExhausted
Definition automation_program.hpp:30
@ InvalidGeneration
Definition automation_program.hpp:27
@ MissingTempoMap
Definition automation_program.hpp:28
std::size_t select_automation_segment(const AutomationProgram &program, timebase::SamplePosition sample, bool cold, std::size_t segment_index) noexcept
Selects the segment governing an absolute timeline sample.
float evaluate_automation_segment(const AutomationProgram &program, std::size_t segment_index, timebase::SamplePosition sample, timebase::TickPosition tick) noexcept
The authored value of one already-selected segment at an exact tick.
std::uint64_t ProgramGeneration
Definition program_identity.hpp:10
Result<T, E> — success / failure union for fallible operations.
Definition automation_program.hpp:33
timeline::ItemId lane
Definition automation_program.hpp:35
AutomationProgramErrorCode code
Definition automation_program.hpp:34
Definition automation_program.hpp:21
constexpr auto operator<=>(const AutomationProgramInstanceToken &) const =default
std::uint64_t value
Definition automation_program.hpp:22
Definition automation_program.hpp:38
timeline::AutomationInterpolation interpolation
Definition automation_program.hpp:45
constexpr bool operator==(const AutomationProgramSegment &) const =default
timebase::SamplePosition start_sample
Definition automation_program.hpp:41
timebase::TickPosition end_tick
Definition automation_program.hpp:40
float curvature
Definition automation_program.hpp:46
float end_value
Definition automation_program.hpp:44
float start_value
Definition automation_program.hpp:43
timebase::TickPosition start_tick
Definition automation_program.hpp:39
timebase::SamplePosition end_sample
Definition automation_program.hpp:42
Definition rational_time.hpp:9
Format-neutral document target for a placed device parameter.
Definition parameter_target.hpp:22
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19