What's New in 099 and Time Slicing: Difference between pages

From Derivative
(Difference between pages)
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
Line 1: Line 1:
__noToc__
{{#index:Time Slice}}{{Glossary
=== Spring 2018 Official Update - Branch 2018.20000 === 
|Title=Time Slice, Time Slicing
|Short=A Time Slice is the time from the last cook frame to the current cook frame. In CHOPs it is the set of short channels that only contain the CHOP channels' samples between the last and the current cook frame.
|Long=
}}Time Slicing is a feature in TouchDesigner that keeps your CHOP channels smooth, even when your overall frame rate goes down. This keeps your overall animation smoother and more accurate, and helps keep your audio from popping when your frame rate drops.


See also our '''[http://www.derivative.ca/Events/2018/TouchDesigner099Spring2018/default.asp Spring 2018 Official Announcement]'''.
A '''Time Slice''' is the time from the last cook frame to the current cook frame. (See [[Absolute Time]].) In [[CHOP]]s it is the set of short channels that only contain the CHOP channels' samples between the last and the current cook frame.  


===== Faster Performance =====
If the global frame rate is 60 frames per second, the time slice is a multiple of 1/60 second. For example, if TouchDesigner skipped a frame, it is 2/60 seconds.
[[Python]] [[expression]]s and references are used often in TouchDesigner projects. In the past, these python expressions had a non-trivial overhead that could reduce overall performance and frame rate. Substantial optimizations have been to these expressions which can result in massive speed gains and enable new possibilities of working with expressions.


Optimized Python Expressions have reduced the calculation time of much of the most commonly used python in TouchDesigner. In addition, a new system of Caching Expression Results will cache expressions to keep them from re-calculating every frame. The [[Perform CHOP]] has also been given new parameters to monitor the number of optimized expressions and number using cache.
You can see the time slice sizes by creating a [[Perform CHOP]] and sending it to a [[Trail CHOP]] and setting Perform to the Cook and Time Slice Step channels, <code>cook</code> and <code>timeslice_step</code>.


To get you working faster, we improved the time is takes TouchDesigner to startup and launch your projects. You can inspect this by clicking the filename on the splash screen during loading to reveal load time and other diagnostics about your project.
Most CHOPs cook a timeslice of channels to assure that curves are smooth and and pulses are accurate, even if the TouchDesigner process is skipping frames.


Time Slice is a '''Common''' page parameter on each CHOP and is automatically determined on most CHOPs.


===== Interoperability =====
'''Example''': If the current frame is 77 and the previously-displayed frame is 73, then the time slice is 4 frames long (frames 74 to 77). This means that TouchDesigner jumped ahead 4 frames to keep up with the real-time clock. Assuming the frame rate is 60 frames per second, if the CHOP is audio at its default 44100 samples per second, there will be 44100*4/60 = 2940 samples in the CHOP containing audio.
TouchDesigner can already work with hundreds of devices and software packages, enabling it to fit into any imaginable pipeline.  


The [[RealSense TOP]] now supports Intel’s new Librealsense API bringing [[RealSense]] D-series camera support to Windows and older camera support to macOS for the first time. We will continue to add features and support for RealSense as this new API matures and improves.
You can check if a CHOP is time sliced via the [[Mouse Click|MMB]] info pop-up on any CHOP node.  


[[AJA]] Video Devices get a speedy upgrade with support for GPUDirect mode, reducing latency to the minimum amount possible with the hardware.  
'''Note''': The maximum length of a time slice is set via the preference in Edit -> Preferences -> CHOPs. It is currently 200 msec. See the audio tip in [[Audio Device Out CHOP]].


The [[Video Device In TOP]] also gets added support for state-of-the-art Ximea cameras.
These short channels can be computed much faster than a full animation range channel, and uses less memory. This gain in speed and memory efficiency is extremely important for interactive 3D, puppeteering and audio processing.


[[TDAbleton|TD Ableton]] can now be found in the [[Palette]] and has received performance improvements and bug fixes.
[[Time Slicing Vid|'''Time Slicing Tutorial''']]


A new [[Audio Render CHOP]] uses the Steam Audio SDK to bring spatial audio to TouchDesigner. This is easy to setup by simply positioning a 3D object ‘listener’ and a 3D object ‘audio source’ in your 3D scene.
[[Image:Time Slicing.jpg|200px|link=Time Slicing Vid]]


[[Dante]] Audio is fully supported now that TouchDesigner’s ASIO data is processed in 32 bits, providing maximum fidelity to and from Audio CHOPs. Major improvements have also been made to handling of ASIO devices and channels that make the interface more robust and quicker to configure.
CHOPs often calculate the channel over a long start-end frame range. This is a good method for pre-animated channels and keyframed channels which do not need to be re-generated or re-calculated each frame.


The [[Web Render TOP]] that renders web pages with the Chromium engine now accepts input from a DAT, enabling you to assemble HTML, SVG or other formats in a DAT and render them all within TouchDesigner.
However, if the channel does need to be evaluated every frame due to user input (with for example a Mouse, Keyboard or MIDI CHOPs) or other realtime data input, and we are only interested in the values over the last few frames, then cooking the entire range of the channel is unnecessary. It is more efficient to calculate only the fraction of the channel that is needed. This fraction is known as a "Time Slice".


When you view the info on a CHOP, it reports its frame range and whether it is time sliced or not.


A second all-new operator, the [[Hokuyo CHOP]], reads in data from Hokuyo laser scanners. These scanners detect their surrounding environment on a 2D plane and are great for triggering events based on the movement and position of real world objects.
See also [[Absolute Time]], the [[OP Snippets]] for the [[Time Slice CHOP]], the [[Timeline]], the [[Hog CHOP]] and the Tscript:timeslice Command.


         
To Time Slice a CHOP, set its flag on the Common page. Try the [[Noise CHOP]] to see the effect with Time Slice On and Off.
If you are using sACN for DMX fixtures, LED control, or lighting console communication, sACN start codes are now handled nicely by the [[DMX In CHOP]]. The [[DMX Out CHOP]] also received many optimizations and bug fixes, especially for those using macOS.


Send a [[Constant CHOP]] to a [[Filter CHOP]], play forward and adjust the Constant CHOP slider to see the results of a Time Sliced CHOP.


===== 3D Geometry, Lighting, Materials & Rendering =====
With Time Slicing, samples do not get lost or un-processed when TouchDesigner cannot keep up with the [[timeline]]'s sample rate, default 60 frames per second. All frames get processed, albeit in batches of 1, 2 or more at a time. This gives TouchDesigner more accurate curves and timing.
Rejoice! Alembic file geometry sequences can now be used in TouchDesigner. The [[Alembic SOP]] can playback polymesh, curve, and point geometry sequences with full support for multiple geometry hierarchies embedded in the file. Furthermore, GPUDirect mode offers high performance geometry playback on the GPU.


For those C++ programmers out there, a new [[CPlusPlus SOP|C++ SOP]] will give you the ability to build your own SOPs to create geometry, load new file types, receive geometry from other software or whatever you can come up with. Like the Alembic SOP, it also has a GPUDirect mode for high performance.  
Time Slicing especially reduces the memory requirements of high sample-rate CHOPs like those in audio networks, and provides nearly instantaneous results when you tweak audio parameters in a network. Since even a short audio clip can use over a megabyte of storage, storing and processing only the necessary fraction of the clip reduces the memory requirements significantly, especially in large CHOP networks.


The [[Script SOP]] (a python-script based SOP) has new members and methods for creating Bezier tools.
Time Sliced CHOPs do not maintain any more history about the channel than is needed, and they recook every frame. This makes them well suited to realtime applications. Even so, they can be used to "perform" and record an animation, instead of keyframing it.


There are some new additions to improve the PBR (physically based rendering) pipeline. First, the [[PBR MAT]] can send maps to any of the color buffers on the Advanced parameter page. This is similar to the Phong MAT functionality which lets various material data be sent through additional color buffers to better utilize your GPU’s capacity.     
==<div class="sectionBarCHOP">How Time Slicing Works</div>==


For environment lighting, a new [[PreFilter Map TOP]] and parameter in the [[Environment Light COMP]] enable pre-filtering environment light maps using spherical harmonics. If you don’t know what that means, that’s okay. Just know that you now have better real-time control over the pre-filtering of your environment light maps, including separate options for diffuse and specular pre-filtering.
Time Sliced CHOPs cook whenever the [[Timeline]] is moved forward. The amount of time that the Timeline jumps ahead is the size of the current Time Slice. The Time Slice is synchronized with the Timeline so that its first sample begins just after the previous Time Slice's last sample, and its last sample is at the current frame. If the Timeline is playing forwards, the Time Slices generated will never overlap, nor will there be any gaps between them. All Time Sliced CHOPs will have the same Time Slice interval for a given cook.


The [[Substance TOP]] can now swap Input Images if the material author exposes that feature in their Substance material. A small detail but very helpful.
When the CHOP network needs to cook, the Time Slice interval is computed and a single Time Slice is passed through the network. Since the current frame is always contained within the slice, the slice can be easily exported to any parameter.


Other improvements in lighting include texture controls on the Projector Map parameter of the [[Light COMP]], and now you can use equirectangular environment maps with the [[Phong MAT]].
==<div class="sectionBarCHOP">Interface</div>==


A great new shortcut for GPU geometry instancing lets you use a [[SOP]] as input in the [[Geometry COMP]]’s Instance Count parameter, this is no longer limited to only CHOPs or DATs.
'''CHOP Parameter Dialog ''' - The Time Slice button is located in the Common page of the parameter dialog of all CHOPs. This button is greyed-out for CHOPs that do not have Time Slice capability, and for some CHOPs which always operate in Time Slice mode.
===== Video & Image Handling =====
The new [[Layout TOP]] positions multiple input TOPs into rows, columns, or grids. It has options to fit all inputs into a specific resolution by scaling them, or it can scale its own resolution to create an output containing all the inputs at their native resolution.
       
[[NDI]] is a powerful new feature in 099 and we’ve improved it by supporting faster internal formats and improved the handling of multiple streams by the [[NDI In TOP]]. You can also use the [[Info CHOP]] to query how many NDI devices are found on the network now.


The [[Movie File Out TOP]] has a mode for Image Sequence rendering making it easy to output image sequences in any image saving format TouchDesigner supports.  
'''Edit -&gt; Preferences -&gt; CHOPs''' '''Dialog''' - The Time Slice options can be changed using this dialog. They can also be changed from the Textport, using the timeslice Command.


Speaking of saving [[File Types|formats]], .dds file format was added to save out mipmap levels as images.
==<div class="sectionBarCHOP">CHOPs that are Always Time Sliced</div>==


To add to the many video encoding formats the Movie File Out TOP already supports, we’ve added H.265 HEVC and HAP/HAP Alpha encoding for more flexibility.
Most CHOPs do not need Time Slice capability; they will work on time sliced input in the same manner that they would on normal channel data. Time Sliced CHOPs and non-Time Sliced CHOPs can be mixed within the same CHOP network. The Time Slice option is provided for CHOPs that perform operations that read or modify other samples in the channel other than the current sample, or that maintain internal states.


Generally, if you want to create a time sliced CHOP network, all CHOPs with Time Slice capability should have their Time Slice flags (located on their Common page) on.


===== GLSL Features =====
==<div class="sectionBarCHOP">CHOPs which are Occasionally Time Sliced</div>==
Fresh improvements were made to Geometry Shaders in the [[GLSL MAT]]. More built-in functions are now available to geometry shaders, and now the ‘Output Shader’ button on Phong and PBR materials can include GLSL code for geometry shaders. Additionally, they can now be rendered using Fish-Eye or Dual Paraboloid modes in the Render TOP.


The GLSL MAT also has a new built-in function TDCreateTBNMatrix() to make it easy to calculate tangents, bi-tangents, and normals in your vertex shaders.
The following CHOPs will output Time Slices under certain conditions, but are not considered Time Sliced CHOPs. The Time Slice button in the Common page is greyed out for these CHOPs.


All GLSL operators now support #include statements which should make managing code in different DATs much easier.  
[[Trim CHOP]] - The Trim CHOP can trim the current time slice out of any input CHOP. This function is selected by changing the Unit Values menu to Current Time Slice.


The [[GLSL TOP]] now supports atomic counters which are a GLSL variable type useful for specific operations. You can read about them here: Atomic Counters
[[Record CHOP]] - This CHOP can be used to record the output of a Time Sliced CHOP over the animation range. It can also be used to interpolate a Time Slice from a CHOP that outputs a single frame (like the Mouse or Keyboard CHOPs). The input can be sampled over the entire Time Slice, or only at the current frame using the Record Input parameter. The output range can be selected using the Record Output parameter.


===== CHOPs =====
==<div class="sectionBarCHOP">Null CHOP Can Stop Overcooking</div>==
S-curves can be used for lookups, ease-in and ease-outs, softening transitions and so much more in signal processing that we created a new [[S Curve CHOP]] to help you create beautiful, smooth curves with easy to use controls.


Fans of the [[Event CHOP]] will be happy to hear it now has onCreate() and onDestroy() methods in its own callback DAT.
See the [[Null CHOP]] Cook Type -> Selective option.


The [[Analyze CHOP]] now has a Duplicates function that can count the number of samples with duplicate values. A good example of this in use is the Histogram example in the Palette.
==<div class="sectionBarCHOP">Time Slice Options Dialog</div>==


===== Workflow Features =====
There are three Time Slice options, which can be changed using the '''Edit -&gt; Preferences -&gt; CHOPs''' dialog. This dialog is found in the menu.
[[OP Snippets]] has expanded and now opens quickly as a pop-up window in your current project. Snippets will open to the currently-selected Operator should an example exist for it. Try it in the Help menu, Help -> OP Snippets. Add try out the new Random button in OP Snippets!


Parameter Help can be previewed by simply rolling over the parameter with the ‘alt/option’ key held down. This can be used for quick insight into a parameter’s function without leaving TouchDesigner when you’re “in the zone”.
<span class="tipTextCHOP">Enable Time Slice Flag When Creating CHOP</span> - All CHOPs with Time Slice capability created while this option is on will have their Time Slice flags enabled by default. Otherwise, all CHOPs are created with the Time Slice flag turned off. This is a convenient option to leave on when creating and working with large Time Sliced networks. This option is off by default.


Bringing Component [[Privacy]] and CodeMeter [[License Dongle]]s together, you can now make private components that run on your own CodeMeter License Dongles. Developers can contact CodeMeter to get their own ‘firmcode’ which can then be used to create custom dongles to license their own components.  
<span class="tipTextCHOP">Minimal Realtime Cooks</span> - Some Time Sliced CHOPs can minimize their cooking, rather than cooking every frame. When cooking is unnecessary, or it produces the same output, these CHOPs will stop cooking until an input changes. CHOPs that have this feature are:


[[Window COMP]] improvements help manage multiple monitors and various DPI scales with more flexibility. The Window COMP can now span multiple monitors on macOS Sierra+.
: [[Null CHOP]], [[Copy CHOP]], [[Count CHOP]], [[Envelope CHOP]], [[Lag CHOP]], [[Spring CHOP]], [[Trigger CHOP]]
           
New interface tweaks to the network address bar let you right-click on any part of the path to access that component’s context menu. You can also make any parameter read-only by right-clicking it and selecting ‘Enable Read Only’.


Minimal Cooking will not apply to these Time Sliced CHOPs if they have non-constant CHOP inputs or time dependent CHOP inputs. This option is Off by default. It can speed up CHOP networks that respond to isolated inputs or events.


===== Optimization Tools =====
<span class="tipTextCHOP">Maximum Time Slice Size (frames)</span> - This option allows you to limit the size of a Time Slice, expressed in frames. The default maximum is 6 frames. This is useful if you only need a few frames of history, and the Timeline is jumping ahead by large intervals. If a Time Slice is larger than this maximum size, it will be clipped from the current frame backwards (causing a gap between this slice and the previous one). The slice will always end on the current frame.
New features have been designed to help optimize and troubleshoot your projects. The [[Performance Monitor Dialog]] now reports both extension compile time and GPU calculation times.  


GPU cook times are now shown in each node’s info pop-up, and are available in python. Most visibly, the [[Palette:Probe|Probe]] tool in the Palette now lets you watch GPU cook times for any operator. it can be found in Palette > Tools.
==<div class="sectionBarCHOP">Uses for Time Slicing</div>==


===<div class="subSectionLineCHOP">Realtime Puppeteering and Control</div>===
===== Control Panels & Custom Parameters =====
Enhancements to [[Panel Component|Panel COMP]]s include the overdue addition of scrollbars. For assembling panels into larger user interfaces, the [[Select COMP]] also has new options to Match Size or Follow Selections to add flexibility when reusing panels in multiple locations in your interfaces. The panel rendering and layout engine has been reworked to behave more consistently at different sizes.


The [[Parameter COMP]], which lets you put parameter dialogs into any control panel, now lets you easily specify which parameters to include, to better customize what your users sees.  Multi-input OPs can now have their Input OP menus shown or hidden.
Time Slicing speeds up the animation response to user input. It provides you with a variety of effects to layer onto the input, such as lag, springs, and filtering. It is otherwise more difficult to achieve these effects on realtime input.
For faster creation of custom parameters in the Component Editor, you can now drag any parameter onto its  parameter list and it automatically creates a copy of that parameter with the same settings and style.  
Two new types of custom parameters are the Momentary parameter, and for holding simple lists and dictionaries, a Python type parameter.


===== New Python =====
===<div class="subSectionLineCHOP"> Animation Performance </div>===
New [[python]] classes, members, and methods extend TouchDesigner’s functionality further and offer a number of exciting new features.
* The new [[quaternion_Class|Quaternion Class]] helps when working with 3D rotations.
* The [[matrix_Class|Matrix Class]] received major updates to extend its usefulness.
* The [[Execute DAT]] lets you run python code just before or after saving out .toe files.
* There are two new parameter types: Momentary button and a Python Class that lets you hold simple lists and dictionaries. The Page Class now has .appendPython() and .appendMomentary().
* The [[OP_Class]] now reports CPU and GPU cook times, including the sum of the children of components.
* [[windowCOMP_Class|Window COMP Class]] and [[monitor_Class|Monitor Class]] have new members and methods to give you access to the new features added to the Window COMP.
* In the [[app_Class|App Class]], app.desktopFolder and tdu.collapsePaths() make working with file system paths easier.
* tdu.clamp() and tdu.remap() functions are helpful for wrangling values to desired ranges.


Sometimes an animation is much easier to perform with an input device than it is to keyframe or produce using CHOPs. The input can be recorded with a Record CHOP and locked. This data can then be manipulated with CHOPs, or performed again as needed.


===== Content & Tool Updates =====
===<div class="subSectionLineCHOP"> Realtime Audio Processing </div>===
* [[Palette:kantanMapper|Kantan Mapper]], the 2D projection mapping tool has nice additions including Bezier soft edges, inverting freeform masks, and shapeID being written into the UV map output.
* [[Palette:MoviePlayer|moviePlayer]] has many optimizations and new features like the ability to run a UI-less version for embedding in other tools and external control via CHOPs.
* cornerPinSOP is a new component in the Tools folder that corner pins SOP geometry.
* particlesGPU now has birth-rate control on systems that support GLSL 4.2 (ie. Windows OS)


The performance increase of Time Sliced audio processing versus normal audio processing is quite significant. With Time Slicing, it is possible to process realtime audio input and use the data to control animations. You can also do the opposite - use features of the animation to control audio output. Without Time Slicing, it is difficult to set up a network to do these actions in realtime.


===== Release Notes =====
===<div class="subSectionLineCHOP"> General Audio Processing </div>===
These highlights discussed here are just a fraction of the great additions to this new Official version. Please refer to the [[Release Notes]] for more details on everything that has changed.


Time Slicing allows you to clean up or add effects to audio files more efficiently. You can turn all the Time Slice capable CHOPs on and manipulate the audio while playing it, getting realtime results. When you are satisfied with the new audio, the Time Sliced CHOPs are turned off and the final audio clip is generated for the full range. This allows much more rapid tweaking of parameters to produce a desired effect.


===== Previous Builds =====
[[Category:CHOP Topics]]
See [[What's_New_in_099_2017.10000|What Was New]] in Official 099 Branch 2017.10000 last year.
[[Category:Time]]
[[Category:TDPages]]

Revision as of 16:30, 10 October 2018

Time Slicing is a feature in TouchDesigner that keeps your CHOP channels smooth, even when your overall frame rate goes down. This keeps your overall animation smoother and more accurate, and helps keep your audio from popping when your frame rate drops.

A Time Slice is the time from the last cook frame to the current cook frame. (See Absolute Time.) In CHOPs it is the set of short channels that only contain the CHOP channels' samples between the last and the current cook frame.

If the global frame rate is 60 frames per second, the time slice is a multiple of 1/60 second. For example, if TouchDesigner skipped a frame, it is 2/60 seconds.

You can see the time slice sizes by creating a Perform CHOP and sending it to a Trail CHOP and setting Perform to the Cook and Time Slice Step channels, cook and timeslice_step.

Most CHOPs cook a timeslice of channels to assure that curves are smooth and and pulses are accurate, even if the TouchDesigner process is skipping frames.

Time Slice is a Common page parameter on each CHOP and is automatically determined on most CHOPs.

Example: If the current frame is 77 and the previously-displayed frame is 73, then the time slice is 4 frames long (frames 74 to 77). This means that TouchDesigner jumped ahead 4 frames to keep up with the real-time clock. Assuming the frame rate is 60 frames per second, if the CHOP is audio at its default 44100 samples per second, there will be 44100*4/60 = 2940 samples in the CHOP containing audio.

You can check if a CHOP is time sliced via the MMB info pop-up on any CHOP node.

Note: The maximum length of a time slice is set via the preference in Edit -> Preferences -> CHOPs. It is currently 200 msec. See the audio tip in Audio Device Out CHOP.

These short channels can be computed much faster than a full animation range channel, and uses less memory. This gain in speed and memory efficiency is extremely important for interactive 3D, puppeteering and audio processing.

Time Slicing Tutorial

Time Slicing.jpg

CHOPs often calculate the channel over a long start-end frame range. This is a good method for pre-animated channels and keyframed channels which do not need to be re-generated or re-calculated each frame.

However, if the channel does need to be evaluated every frame due to user input (with for example a Mouse, Keyboard or MIDI CHOPs) or other realtime data input, and we are only interested in the values over the last few frames, then cooking the entire range of the channel is unnecessary. It is more efficient to calculate only the fraction of the channel that is needed. This fraction is known as a "Time Slice".

When you view the info on a CHOP, it reports its frame range and whether it is time sliced or not.

See also Absolute Time, the OP Snippets for the Time Slice CHOP, the Timeline, the Hog CHOP and the Tscript:timeslice Command.

To Time Slice a CHOP, set its flag on the Common page. Try the Noise CHOP to see the effect with Time Slice On and Off.

Send a Constant CHOP to a Filter CHOP, play forward and adjust the Constant CHOP slider to see the results of a Time Sliced CHOP.

With Time Slicing, samples do not get lost or un-processed when TouchDesigner cannot keep up with the timeline's sample rate, default 60 frames per second. All frames get processed, albeit in batches of 1, 2 or more at a time. This gives TouchDesigner more accurate curves and timing.

Time Slicing especially reduces the memory requirements of high sample-rate CHOPs like those in audio networks, and provides nearly instantaneous results when you tweak audio parameters in a network. Since even a short audio clip can use over a megabyte of storage, storing and processing only the necessary fraction of the clip reduces the memory requirements significantly, especially in large CHOP networks.

Time Sliced CHOPs do not maintain any more history about the channel than is needed, and they recook every frame. This makes them well suited to realtime applications. Even so, they can be used to "perform" and record an animation, instead of keyframing it.

How Time Slicing Works
[edit]

Time Sliced CHOPs cook whenever the Timeline is moved forward. The amount of time that the Timeline jumps ahead is the size of the current Time Slice. The Time Slice is synchronized with the Timeline so that its first sample begins just after the previous Time Slice's last sample, and its last sample is at the current frame. If the Timeline is playing forwards, the Time Slices generated will never overlap, nor will there be any gaps between them. All Time Sliced CHOPs will have the same Time Slice interval for a given cook.

When the CHOP network needs to cook, the Time Slice interval is computed and a single Time Slice is passed through the network. Since the current frame is always contained within the slice, the slice can be easily exported to any parameter.

Interface
[edit]

CHOP Parameter Dialog - The Time Slice button is located in the Common page of the parameter dialog of all CHOPs. This button is greyed-out for CHOPs that do not have Time Slice capability, and for some CHOPs which always operate in Time Slice mode.

Edit -> Preferences -> CHOPs Dialog - The Time Slice options can be changed using this dialog. They can also be changed from the Textport, using the timeslice Command.

CHOPs that are Always Time Sliced
[edit]

Most CHOPs do not need Time Slice capability; they will work on time sliced input in the same manner that they would on normal channel data. Time Sliced CHOPs and non-Time Sliced CHOPs can be mixed within the same CHOP network. The Time Slice option is provided for CHOPs that perform operations that read or modify other samples in the channel other than the current sample, or that maintain internal states.

Generally, if you want to create a time sliced CHOP network, all CHOPs with Time Slice capability should have their Time Slice flags (located on their Common page) on.

CHOPs which are Occasionally Time Sliced
[edit]

The following CHOPs will output Time Slices under certain conditions, but are not considered Time Sliced CHOPs. The Time Slice button in the Common page is greyed out for these CHOPs.

Trim CHOP - The Trim CHOP can trim the current time slice out of any input CHOP. This function is selected by changing the Unit Values menu to Current Time Slice.

Record CHOP - This CHOP can be used to record the output of a Time Sliced CHOP over the animation range. It can also be used to interpolate a Time Slice from a CHOP that outputs a single frame (like the Mouse or Keyboard CHOPs). The input can be sampled over the entire Time Slice, or only at the current frame using the Record Input parameter. The output range can be selected using the Record Output parameter.

Null CHOP Can Stop Overcooking
[edit]

See the Null CHOP Cook Type -> Selective option.

Time Slice Options Dialog
[edit]

There are three Time Slice options, which can be changed using the Edit -> Preferences -> CHOPs dialog. This dialog is found in the menu.

Enable Time Slice Flag When Creating CHOP - All CHOPs with Time Slice capability created while this option is on will have their Time Slice flags enabled by default. Otherwise, all CHOPs are created with the Time Slice flag turned off. This is a convenient option to leave on when creating and working with large Time Sliced networks. This option is off by default.

Minimal Realtime Cooks - Some Time Sliced CHOPs can minimize their cooking, rather than cooking every frame. When cooking is unnecessary, or it produces the same output, these CHOPs will stop cooking until an input changes. CHOPs that have this feature are:

Null CHOP, Copy CHOP, Count CHOP, Envelope CHOP, Lag CHOP, Spring CHOP, Trigger CHOP

Minimal Cooking will not apply to these Time Sliced CHOPs if they have non-constant CHOP inputs or time dependent CHOP inputs. This option is Off by default. It can speed up CHOP networks that respond to isolated inputs or events.

Maximum Time Slice Size (frames) - This option allows you to limit the size of a Time Slice, expressed in frames. The default maximum is 6 frames. This is useful if you only need a few frames of history, and the Timeline is jumping ahead by large intervals. If a Time Slice is larger than this maximum size, it will be clipped from the current frame backwards (causing a gap between this slice and the previous one). The slice will always end on the current frame.

Uses for Time Slicing
[edit]

Realtime Puppeteering and Control
[edit]

Time Slicing speeds up the animation response to user input. It provides you with a variety of effects to layer onto the input, such as lag, springs, and filtering. It is otherwise more difficult to achieve these effects on realtime input.

Animation Performance
[edit]

Sometimes an animation is much easier to perform with an input device than it is to keyframe or produce using CHOPs. The input can be recorded with a Record CHOP and locked. This data can then be manipulated with CHOPs, or performed again as needed.

Realtime Audio Processing
[edit]

The performance increase of Time Sliced audio processing versus normal audio processing is quite significant. With Time Slicing, it is possible to process realtime audio input and use the data to control animations. You can also do the opposite - use features of the animation to control audio output. Without Time Slicing, it is difficult to set up a network to do these actions in realtime.

General Audio Processing
[edit]

Time Slicing allows you to clean up or add effects to audio files more efficiently. You can turn all the Time Slice capable CHOPs on and manipulate the audio while playing it, getting realtime results. When you are satisfied with the new audio, the Time Sliced CHOPs are turned off and the final audio clip is generated for the full range. This allows much more rapid tweaking of parameters to produce a desired effect.