30 AutomationMode automationMode READ getAutomationMode WRITE setAutomationMode
31 NOTIFY automationModeChanged)
33 AutomationRecordMode recordMode READ getRecordMode WRITE setRecordMode
34 NOTIFY recordModeChanged)
35 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
41 playbackCacheActivityTracker READ playbackCacheActivityTracker CONSTANT)
45 using ArrangerObjectRegistry = arrangement::ArrangerObjectRegistry;
50 static constexpr int AUTOMATION_RECORDING_TOUCH_REL_MS = 800;
52 enum class AutomationMode : uint8_t
58 Q_ENUM (AutomationMode)
60 enum class AutomationRecordMode : uint8_t
65 Q_ENUM (AutomationRecordMode)
71 dsp::FileAudioSourceRegistry &file_audio_source_registry,
72 ArrangerObjectRegistry &obj_registry,
73 dsp::ProcessorParameterUuidReference param_id,
74 QObject * parent =
nullptr);
86 AutomationMode getAutomationMode ()
const {
return automation_mode_.load (); }
87 void setAutomationMode (AutomationMode automation_mode);
88 Q_SIGNAL
void automationModeChanged (AutomationMode automation_mode);
90 AutomationRecordMode getRecordMode ()
const {
return record_mode_; }
91 void setRecordMode (AutomationRecordMode record_mode);
92 Q_INVOKABLE
void swapRecordMode ();
93 Q_SIGNAL
void recordModeChanged (AutomationRecordMode record_mode);
112 playbackCacheActivityTracker ()
const
114 return playback_cache_activity_tracker_.get ();
150 units::precise_tick_t position_ticks,
151 units::precise_tick_t delta_ticks,
152 bool search_only_backwards =
false);
164 units::sample_t timeline_position,
165 bool search_only_regions_enclosing_position)
const;
177 units::sample_t pos_samples,
178 bool search_only_regions_enclosing_position)
const -> AutomationRegion *;
189 units::sample_t timeline_frames,
190 bool search_only_regions_enclosing_position)
const;
192 bool contains_automation ()
const {
return !get_children_vector ().empty (); }
195 get_field_name_for_serialization (
const AutomationRegion *)
const override
201 static constexpr auto kParameterKey =
"parameter"sv;
204 static constexpr auto kAutomationModeKey =
"automationMode"sv;
205 static constexpr auto kRecordModeKey =
"recordMode"sv;
207 friend void from_json (
const nlohmann::json &j,
AutomationTrack &track);
209 friend void init_from (
216 ArrangerObjectRegistry &object_registry_;
219 dsp::ProcessorParameterUuidReference param_id_;
222 std::atomic<AutomationMode> automation_mode_{ AutomationMode::Read };
225 AutomationRecordMode record_mode_{};
230 utils::QObjectUniquePtr<arrangement::AutomationTimelineDataProvider>
231 automation_data_provider_;
236 utils::QObjectUniquePtr<utils::PlaybackCacheScheduler>
237 automation_cache_request_debouncer_;
239 utils::QObjectUniquePtr<PlaybackCacheActivityTracker>
240 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.