RFE: Disable/Hide Timeline

Hello,

The timeline dialog uses a fair amount of cook time per frame, between 0.5-2ms:

This can mostly be attributed to the Text TOPs it uses to render the timecode/frame:

Would it be possible to add a display toggle button for the timeline dialog as a whole? This could live next to the Perform/Palette buttons, for example, as a quick way to save precious compute while editing networks.

I am interested to hear from other TD devs about whether this feature would seem justified to them; perhaps it is only me who so rarely interacts with the built-in timeline dialog?

And, if at all possible, it would be great to optimize the timeline dialog. For example, 3d textures in a GLSL outperform the Text TOP by a fair margin:

Attached is a quick component of the above, should anyone at Derivative be open to exploring this methodology in /ui/dialogs/timeline/transport/timecode.

Kindly,
Dylan

Timecode.tox (36.6 KB)

4 Likes

+1 for having this real-estate back. :slight_smile:
Having worked with Unreal and Notch it’s interesting to me how much network space we have in Touch… I’m still greedy for a little more. I know it’s only 90 pixels, but I’d also love that little bit of screen space back.

3 Likes

+1 from me as well. This would be great

1 Like

Well then, chiming in +1

1 Like

yes please! +100000000

1 Like

In the last 10 years of me doing full-time TouchDesigner work I haven’t used the timeline or any of its controls in any of the projects I worked on, as in: absolutely none.
In my opinion it mostly confuses newish users who think they need it for animation, or who stumble upon the timeline being paused by accident, while even Derivative itself recommends to use other methods for animation. It’s really time to get rid of it.

3 Likes

+1 as well. Especially to Idzard’s point, I’ve never used it on a project and have written blog posts to help new users not get sucked into it. It also makes remote session slower and sometimes I find myself moving the timeline off screen to save on the draw updates.

2 Likes

+1

I’ve found myself wishing to replace that pane with other content, or to make it collapsible like ctrl b does the palette.

I can’t say I’ve never used it… There are a handful of situations like scoring a fixed length audio track synced to that timeline where it’s been helpful to jump to a specific part of the song, but certainly not a thing I go to often enough to justify the cooks or the screen real estate as default in every project

1 Like

I started building a simplified version a while back but never published it. The idea was to let you manually replace the existing one with your own timeline.tox.

There were a few problems, particularly how to install it so it fits/adapts and sticks … it’s tricky. I’ll send a procedure once I figure it out. The text-drawing time is a separate issue.

This is where it’s at UI-wise.

timelineGH.1.tox (47.7 KB)

6 Likes

2021 builds of TouchDesigner only:
For any brave soul who wants to try this experimental (UNSUPPORTED) simplified timeline (i.e. no line), first delete C:\Program Files\Derivative\TouchDesigner.2021.xxxxx\Config\System\timeline.tox (you may have to do it as Administrator). Then copy-paste the attached timeline.tox in its place.

Then you have to edit C:\Program Files\Derivative\TouchDesigner.2021.xxxxx\Config\Applications\Fuse\App.ui. You will likely have to change its file permissions (rclick → Properties) to make the file writable by you. Then you can change the last line, where it says 0.90, change it to 0.42 (meaning 42 pixels high), and save the file out.

timeline.tox (49.1 KB)

Then start TouchDesigner. This eliminates the scrub bar, several buttons, the rarely-used music time signature. Clicking on the frame display gives 4 representations of the current time, and eliminates one of the Text TOPs.

7 Likes

@greg This is really cool, thanks so much for sharing and the process to edit it!

For anyone wondering what it looks like:

3 Likes

And for not having to replace a fixed component this little script


timeline_op = op("/ui/dialogs/timeline")
prefab_timeline = op("custom_timeline")

for child in timeline_op.findChildren( depth =1 ):
	try:
		child.destroy()
	except:
		pass

for parameter in prefab_timeline.pars():
	timeline_op.par[ parameter.name ] = parameter

timeline_op.par.clone = op("custom_timeline")

And voila, the timeline gets replaced with the component you define as the prefab.
The good thing is that this need to be done every startup, but just call the script with an executeDAT on startup, so this is totaly project dependant. THis technique can basicly be used to easily replace all of the default UI components. The key is to not destroy the UI element but to scrup it good and implement you own stuff then. Just cloning wont work.

Also, caviat for that: I could not find the script to change the size that exists somewhere in there (urg, TScript). Instead I just have a simple executeScript setting the widthParameter of the element ecery frame to ui.windowWidth

GOnna upload this as a standalone component.

5 Likes

Oh shit. You don’t even know what a dangerous door this has opened for me… I’m about to break things

3 Likes

@alphamoonbase, here’s a quick tox I whipped up to set the height of that bottom pane. Feel free to incorporate to your olib component.

Note that TD must be run as administrator for this to work, and it will require a relaunch of the TD instance to take effect

setBottomPaneHeight.tox (1.5 KB)

1 Like

Can someone share the path that is used in MacOS? I don’t see timeline.tox under /Applications/TouchDesigner.app/

Would this still work in the current (2023) build?

I’m comfortable swapping out files, but I’ve never tinkered with the inner workings of TD and I’d rather not break things unnecessarily