Immutable tick- and sample-domain form of one automation lane. More...
#include <automation_program.hpp>
Public Member Functions | |
| ProgramGeneration | generation () const noexcept |
| AutomationProgramInstanceToken | instance_token () const noexcept |
| timeline::ItemId | lane_id () const noexcept |
| const timeline::AutomationTarget & | target () const noexcept |
| 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. | |
| const timebase::CompiledTempoMap & | tempo_map () const noexcept |
| const std::shared_ptr< const timebase::CompiledTempoMap > & | tempo_map_owner () const noexcept |
| std::span< const AutomationProgramSegment > | segments () const noexcept |
| float | leading_value () const noexcept |
| bool | empty () const noexcept |
Static Public Member Functions | |
| static runtime::Result< std::shared_ptr< const AutomationProgram >, AutomationProgramError > | compile (const timeline::AutomationLane &lane, std::shared_ptr< const timebase::CompiledTempoMap > tempo_map, ProgramGeneration generation) |
Friends | |
| class | detail::AutomationProgramCompiler |
Immutable tick- and sample-domain form of one automation lane.
Every non-empty program ends with a zero-length terminal segment, so the final authored value remains unambiguous after sample-domain knot collisions and clamped boundary values need no second point-storage representation.
|
static |
|
inlinenoexcept |
The device parameter this lane drives, or none when it drives a control the owning track holds itself.
Device delivery only ever concerns the former; returning a pointer keeps that split explicit at every consumer.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
friend |