Hi all, So originally I wanted to learn about how to disable the project framerate boost when you turn real-time off, but soon realized from others that what Im seeing on my 2 machines is not normal behavior.
Ben suggested I post here to see if anyone has any ideas as to why my projects are doing this.
When I disable realtime, everything speeds up to around 120fpsā¦ Using this for an offline media encoder has been awesome, since it just renders videos at double timeā¦ but for this current project I would like to cap the speed at the project framerate, even any workaround ideas would be helpful.
I recorded a 2 min video showing / proving it happening.
Looked into this further and the running frame rate does cap at the projectās set frame rate regardless of whether the Realtime flag is on or off. However things like the Beat CHOP, Timer CHOP and other time based CHOPs certainly do speed up considerably.
Iāll have to ask the team the reason for this or if its a bug. Its in both 088 and 099 so its been like this for a while!
Well hey, if it turns out being a bug, I would urge it to become a preference, because I have been harnessing its power for about a year now in my batch video effects media encoder.
An update: I recently tried to remedy this and control the output speedā¦ and HOG CHOP ftw!! Not sure how to calculate it precisely, but with some trial and error a HOG chop set to a 0.02 delay with this project what is supposed to take 15 seconds doesā¦ but with no hog chop on, it takes 10.
Iāve been building projects with real-time disabled for video encoding and the like for a few years now. In my eyes, this āspeed boostā is definitely normal behaviour and should be expected.
Iām going to go over the concept of having real-time disabled in TouchDesigner in a bit more detail to speak to a wider audience of whoever might end up reading this thread.
When real-time mode is disabled, time in the context of TouchDesigner is no longer synced up with the quite literal real world time such as seconds on a stopwatch or a clock on the wall. Time is malleable at this point and one āsecondā in TouchDesigner with real-time disabled might be stretched into 10 seconds of real-time or compressed into 1/10th a second of real-time depending on the workload at hand. Relativity!
Frames will not be skipped if they are taking too long to draw, but also new frames will not wait to draw if the current frame has already been drawn. The frames per second will just increase along with the processing power available to spit frames out.
The latter explaining the increase of frames per second, withstanding the display refresh rate (e.g. 60, 120) whenever there is a window drawing on-screen. If you run your project headless, such as with window draw disabled or playing while minimised, you can achieve even higher FPS with real-time disabled.
The best solution Iāve found for when I need a project to run with real-time disabled, but also need some things to stay synced up with real-time (as if real-time was enabled) :
Set a Timer CHOPās speed parameter expression to adjust with the current FPS from a Perform CHOP such as me.time.rate / op('perform')['fps']
This expression compensates for changes in the current FPS to maintain a synchronicity with real-time.
There is a small issue with this approach due to the jitter on the Perform CHOPās FPS monitor reading jumping up one frame (e.g. 30/31, 60/61.) Iāve eliminated the jitter by quantising the FPS by a value step of 3 frames. (I did this using pythonās round() to keep it all in one parameter expression but could be done with a Limit CHOP instead.)
Attached is an example TOE of my approach to sync a Timer CHOP to real-time while TouchDesigner has āRealtimeā mode disabled. I would love to see a āAlways play in real-timeā toggle parameter added on the Timer CHOP. timer_realtime_sync.toe (5.11 KB)
The specific use case I originally investigated this solution for was a project that needed to run with real-time disabled to render out videos but also needed to communicate with a server at a set regular interval to send a status ping/message.
Our back-end developer alerted us that TouchDesigner was flooding the render queue management server with pings that were only supposed to send once on a 10 second timer. Well, with a 30 FPS project running with real-time disabled at up to ~1000 FPS, those pings were actually sending every 0.3 seconds!
in some other animation software, thereās often a āplay every frame but capped fpsā mode - so itāll play every frame as fast as it can, but no faster than what the FPS is set at, would love that.
I was making use of the speed boost in export movie but in certain circumstances the audio would muck up when I did that, and would only work properly when playing at real time through the record on the movieOut CHOP
Im writing to askā¦ Was this changed in the more recent stable build? I may be crazy and wrong about this, but it appears the speed boost is now gone.
Nothing has changed as far as we know. You will still be limited to the frame rate of the system (monitor refresh rate) if you have vertical sync on which is the default.
Perhaps explain your exact steps and we can determine if something is unexpected.
Hello there,
Im trying to find a solution for this. Three years later.
Im recording at 30fps but if i push the realtime button it just doubles the speed rate (60-61fps).
If this was just a normal recording it will be great: half of the time.
But i want to be able to modulate parameters in the process, and since is twice the speed its not possible to match it correctly.
I have this problem too, would reiterate that speed boost is great except for when its not, and Iād love to figure out how to be deliberate employing either