Experimental 2022.20150

Apple Silicon native support, TDSynchro components for sync, Timer CHOP additions, Bluefish444 SDK upgrade, DAT Viewer and Palette updates, bug fixes and improvements.
Release Notes 
Experimental Builds Experimental builds include new features still in development and testing, features are subject to change. For the stability and reliability required for performances and project deliveries, we recommend using the production ready Official Builds.
CAUTION! Project .toe files saved in Experimental can not be loaded back in Official.

Known Issues

All Builds

  • Engine COMP / TouchEngine - Not working yet.
  • Layout TOP - Does not layout on AMD GPUs.
  • Some TOP networks may display garbage textures on AMD or Intel GPUs.
  • Some panel borders and buttons elements may not display correctly on hiDPI monitors.

macOS Specific

macOS Apple Silicon Build Specific


Build 2022.20150 - Feb 28, 2022

New Features

  • macOS - Native Apple Silicon (arm64) support is now available for M1 Apple systems. See Apple Silicon build specific 'Known Issues' list above.
  • TDSynchro v.0.1.0 initial release - A group of components built to synchronize NDI and SDI streams across multiple computers. See Palette section below for details.
  • Timer CHOP Improvements
    • 'segment' argument in callbacks now contains several members, including 'row' which describes table values defining the segment, custom values as well as calculated start/delay/lengths in various units.
    • Added 'Segments End Time' menu parameter for more control over segment lengths.
    • Sub Range parameters to loop anywhere within the full time range, plus the callback onSubrangeStart() which lets you do whatever you need to do when the timer jumps back to the Sub Start time.
    • Added 'Sub End Action' parameter to control whether subrange ends or pauses at end.
    • callCount passed to the onInitialize() callback to help you manage initializations that take several frames to complete. Info CHOP now includes call_count channel.
    • More accurate output 'Playing Timer Count' is the total number of seconds in the Play state, after Starting and is not affected by Speed, and keeps counting up when you jump to Cues, run .goTo() calls, Cycle or loop with Sub Range.
    • New output 'Segment Length' outputs each segment length in specified units, or the entire length when segments are not used.
    • 'On Done' menu has a new option "Re-Start without Initializing".
    • Fixed manual 'Start' pulse sometimes being ignored.
    • New output option "Master Time Count" which outputs the overall elapsed time, taking into account delay times, speed and play state. It's the time that cues and goTo() would use.
    • Added 'timecode_master' in Info DAT
    • New python members .masterSeconds .masterFrame .masterSample .masterFraction which gets or sets the overall time position of the timer.
  • GLSL TOP - New 'Auto Dispatch Size' parameter will automatically set the dispatch size based on the compute shader's local size and the output texture resolution. Ensures at least one thread per pixel will execute.
  • Movie File In TOP - Added support for loading RG compressed .dds files.
  • Video Device In TOP - Added 'frame_queue_length' and 'last_dma_copy_time' Info CHOP channels. Also added 'frame_timestamp' and 'frame_hw_queue_length' but enabled for Blackmagic devices only at this time.
  • Video Device In TOP - Upgraded Bluefish444 SDK to latest version, added support for their new Khronos line of cards.
    • Added support for 10-bit YUV capture with Bluefish444.
    • Added support for capturing VITC timecode data with Bluefish444.


New Python

  • OP Class.currentPage - Get or set the currently displayed parameter page. It can be set by setting it to another page or even a specific label. For example n.currentPage = 'Common'
  • Par Class.lastScriptChange - This is now cleared when the parameter is updated manually.
  • Python - 'packaging' and 'pyparsing' modules are now included in default installation.
  • Python - Fixed 'ctypes' modules not loading correctly.
  • Project.resetAudioOnDeviceChange member added which controls whether or not audio devices momentarily reset when devices are added or removed to the system.
  • tdu.PathInfo - Added 'baseName' to extract the main portion of a filename.


New Palette

  • TDSynchro v.0.1.0 release - The new TDSynchro folder in the Palette contains a suite of components for syncronizing NDI and SDI feeds over multiple computers. It consists of a set of components for the server side sending audio/video and sync out, and a set of components for the client side to receive, cache, and syncronize the content.
    • Palette:synchroFrameOut - Server side - Sends a frame index using a Sync Out CHOP or a Touch Out CHOP.
    • Palette:synchroVideoOut - Server side - Sends out a video stream encoded with a frame index using either SDI or NDI.
    • Palette:synchroFrameIn - Client side - Receives the frame index for sync from SynchroFrameOut on the server computer. There is one SynchroFrameIn component per client TouchDesigner process.
    • Palette:synchroNDIIn - Client side - Receives incoming NDI streams and extracts timecode which is converted to a frame index.
    • Palette:synchroSDIIn - Client side - Receives incoming SDI streams and extracts timecode which is converted to a frame index.
    • Palette:synchroCache - Client side - Incoming video is cached with a buffer and synced to the incoming frame_sync input.
  • Palette:blendModes - UI improvements, adaptive to any panel size, use of Text COMP.
  • palette:camera - CameraTransform property can now be used to get or set the current camera matrix.
  • Palette:camSchnappr - Fixed upsidedown labels.
  • Palette:firmata - Reporting of digital pins can be enabled by port, for analog pins by pin.
  • Palette:gestureCapture - Improved examples including simple freehand draw.
  • Palette:graphPlot - v10.0.3 Faster performance and more color controls. Updated to use the Geo Text COMP.
  • Palette:initializeStart - Streamlined with recent Timer CHOP improvements.
  • Palette:lister - Now uses Text COMP in config and About page for Help.


Bug Fixes and Improvements

  • OpenVR - Fixed issues with the HTC Vive devices not working. No longer reports the wrong Device/GPU is being used.
  • Annotate COMP - Fixed a crash setting the Viewer Opacity to 0 when viewing a CHOP.
  • Geo Text COMP Improvements
    • Specification DAT allows for individual strings to be positioned and styled independently in 3D. Each row represents a separate string, and the columns (that override parameters) can include tx, ty, tz, all rotate/scale channels (as per Transform Order), plus fontsize, fontcolor, tracking etc., plus all the layout box and alignment parameters. (font/bold/italic not supported as columns)
    • Auto-homing works in the viewer.
  • List COMP - Fixed bottom and horizontal text alignment.
  • List COMP / Text TOP - Fixed horizontal alignment for characters with large left/right bearings.
  • Panel COMPs now have a 'Justify Method' menu to justify children individually (new) or as a group (previous behavior).
  • Text COMP - Fixed a problem using the Panel drag-drop behavior in multiline mode.
  • Text COMP - Added new drag drop behavior to insert dropped text at the last cursor position.
  • Text COMP - Renamed fontskew and fontstretch parameters to skew and horzstretch.
  • Text COMP - Fixed crash when opening a value ladder.
  • TOPs - Fixed using 'Save As...' resulting in a very low quality jpeg.
  • Ramp TOP - Fixed crash when using Hermite interpolation.
  • Render TOP - The default material (when a MAT is not explicitly assigned to geometry) now has a small emissive added to help make it visible in an un-lit scene.
  • Audio VST CHOP - Fixed freezing when saving from within the plugin window.
  • Audio VST CHOP - Load plugin asynchronously.
  • Filter CHOP - Fixed reset pulse input for 'Filter per Sample' parameter is On.
  • MIDI Out CHOP - Fixed crash when sending invalid midi commands.
  • Shuffle CHOP - Cook time optimization.
  • Sync In CHOP - When 'Active' is Off, don't try to connect for maximum timeout period.
  • MQTT Client DAT - Upgraded SDK to v1.3.9 in macOS arm64 builds. Others not upgraded yet.
  • Script DAT .appendRows() / .appendCols() - See BACKWARD COMPATIBILITY below - Now inserts the values in correct order, when specifying a starting index. Previously the values where inserted in reverse order.
  • Line MAT - Working on macOS again now (in most cases).
  • Many generator SOP anchor parameter behaviors have been flipped to be more sane, old setting is now called 'Reverse Anchors'.
  • Animation Editor - Fixed issue with value entry fields not updating keys.
  • File > Import File... now loads all file types supported in TouchDesigner, bringing it inline with Drag-and-Drop support.
  • Fixed a problem calculating instanced geometry bounds when the geometry isn't centered on the origin.
  • macOS - Fixed the operator pop-up offset when clicking "i" in parameter dialog.
  • Using page scope on parameter dialogs will still result in consistent values for par.pageindex. Also a number of fixes to Par.pageindex updating.
  • 'Experimental' label added to splash screen and titlebar for easier identification of experimental builds.
  • Update to the Color Swatch for Nodes, Comments, Network Boxes, and Annotates. Old files will be transitioned to the new color palette on loading.
  • DAT Viewer improvements for syntax highlighting and language support.
    • DAT language interface relabelled to 'Parameter Language' and 'Contents Language' to better differentiate them.
    • Renamed the 'Node' option for DAT language to 'From Parameter Language'.
    • Added Execute Language to DAT Info popup to show which language scripts will be executed in.
    • Enabled auto-indenting again for DATs.
    • Improved how the home key in DATs handles indentations.
    • Fixed automatic horizontal DAT scrolling not accounting for the line number width.
    • Fixed clipping of DAT line numbers when the node is very small.
    • Fixed a problem writing formatting codes into DATs that used syntax coloring.
    • Added JSON syntax coloring for DATs.
    • Added Tscript syntax coloring for DATs.
    • DAT syntax colors are now defined in ui.colors.
    • Fixed issue with color codes appearing when clicking in the opening message box.
    • DAT language is now set based on the file extension when dragging text files into a network.
    • 'Auto Set DAT Language' will now set the language for hidden DATs, ignore Tscript nodes, and better handle clones and readmes.
    • Improvements to the default language for more DATs to properly support syntax highlighting.
    • DAT language now defaults to plain text when set to input and nothing is connected.
    • DATs now default to 100% zoom instead of Auto.
  • Textport improvements and fixes.
    • Fixed limit displaying very long DATs in the textport.
    • Textport font size now updates immediately when the preferred font size changes.
    • Fixed right-click history menu in the textport.


Backward Compatibility

  • BACKWARD COMPATIBILITY - Script DAT .appendRows() / .appendCols() - Now inserts the values in correct order, when specifying a starting index. Previously the values where inserted in reverse order.