39class ContentTimeWarp :
public QObject
48 ContentTick content_ticks;
49 TimelineTick timeline_delta_ticks;
56 QObject * parent =
nullptr);
57 ~ContentTimeWarp ()
override =
default;
59 std::span<const WarpPoint> warpPoints ()
const {
return warp_points_; }
128 void configure_as_source (units::bpm_t source_bpm);
129 void configure_as_warped (
130 units::bpm_t source_bpm,
131 std::span<const WarpPoint> user_markers);
146 void connect_for_mode ();
147 void disconnect_all ();
155 TimelineTick source_content_to_timeline (ContentTick content)
const;
156 ContentTick source_timeline_to_content (TimelineTick timeline)
const;
168 units::bpm_t source_bpm_ = units::bpm (0.0);
169 Mode mode_ = Mode::Project;
170 std::vector<WarpPoint> user_markers_;
171 std::vector<WarpPoint> warp_points_;
173 QMetaObject::Connection tempo_conn_;
174 QMetaObject::Connection pos_conn_;
175 QMetaObject::Connection len_conn_;
A Position whose ticks are content-space (clip-local) ticks.
TimelineTick contentToTimeline(ContentTick content) const
Convert content ticks to ABSOLUTE timeline ticks.
ContentTick timelineToContent(TimelineTick timeline) const
Convert ABSOLUTE timeline ticks to content ticks.
Q_INVOKABLE double timelineTicksRelativeToContent(double timelineTicksRelative) const
Convert timeline ticks RELATIVE to the clip's start position back to content ticks.
Q_INVOKABLE double contentToTimelineTicksRelative(double contentTicks) const
Convert content ticks to timeline ticks RELATIVE to the clip's start position.
bool is_identity() const
Returns true if the warp mapping is 1:1 (no timestretch needed).
void configure_as_project(units::bpm_t source_bpm=units::bpm(0.0))
Configures Project mode (identity warp — clip follows project tempo).
units::sample_t contentToTimelineSamples(ContentTick content) const
Convert content ticks to ABSOLUTE timeline samples.