jbilcke-hf/clapper

Timeline Editor (Advanced Grouping)

sendn0des opened this issue · 1 comments

This is an evolution of the previous in-progress timeline work allowing creation/dragging of clips on the timeline editor.

Once the timeline is complete, timeline editing to the script will become complex if a user re-writes or rearranges scenes.

Proposing to create "groups" (akin to AfterEffects pre-compositions).

To do this the script (whether handwritten or imported screenplay) needs to be inferred into "groups" by simple LLM. Think of these like edits inside of an edit.

There is one simple way to advance this without needing complex multiple timelines with multiple tab views.

  • Infer block of text in the word processor into a "Scene"
  • this scene will contain images/audio (voiceover or character dialog)
  • #78 related- LLM will need to deduce best case scenario for length of scene [aka- "we have 3 shots in this scene - one is a dramatic so longer and should be a wideshot, the other 2 are quick and dialog closeups - the character speaks at X seconds long, and there is a narration at X seconds long = TRT [total running time]" (will place notes in Discord for this equation - a tuned LLM later will def aid in this but out-the-box GPT will be fine - I think we can get pretty wild with this as we evolve).
  • In the frontend, simply use a rolldown to expand "scenes" with the cluster of elements inside of it. To keep the timeline from turning into a long vertical mess for now, just allow ONE scene to be expanded visually. Unfurling Scene 2 would collapse Scene 1 for instance.
  • The scenes SHOULD utilize heads/tails, allowing fine tune editing to still occur on overlapping scenes.
  • When the timeline is built via the word processor on script entry -> Scene 1 should be UNDER Scene 2 and Scene 2 UNDER 3 etc. etc. This will allow the heads and tails of scenes to spill over each other.
    Thus - Moving scene 1 ON TOP OF Scene 2 in the timeline layer order, willl NOT change script, since Linear Timeline order is still adhered to (script and linear order takes precedent). Allowing for unique edit fine tuning ( for quick ref for devs - https://help.editmentor.com/en/articles/4657469-clip-head-vs-clip-tail ).

This is an important feature to expand upon Moon's earlier feature request so a bounty should be in order here

for the person taking on this:

you can look at the fields parentId: string and childrenIds: string[] in ClapSegment which are used for data persistance (we are going to add parent: TimelineSegment and children: TimelineSegment[] in TimelineSegment as well for runtime usage since this provides faster access in rendering loops)