|
| dsp::TimelinePosition * | position () const override |
| dsp::ContentTimeWarp * | contentWarp () const |
| dsp::TimebaseProvider * | timebaseProvider () const |
| Q_INVOKABLE void | setLengthTicks (double ticks) |
| Q_INVOKABLE QList< double > | loopPointTimelineTicks (double displayEndTicks) const |
| | Timeline delta-tick positions of each loop wrap point.
|
| double | timelineLengthTicks () const |
| | Warp-aware length of this clip in timeline ticks.
|
|
Q_SIGNAL void | timelineLengthTicksChanged () |
| units::sample_t | get_end_position_samples (bool end_position_inclusive) const |
| | Returns the end position of this clip in timeline samples.
|
|
units::sample_t | get_sample_duration () const |
| | Returns the duration of this clip in timeline samples (end minus start), warp-aware.
|
|
bool | is_hit (const units::sample_t frames, bool object_end_pos_inclusive=false) const |
| | Returns whether the clip is hit by the given timeline position.
|
|
bool | is_hit_by_range (std::pair< units::sample_t, units::sample_t > global_frames, bool range_start_inclusive=true, bool range_end_inclusive=true, bool object_end_pos_inclusive=false) const |
| | Whether the clip is hit by the given range.
|
| dsp::ContentPosition * | clipStartPosition () const |
| dsp::ContentPosition * | loopStartPosition () const |
| dsp::ContentPosition * | loopEndPosition () const |
| bool | trackBounds () const |
|
void | setTrackBounds (bool track) |
|
Q_SIGNAL void | trackBoundsChanged (bool track) |
| void | set_loop_range (dsp::ContentTick clip_start, dsp::ContentTick loop_start, dsp::ContentTick loop_end) |
| | Set the three loop positions atomically, bypassing the per-position clamping constraints.
|
|
bool | looped () const |
|
Q_SIGNAL void | loopedChanged () |
| Q_SIGNAL void | contentChanged () |
| | Emitted when the clip's content changes.
|
| Q_SIGNAL void | loopablePropertiesChanged () |
| | Emitted when any loop-related property changes.
|
|
int | get_num_loops (bool count_incomplete) const |
| | Returns the number of loops, optionally including incomplete ones.
|
| dsp::ContentTick | get_loop_length_in_ticks () const |
| | Returns the length of the loop in ticks.
|
| virtual void | shift_all_children (dsp::ContentTick delta)=0 |
| | Shifts all child objects by delta content ticks.
|
| virtual std::optional< dsp::ContentTick > | first_child_position () const =0 |
| | Returns the position of the first child, if any.
|
| auto | type () const |
| dsp::ContentPosition * | length () const |
| ArrangerObjectName * | name () const |
| ArrangerObjectColor * | color () const |
| ArrangerObjectMuteFunctionality * | mute () const |
|
Q_SIGNAL void | propertiesChanged () |
| | Emitted when any of the properties of the object changed.
|
| ArrangerObject * | parentObject () const |
|
void | setParentObject (ArrangerObject *object) |
|
Q_SIGNAL void | parentObjectChanged (QObject *parentObject) |
|
const dsp::TempoMap & | get_tempo_map () const |
| const dsp::TempoMapWrapper & | get_tempo_map_wrapper () const |
| virtual std::vector< ArrangerObjectListModel * > | get_child_list_models () const |
| | UuidIdentifiableObject (QObject *parent=nullptr) |
| auto | get_uuid () const |
| | UuidIdentifiableBase (QObject *parent=nullptr) |
| | UuidIdentifiableBase (const QUuid &id, QObject *parent=nullptr) |
| QUuid | raw_uuid () const |
|
| enum class | Type : std::uint8_t {
MidiClip
, AudioClip
, ChordClip
, AutomationClip
,
MidiControlEvent
, MidiNote
, ChordObject
, ScaleObject
,
Marker
, AutomationPoint
, AudioSourceObject
, TempoObject
,
TimeSignatureObject
} |
| | The type of the object. More...
|
| using | uuid_base_type |
| | Exposes the CRTP parameter for concept checking.
|
| enum class | ArrangerObjectFeatures : std::uint8_t {
Bounds = 1 << 0
, Name = 1 << 1
, Color = 1 << 2
, Mute = 1 << 3
,
ClipOwned = 1 << 4
} |
Intermediate base class for all clip types.
A Clip is a segment of the timeline with its own content coordinate system. It owns the members that only exist on clips: ContentTimeWarp, TimebaseProvider, and loop range positions. These were formerly split across ArrangerObjectBounds and ArrangerObjectLoopRange, which have been deleted.
Common members (position, length, name, mute, color) remain on ArrangerObject via feature flags.
Definition at line 36 of file clip.h.
| void zrythm::structure::arrangement::Clip::set_loop_range |
( |
dsp::ContentTick | clip_start, |
|
|
dsp::ContentTick | loop_start, |
|
|
dsp::ContentTick | loop_end ) |
Set the three loop positions atomically, bypassing the per-position clamping constraints.
Each position's dsp::Position::setTicks constraint normally clamps against the current sibling values, which corrupts values when setting an interdependent triplet sequentially (e.g. expanding loop_start beyond the current loop_end). This method writes all three without per-set clamping, so an interdependent target is applied as-is.
Inputs are clamped holistically to the loop invariants (loop_end >= max(clip_start, loop_start) + 1, all >= 0); already-valid triplets are applied unchanged.
If length-tracking (trackBounds) is on, it is disabled for the duration of the set so the explicit values are not overwritten by the length-tracking connection. Tracking is left disabled; callers that want it re-engaged (e.g. when the result is the default range) must call setTrackBounds themselves.