38 parentObject WRITE setParentObject NOTIFY parentObjectChanged)
66 enum class
Type : basic_enum_base_type_t
91 const units::sample_t frames_start,
92 const units::sample_t frames_end,
93 bool range_start_inclusive = true,
94 bool range_end_inclusive = false)
const
97 return (range_start_inclusive
98 ? (pos_samples >= frames_start)
99 : (pos_samples > frames_start))
100 && (range_end_inclusive ? (pos_samples <= frames_end) : (pos_samples < frames_end));
107 auto type ()
const {
return type_; }
111 return position_adapter_.get ();
115 ArrangerObjectLoopRange * loopRange ()
const {
return loop_range_.get (); }
116 ArrangerObjectName * name ()
const {
return name_.get (); }
117 ArrangerObjectColor * color ()
const {
return color_.get (); }
118 ArrangerObjectMuteFunctionality * mute ()
const {
return mute_.get (); }
119 ArrangerObjectFadeRange * fadeRange ()
const {
return fade_range_.get (); }
128 Q_SIGNAL
void parentObjectChanged (QObject * parentObject);
133 auto &get_tempo_map ()
const {
return tempo_map_; }
136 enum class ArrangerObjectFeatures : std::uint8_t
147 Looping = LoopingBit | Bounds,
148 Region = Looping | Name | Color | Mute,
160 const dsp::TempoMap &tempo_map,
161 ArrangerObjectFeatures features,
162 QObject * parent =
nullptr) noexcept;
164 friend
void init_from (
167 utils::ObjectCloneType clone_type);
170 static constexpr auto kPositionKey =
"position"sv;
171 static constexpr auto kBoundsKey =
"bounds"sv;
172 static constexpr auto kLoopRangeKey =
"loop_range"sv;
173 static constexpr auto kFadeRangeKey =
"fadeRange"sv;
174 static constexpr auto kNameKey =
"name"sv;
175 static constexpr auto kColorKey =
"color"sv;
176 static constexpr auto kMuteKey =
"mute"sv;
178 to_json (nlohmann::json &j, const
ArrangerObject &arranger_object);
180 from_json (const nlohmann::json &j,
ArrangerObject &arranger_object);
185 const dsp::TempoMap &tempo_map_;
194 std::unique_ptr<dsp::AtomicPosition::TimeConversionFunctions>
195 time_conversion_funcs_;
198 dsp::AtomicPosition position_;
199 utils::QObjectUniquePtr<dsp::AtomicPositionQmlAdapter> position_adapter_;
217 BOOST_DESCRIBE_CLASS (
222 (type_, position_, bounds_, loop_range_, fade_range_, mute_, color_, name_))