The read side of the contract: a read-only window onto one pinned snapshot's context, narrowed to what its owner declared.
More...
|
| | CompileContextView (const Project &project, ItemId sequence_id, CompileContextSubscriptions subscriptions) noexcept |
| | Creates a borrowed view of sequence_id narrowed to subscriptions.
|
| CompileContextSubscriptions | subscriptions () const noexcept |
| | Returns the context kinds this view permits callers to read.
|
| const ChordScaleLane * | chord_scale_lane () const noexcept |
| | The sequence's chord/scale lane, or null when ChordScale was not declared or the sequence is not in this snapshot.
|
| const ChordScaleEvent * | chord_scale_at (timebase::TickPosition position) const noexcept |
| | The harmony in force at position, or null when ChordScale was not declared, the lane is empty, or position precedes its first event.
|
| const DynamicsLane * | dynamics_lane () const noexcept |
| | The sequence's intensity lane, or null when Dynamics was not declared or the sequence is not in this snapshot.
|
| std::optional< float > | dynamics_at (timebase::TickPosition position) const noexcept |
| | The interpolated intensity at position, or empty when Dynamics was not declared, the lane is empty, or position precedes its first event.
|
| const GrooveTemplate * | groove () const noexcept |
| | The sequence's groove, or null when Groove was not declared or the sequence is not in this snapshot.
|
The read side of the contract: a read-only window onto one pinned snapshot's context, narrowed to what its owner declared.
The view borrows the snapshot; the caller pins it (the compiler holds the same shared_ptr<const Project> the request carried) for the view's lifetime. Every accessor returns null for a kind the owner did not declare, so the declaration is load-bearing at the point of the read and not merely paperwork filed at registration.
| std::optional< float > pulp::timeline::CompileContextView::dynamics_at |
( |
timebase::TickPosition | position | ) |
const |
|
noexcept |
The interpolated intensity at position, or empty when Dynamics was not declared, the lane is empty, or position precedes its first event.
Empty is not zero: a reader that has not been told an intensity must decide for itself, and handing back 0.0 would look like an authored silence the document never states.