Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::playback::AutomationProgram Class Reference

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

Detailed Description

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.

Member Function Documentation

◆ compile()

runtime::Result< std::shared_ptr< const AutomationProgram >, AutomationProgramError > pulp::playback::AutomationProgram::compile ( const timeline::AutomationLane & lane,
std::shared_ptr< const timebase::CompiledTempoMap > tempo_map,
ProgramGeneration generation )
static

◆ device_target()

const timeline::DeviceParameterTarget * pulp::playback::AutomationProgram::device_target ( ) const
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.

◆ empty()

bool pulp::playback::AutomationProgram::empty ( ) const
inlinenoexcept

◆ generation()

ProgramGeneration pulp::playback::AutomationProgram::generation ( ) const
inlinenoexcept

◆ instance_token()

AutomationProgramInstanceToken pulp::playback::AutomationProgram::instance_token ( ) const
inlinenoexcept

◆ lane_id()

timeline::ItemId pulp::playback::AutomationProgram::lane_id ( ) const
inlinenoexcept

◆ leading_value()

float pulp::playback::AutomationProgram::leading_value ( ) const
inlinenoexcept

◆ segments()

std::span< const AutomationProgramSegment > pulp::playback::AutomationProgram::segments ( ) const
inlinenoexcept

◆ target()

const timeline::AutomationTarget & pulp::playback::AutomationProgram::target ( ) const
inlinenoexcept

◆ tempo_map()

const timebase::CompiledTempoMap & pulp::playback::AutomationProgram::tempo_map ( ) const
inlinenoexcept

◆ tempo_map_owner()

const std::shared_ptr< const timebase::CompiledTempoMap > & pulp::playback::AutomationProgram::tempo_map_owner ( ) const
inlinenoexcept

◆ detail::AutomationProgramCompiler

friend class detail::AutomationProgramCompiler
friend

The documentation for this class was generated from the following file: