Skip to content

<sequence>: let children omit start and follow the previous clip #84

Description

@remorses

Problem

Inside <sequence> every child needs an explicit start. Without it start is 0 and all clips stack at the head of the sequence. <sequence> only tags the entity as Sequential, and a clip's computed start is just parentOrigin + Delay + Trim.start with no reference to its siblings (timing.ts, syncTiming).

So making the first clip of a long A-roll 1s longer means editing the start of every clip after it:

<sequence>
  <video src="take.mp4" start={0}    sourceIn={48.2} sourceOut={53.9} />
  <video src="take.mp4" start={5.7}  sourceIn={61.7} sourceOut={69.4} />
  <video src="take.mp4" start={13.4} sourceIn={74.0} sourceOut={78.1} />
  {/* ...30 more, all shifted by hand */}
</sequence>

The talking-head guide works around it with a JS cursor inside a <For>, but as soon as one clip is edited on the canvas the loop gets unrolled into literal starts, and later clips stop following.

Proposal

In a <sequence>, a child with no start begins where the previous sibling ends. An explicit start still wins and acts as an anchor for the clips after it.

<sequence>
  <video src="take.mp4" sourceIn={48.2} sourceOut={53.9} />
  <video src="take.mp4" sourceIn={61.7} sourceOut={69.4} />
  <video src="take.mp4" sourceIn={74.0} sourceOut={78.1} />
</sequence>

Changing the first sourceOut now moves everything after it. It also plays nicely with write-back: a trim on the timeline writes one prop and you get ripple editing for free, with no computed starts in the file.

Open questions

  • a clip with no sourceOut/end only knows its length once the asset loads, so followers would need to re-place when it lands
  • dragging an auto-placed clip on the timeline: write a literal start (pin it), or treat it as a reorder?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions