Login | Register 

timeBase - a Multi-Layer Timeline Component

Share your components here. First one to 100 wins!

timeBase - a Multi-Layer Timeline Component

Postby greg » Thu Dec 29, 2016 1:01 am

This is a customizable multi-layer timeline component that is designed to play and mix media elements.

It is intended to be as simple and customizable as possible, with minimal UI and most of its setup and controls via custom parameters on components, making the timeline easier to extend and use. Its internal architecture is a reflection of recently-developed best-practices, so we hope you learn from its internals. (099 only now)

TimeBase.1.jpg (29.45 KiB) Viewed 1158 times

Each timeBase component is a Scene that acts as a separate layer-mixer that gets triggered to play and mix. A Scene contains 1 or more layers, and each layer contains a number of "elements" placed along the timeline. There are six element types ("effects") including Movie file, Audio file, Text, Generative and Events. The scene contains the network that pulls and mixes video, audio and channels from the layers.

Click the “Scene 1” button at top left to see all the setup parameters for the whole scene… total length, initialization and start (same as the buttons "I" and "S" in the UI), cue time and cue go, plus the adaptive panel layout parameters of the UI including the overall width/height of the panel on the usual “Layout” page.

Click the “Layer 1” button etc to get the layer setup parameters.

Click any element on a timeline. Here you set the start and length of the element, and set the parameters of the specific element type:

There are 6 element types that can be intermixed on a layer. The current element types (Effects) are: Movie+Audio File, Audio File, Text, Generative, Events and Channels. Click an element bar to show the element’s parameters. The first custom page “Element” is common to all elements, the “Effect” page is specific to the type of effect – movie file name, etc.

Add an element by clicking on the background of the layer.

Playing a sub-range of the Timeline:
Under the viewers at the top is the sub-range control (grab the green bar's <, > and <=> to change the sub-range start and end times). Then press "PS" to play only the sub-range, and VS to view the sub-range of the layers.

Mixing layers:
The timelines can be mixed in any combination you want, and in scene1, you select and composite layers as you see fit, and select and mix audio to suit your needs. The example has layer 1 and 2 screened together, with layer 3 composited over 1 and 2. Layer 4 is used for an audio track, and any audio on movies in layer 1 gets mixed in.

The element types are pretty basic currently, playing movies and audio at normal speed, synced to the start of the element. Event elements run one command on start and one at end. Channel elements don't do much currently. Also keyframing parameters isn't implemented directly.

You can delete via a right-click on a layer or an element, or you can just go into scene1 and delete any layer1, layer2... component, and within a layer you can delete any element component.

If you go into any layer component, you will see that some elements have their specific effect built internal to the element component (audio file playback for example: in the elementN/effect component), and some effects are external to the element component - like effect2 beside an element2 (if it is a generative thing). It works either way - inside or outside the element component, and allows for huge image/audio generating components to live somewhere else in your project. (The element component has a parameter Effect, which is the path to the effect, and the effect component has an Element path parameter that points back to the element.)

I started on this right after the Day For Night festival (Dec 2017) where I got it in my head from looking at the terrific digital art and talking to the 27 other TouchDesigner users in attendance to stop talking and make this no-fuss component.

April 17, 2017 - uploaded timeBase.4.tox (see doc below)
(221.2 KiB) Downloaded 16 times
User avatar
Posts: 461
Joined: Tue Nov 13, 2007 1:08 am

Re: timeBase - a Multi-Layer Timeline Component

Postby enthewhite » Mon Jan 09, 2017 2:45 pm

Wow! :ugeek:

So I finally decided to uninstall adobe suite the other day in an effort to demonopolize my creative tool set, which has been fine so far using Affinity Photo to replace photoshop... but then of course today I decide I need to edit some video for my portfolio, and forget that after effects and premier are now gone :o . But then I think, I love touchdesigner so much, why not build some components to edit video?... glad I did a quick forum search for "video editing" so I didn't spend all day redoing all this work.

THANK YOU!! Happy to remonopolize my tool set to TD ;)
User avatar
Posts: 188
Joined: Sat Sep 03, 2011 9:19 pm
Location: Portland, OR

Re: timeBase - a Multi-Layer Timeline Component

Postby VidE » Tue Jan 10, 2017 12:41 pm

Thank You for a really wonderful, thoughtful and very useful piece of work.
Posts: 34
Joined: Fri May 16, 2014 11:40 pm

Re: timeBase - a Multi-Layer Timeline Component

Postby jmt4zj » Tue Jan 10, 2017 2:23 pm

Wow, this is nice! Definitely a great tool to have for a lot of situations!
User avatar
Posts: 41
Joined: Mon Nov 01, 2010 3:15 am

Re: timeBase - a Multi-Layer Timeline Component

Postby prochoy » Sat Feb 11, 2017 8:56 pm

Awesome Greg - very elegant approach!
Posts: 40
Joined: Wed Dec 31, 2014 2:20 pm

Re: timeBase - a Multi-Layer Timeline Component

Postby greg » Tue Apr 18, 2017 11:58 pm

With the new Parameter COMP, you can embed parameter dialogs in UIs, so timeBase.4.tox is re-designed to have the parameter dialog of the last-selected layer, element or the scene on the right side in the panel.

Other improvements:
- rclick menus on layers and elements let you delete them.
- Clicking the top viewers bring up the parameters of its source.
- color-coded element types.
- A Save .toe button in UI.
- Layers and Elements easier to rename & adjust.
- consolidated common functions in the SceneX extension.
- uses Parent Shortcuts extensively (parent.Scene, parent.Layer, parent.Element).
- highly procedural - minimal scripts.
- numerous bug fixes.

The description in the first post still applies. More info:

On customization:
The six element types are: Movie+Audio, Audio File, Text, Generative, Events, Channels. Every element (layer1/element1, element2...) has common parts. Every element type has a built-in default effect (element1/effect) . For example, the effect in a Movie+Audio is a simple movie player.

But Generative elements are created with an external effect component (effect2 is beside element2, and they point to each other), and you can customize the un-cloned effect2 any way, while leaving element2 as-is. Note: Any element type can have an external effect component.

Note: the value ladder on the parameter dialogs don't always appear - fixed in upcoming TD build.

In scene1, you can copy-paste elements with their effects from/to any layer by hand in the networks - they will be discovered automatically (via OP Find DATs). Layers can be copy/pasted too.

You need to decide how the layers are mixed - see network in scene1. Default video is layer 3 over (layer1 Screen layer2). Default audio is layer1 plus layer4.

Tip: To pause at a certain time, create an Event element at that time, in its Run Command On parameter, put this: parent.Scene.op('pause').click(1). The scene will pause when it reaches this frame. Then click timeBase's pause button to continue.
(221.2 KiB) Downloaded 21 times
User avatar
Posts: 461
Joined: Tue Nov 13, 2007 1:08 am

Re: timeBase - a Multi-Layer Timeline Component

Postby L05 » Wed Apr 19, 2017 12:58 am

Greg this is so fresh!
I'm very excited to dive into this. Thanks so much for sharing. :D
User avatar
Posts: 176
Joined: Thu Jan 05, 2012 2:36 pm
Location: Detroit, MI

Return to Shared .tox Components

Who is online

Users browsing this forum: No registered users and 3 guests