NDI Metadata support, Text DAT sync to file, bug fixes
Release Notes 
Aug 23, 2019

New Features

  • NDI In TOP / NDI Out TOP - Added support for sending and receiving frame metadata. Metadata can also be used in text format.
    • NDI Out TOP - Metadata can be send out in table DAT format or valid XML in text DAT format using the 'Metadata DAT' parameter.
    • NDI In TOP - Metadata can be received by attacheding an Info DAT to the TOP.
  • Text DAT - New 'Sync to File' toggle will sync DAT to external file on load and continously monitor changes to file and update the DAT. Edits to the DAT will be saved to the external file right away.
    • A file must be specified for the option to be enabled.
    • 'Edit Contents...' will bring up the external file instead of a temporary file.
    • If the file does not exist (or is missing), it will be created when 'Edit Contents...' is triggered.
    • Updated external file monitoring to use system events instead of polling for file modification updates.
  • Camera Blend COMP - Now can blend background colors of inputs (via toggles on Blend page) and its own background color parameters (using Weight parameter on Settings page).
  • Camera Blend COMP - Now can blend fog of inputs (via toggles on Blend page) and its own fog parameters (using Weight parameter on Settings page).

New Palette

  • OP Snippets - 6 new ones - 1 Boolean SOP, 2 Group SOPs, 1 Render TOP, 2 Projection TOPs. Thanks to James Hunter for contributing. OP snippets welcome at, especially examples for operators that we dont cover yet.
  • Palette:moviePlayer improvements
    • Fixed issue with error under python 3.7 if file is moved to 2019.30000 experimental builds.
    • New Range gadget allows focus into a small time range of the movie.
    • Improvements to Cues, including UI -> Cue Edit Area -> Cue List.
    • Improvement to UI of External Control.
  • Updated basic widgets and autoUI.

New Python

  • tdu Module expansion method: tdu.expand('A[1-3] B[xyz]') # return ['A1', 'A2', 'A3', 'Bx', 'By', 'Bz']
  • Page Class - methods and members will now also work for built-in pages.
  • Par member can now return a built-in page.
  • Par Class - Added Par.subLabel member.
  • Par Class - Added collapser/collapsable boolean members, these are for collapsable parameters like those found on MATs for texture map's Texture Sampling Parameters.
  • OP Class.pages() method returns a list of the node's built-in pages.

Bug Fixes and Improvements

  • Critical Bug Fix from 2019.18360 - Files loaded and then saved in 2019.18360 with Unicode strings (including Icons for Widgets) were corrupting those Unicode strings. This build fixes the issue, as well as attempts to recover the corrupted strings. Please check any unicode data you have in your file to ensure it loaded up properly, and re-save your file using this build.
  • Blob Track TOP - Added a default docked Info DAT for blob info.
  • GLSL TOP - More tweaks to how multi-pass compute shaders work. The texture created from the first output is now fed back into the first texture input once again.
  • Text TOP - Fixed a bug where %-replace would skip over channels when the string didn't end with a % expression.
  • Text DAT / Table DAT - Fixed offsets that would sometimes occur with cursor positioning. Improved unicode cursor positioning.
  • OSC In DAT - Various fixes
    • Fixed missing last column for table input.
    • Fixed stuck disabled parameters when disconnecting input.
    • Fixed scope for bundled messages.
    • Added 'Include Blank Messages' option for empty timestamps/errors/etc.
  • Serial DAT / Serial CHOP - In Windows version now includes a list of all valid ports in menu, not simply COM1-COM8.
  • OSC In CHOP - Fixed recent bug adding invalid messages on non-scoped messages, this could cause problems connecting with TDAbleton.
  • Timer CHOP - Fixed onSegmentEnter/onSegmentExit callbacks in parallel mode.
  • Laser CHOP - Some optimizations to blanking and performance.
  • Trigger CHOP - Changed Ease In and Ease Out curves so there is no popping when attacking or releasing.
  • Phong MAT / Light COMP - Added tweak to help avoid seams when using equirectangular maps for environment mapping and projection mapping.
  • Light COMP - The light's rotation now affects equirectangular projection maps.
  • Replicator COMP - Fixed a crash when Template DAT recreates all during cook. Also addressed some undercooking/overcooking issues.
  • Window COMP - If 'Window Operator set to a Base COMP, it now properly handles various viewer types. If Base COMP's 'Operator Viewer' parameter is set to a Panel COMP or TOP, 'Opening Size' can be used by the Window COMP. Proper warnings and size menu selection when resolving to a blank Base COMP.
  • List COMP - Fixed extra onRollover callbacks triggering when onHover event.
  • List COMP - Include onHover() callbacks when exiting list area completely.
  • Field COMP - Fixed possible recursion warning.
  • Added warnings when invalid global, parent, or internal shortcut names are used.
  • Fixed channel name labels jumping away from cursor in some CHOP viewers.
  • Fixed bug where renaming nodes did not trigger node dependencies to update.
  • Fixed error and exception when comparing to None in Point, Prim, and Vertex Classes
  • Fixed sticky origin (gizmo) axis rotation.
  • Fixed degenerate SOPs conversions, for example, zero radius tubes would not convert.
  • Export Movie Dialog improvements
    • Fixed filenames not being displayed correctly.
    • Fixed missing frames from end of recorded movie.
  • Component Editor Dialog improvments
    • Dragging into Component Editor now has highlights.
    • Can use expand strings to create parameters in Component Editor (e.g. Button[1-12])
  • Fixed issue were saving work in an external text editor deleted temporary file requiring re-opening content in external editor.
  • Ignore ctrl+s / saving shortcuts when in privacy mode.

Backward Compatibility

  • BACKWARDS COMPATIBILITY WARNING - GLSL MAT - Geometry shaders that are using lines primitives as input must use 'lines_adjacency' as their input type, not 'lines'. This change occured in 2019.10000 branch but was not documented yet.