NDI now available in Non-Commercial, RTMP stream out, Nvidia Flex particle simulations, TDAbleton v1.23 update, bug fixes and improvements
Release Notes 

Apr 10, 2020

New Features
Tools for Streaming
  • NDI Out TOP / NDI In TOP - The NDI TOPs are now available when using Non-Commercial licenses of TouchDesigner. This technology will enable anyone to send a TouchDesigner TOP with audio to streaming social services such as YouTube, Zoom, Slack, Skype and more. Check out this new Blog describing the workflow here: Broadcasting to Social Media from TouchDesigner
  • Video Stream Out TOP - Added RTMP support giving ability to stream out to services that ingest RTMP, such as Twitch, Mixer, YouTube, Facebook, and more.
Major Feature Addition
  • Nvidia Flex - Added support for Nvidia Flex which is a particle-based physics simulator that uses a unified particle representation for all object types. All bodies in a simulation (with the exception of static shapes/surfaces) are composed of particles. Their behavior in the simulation will be defined by the type of substance: rigid, soft, fluid, rope, cloth. Because all bodies in a Flex simulation are represented by particles, all substances can be simulated together seamlessly without the need for multiple solvers. Requires Nvidia GPU on Windows.
  • TouchDesigner's support for Nvidia Flex includes:
    • Nvidia Flex Solver COMP - A new solver component that runs the Nvidia Flex simluation.
    • Nvidia Flex TOP - A new TOP that can grab the simulation data from an Actor COMP and make it available in TOPs.
    • Actor COMP / Force COMP - Changes were made to these components so they work for Nvidia Flex and Bullet Solver COMPs.
    • Actor COMP - Added 'Triangle Collision Direction' and 'Update Collision Shape' parameters for static Flex shapes.
Device Support
  • Kinect Azure CHOP - Added support to output skeleton joint positions in 2D depth or color image space.
  • Laser CHOP - Added 'Frame Start Pulse' parameter which when enabled will insert a sample with all colors set to -1 at the beginning of the laser frame.
New Palette
  • TDAbleton - Major update to version 1.23
    • Auto-Installer - On the Utilities page, you will find settings for automatically installing TDAbleton. This copies all files and sets up the user folder in Ableton. Notes: You must run this install with Ableton Live closed. You still have to select the TouchDesigner Remote Script in Ableton Preferences the first time you run TDAbleton. If you just installed Live, you must run it once and close it before installing TDAbleton so that default preferences are set up.
    • Bindable Ableton Parameters - All the parameters for navigating the Live Object Model are now bindable. Bind them to or from any menu parameter and the proper navigation parameters will be set up in the bound menus. Example: /project1/Demo/parameterBinding in demo
    • Level Devices in Master and Send Tracks - Fixed bug where abletonLevel devices didn’t send properly from Master and Send tracks.
    • TDAbleton Master Max Device - Ableton now displays its IP address here for easier setup. There is now an on/off switch on the device to control master time transmission.
    • abletonValueListener upgrades - Now has outputs with Live Object Model info and value string text for parameters. Added Follow Selection parameter modes that track selected objects in Ableton Live UI. Added Select LOM Object pulse which will select the object pointed to by abletonValueListener in Live’s UI. Example of New Outputs: /project1/Demo/abletonValueListener2 in demo
    • abletonSong upgrades - Now has Tempo tap/nudge and Record Mode controls.
    • abletonMIDI and abletonMapper now work in chains - Added navigation parameters so that the associated Max devices work in device chains.
    • Utilities Parameter Page - Log parameters and Update Ableton Comps are now on the Utilities parameter page of the tdAbleton component. The Ableton Log itself will automatically update and can be cleared with a button in the viewer.
    • Bindable Ableton Macros - Similar to Bindable Ableton Parameters above, binding to Rack and Level macros will keep the parameter labels in sync. If you change a label of a par bound to a Rack or Level macro manually, your label will not be kept in sync.
    • Master Parameters Bound to Package - All TDAbleton master parameters are now available at the top level of the package via binding.
    • Connection Notification - Added popup to indicate when not connected. No longer starts with error marker if no Ableton Live is found.
    • Cook optimizations - Reduced number of nodes that are constantly cooking.
    • Bug Fixes - The autofix code for fixing duplicate names in Live are working in many cases where they preciously did not. Eliminated textport spam when TDAbleton is deleted and when Jump to Cue is invoked. abletonMIDI now shows device on/off state correctly.
  • Palette:Firmata - Overhauled
    • Bottom-up rebuild of firmata component.
    • Saves configuration and uploads it to firmata.
    • Proper servo configuration.
    • Added sampling interval setting.
  • Palette:pointMerge - New component added to the PointClouds folder which packs the pixels of two input images into a single output image.
  • Palette:pointRepack - New component added to the PointClouds folder which can be used rearranges the pixels of the input image to fit into an output image of a given size.
  • Palette:pointTransform - Now has 'Post' page mimicking the Transform SOP's Post page.
  • Widgets - This version fixes some issues with widget caching for knobs and sliders, and fixes the parameter order for String Field sub-widget which was reversed.
New Python
  • / COMP.loadTox(password=None) methods now have optional password to encrypt/decrypt tox files to disk. Unlike Component privacy, this only applies to the disk file itself, not its operation once inside the network.
  • COMP Class.saveExternalTox(recurse=False, pasword=None) -> count - Saves out the contents of any COMP referencing an external .tox and returns the number of components saved. If password is supplied it is used to encrypt the resulting disk files.
  • kinectazureTOP Class - Added transformWorldToColorImage() and transformWorldToDepthImage() methods to convert 3D world space positions to 2D image space UVs.
  • MqttclientDAT Class.subscribe() - Added support for subscribing to multiple topics at once.
  • MqttclientDAT Class.unsubscribe() - Added support for unsubscribing to multiple topics at once.
  • Added changeParStyle to TDFunctions.
Bug Fixes and Improvements
  • Actor COMP - Fixed 'Update Collision Shape' so that collision shapes will be updated when instance scale parameters change.
  • Substance TOP - Upgraded to Substance SDK v7.2.9
  • Nvidia Flow TOP - Now include memory used by Flow in TOP's reported 'Total GPU Mem'.
  • Nvidia Flow TOP - Fixed an issue when multiple shapes were used for colliders/emitters.
  • Video Device Out TOP - Fix poor behavior when using Quad Link outputs with AJA devices.
  • Video Device Out TOP - Fixed AJA device crash.
  • Bind CHOP - When drag and dropping a channel from a Bind CHOP onto a parameter, the menu now uses bind instead of expression options.
  • Copy CHOP - Fixed some issues with stamping here and added copyIndex member.
  • MIDI In CHOP - 'Simplified Output' now uses its rate parameter correctly.
  • Mouse In CHOP - Fixed keystrokes interfering with x,y value channels.
  • Transform CHOP - Fixed 'Input Operation' loading up with incorrect value from files saved in the 2019.30000 series experimental builds.
  • Transform SOP - Added 'Post Transform Order' parameter.
  • Parameter Execute DAT - prev value for momentary parameters is now True or False, not 'on' or 'off'. Backward Compatibility as DATs that used to monitor previous values of custom momentary parameters need to be adjusted.
  • SocketIO DAT - Fixxed a crash when receiving events with no message.
  • WebclientDAT Class.request() - Changed data keyword so it will also accept a string.
  • Fixed Binding not triggering data changes to Parameter OPs.
  • Fixed network pane jumping when trying to enter an Engine COMP or private component.
  • Fixed some panel layout issues.
  • Fixed erratic dragging of panel edges.
  • Fixed crash when removing tags in custom UI.
  • Fixed possible crash when drawing windows on macOS.
  • Fixed crash when accessing new floating pane ratio.
  • Fixed soft shadow Softess tied to camera near-plane.
  • TOP viewers now use nearest pixel filtering when in Normalized Split mode.
  • Fixed Realtime flag in unser interface reporting incorrect state.
  • Fixed an issue where the rewind button would reset to frame 2, not 1.
  • Fixed some bugs related to pasting values onto parameters.
  • Improved a number of error messages to be more informative.
Backward Compatibility
BACKWARD COMPATIBILITY - Parameter Execute DAT prev value for momentary parameters is now True or False, not 'on' or 'off'. DATs that used to monitor previous values of custom momentary parameters need to be adjusted.