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 (
40 playbackCacheActivityTracker READ playbackCacheActivityTracker CONSTANT)
44 using ArrangerObjectRegistry = arrangement::ArrangerObjectRegistry;
49 static constexpr int AUTOMATION_RECORDING_TOUCH_REL_MS = 800;
51 enum class AutomationMode : uint8_t
57 Q_ENUM (AutomationMode)
59 enum class AutomationRecordMode : uint8_t
64 Q_ENUM (AutomationRecordMode)
70 dsp::FileAudioSourceRegistry &file_audio_source_registry,
71 ArrangerObjectRegistry &obj_registry,
72 dsp::ProcessorParameterUuidReference param_id,
73 QObject * parent =
nullptr);
85 AutomationMode getAutomationMode ()
const {
return automation_mode_.load (); }
86 void setAutomationMode (AutomationMode automation_mode);
87 Q_SIGNAL
void automationModeChanged (AutomationMode automation_mode);
89 AutomationRecordMode getRecordMode ()
const {
return record_mode_; }
90 void setRecordMode (AutomationRecordMode record_mode);
91 Q_INVOKABLE
void swapRecordMode ();
92 Q_SIGNAL
void recordModeChanged (AutomationRecordMode record_mode);
111 playbackCacheActivityTracker ()
const
113 return playback_cache_activity_tracker_.get ();
149 units::precise_tick_t position_ticks,
150 units::precise_tick_t delta_ticks,
151 bool search_only_backwards =
false);
163 units::sample_t timeline_position,
164 bool search_only_regions_enclosing_position)
const;
176 units::sample_t pos_samples,
177 bool search_only_regions_enclosing_position)
const -> AutomationRegion *;
188 units::sample_t timeline_frames,
189 bool search_only_regions_enclosing_position)
const;
191 bool contains_automation ()
const {
return !get_children_vector ().empty (); }
194 get_field_name_for_serialization (
const AutomationRegion *)
const override
200 static constexpr auto kParameterKey =
"parameter"sv;
203 static constexpr auto kAutomationModeKey =
"automationMode"sv;
204 static constexpr auto kRecordModeKey =
"recordMode"sv;
206 friend void from_json (
const nlohmann::json &j,
AutomationTrack &track);
208 friend void init_from (
215 ArrangerObjectRegistry &object_registry_;
218 dsp::ProcessorParameterUuidReference param_id_;
221 std::atomic<AutomationMode> automation_mode_{ AutomationMode::Read };
224 AutomationRecordMode record_mode_{};
229 utils::QObjectUniquePtr<arrangement::AutomationTimelineDataProvider>
230 automation_data_provider_;
235 utils::QObjectUniquePtr<utils::PlaybackCacheScheduler>
236 automation_cache_request_debouncer_;
238 utils::QObjectUniquePtr<PlaybackCacheActivityTracker>
239 playback_cache_activity_tracker_;
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.