|
Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
|
Represents an automation region, which contains a collection of automation points. More...
#include <src/gui/dsp/automation_region.h>


Public Member Functions | |
| void | print_automation () const |
| Prints the automation in this Region. | |
| void | force_sort () |
| Forces sort of the automation points. | |
| bool | get_muted (bool check_parent) const override |
| Gets the mute status of the object. | |
| AutomationPoint * | get_prev_ap (const AutomationPoint &ap) const |
| Returns the AutomationPoint before the given one. | |
| AutomationPoint * | get_next_ap (const AutomationPoint &ap, bool check_positions) const |
| Returns the AutomationPoint after the given one. | |
| void | get_aps_since_last_recorded (Position pos, std::vector< AutomationPoint * > &aps) |
| Returns the automation points since the last recorded automation point (if the last recorded automation point was before the current pos). | |
| AutomationPoint * | get_ap_around (Position *_pos, double delta_ticks, bool before_only, bool use_snapshots) |
| Returns an automation point found within +/- delta_ticks from the position, or NULL. | |
| bool | validate (bool is_project, dsp::FramesPerTick frames_per_tick) const override |
| Validates the arranger object. | |
| void | set_automation_track (AutomationTrack &at) |
| Sets the automation track. | |
| AutomationTrack * | get_automation_track () const |
| Gets the AutomationTrack using the saved index. | |
| Location | get_location (const AutomationPoint &) const override |
| std::string | get_field_name_for_serialization (const AutomationPoint *) const override |
| void | init_after_cloning (const AutomationRegion &other, ObjectCloneType clone_type) override |
| Initializes the cloned object. | |
Public Member Functions inherited from RegionImpl< AutomationRegion > | |
| void | append_children (this AutomationRegion &self, std::vector< RegionOwnedObject * > &children) |
| Fills the given vector with all the children of this region. | |
| void | fill_midi_events (TrackPtrVariant track_var, const EngineProcessTimeInfo &time_nfo, bool note_off_at_end, bool is_note_off_for_loop_or_region_end, dsp::MidiEventVector &midi_events) const |
| Fills MIDI event queue from this MIDI or Chord region. | |
| auto | get_object_ptr (const ArrangerObject::Uuid id) const |
| auto | get_object_ptr (const ArrangerObjectUuidReference &id) const |
| auto & | get_arranger_object_registry () const |
| auto & | get_arranger_object_registry () |
| void | remove_all_children (this AutomationRegion &self) |
| Removes all children objects from the region. | |
| bool | get_muted (bool check_parent) const override |
| Gets the mute status of the object. | |
| ArrangerObjectPtrVariant | add_clone_to_project (bool fire_events) const final |
| 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). | |
| ArrangerObjectPtrVariant | insert_clone_to_project () const final |
| Inserts the object where it belongs in the project (eg, a Track). | |
| void | set_link_group (int group_idx, bool update_identifier) |
| Sets the link group to the region. | |
| void | update_identifier (this AutomationRegion &self) |
| Disconnects the region and anything using it. | |
| void | unlink () |
| Removes the link group from the region, if any. | |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
| void | stretch (double ratio) |
| Stretch the region's contents. | |
| void | create_link_group_if_none () |
Public Member Functions inherited from Region | |
| bool | is_midi () const |
| bool | is_audio () const |
| bool | is_automation () const |
| bool | is_chord () const |
| RegionLinkGroup * | get_link_group () |
| Returns the region's link group. | |
| bool | has_link_group () const |
| signed_frame_t | timeline_frames_to_local (signed_frame_t timeline_frames, bool normalize) const |
| Converts frames on the timeline (global) to local frames (in the clip). | |
| void | get_frames_till_next_loop_or_end (signed_frame_t timeline_frames, signed_frame_t *ret_frames, bool *is_loop) const |
| Returns the number of frames until the next loop end point or the end of the region. | |
| void | update_link_group () |
| Updates all other regions in the region link group, if any. | |
| bool | is_recording () |
| Returns if this region is currently being recorded onto. | |
Public Member Functions inherited from ArrangerObject | |
| auto | get_type () const |
| 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< TrackUuid > | get_track_id () const |
| 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 | |
| UuidIdentifiableObject & | operator= (const UuidIdentifiableObject &other)=default |
| UuidIdentifiableObject & | operator= (UuidIdentifiableObject &&other)=default |
| auto | get_uuid () const |
| void | copy_members_from (const UuidIdentifiableObject &other) |
Public Member Functions inherited from NamedObject | |
| NamedObject (NameValidator validator=[](const utils::Utf8String &) { return true;}) | |
| utils::Utf8String | get_name () const |
| Returns the name of the object. | |
| void | gen_escaped_name () |
| Generates the escaped name for the object. | |
| void | set_name (this auto &&self, const utils::Utf8String &name) |
| Sets the name of the object. | |
| void | generate_name_from_automation_track (this auto &self, const auto &track, const auto &at) |
| void | generate_name_from_track (this auto &self, const auto &track) |
| void | generate_name (this auto &self, std::optional< utils::Utf8String > base_name, const auto *at, const auto *track) |
| void | set_name_with_action (const utils::Utf8String &name) |
| Changes the name and adds an action to the undo stack. | |
| utils::Utf8String | gen_human_friendly_name () const final |
| Generates a human readable name for the object. | |
Public Member Functions inherited from MuteableObject | |
| void | set_muted (bool muted, bool fire_events) |
| Sets the mute status of the object. | |
Public Member Functions inherited from LoopableObject | |
| 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 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 ColoredObject | |
| QColor | get_effective_color () const |
| Returns the color of the object if set, otherwise the owner track's color. | |
Public Member Functions inherited from ArrangerObjectOwner< AutomationPoint > | |
| auto & | get_children_vector () |
| auto & | get_children_vector () const |
| auto | get_children_view () const |
| auto & | get_children_snapshots_vector () |
| auto & | get_children_snapshots_vector () const |
| auto | get_children_snapshots_view () const |
| void | add_ticks_to_children (double ticks, dsp::FramesPerTick frames_per_tick) |
| ArrangerObjectListModel * | get_model () const |
| ArrangerObjectUuidReference | remove_object (this SelfT &self, const ArrangerObject::Uuid &id) |
| void | insert_object (this SelfT &self, const ArrangerObjectUuidReference &obj_ref, int idx) |
| void | add_object (this SelfT &self, const ArrangerObjectUuidReference &obj_ref) |
| void | clear_objects () |
| virtual Location | get_location (const ChildT &) const=0 |
| Returns the current location of this owner. | |
| virtual std::string | get_field_name_for_serialization (const ChildT *) const=0 |
| Get the children field name to be used during serialization/deserialization. | |
| void | copy_members_from (const ArrangerObjectOwner &other, ObjectCloneType clone_type) |
| void | copy_children (const ArrangerObjectOwner &other) |
Public Member Functions inherited from ICloneable< AutomationRegion > | |
| std::unique_ptr< AutomationRegion > | clone_unique (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| std::shared_ptr< AutomationRegion > | clone_shared (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| AutomationRegion * | clone_raw_ptr (ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| AutomationRegion * | clone_qobject (QObject *parent, ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
| QScopedPointer< AutomationRegion > | clone_unique_qobject (QObject *parent, ObjectCloneType clone_type=ObjectCloneType::Snapshot, Args &&... args) const |
Static Public Member Functions | |
| static int | sort_func (const void *_a, const void *_b) |
Static Public Member Functions inherited from RegionImpl< AutomationRegion > | |
| static constexpr bool | is_midi () |
| static constexpr bool | is_audio () |
| static constexpr bool | is_automation () |
| static constexpr bool | is_chord () |
| static constexpr bool | is_laned () |
| static constexpr bool | has_children () |
| static AutomationRegion * | at_position (const Track *track, const AutomationTrack *at, dsp::Position pos) |
| Returns the region at the given position in the given Track. | |
Static Public Member Functions inherited from Region | |
| static std::optional< ArrangerObjectPtrVariant > | get_at_pos (dsp::Position pos, Track *track, AutomationTrack *at, bool include_region_end=false) |
| Returns the region at the given position, if any. | |
Data Fields | |
| AutomationPoint * | last_recorded_ap_ = nullptr |
| Last recorded automation point. | |
| ControlPort::Uuid | automatable_port_id_ |
| Owner automation track. | |
Data Fields inherited from Region | |
| ArrangerObjectRegistry & | object_registry_ |
| std::optional< int > | link_group_ |
| int | bounce_ = 0 |
| Set to ON during bouncing if this region should be included. | |
| bool | stretching_ = false |
| Whether currently running the stretching algorithm. | |
| double | stretch_ratio_ = 1.0 |
| Used during arranger UI overlay actions. | |
| double | before_length_ = 0.0 |
| The length before stretching, in ticks. | |
Data Fields inherited from ArrangerObject | |
| Flags | flags_ {} |
| Track this object belongs to (cache to be set during graph calculation). | |
Data Fields inherited from MuteableObject | |
| bool | muted_ = false |
| Whether muted or not. | |
Data Fields inherited from LoopableObject | |
| 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 BoundedObject | |
| PositionProxy * | end_pos_ = nullptr |
| End Position, if the object has one. | |
Data Fields inherited from ColoredObject | |
| Color | color_ |
| Color independent of owner (Track/Region etc.). | |
| bool | use_color_ = false |
| Whether to use the custom color. | |
Data Fields inherited from ICloneable< AutomationRegion > | |
| friend | Derived |
Friends | |
| class | RegionImpl< AutomationRegion > |
| void | to_json (nlohmann::json &j, const AutomationRegion &ar) |
| void | from_json (const nlohmann::json &j, AutomationRegion &ar) |
Additional Inherited Members | |
Public Types inherited from RegionImpl< AutomationRegion > | |
| using | RegionTPtr |
| using | ChildT |
| using | ChildTPtr |
Public Types inherited from ArrangerObject | |
| enum class | ResizeType { Normal , Loop , Fade , Stretch , StretchTempoChange } |
| Flag used in some functions. More... | |
| enum class | Type { MidiRegion , AudioRegion , ChordRegion , AutomationRegion , MidiNote , ChordObject , ScaleObject , Marker , AutomationPoint } |
| The type of the object. More... | |
| enum class | Flags { NonProject = 1 << 0 } |
| Flags. More... | |
| enum class | PositionType { Start , End , ClipStart , LoopStart , LoopEnd , FadeIn , FadeOut } |
| using | SelectionStatusGetter = std::function<bool (const Uuid &)> |
| using | Position = zrythm::dsp::Position |
| using | ArrangerObjectPtr = ArrangerObject * |
Public Types inherited from NamedObject | |
| using | NameValidator = std::function<bool (const utils::Utf8String &)> |
Public Types inherited from ColoredObject | |
| using | Color = zrythm::utils::Color |
Public Types inherited from ArrangerObjectOwner< AutomationPoint > | |
| using | PortUuid |
| using | ArrangerObjectChildType |
Static Public Attributes inherited from ArrangerObject | |
| static constexpr double | DEFAULT_NUDGE_TICKS = 0.1 |
Protected Member Functions inherited from Region | |
| Region (ArrangerObjectRegistry &object_registry) | |
| void | copy_members_from (const Region &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from TimelineObject | |
| void | copy_members_from (const TimelineObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from ArrangerObject | |
| ArrangerObject (Type type, TrackResolver track_resolver) noexcept | |
| void | copy_members_from (const ArrangerObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
| To be called by validate() implementations. | |
Protected Member Functions inherited from NamedObject | |
| void | copy_members_from (const NamedObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from MuteableObject | |
| void | copy_members_from (const MuteableObject &other, ObjectCloneType clone_type) |
Protected Member Functions inherited from LoopableObject | |
| void | copy_members_from (const LoopableObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
Protected Member Functions inherited from BoundedObject | |
| void | copy_members_from (const BoundedObject &other, ObjectCloneType clone_type) |
| bool | are_members_valid (bool is_project, dsp::FramesPerTick frames_per_tick) const |
Protected Member Functions inherited from ColoredObject | |
| void | copy_members_from (const ColoredObject &other, ObjectCloneType clone_type) |
| template<typename Derived> | |
| void | init_colored_object (this Derived &self) |
Protected Attributes inherited from ArrangerObject | |
| TrackResolver | track_resolver_ |
| PositionProxy * | pos_ = nullptr |
| Position (or start Position if the object has length). | |
| std::optional< TrackUuid > | track_id_ |
| ID of the track this object belongs to. | |
| std::optional< SelectionStatusGetter > | selection_status_getter_ |
| Whether part of an auditioner track. | |
Protected Attributes inherited from NamedObject | |
| utils::Utf8String | name_ |
| Name to be shown on the widget. | |
| utils::Utf8String | escaped_name_ |
| Escaped name for drawing. | |
| NameValidator | name_validator_ |
Protected Attributes inherited from ArrangerObjectOwner< AutomationPoint > | |
| bool | clearing_ |
Represents an automation region, which contains a collection of automation points.
The automation points must always stay sorted by position. The last recorded automation point is also stored.
Definition at line 20 of file automation_region.h.
| AutomationPoint * AutomationRegion::get_ap_around | ( | Position * | _pos, |
| double | delta_ticks, | ||
| bool | before_only, | ||
| bool | use_snapshots ) |
Returns an automation point found within +/- delta_ticks from the position, or NULL.
| before_only | Only check previous automation points. |
|
inlineoverride |
Definition at line 103 of file automation_region.h.
|
inlineoverride |
Definition at line 97 of file automation_region.h.
|
overridevirtual |
Gets the mute status of the object.
| check_parent | Whether to check parent (parent region or parent track lane if region), otherwise only whether this object itself is muted is returned. This will take the solo status of other lanes if true and if this is a region that can have lanes. |
Reimplemented from MuteableObject.
| AutomationPoint * AutomationRegion::get_next_ap | ( | const AutomationPoint & | ap, |
| bool | check_positions ) const |
Returns the AutomationPoint after the given one.
| check_positions | Compare positions instead of just getting the next index. |
|
overridevirtual |
Initializes the cloned object.
| ZrythmException | If the object could not be cloned. |
Implements ICloneable< AutomationRegion >.
|
overridevirtual |
Validates the arranger object.
| frames_per_tick | Frames per tick used when validating audio regions. Passing 0 will use the value from the current engine. |
Must only be implemented by final objects.
Implements ArrangerObject.
|
friend |
Definition at line 124 of file automation_region.h.
|
friend |
Definition at line 27 of file automation_region.h.
|
friend |
Definition at line 113 of file automation_region.h.
| ControlPort::Uuid AutomationRegion::automatable_port_id_ |
Owner automation track.
Definition at line 143 of file automation_region.h.
| AutomationPoint* AutomationRegion::last_recorded_ap_ = nullptr |
Last recorded automation point.
Definition at line 138 of file automation_region.h.