29 AutomationMode automationMode READ getAutomationMode WRITE setAutomationMode
30 NOTIFY automationModeChanged)
32 AutomationRecordMode recordMode READ getRecordMode WRITE setRecordMode
33 NOTIFY recordModeChanged)
34 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
41 using ArrangerObjectRegistry = arrangement::ArrangerObjectRegistry;
46 static constexpr int AUTOMATION_RECORDING_TOUCH_REL_MS = 800;
48 enum class AutomationMode : basic_enum_base_type_t
54 Q_ENUM (AutomationMode)
56 enum class AutomationRecordMode : basic_enum_base_type_t
61 Q_ENUM (AutomationRecordMode)
67 dsp::FileAudioSourceRegistry &file_audio_source_registry,
68 ArrangerObjectRegistry &obj_registry,
69 dsp::ProcessorParameterUuidReference param_id,
70 QObject * parent =
nullptr);
82 AutomationMode getAutomationMode ()
const {
return automation_mode_.load (); }
83 void setAutomationMode (AutomationMode automation_mode);
84 Q_SIGNAL
void automationModeChanged (AutomationMode automation_mode);
86 AutomationRecordMode getRecordMode ()
const {
return record_mode_; }
87 void setRecordMode (AutomationRecordMode record_mode);
88 Q_INVOKABLE
void swapRecordMode ()
90 record_mode_ =
static_cast<AutomationRecordMode
> (
91 (std::to_underlying (record_mode_) + 1)
92 % magic_enum::enum_count<AutomationRecordMode> ());
93 Q_EMIT recordModeChanged (record_mode_);
95 Q_SIGNAL
void recordModeChanged (AutomationRecordMode record_mode);
145 units::precise_tick_t position_ticks,
146 units::precise_tick_t delta_ticks,
147 bool search_only_backwards =
false);
159 units::sample_t timeline_position,
160 bool search_only_regions_enclosing_position)
const;
172 units::sample_t pos_samples,
173 bool search_only_regions_enclosing_position)
const -> AutomationRegion *;
184 units::sample_t timeline_frames,
185 bool search_only_regions_enclosing_position)
const;
187 bool contains_automation ()
const {
return !get_children_vector ().empty (); }
190 get_field_name_for_serialization (
const AutomationRegion *)
const override
196 static constexpr auto kParamIdKey =
"paramId"sv;
199 static constexpr auto kAutomationModeKey =
"automationMode"sv;
200 static constexpr auto kRecordModeKey =
"recordMode"sv;
202 friend void from_json (
const nlohmann::json &j,
AutomationTrack &track);
204 friend void init_from (
211 ArrangerObjectRegistry &object_registry_;
214 dsp::ProcessorParameterUuidReference param_id_;
217 std::atomic<AutomationMode> automation_mode_{ AutomationMode::Read };
220 AutomationRecordMode record_mode_{};
225 arrangement::AutomationTimelineDataProvider automation_data_provider_;
230 utils::QObjectUniquePtr<utils::PlaybackCacheScheduler>
231 automation_cache_request_debouncer_;
255 tempo_map, file_audio_source_registry, object_registry, param_ref));
AutomationTrack(const dsp::TempoMapWrapper &tempo_map, dsp::FileAudioSourceRegistry &file_audio_source_registry, ArrangerObjectRegistry &obj_registry, dsp::ProcessorParameterUuidReference param_id, QObject *parent=nullptr)
Creates an automation track for the given parameter.