Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
zrythm::structure::arrangement::LoopableObject Class Reference
Inheritance diagram for zrythm::structure::arrangement::LoopableObject:
Collaboration diagram for zrythm::structure::arrangement::LoopableObject:

Public Member Functions

int get_num_loops (bool count_incomplete) const
 Returns the number of loops in the ArrangerObject, optionally including incomplete ones.
 
const auto & get_clip_start_pos () const
 Getter.
 
const auto & get_loop_start_pos () const
 Getter.
 
const auto & get_loop_end_pos () const
 Getter.
 
void clip_start_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame)
 The setter is for use in e.g.
 
void loop_start_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame)
 The setter is for use in e.g.
 
void loop_end_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame)
 The setter is for use in e.g.
 
void set_loop_start_position_unvalidated (const dsp::Position &pos)
 
void set_loop_end_position_unvalidated (const dsp::Position &pos)
 
void set_clip_start_position_unvalidated (const dsp::Position &pos)
 
double get_loop_length_in_ticks () const
 Returns the length of the loop in ticks.
 
auto get_loop_length_in_frames () const
 Returns the length of the loop in frames.
 
bool is_looped () const
 
- Public Member Functions inherited from zrythm::structure::arrangement::BoundedObject
auto get_end_position () const
 Getter.
 
void parent_base_qproperties (QObject &derived)
 
void end_position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame)
 The setter is for use in e.g.
 
void set_end_position_unvalidated (const dsp::Position &pos)
 
auto get_length_in_ticks () const
 Returns the length in ticks.
 
auto get_length_in_frames () const
 Returns the length in frames.
 
void resize (bool left, ResizeType type, double ticks, bool during_ui_action)
 Resizes the object on the left side or right side by given amount of ticks, for objects that do not have loops (currently none?
 
template<typename SelfT>
requires (FinalArrangerObjectSubclass<SelfT>)
void set_start_pos_full_size (this SelfT &self, const Position &pos, dsp::FramesPerTick frames_per_tick)
 Sets the end position of the ArrangerObject and also sets the loop end and fade out (if object supports those) so that they are at the end.
 
template<typename SelfT>
requires (FinalArrangerObjectSubclass<SelfT>)
void set_end_pos_full_size (this SelfT &self, const dsp::Position &pos, dsp::FramesPerTick frames_per_tick)
 Sets the end position of the ArrangerObject and also sets the loop end and fade out (if object supports those) to that position.
 
bool is_hit (const dsp::Position &pos, bool object_end_pos_inclusive=false) const
 Returns whether the object is hit by the given position (local position if non-timeline object).
 
bool is_hit (const signed_frame_t frames, bool object_end_pos_inclusive=false) const
 
bool is_hit_by_range (const dsp::Position &start, const dsp::Position &end, bool range_start_inclusive=true, bool range_end_inclusive=false, bool object_end_pos_inclusive=false) const
 Returns whether the given object is hit by the given range.
 
bool is_hit_by_range (signed_frame_t global_frames_start, signed_frame_t global_frames_end, bool range_start_inclusive=true, bool range_end_inclusive=false, bool object_end_pos_inclusive=false) const
 
virtual bool is_inside_range (const dsp::Position &start, const dsp::Position &end) const
 Checks if any part of the object is hit by the given range.
 
- Public Member Functions inherited from zrythm::structure::arrangement::ArrangerObject
auto get_type () const
 
virtual utils::Utf8String gen_human_friendly_name () const
 Generates a human readable name for the object.
 
bool is_start_hit_by_range (const dsp::Position &start, const dsp::Position &end, bool range_start_inclusive=true, bool range_end_inclusive=false) const
 Returns whether the given object is hit by the given range.
 
bool is_start_hit_by_range (const signed_frame_t global_frames_start, const signed_frame_t global_frames_end, bool range_start_inclusive=true, bool range_end_inclusive=false) const
 
void set_parent_on_base_qproperties (QObject &derived)
 Set the parent on QObject's that are children of this class.
 
auto get_position () const
 Getter.
 
void position_setter_validated (const dsp::Position &pos, dsp::TicksPerFrame ticks_per_frame)
 The setter is for use in e.g.
 
void set_position_unvalidated (const dsp::Position &pos)
 
bool is_position_valid (const dsp::Position &pos, PositionType pos_type, dsp::TicksPerFrame ticks_per_frame) const
 Returns if the given Position is valid.
 
bool set_position (const dsp::Position &pos, PositionType pos_type, bool validate, dsp::TicksPerFrame ticks_per_frame)
 Sets the given position on the object, optionally attempting to validate before.
 
void move (double ticks, dsp::FramesPerTick frames_per_tick)
 Moves the object by the given amount of ticks.
 
void set_track_id (const TrackUuid &track_id)
 
void set_track_id (std::optional< TrackUuid > track_id)
 
void unset_track_id ()
 
void update_positions (bool from_ticks, bool bpm_change, dsp::FramesPerTick frames_per_tick)
 Updates the positions in each child recursively.
 
auto get_track () const
 Returns the Track this ArrangerObject is in.
 
std::optional< TrackUuidget_track_id () const
 
virtual bool validate (bool is_project, dsp::FramesPerTick frames_per_tick) const =0
 Validates the arranger object.
 
virtual ArrangerObjectPtrVariant add_clone_to_project (bool fire_events) const =0
 Appends the ArrangerObject to where it belongs in the project (eg, a Track), without taking into account its previous index (eg, before deletion if undoing).
 
virtual ArrangerObjectPtrVariant insert_clone_to_project () const =0
 Inserts the object where it belongs in the project (eg, a Track).
 
std::optional< ArrangerObjectPtrVariant > remove_from_project (bool free_obj, bool fire_events=false)
 Removes the object (which can be obtained from find_in_project()) from its parent in the project.
 
void set_selection_status_getter (SelectionStatusGetter getter)
 
void unset_selection_status_getter ()
 
virtual bool is_deletable () const
 Returns whether the given object is deletable or not (eg, start marker).
 
- Public Member Functions inherited from zrythm::utils::UuidIdentifiableObject< ArrangerObject >
 UuidIdentifiableObject (const Uuid &id)
 
 UuidIdentifiableObject (const UuidIdentifiableObject &other)=default
 
 UuidIdentifiableObject (UuidIdentifiableObject &&other)=default
 
UuidIdentifiableObjectoperator= (const UuidIdentifiableObject &other)=default
 
UuidIdentifiableObjectoperator= (UuidIdentifiableObject &&other)=default
 
auto get_uuid () const
 

Data Fields

dsp::Position clip_start_pos_
 Start position of the clip loop, relative to the object's start.
 
dsp::Position loop_start_pos_
 Loop start Position relative to the object's start.
 
dsp::Position loop_end_pos_
 End position of the clip loop, relative to the object's start.
 
- Data Fields inherited from zrythm::structure::arrangement::BoundedObject
utils::QObjectUniquePtr< PositionProxyend_pos_
 End Position, if the object has one.
 
- Data Fields inherited from zrythm::structure::arrangement::ArrangerObject
Flags flags_ {}
 Flags.
 

Protected Member Functions

bool are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const
 
- Protected Member Functions inherited from zrythm::structure::arrangement::BoundedObject
bool are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const
 
- Protected Member Functions inherited from zrythm::structure::arrangement::ArrangerObject
 ArrangerObject (Type type, TrackResolver track_resolver) noexcept
 
bool are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const
 To be called by validate() implementations.
 

Friends

void init_from (LoopableObject &obj, const LoopableObject &other, utils::ObjectCloneType clone_type)
 
auto to_json (nlohmann::json &j, const LoopableObject &object)
 
auto from_json (const nlohmann::json &j, LoopableObject &object)
 

Additional Inherited Members

- Public Types inherited from zrythm::structure::arrangement::ArrangerObject
enum class  ResizeType : basic_enum_base_type_t {
  Normal , Loop , Fade , Stretch ,
  StretchTempoChange
}
 Flag used in some functions. More...
 
enum class  Type : basic_enum_base_type_t {
  MidiRegion , AudioRegion , ChordRegion , AutomationRegion ,
  MidiNote , ChordObject , ScaleObject , Marker ,
  AutomationPoint
}
 The type of the object. More...
 
enum class  Flags : basic_enum_base_type_t { NonProject = 1 << 0 }
 Flags. More...
 
enum class  PositionType : basic_enum_base_type_t {
  Start , End , ClipStart , LoopStart ,
  LoopEnd , FadeIn , FadeOut
}
 
using SelectionStatusGetter = std::function<bool (const Uuid &)>
 
using TrackUuid = structure::tracks::TrackUuid
 
using Track = structure::tracks::Track
 
using TrackResolver = structure::tracks::TrackResolver
 
using TrackPtrVariant = structure::tracks::TrackPtrVariant
 
using Position = zrythm::dsp::Position
 
using ArrangerObjectPtr = ArrangerObject *
 
- Static Public Attributes inherited from zrythm::structure::arrangement::ArrangerObject
static constexpr double DEFAULT_NUDGE_TICKS = 0.1
 
- Protected Attributes inherited from zrythm::structure::arrangement::ArrangerObject
TrackResolver track_resolver_
 
utils::QObjectUniquePtr< PositionProxypos_
 Position (or start Position if the object has length).
 
std::optional< TrackUuidtrack_id_
 ID of the track this object belongs to.
 
std::optional< SelectionStatusGetter > selection_status_getter_
 

Detailed Description

Definition at line 14 of file loopable_object.h.

Constructor & Destructor Documentation

◆ LoopableObject()

zrythm::structure::arrangement::LoopableObject::LoopableObject ( )
inlinenoexcept

Definition at line 17 of file loopable_object.h.

Member Function Documentation

◆ clip_start_position_setter_validated()

void zrythm::structure::arrangement::LoopableObject::clip_start_position_setter_validated ( const dsp::Position & pos,
dsp::TicksPerFrame ticks_per_frame )
inline

The setter is for use in e.g.

the digital meters whereas the set_pos func is used during arranger actions.

Definition at line 45 of file loopable_object.h.

◆ get_clip_start_pos()

const auto & zrythm::structure::arrangement::LoopableObject::get_clip_start_pos ( ) const
inline

Getter.

Definition at line 29 of file loopable_object.h.

◆ get_loop_end_pos()

const auto & zrythm::structure::arrangement::LoopableObject::get_loop_end_pos ( ) const
inline

Getter.

Definition at line 39 of file loopable_object.h.

◆ get_loop_length_in_frames()

auto zrythm::structure::arrangement::LoopableObject::get_loop_length_in_frames ( ) const
inline

Returns the length of the loop in frames.

Definition at line 101 of file loopable_object.h.

◆ get_loop_length_in_ticks()

double zrythm::structure::arrangement::LoopableObject::get_loop_length_in_ticks ( ) const
inline

Returns the length of the loop in ticks.

Definition at line 93 of file loopable_object.h.

◆ get_loop_start_pos()

const auto & zrythm::structure::arrangement::LoopableObject::get_loop_start_pos ( ) const
inline

Getter.

Definition at line 34 of file loopable_object.h.

◆ is_looped()

bool zrythm::structure::arrangement::LoopableObject::is_looped ( ) const
inline

Definition at line 106 of file loopable_object.h.

◆ loop_end_position_setter_validated()

void zrythm::structure::arrangement::LoopableObject::loop_end_position_setter_validated ( const dsp::Position & pos,
dsp::TicksPerFrame ticks_per_frame )
inline

The setter is for use in e.g.

the digital meters whereas the set_pos func is used during arranger actions.

Definition at line 69 of file loopable_object.h.

◆ loop_start_position_setter_validated()

void zrythm::structure::arrangement::LoopableObject::loop_start_position_setter_validated ( const dsp::Position & pos,
dsp::TicksPerFrame ticks_per_frame )
inline

The setter is for use in e.g.

the digital meters whereas the set_pos func is used during arranger actions.

Definition at line 57 of file loopable_object.h.

◆ set_clip_start_position_unvalidated()

void zrythm::structure::arrangement::LoopableObject::set_clip_start_position_unvalidated ( const dsp::Position & pos)
inline

Definition at line 85 of file loopable_object.h.

◆ set_loop_end_position_unvalidated()

void zrythm::structure::arrangement::LoopableObject::set_loop_end_position_unvalidated ( const dsp::Position & pos)
inline

Definition at line 81 of file loopable_object.h.

◆ set_loop_start_position_unvalidated()

void zrythm::structure::arrangement::LoopableObject::set_loop_start_position_unvalidated ( const dsp::Position & pos)
inline

Definition at line 77 of file loopable_object.h.

Friends And Related Symbol Documentation

◆ from_json

auto from_json ( const nlohmann::json & j,
LoopableObject & object )
friend

Definition at line 142 of file loopable_object.h.

◆ to_json

auto to_json ( nlohmann::json & j,
const LoopableObject & object )
friend

Definition at line 136 of file loopable_object.h.

Field Documentation

◆ clip_start_pos_

dsp::Position zrythm::structure::arrangement::LoopableObject::clip_start_pos_

Start position of the clip loop, relative to the object's start.

The first time the object plays it will start playing from the this position and then loop to loop_start_pos_.

Definition at line 156 of file loopable_object.h.

◆ loop_end_pos_

dsp::Position zrythm::structure::arrangement::LoopableObject::loop_end_pos_

End position of the clip loop, relative to the object's start.

Once this is reached, the clip will go back to loop_start_pos_.

Definition at line 166 of file loopable_object.h.

◆ loop_start_pos_

dsp::Position zrythm::structure::arrangement::LoopableObject::loop_start_pos_

Loop start Position relative to the object's start.

Definition at line 159 of file loopable_object.h.


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