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.

(See the updated download in the May 17, 2019 post)

It is intended to be as 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 9882 times

The /timeBase component contains Scenes (/scene1, etc) that act as a separate layer-mixer. 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 on the 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, Change overall size with Width and Height of /timeBase. On Each Scene component, there are adaptive panel layout parameters of the UI on the Panel2 page of each Scene component.

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, (Channels, not implemented) and Scene (will play another scene component). In the timeline, 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 and selecting an element type that gets placed where you clicked.

Playing a sub-range of the Timeline:
Under the viewers at the top is the "Play Sub" sub-range control (grab its bar's <, > and <> handles to change the sub-range start and end times). Then press "Play Sub" to play only the sub-range.

"View Range" at the bottom views a sub-time-range of the layers. You can also roller-wheel over the layers area to zoom the time-range.

Mixing layers:
The layers can be mixed in any combination you want. 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 including playing movies with audio. Event elements run one command on start and one at end.

Keyframing parameters isn't implemented directly.

You can scrub on the bar to the right of the I (Initialize) and S (Start) buttons, and you can scrub in the empty area below the last layer.

On these scrub areas, if you click and drag your cursor up above the bar, it will always play forward. If you click on the scrub area and drag down off the bar, it will pause after scrubbing.

The row with - and + will single-step. The button with <> will shuttle around the current frame if you drag to the left/right off the button.

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 element1, element2, ... 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.)

Other features:
- 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 are easier to rename & adjust.
- uses Parent Shortcuts extensively (parent.Scene, parent.Layer, parent.Element, parent.TimeBase).
- highly procedural - minimal scripts.

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.

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 the 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.par.Play = 0. The scene will pause when it reaches this frame. Then click timeBase's pause button to continue.

[ I started on this 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 component. ]
User avatar
Posts: 552
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: 254
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: 52
Joined: Fri May 16, 2014 11:40 pm

Re: timeBase - a Multi-Layer Timeline Component

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

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

Re: timeBase - a Multi-Layer Timeline Component

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

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

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: 223
Joined: Thu Jan 05, 2012 2:36 pm
Location: Los Angeles, CA

Re: timeBase - a Multi-Layer Timeline Component

Postby psychobug » Mon Jul 03, 2017 2:16 pm

Hi, that super usefull :) but I notice some strange thinks happends in sub range especially in last build of TD099 2017.10500. Anybody notice something similar ?
Posts: 34
Joined: Fri Mar 30, 2012 3:54 pm

Re: timeBase - a Multi-Layer Timeline Component

Postby greg » Wed Jan 31, 2018 8:13 pm

edited May 2019 ...

Here is a more evolved version of timeBase, for sequencing media elements along a timeline.

It's been built for screens around 1900 wide, but you can scale it down/up with the the Width parameter of /scene1 and the settings on its custom Panel2 page.

/timeBase is now a UI for all scenes inside.

download file deleted - see posts after May 17 2019 for the download.
User avatar
Posts: 552
Joined: Tue Nov 13, 2007 1:08 am

Re: timeBase - a Multi-Layer Timeline Component

Postby dage023 » Mon May 07, 2018 6:37 pm

Hey Greg!

Thanks a lot for this amazing tool, I can't wait to start using it! That being said, when I open the latest version in 2018.22270, I get a lot of load warnings ( skipping unrecognize parameter ).

Is there an easy way to fix those?

Posts: 58
Joined: Mon Jun 02, 2014 4:38 pm

Re: timeBase - a Multi-Layer Timeline Component

Postby pointshader » Thu May 10, 2018 2:34 pm

Once again Greg, thanks for the excellent component.

On opening in 2018.22270, there's an issue where all of movie elements don't work.

Here's how I fixed it. Inside of the movieEngine in every scene on every layer, it looks like the 'evalAddEngineId' DAT is over writing row 0 column 1 with erroneous data. Earlier in the chain that cell has a header value of 'player', so when this gets overridden various scripts elsewhere fail. A simple fix is to switch 'SelectRows' to 'By Index', and changing 'Start Row Index' to 1.
Jonathan Thompson
User avatar
Posts: 178
Joined: Mon Nov 01, 2010 3:15 am
Location: NYC


Return to Shared .tox Components

Who is online

Users browsing this forum: No registered users and 2 guests