Every feature

What each of the 86 packages can do, 492 features in all. Each one links to the section of the tool's page that explains it.

Interface7 tools · 52 features

The window, the menus, the dialogs and the keys.

BorderlessTD

Borderless TouchDesigner window, plus timeline hiding.

  • Hide the title barShows and hides TouchDesigner's window title bar.Windows only
  • Hide the timelineShows and hides the timeline.
  • Escape key for the title barShift+Esc puts the title bar back; the Use Shift-Esc to undo toggle turns this fixed key off once you no longer need it.
  • Borderless on startOn Start goes borderless as the project opens with no key press, and State on Startup decides whether the timeline starts hidden.
  • Full screen controlFix Fullscreen On Start re-asserts full screen after opening; turning off Force Full Screen lets TouchDesigner run borderless in a smaller window.
  • Hide menu buttonsRemoves the Wiki, Forum and Tutorials links from the main-menu bar.
  • Project name in the menu barShows the project file's name in the main-menu bar, where the hidden title bar would normally carry it.
  • Pause indicatorWhile playback is paused, recolours a chosen TouchDesigner UI colour element to Pause State Color, standing in for the hidden timeline's indicator.

ColorUI

Operator and family colour palettes, with the active palette roaming through config.

  • Recolour UI elementsRecolour any TouchDesigner UI element by choosing it from a dropdown.
  • Operator family coloursRecolour whole operator families, POPs included.
  • Local save with auto-loadSaving colours locally stores them in the component, from where they can be loaded automatically on startup.
  • JSON export and importExport colour settings to JSON and import them again; imported settings take precedence over local ones.
  • OpColor tab in HubThe colour UI is available as the OpColor tab of Hub, the FNS button in the main-menu bar.
  • Console tab in the browserWith Expose on, the same colour UI is served in the browser as the ColorUI tab of Console, the toolkit's web front.

CommandPalette

A command palette inside TouchDesigner: every command your FNS tools declare and TouchDesigner's own palette components in one ranked list, opened with a hotkey and aware of what you are looking at. Manage favourites and hidden commands from its tab in Hub.

  • Palette over the current networkOpens a small window over the network you are in with one input, a ranked list and a footer saying what Enter will do.
  • Context-aware rankingCommands whose context matches where you were rank first: the parameter under the mouse, then the current or selected operator, then the network.
  • Typo-tolerant word matchingEvery typed word must hit; strict matches rank first, then initials, typos and letters in order, with British and American spellings treated alike.
  • Step through command parametersEnter on a command that declares parameters walks them one at a time, as filtered pick rows for menus or text fields showing type and default.
  • Place palette componentsTouchDesigner's palette components, your own folders included, load into the network attached to the mouse for placing, or can be dragged into any pane.
  • Scoping prefixesA leading character scopes the list: > for commands with TouchDesigner built-ins, ? for tool commands, = for components, # for one tool's commands.
  • Navigate the networkTyping /, ./ or ../ browses networks from the root, from where you came, or up a level, drilling in with Right and out with Left.
  • Stars and hidden commandsCtrl+D stars a command or component so it leads its tier; Ctrl+H hides a command, which the Commands tab can show again.
  • Query historyAlt+Up and Alt+Down cycle through the queries you have run before.
  • Install tools from the paletteA tool not in the project but installable shows as an Install entry; Enter installs it, downloading it first when needed.
  • Rank by usageCommands you run often rank higher, the lift fading over a couple of weeks unused and only breaking ties; launcher quick-launch runs count too.
  • Command presetsAlt+S saves a command, with any parameter values entered so far, as a named preset that runs on Enter without prompting.
  • Commands per tool copyWhen a tool is placed more than once, each copy's commands carry its searchable label, and a preset saved from one runs on that copy only.
  • Commands tab in HubLists every registered command, hidden ones included, with Star and Hidden toggles, a filter, Refresh, Open palette and Clear usage.
  • Rebindable hotkey and roaming favouritesThe hotkey is managed in HotkeyManager, and favourites, presets, hidden commands and history persist through ConfigRegistry globally or per project.
  • Call extension methodsThe ~ prefix lists public methods of promoted extensions on the subject COMP, completes them in the input and calls them with typed arguments.for tool authors

HotkeyManager

Unified hotkey discovery, conflict detection and rebinding UI across the whole toolkit.

  • Project-wide hotkey discoveryScans every top-level component except ui, sys and local for hotkey keyboardin CHOPs/DATs and shortcut-named parameters, one row per binding.
  • Rebind by pressing keysClick a Hotkey cell and press the new keys (Esc cancels); a combo used elsewhere asks you to press it again to force it.
  • Reset a bindingRight-click a Hotkey cell to reset that binding to its default.
  • Conflict detectionCombos bound by more than one tool are flagged in Status; clicking it jumps to and cycles through the rows sharing that combo.
  • Persist bindings across projectsToolkit hotkeys always persist; others persist when tagged FNS_hotkeys or toggled in the Persist column, saved via ConfigRegistry and restored on load.
  • Save, load and defaultsSave, Load and Load Default pulses and a Force Default toggle sit on the component's own custom parameters.

OpMenuMods

OP Create dialog extras: IO filter buttons, your own search keywords per operator type, and acronym search (type m f o for Movie File Out).

  • IO filter buttonsButtons at the top right of the OP Create dialog show only IO operators, only non-IO operators, or all of them.
  • Custom search keywordsGive any operator type your own search words, so typing music finds Audio File In; the table syncs across project files.
  • Keyword table in HubThe keyword definitions are edited in a table, also reachable as the SearchWords tab of Hub.
  • Acronym searchType an operator type's initials, such as m f o, to find Movie File Out.
  • Removable registry-based modsThe mods apply through OpMenuRegistry, so several tools can decorate the dialog together and it returns to stock when they are removed.

QuickPane

Pane layout shortcuts.

  • Split by drag gestureWith a COMP selected, hold the modifiers and drag toward a side to open a pane there, inside the COMP and homed; repeat to close it.
  • Split by arrow keysWith a COMP selected, an arrow shortcut splits on that side and drops you into the component; the same key closes the pane it opened.
  • Split pane commandA Split pane quick-launch command asks for the direction, defaulting to right, so it can be run from the command palette.

SearchPalette

Search field for TouchDesigner's palette browser, installed into the palette on startup. Based on Yea Chen's TD-SearchPalette.

  • Search field in the palette browserInstalls a search field into TouchDesigner's palette browser on project start while Auto Install is on, with Install and Uninstall pulses.
  • Focus search by hotkeyBrings TouchDesigner's own palette tab to the front and focuses the search field in place; the combo is rebindable in HotkeyManager.
  • Word navigation in the fieldThe search field is a Text COMP, so it edits like TouchDesigner's own text fields, including Ctrl+Left and Ctrl+Right to jump by word.
  • Ranked substring searchMatches substrings case-insensitively, combines multiple words, and ranks exact, prefix and word-start matches first, alphabetical within each group.
  • Wildcards and exclusionsWords with * or ? match as front-anchored patterns, and a word prefixed with - removes its matches from the results.
  • Fuzzy fallbackWhen nothing matches literally, retries each word as the other side's spelling, as initials, as a typo, and last as letters in order.
  • Folder searchA word containing / matches the palette folder instead of the name, so tools/ alone lists a whole folder; toggleable with Folder Search.
  • Latest version onlyCollapses numbered or duplicate copies of one component to the latest-modified file; toggleable with the Latest Version Only parameter.

Network16 tools · 84 features

Place, find, swap and move between operators.

AltSelect

Alternative selection helpers for operators in the network editor.

  • Alt-drag to create a SelectAlt-dragging a selected TOP, CHOP, SOP, DAT, POP or panel COMP snaps it back and leaves a Select pointed at it where you drop.
  • Ready-to-use SelectThe new Select is wired, selected and current, viewer on and tinted, with Match Size on for panels, all as a single undo step.
  • Tagged for later sweepsEvery operator it creates is tagged FNS_AltSelect, so a Find or findChildren(tags=...) sweep can locate them later.

AutoCombine

Hold Alt while placing a generator TOP to have it come in pre-set to composite over its input.

  • Alt-place combine defaultsPlacing a generator TOP such as Noise, Circle or Rectangle with Alt held sets Combine with Input, Operation, Pixel Format and, for Noise, RGB.
  • Configurable defaultsThe values applied are set on the component's own parameters.
  • Only the dropped operatorActs only on the operator that just appeared in the network you view; operators surfacing deeper down or large batches are left alone.

AutoRes

Hold Alt while placing a generator TOP to have its resolution follow the project (or the panel it sits in).

  • Project-following resolutionSets a newly placed generator TOP to Parent Panel Size where available, otherwise to an expression using parent.Project's size, falling back to the component's resolution.
  • Default colour formatAlso sets the new TOP's RGB and Pixel Format parameters to the component's defaults where available.
  • Acts only on the dropped operatorLeaves operators from package reloads, replicators or loading components alone, and skips a batch too large to be a drop with a Textport note.

CookBar

Draws a bar above every operator in the network you are viewing: its cook time on top, its GPU memory below, so the expensive parts of a network stand out at a glance, with the numbers beside them if you like. A Top List in a corner names the heaviest operators and takes you to one with a click. Its toolbar button switches it on; Ctrl+right-click the button for a global Hog CHOP to stress-test against. Based on Anton Heestand's Cook Bar.

  • Toggle from toolbar or commandSwitch the bars on from the toolbar button, the Toggle cook bar command or Active; they follow you between networks and panes.
  • Bar count budgetMax OPs caps how many in-view operators get bars, counted from the middle of the view, 100 by default and up to 250.
  • Cook-time barsA bar above each operator shows CPU plus GPU cook time, green to red up to 1 ms, growing taller past it and striped while cooking.
  • GPU memory barsA bar below each operator shows the GPU memory it holds, cyan to blue up to 100 MB, growing taller up to 1 GB.
  • COMP totalsOn a COMP, the bars add up the cook time and GPU memory of everything inside it, with stripes moving while anything inside cooks.
  • Numeric valuesValues writes each bar's number beside it, cook time above and GPU memory below, updating ten times a second.
  • Top List of heaviest operatorsA corner list names the heaviest operators by cook time or GPU memory; clicking a row selects that operator and zooms to it.
  • Shared overlay settings in HubHub's Overlay tab sets list placement for every network-editor overlay tool and can hide the bars or the list without switching Cook Bar off.
  • Global Hog CHOP stress testCtrl+right-click the toolbar button to open a global Hog CHOP that eats part of each frame; the button turns red while it is on.
  • Leaves the network untouchedThe bars draw through the shared network overlay, which leaves before every save, so display flags, annotations and operators stay as they were.

GlobalOutSelect

Browse Global OP Shortcuts and the out operators inside them in a tree, and drag any of them into a network as a Select.

iopBrowser

Browse the internal operators and the OP tree of the network you are in, from a popup opened off the pane bar. One browser instance serves every pane; the bar carries only the button.

  • Add an iop by dropDropping an operator on the button adds it as an internal operator shortcut of the current network, root included; CustomParTools, if installed, asks for the name.
  • Browse available iopsClicking the button opens a popup listing the iops available from the current COMP, those of every parent from the nearest up.
  • Drag or navigate to an iopDrag any listed iop straight into the network editor, or use the list to navigate to it.
  • Searchable OP treeThe popup carries the network's OP tree with search, for finding an operator without leaving the pane.
  • Opened by ParentHierarchyParentHierarchy opens the browser for you when both are installed.

OpTemplates

A library of preconfigured operator templates to drop into a network.

  • Template by drag and dropDrop an operator with the parameter settings you want onto the toolbar icon to keep it as a template for its type.
  • Edit Templates from OP CreateRight-click an operator in the OP Create dialog and pick Edit Templates..., or make a Base COMP named after the OPType, to define its templates.
  • Several templates per typeDefine multiple named templates for one operator type and choose between them from a menu when placing.
  • Operator chains as templatesOperators chained after the template operator are placed together with it.
  • Template snippetsA Base COMP inside the type's container holds a whole network, such as a Render TOP with geometry, camera and light, extracted on placement.
  • Substitute an operator with a COMPA Base COMP placed inside a snippet's Base COMP lets a template replace the operator with a COMP.
  • Place a template on createHold the alternatives shortcut while placing an operator marked >>> in the OP Create dialog and it is replaced by its template.
  • Insert into a connectionTemplates, chains and snippets can be inserted between connected operators, with In/Out OPs in a snippet marking its input and output.
  • Shared alternatives menuTemplates are listed in OpMenuRegistry's menu beside other tools offering that type, with store-only tools below a divider and a >> mark.
  • Global, project or config library scopeLibrary Scope keeps the library as a palette .tox shared by every project, an OpTemplatesLibrary component in the project, or follows Config Scope.
  • Push project templates to globalPush To Global copies the project set to the global file on demand, asking first when the file already exists.
  • Save from the toolbar iconUnder global scope, middle-click the toolbar icon or press Save Templates to save; right-click opens the custom parameters.
  • Library adoption on upgradeOn first start it renames the old palette folder and adopts the most recently saved older library, keeping the replaced one beside it.
  • Open Templates windowOpens a floating window of the current templates container; right-click for custom parameters, middle-click to save.

OverlayRegistry

One overlay over the network editor you are working in, composited from every tool that draws there: each tool hands over its own image, and this registry fits it over your view, stacks it with the rest and shows it above the nodes, without touching your network's display flags or annotations.

  • One shared overlayStacks every tool's layer into one image shown above the nodes of the network editor you work in; with nothing drawing, nothing runs.
  • Follows the network editor viewThe overlay follows pan, zoom and network changes, keeps everything in place at any zoom and stays sharp on high DPI screens.
  • Leaves your network untouchedSwitches no display flag, dims no annotation, is not one of your operators and is taken out before every project save.
  • Corner widgetsTools can pin small clickable panels to a corner of the network editor that keep their size at any zoom and stack without overlapping.
  • Manage layers in HubFNS_Hub's Overlay tab lists every layer and widget: reorder them, hide one without switching its tool off, or move a widget's corner or margin.
  • Publish a layerA tool ships a host copy naming its layer TOP, stacking order and Displayed and Layer Active switches, or calls RegisterWidget() from Python.for tool authors
  • View data for layersThe host's View page and View() give the covered network rectangle, render resolution, units per pixel and zoom; NetworkToPixel() converts network positions to pixels.for tool authors
  • Panel widget APIRegisterPanelWidget() pins a tool's panel COMP to a corner with an order and margin; UnregisterPanelWidget() takes it away.for tool authors

ParentHierarchy

Hover a parent in the pane-bar path with Alt to see its parent shortcut, global shortcut and internal operators, and Ctrl to see its custom parameters and values. Click any item to copy a reference to it. It works on the path you already have and adds no button of its own.

  • Alt-hover shortcut viewHold Alt over a COMP in the pane-bar path to see its parent shortcut, global shortcut and internal operators.
  • Ctrl-hover parameter viewHold Ctrl to see the iop target's relative path and every custom parameter with its value; press Ctrl again to poll the values.
  • Click to copy a referenceClicking any listed item copies a reference to it, ready to paste into an expression or script.
  • Open parameter customisationRight-clicking a listed parameter opens the parameter customisation window for it.
  • iopBrowser integrationWith iopBrowser installed, the same hover also lists the internal operators in its browser.
  • Extension API on hoverEach COMP lists its extensions by Extension Name or class; hovering one expands its promoted methods with signatures, properties and typed attributes.for tool authors
  • Copy extension callsClicking an extension or member copies an ext. reference, such as ext.TimelineToolsExt.AcceptsDrop(items), with the signature intact.for tool authors

PasteFromClipboard

Paste the image on the clipboard into the current network as a Movie File In, a Script TOP or an annotation. Windows only.

  • Paste a clipboard imagePastes the clipboard image into the current network, offering three ways to paste on the keys 1, 2 and 3.Windows only
  • Paste as Movie File InCreates a Movie File In and saves the image in the tool's Save Folder, clipboard_images by default.Windows only
  • Paste as locked Script TOPStores the image in a locked Script TOP, which grows the .toe file but avoids external dependencies.Windows only
  • Paste as annotationPastes the image as an annotation; like the Script TOP option, it produces a locked TOP kept inside the .toe.Windows only

QuickCollapse

Collapse a selection into a component, with an optional customize dialog.

  • One-key collapseMoves the selected nodes into a new Base COMP, wired as they were, as one undo step that also returns you to the original network.
  • Collapse with name and shortcutAsks first, in a small dialog, for the new COMP's name and parent shortcut, then collapses the selection.

QuickMarks

Bookmark network locations and jump back to them with Ctrl+number. Your marks show on the network editor: a list in a corner you can click, and a pin at each marked spot. Bookmarks stay project-local by design. Based on Alex Guevara's QuickMarks.

  • Save a markStores your current network location in one of ten numbered slots (Ctrl+Option+number on macOS).
  • Jump to a markTakes you back to a saved mark from anywhere in the project.
  • Remove a markClears a numbered slot (Option instead of Alt on macOS).
  • Marks saved with the projectMarks are stored on the component and saved in the project file; switching Active off hides the shortcuts but keeps the marks.
  • Clickable mark listA corner list shows each mark by number and name, highlights the current network and dims missing ones; click to jump, right-click to rename.
  • Mark outlinesPins draws the area that was on screen when each mark was stored, with its number and name, in the network you are viewing.
  • Toggle the overlayHides or shows the mark list and outlines together, also from quick-launch, while marks and Ctrl+number keep working.

SearchFix

Makes the network editor's find bar find things: any part of a name, case-insensitive, with wildcards, optionally fuzzy and inside child networks. Keeps the bar's arrows and Home toggle; a Legacy toggle brings TouchDesigner's own search back.

  • Match any part of a nameFinds operators by any part of their name in any case; typed spaces become underscores and a split text needs every part to match.
  • Wildcard patternsPatterns like noise*, *out? and [ab]lur* match whole names as in TouchDesigner's pattern fields, and a leading ^ inverts the match.
  • Fuzzy matchingWhen switched on, also finds word initials, a typo or two, or the letters in order, listed after every plain hit.
  • Best results firstExact names rank first, then names starting with the text, then word matches, then anywhere, with shallower operators before deeper ones.
  • Step through resultsThe bar's arrows step through results, the first is picked as you type, and with Home on the pane centres on the picked operator.
  • Deep search into child networksA per-pane Deep checkbox and depth field search networks inside the current one; picking a hit takes the pane into its network.
  • Legacy search toggleA Legacy checkbox in the find bar brings back TouchDesigner's own search for every pane.
  • Close the bar from inside itWith Shortcut Closes Find Bar on, Ctrl+F also closes the find bar while you are typing in it.
  • Quick-launch commandsToggle SearchFix, Toggle fuzzy find and Toggle legacy find switch the parameters, and Repatch find bars reapplies the search to every bar.

SwapOps

Swap one operator for another while keeping connections intact.

  • Swap two operatorsSwaps the two selected operators in the same network editor pane, from the toolbar button or the hotkey.
  • Mirror a line of operatorsWith several operators selected in a line, swapping mirrors their order.

SwitchOPs

One hotkey jumps focus back and forth between the last two operators you selected, across networks.

OpenOpPatreon:Base

A one-button shortcut to a deeply nested operator: drop it on the field once, then a pulse opens its parameter window, its viewer window, or both.

  • Keep a nested operator at handDrag an operator onto the Op field once and OpenOp keeps a reference to it wherever you place it, such as beside a control panel.
  • Open windows on a pulseThe Open pulse brings up the operator's parameter window, viewer window or both, from wherever you are in the network.

Parameters7 tools · 46 features

Promote, bind, link, randomize and reference parameters.

CustomParTools

Promote parameters to a parent with binds or expressions, customize name/label/range on drop, plus extension creation, parent shortcuts, parameter clearing and IOP promotion. Also carries the pane-bar drag-drop hijack and path-cell injection, and four stock-TouchDesigner shortcuts for opening parameters and the COMP editor.

  • Promote a parameter by dropDropping a parameter on the button promotes it to the parent's custom parameters on the active page and binds it automatically.
  • Customise a promotion on dropHold Ctrl while dropping to set label and name and, for sliders, min, max, clamping and default; Tab and Shift+Tab jump between fields.
  • Menu parameter from a Table DATDropping a Table DAT on the button adds a new menu parameter that uses the table as its menu source.
  • Promote all of a COMP's parametersDropping a COMP on the button promotes all of its custom parameters to the parent and binds them.
  • Open parameters and component editorsClick opens the parent's parameters and Shift+click the selected operator's; right-click opens the parent's component editor and Shift+right-click the selected one's.
  • Clear dangling binds and expressionsSwitches parameters with a broken bind or a failing expression to constant and clears script errors, on the selected COMP and its immediate children.
  • Promote an operator as an iopDragging an operator onto the button with Ctrl+Alt held adds it to the parent as an internal operator shortcut (iop).
  • Add a parent shortcutAdds a parent shortcut to the parent COMP from the button.
  • Create an extension with QuickExtAdds a Python extension to the parent with simplified default code and a docked ExtUtils; also offered under Add in the Component Editor's Extension section.
  • Collapse the selectionMiddle-clicking the button collapses the selected nodes through QuickCollapse when it is installed; hold Ctrl or Shift to name the result first.
  • Parameter and editor hotkeysOpen the parameter dialog or the component editor for the selected operator or the current network's COMP, by keyboard or from the command palette.
  • Promote the hovered parameterPromotes the parameter under the cursor to the parent as a bind or, with Shift, an expression; an already promoted one opens its customisation instead.
  • Customise or rebind the hovered parameterOpens customisation for the parameter under the cursor, or toggles it between Bind and Expression, without selecting anything.
  • Promote onto a path-bar parentDropping a parameter on a parent in the path bar promotes it there; a Ctrl+Alt drop promotes an operator as an iop, root included.
  • Open a parent from the path barMiddle-clicking a parent in the path bar opens its parameter window; a long middle-click opens its customise window.
  • Switch modules on and offThe Modules page turns each of nine sub-modules on or off independently, persisted through ConfigRegistry, withdrawing the surfaces a disabled module owns.
  • Parameters as extension propertiesCustomParHelper gives an extension eval and par properties for custom parameters, parameter groups and sequences, with include and exclude lists per parameter or page.for tool authors
  • Callbacks found by method nameExtension methods named onPar<Name>, onParGroup<Name> or onSeq<Name>N, or general onValueChange and onPulse, run when matching parameters change or pulse.for tool authors
  • Declare parameters in codeHelpers such as Float, Int, Menu and RGB create custom parameters from an extension's __init__ or class body, with page, range and help text.for tool authors
  • Name your own parameter handlersDecorators such as @CustomParHelper.onPar('Speed') bind any method to a parameter, and unknown parameters or name collisions are reported in the log.for tool authors
  • Execute callbacks without nodesNoNode registers CHOP, DAT and parameter execute callbacks from extension code without dedicated execute DATs, and marks watched operators with a colour.for tool authors
  • Keyboard shortcuts from codeNoNode.RegisterKeyboardShortcut binds a key such as ctrl.k to an extension method, and DeregisterKeyboardShortcut removes it again.for tool authors
  • Declare NoNode callbacks with decoratorsDecorators on methods declare CHOP, DAT, parameter and keyboard callbacks that HarvestCallbacks registers, logging any target that does not resolve.for tool authors

ExprHotStrings

Abbreviations that expand into TouchDesigner expressions as you type in a parameter field.

  • Abbreviation tableAbbreviations in the first column expand to the Expands column's string when used as a parameter expression, for example #AT to absTime.seconds.
  • Inline expansionWith Replace inline on (off by default), abbreviations expand inside a longer expression and can be combined, as in #AT * 0.2.
  • Wrap a path in op()#@ wraps what follows in op('...'), so #@noise1.par.amp becomes op('noise1').par.amp; it has its own enable toggle.
  • Parent shortcut abbreviations#! resolves to the closest parent shortcut and #!! adds .par after it, both behind their own enable toggle.
  • Promote a parameter while typing#@! (Bind) and #@~ (Expression) promote the parameter you are typing in to its parent via CustomParTools, using its own name or one you supply.

OpToClipboard

Copy the selected operator's reference to the system clipboard, ready to paste into an expression.

  • Copy an operator referenceCopies a reference to the selected operator; its trailing @ resolves to the right relative or shortcut path once pasted into an expression.
  • Copy a parameter referenceOver a parameter the same shortcut copies op('geo1')@.par.tx, or the whole group as .parGroup.t when over a multi-field row's name.

ParOPDrop

Create Parameter CHOP/DAT and Parameter Execute DAT nodes inside a COMP from its custom parameters, by drag and drop or hotkey.

  • Parameter operators by dropInside a COMP, drop one of its custom parameters on the toolbar button with modifiers to create a Parameter CHOP, Parameter DAT or Parameter Execute DAT.
  • Execute DATs from operator dropsDrop a CHOP, one channel or a DAT on the button for a CHOP Execute or DAT Execute DAT already watching it.
  • Hotkeys over parametersHover a parameter and press a hotkey to create a Parameter CHOP, Parameter DAT or Parameter Execute DAT without dragging.

ParRandomizer

Randomize parameter values within range, for quick exploration.

SetSmoothness

Set Input/Viewer Smoothness on selected TOPs, or on every TOP in the network.

  • Set smoothness on selected TOPsClick the toolbar button, pick a filtering mode, and it is written to the selected TOPs.
  • Apply to every TOPHold Alt while picking to write the mode to every TOP in the current network instead.
  • Change one setting at a timeSetting either to Use Input leaves each TOP's existing value alone, so Input and Viewer Smoothness change separately.
  • Quick-launch commandsSmoothness → selected and Smoothness → all run the same actions as quick-launch commands, with no toolbar button needed.

LinkOPsPatreon:Base

Links the parameters of several operators so a change on one lands on all of them, with exceptions by operator and by parameter, an automatic mode and a one-shot sync.

  • Link operators by patternName operators by pattern (noise*, level1 level2) and a parameter changed on one is written to the others, with expressions and modes by default.
  • Operator and parameter exceptionsExcept leaves matching operators out, and Par Except leaves parameters out, such as t? seed to keep transforms and seeds independent.
  • Constant-only linkingConstant Only links only parameters in constant mode on both sides, so an expression on one operator is never overwritten.
  • Automatic list or one-shot syncWith Auto on the list follows operators as they are added, renamed or removed; with Auto off, Sync rescans on demand.

Project3 tools · 19 features

Saving, backups, media files and housekeeping.

Autosave

Save the project on a timer without touching the timeline, honouring your increment and backup preferences, and skipping saves while you are performing.

  • Timed savesA Timer CHOP saves the project at your interval, independent of the timeline, so it works whether or not the project is playing.
  • TD save modeTD mode uses TouchDesigner's own Save, honouring your Increment Filename and Copy to Backup Folder preferences.
  • Overwrite modeOverwrite holds the increment preference off during the save, so every save lands in the file you already have open.
  • Skip unchanged projectsOnly if modified skips the save when nothing has changed, so an idle project is not rewritten.
  • Skip while performingSkip while performing suppresses saves in Perform Mode.
  • Save statusA status line shows when the last save happened and when the next one is due.
  • Main menu toggleA button after the project name in the main menu shows whether autosave is on, toggles it on click and opens its parameters on right-click.

Misc

Two small toolbar utilities: a Background Viewer toggle for the network's backdrop TOPs and CHOPs, and a global Mouse In CHOP you can drag channels from onto parameters.

  • Global Mouse In CHOPA popup with a global Mouse In CHOP whose channels you drag straight onto parameters, with no operator to place first.
  • Background viewer toggleTurns the current pane's backdrop TOP and CHOP viewers on or off in one click.
  • Clear TOP display flagsRight-click the Background Viewer button to turn off the display flag on every TOP in the current network.

ResetPLS

Reset stateful operators (feedback, cache, timers, counts) across the project, with a pattern-based exception list. Bound to ctrl+0.

  • Reset everything at oncePulses resetpulse and similar parameters on every operator the search finds, from the Reset pulse or the hotkey.
  • Search root and depthRoot sets where the search starts, and Limit Depth with Depth caps how far down it reaches.
  • ExceptionsExcept lists operators to skip, and Exceptions Limit also excludes everything under an excepted COMP.
  • Reset on startupReset On Startup pulses Reset automatically when the project starts.
  • Operator type togglesToggles per TOP, CHOP, SOP and COMP type choose which operators are reset, with Enable/Disable All to set them together.
  • Custom reset parameter namesCOMPs and Script operators are reset through parameters named Reset or Resetpulse, and Edit Custom Reset Pars adds more names.
  • Reset the timelineReset Timeline also sends the root timeline to the frame set in Reset Frame.
  • onReset callbackCreate Callbacks makes a text DAT for an onReset script, which runs on every reset while Callback is on.
  • Static pattern exceptionsStatic Exceptions holds pattern match strings, prefixed with ^, for components that should always be excluded.

Developer5 tools · 24 features

Extensions, editor integration and kits for your own tools.

CommandKit

Drop-in kit that lets ANY component publish quick-launch commands to the in-TouchDesigner command palette and the TDX launcher: decorate a promoted method, or declare a spec. Guarded: with no registry in the session nothing happens and nothing errors.

  • Publish commands from any componentDrop the kit in as a direct child and the methods you mark appear in the CommandPalette and the TDXL launcher.for tool authors
  • Safe without a registryWith no command registry in the session nothing happens and nothing errors, so the component works the same for people without the palette.for tool authors
  • Command decoratorThe fns_command decorator derives label, help and prompted parameters from the method name, docstring and signature; Literal hints become menus.for tool authors
  • Context, state and identity optionsDecorator extras set a context for greying out, a live state chip, surface, capability, hidden, and a canonical identity shared across packages.for tool authors
  • Explicit spec, no importsPromote an FnsCommand spec instead of importing anything; the kit's README DAT describes the form.for tool authors
  • Re-announce after changesCall Announce() to republish the component after its command set changes at runtime.for tool authors
  • Tell placed copies apartPromote FnsInstance() and FnsToolName() so palettes distinguish multiple copies and favourites reach all of them (FNS_CommandRegistry 3.2.1 or newer).for tool authors

ConfigHost

A standalone ConfigRegistry host. Drop it into a component to give it roaming settings; its parameters save and reload with your config, with per-parameter and per-page exclusions.

  • Roaming settings for any componentDrop it inside a component and that component's custom parameters are written into the shared settings file and restored on load.
  • Parameter and page exclusionsExcludepars and Excludepages leave named parameters or whole parameter pages out of what is saved.
  • Registry page on the parentPromotepars mirrors the key parameters onto the parent as a bound Registry page, so it can be configured without opening the host.
  • Named settings sectionCanonicalname sets the section the settings are stored under, defaulting to the component's name; renaming it orphans values saved under the old name.
  • Save and load callbacksAn optional callbacks DAT receives save and load hooks; the Createcallbacks pulse writes a starter.for tool authors

OpenExt

Open an operator's extension source quickly.

  • Open extension by hotkeyOpens the current COMP's first promoted extension in the external editor TouchDesigner is set to use; nothing happens on a COMP without one.
  • Quick-launch commandAlso published as the quick-launch command Open extension of current, so it runs from the command palette without the hotkey.

VSCodeTools

VS Code integration: open externalized scripts, sync files and generate TouchDesigner type stubs.

  • Open the VS Code workspaceLeft-clicking the button opens the VS Code workspace once one is set up.
  • Set up a workspaceRight-clicking the button sets up a VS Code workspace.
  • Sync a script to fileSyncs the selected DAT to a file typed by its language or content; extension scripts go in a subfolder named after their parent.
  • Choose the sync pathForces the save dialog so the selected DAT syncs to another path or under another name.
  • Clear a syncClears the file sync of the selected DAT.
  • Clear syncs before shippingThe Clear page drops syncs and the tool's tags at a scope you pick, so the content lives in the .toe again.
  • Python typing stubsThe Stubs page deploys typing stubs for selected DATs and COMPs with extensions, and TouchDesigner's built-in Python typings, through an integration of Stubser.

SeqModPatreon:Base

Watches a sequence of parameters on any COMP: name the target and the sequence, and the block parameters are published as one list, with a callback for every block added or removed.

  • Follow a sequence's blocksPoint COMP at the target and set Seq Name, and SeqMod keeps the list of block parameters current as the sequence grows and shrinks.
  • Published block listPublishes the block parameters as Par Names and as a table on out1, ready for a replicator, a UI builder or a script.
  • Add and remove callbacksCreate Callbacks makes a DAT whose OnAddBlock and OnRemoveBlock hooks run once per block; errors are reported on SeqMod itself.for tool authors

Miscellaneous1 tool · 2 features

Small helpers that fit nowhere else.

HydroHomie

A toolbar reminder to drink water at an interval you set. Off by default.

  • Drink water reminderShows a small alert icon in the toolbar at each interval, 45 minutes by default; clicking it dismisses the reminder until the next one.
  • Enable and set the intervalRight-click the icon to open its parameters, where you turn it on (it is off by default) and change the interval.

Time & sequencing1 tool · 3 features

Timelines, tempo, presets and sequences that move over time.

QuickTime

A toolbar clock that hands out drag-and-drop time references for parameters: resettable and scalable absTime and absFrame, frame, and a progress value for perfect loops.

  • Drag-and-drop time referencesLeft-click the icon for a popup of absTime, absFrame, frame and progress (current frame over end frame, for perfect loops) to drag onto parameters.
  • Scalable clockMultiplier scales absTime and absFrame, 1 for real time and 0.5 for half speed; right-click the icon to reach it.
  • Reset the timersSets the internal timers back to zero, the same as pulsing Reset on the component.

Control & mapping4 tools · 21 features

MIDI, OSC, your phone and hardware controllers.

midiMapper

Map MIDI controls to parameters, with a learn mode you drive by dropping a parameter on the toolbar button. Mappings are saved into the project folder by design; the tool's own settings roam through config.

  • Drag-and-drop MIDI learnDrop parameters onto the UI, learn, and move a fader or knob to assign it; each mapping's min/max range can be changed.
  • Reset a stuck MIDI deviceResetMIDIPls bypasses and un-bypasses MIDI operators to unstick them; a button in midiMapper resets the selected Device ID.
  • Reset all from the toolbarMiddle-click the midiMapper toolbar button to reset all MIDI operators.
  • Auto-reset on startupCan reset all MIDI operators automatically on startup.
  • Settings across projectsIts settings persist and follow you across projects through ConfigRegistry; the Registry page controls whether it participates.
  • Learn by toolbar dropDrop a parameter on the Mapper toolbar button to auto-learn MIDI, or Alt+drop it to auto-learn OSC, then move a knob.
  • Open MIDI or OSC MapperLeft-click the Mapper button for the MIDI Mapper, Alt+left-click for the OSC Mapper, and Alt+right-click for their settings.

oscMapper

Map OSC messages to parameters. Mappings are saved into the project folder by design.

ParHoverMIDI_VSN1

Adjust any parameter by hovering over it and turning an endless MIDI encoder, built for the Intech Studio VSN1 with screen and LED feedback: parameter slots and banks, ParGroup control, step sizes, shortcuts for reset and clamp, and network zoom when no parameter is under the mouse. Lands at the network root; one instance per project.

  • Hover and turn to adjustHover the mouse over any parameter and turn an endless relative MIDI encoder to change it; any such encoder works, not only the VSN1.
  • Screen and LED feedbackThe VSN1's screen shows the parameter under the mouse and its LEDs show state.
  • Step size switchingThe buttons under the VSN1 screen switch the step size the encoders use.
  • Parameter slots and banksSave the hovered parameter to a slot for instant recall across banks; long-press primary buttons for slots and step buttons for banks.
  • Reset, default and clamp shortcutsDevice buttons run shortcuts for reset, default and clamp on the hovered parameter.
  • ParGroup controlParameter groups such as RGB or XYZ turn as one; this needs TouchDesigner 2025.
  • Network zoom and panWith no parameter under the mouse, the encoders zoom and pan the network editor.
  • Custom parameter helpHolding Alt over any custom parameter of the component shows its help.

TDXMap14-day trial, then Base or Pro

MIDI controller mapping with a live web UI: multiple devices, banks, Smart Learn, button actions, 14-bit controls. Pro adds smoothing, pickup mode, easing curves, slot and modify modes.

CHOPs & sensing7 tools · 39 features

CHOP operators: shape, generate and read channels.

ChopBankPatreon:Base

A bank of channel processors: one block per channel, each with its own range, exponent curve, zero-below, lag and speed mode, built from the input with one Snap Input, with gain before and after and every block promoted as a property. An alternative for the Math CHOP and the Constant CHOP.

  • Per-channel processing blocksEach block processes one channel with its own range remap, exponent curve, Zero Below, lag and a speed mode that turns it into a running total.
  • Build the bank with Snap InputSnap Input makes one block per incoming channel, named after it and holding its value; a new block copies the previous block's settings.
  • Add channels not in the inputA block with no matching input channel outputs its own Value, so the bank can add channels the input lacks.
  • Gain before and afterGain is applied before and after the bank's processing.
  • Alternative for Math and Constant CHOPCreate a Math CHOP or Constant CHOP with the alternatives shortcut held and ChopBank is offered in its place, wired into the same spot.
  • Place from the FNS tabPick it from the FNS tab of the OP Create dialog and it lands as one node.
  • Blocks as propertiesWith Promote to Property on, each block is a property on the node that reads and sets its Value from Python.for tool authors

ChopProcessPatreon:Base

Shapes channels in one node: limit, remap between ranges with an exponent curve, zero at the bottom, lag, and an optional speed mode that turns the result into a running total. An alternative for the Math CHOP.

  • Limit and remap with a curveLimits incoming values to a range and remaps that range onto another through an exponent curve.
  • Zero BelowMakes the bottom of the input range output 0, so a fader switches fully off at its lowest point yet starts usefully once moved.
  • Lag smoothingGlides toward new values with a lag.
  • Speed modeTreats the result as a speed and outputs its running total instead.
  • Whole fader bank in one nodeProcesses every input channel, so one node shapes a whole fader bank; with nothing connected, the Value parameter is processed instead.
  • Math CHOP alternativeCreate a Math CHOP with the alternatives shortcut held and ChopProcess is offered in its place, wired into the same spot.

ConstantCHOPPatreon:Base

A Constant CHOP with typed values: numbers, toggles, tuples, text, paths or operator references, each promoted as a property you can read and set from Python, and a snap from its input. An alternative for the Constant CHOP.

  • Typed constantsA Type menu makes every constant a float, integer, toggle, four-value tuple, string, file or folder path, or operator reference, keeping values that convert.
  • Channels plus a tableNumbers, toggles and tuples come out as CHOP channels, and every constant also comes out as a DAT table of names and values.
  • Snap from the inputSnap Input turns whatever is wired in into constants, one per channel, named and valued from it.
  • Alternative for the Constant CHOPCreate a Constant CHOP with the alternatives shortcut held and ConstantCHOP is offered in its place.
  • Place from the FNS tabPick it from the FNS tab of the OP Create dialog and it lands as one node.
  • Constants as propertiesWith Promote to Property on, each constant is a property that reads and sets it, a _out property reads the output, and a prefix avoids clashes.for tool authors

EaseInterpolatorPatreon:Base

Crossfades between two CHOPs through an easing curve: thirty classic easings from sine to bounce, or a custom curve from a third input, all driven by one Select value.

  • Eased crossfadeBlends each channel of the first input into the matching channel of the second as Select runs from 0 to 1, along an easing curve.
  • Classic easing curvesLinear, or sine, quad, cubic, quart, quint, expo, circ, back, elastic and bounce curves in In, Out and In-Out forms.
  • Custom ease from a CHOPCustom Ease reads the curve from the optional third input, so any shape drawn in a CHOP becomes the transition.
  • Place from the FNS tabPlaced as one node from the FNS tab of the OP Create dialog.

KinectSinglePlayerPatreon:Base

Picks one player out of a Kinect skeleton stream: whoever stands inside the bounds you set becomes the active player, and their joints ride out as clean channels until they leave.

  • Bounds-based player selectionWatches a chosen joint of every tracked player and promotes one whose joint sits inside the box you define to active player.
  • Stable player channelsThe active player's joints come out under a stable name, whichever of the six Kinect slots they occupy.
  • Automatic handoverWhen the active player walks out of the box, the next player in range takes over.
  • Active player flagA separate CHOP output reports whether a player is active right now.

MoveDetectDirPatreon:Base

Reads which way things move in a camera or any image with optical flow and turns it into left/right and down/up channels, with thresholds, inversion and filtering, for swipe and gesture triggers.

  • Optical flow directionRuns optical flow on the input image and measures how much of the flow points left, right, down and up.
  • Direction channelsOutputs LR and DU channels that swing toward the direction of movement once it passes a threshold, for swipe and gesture triggers.
  • Place from the FNS tabPlaced as one node from the FNS tab of the OP Create dialog.

TopToMidiPatreon:Base

Samples an image at points you define and turns the pixel values into MIDI notes in a musical scale, with trigger gating, retrigger control, a MIDI-learned custom scale and output to a MIDI Out or VST CHOP.

  • Sample an image at pointsA SOP's points or a TOP's pixels say where the input image is read, and each sample point becomes a note.
  • Index modeEach sample point triggers its own note whenever its pixel passes the threshold, so a pattern sweeping across the picture plays an arpeggio.
  • Value modeThe pixel's brightness picks the note, quantised to Steps.
  • Scale mappingMaps notes into a scale from a root note and octave, including custom scales you type in.
  • Scale learned from a MIDI keyboardLearns a scale live from a MIDI keyboard through a MIDI In CHOP, so you can duet with the picture.
  • Trigger gatingGates note triggers so busy scenes do not spray notes.
  • MIDI Out and VST outputSends the notes to a MIDI Out CHOP, an Audio VST CHOP or both, and outputs them as a CHOP for anything else.
  • Sampling preview and valuesout_viz draws the sampling points over the input, and out_sampled gives the sampled values as a TOP and as a CHOP.
  • Install the mingus dependencyInstall mingus writes a requirements file and hands it to the Python Environment Manager, which installs it into the linked environment in the background.

Visual11 tools · 53 features

TOP operators: distort, colour, mask and generate images.

ComplexMix

Combines two UV fields as complex numbers: add, subtract, multiply, divide or raise one to the other, optionally weighted by a third input, then samples an image through the result.

  • Complex operations on UV fieldsTreats each pixel pair of two UV fields as complex numbers and adds, subtracts, multiplies, divides or raises one to the other.
  • Per-pixel weightingA third input weights the combination per pixel, so the mix can follow a mask or an animated gradient.
  • Sample an image through the resultSamples the in1 image through the combined coordinates, so two ComplexOp warps become their sum, product or quotient.
  • Chainable UV outputout2 outputs the combined UV field for chaining into another sampler.

ComplexOp

Treats the image plane as the complex plane and applies a complex function to it: square, root, exp, log, the trigonometric and hyperbolic families, with iteration, a pre and post transform and a choice of edge handling.

  • Complex-plane warpReads each pixel's UV as a complex number, runs it through the chosen function and samples the input image at the result.
  • Complex function setOffers square, root, exp, log, inverse, and the trigonometric and hyperbolic families with their inverses.
  • IterationApplies the function several times in a row.
  • Pre and post transformA transform before and after the function moves the point of interest to where the function does something worth seeing.
  • Mapped UV outputA second output carries the mapped UV field, for feeding another sampler.
  • Edge handling and border maskOffers a choice of edge handling, and a borders output masks where the mapped UV left the image.

ThresholdColor

A Threshold TOP that keeps the colour: pixels that pass the test come through in their original colour with a soft edge. An alternative for the Threshold TOP.

  • Colour-keeping thresholdPixels the Comparator removes go black while every other pixel keeps its exact RGB.
  • Soft edgeSoften feathers the boundary between kept and removed pixels.
  • Alternative for the Threshold TOPCreate a Threshold TOP with the alternatives shortcut held and ThresholdColor is offered in its place, wired into the same spot.

CircularDistortionTOPPatreon:Base

A circular distortion for images: rings of displacement around a centre you place, with phase, frequency, amplitude and a mode blend, and a choice of how the input extends past its edge.

  • Ring distortion around a centrePushes the image in rings around a centre you place; Frequency sets how many rings and Amplitude how far pixels move.
  • Animated PhaseAnimating Phase spins the rings outward or inward, for example driven from a CHOP for a ripple.
  • Mode blendMode blends between the distortion's two characters.
  • Edge extend choiceChoose how the input extends past its edge.
  • Place from the FNS tabPick it from the FNS tab of the OP Create dialog and it lands as one node.

ColorGenPatreon:Base

A colour palette generator: a lookup of any length shaped by a phase step per channel and per channel exponents, with a lookup ramp as a second output.

  • Palette by formulaThe three channels share one curve offset by a phase step, an exponent per channel bends each, and Length sets how many colours it holds.
  • Animate with one PhaseThe palette loops cleanly and animates with a single Phase parameter.
  • Palette strip outputThe palette comes out as a colour strip, ready for a Lookup TOP or a CHOP to Table.
  • Colour an image through itThe second output colours the input image through the palette; with nothing wired, a built-in 0 to 1 ramp shows the palette.
  • Place from the FNS tabPick it from the FNS tab of the OP Create dialog and it lands as one node.

ColorGenProPatreon:Pro

A cosine palette generator in GLSL: the full coefficient set per channel, an RGB and D mode, blackout and soft regions, and a lookup ramp as a second output.

  • Full cosine palette coefficientsSets offset, amplitude, period, phase and exponent for red, green and blue, giving gradients that loop cleanly and animate with a single phase.
  • RGB and D modeCollapses the coefficients to one offset, amplitude and exponent when you want fewer controls.
  • Blackout regionReserves part of the palette for black, by extending the length or taking it from the colours, with a soft edge you shape.
  • Palette strip outputout_col outputs the palette as a colour strip, and Length sets how many colours the lookup holds.
  • Colour an image through the paletteout_lookup colours the input image through the palette; with nothing wired a built-in 0 to 1 ramp shows the palette.

FeedbackDisplacePatreon:Base

A feedback loop with a displace stage inside it: opacity, crossfade, filter size, displacement driven by a built-in noise or a second input, a per-pass transform, reset and a dry/wet mix. An alternative for the Feedback TOP.

  • Feedback with opacity and blurRuns the feedback loop through a composite with an opacity and a blur, so trails, smears and echoes come straight from the parameters.
  • Noise or image displacementWarps every pass by a built-in animated noise, or by a displacement map wired into the in_displace input instead.
  • Per-pass transformApplies a transform on every pass for drift, zoom and spin, including infinite zooms.
  • Reset and dry/wet mixResets the loop, and mixes the loop's output against the input with Dry / Wet Mix.
  • Feedback TOP alternativeOffered in place of a Feedback TOP created with the alternatives shortcut held, wired into the same spot; also on the OP Create dialog's FNS tab.

InstanceTrailerPatreon:Base

Turns one moving image into a trail of its recent frames: a cache laid out in a row or column with exponent-shaped spacing, plus the offsets as a CHOP for instancing.

  • Trail of recent framesCaches incoming frames while an input is wired and lays the latest Depth frames side by side, oldest at one end, newest at the other.
  • Shaped sample spacingDirection and Expval shape how samples spread through the cache, so the trail bunches near the present or fans out into the past.
  • CHOP output for instancingA second output carries the trail as a CHOP in the same layout as the texture, for instanced geometry or CHOP-side use.
  • Place from the FNS tabPick it from the FNS tab of the OP Create dialog and it lands as one node.

MaskDrawPatreon:Pro

Draw a mask with the mouse straight onto the image: a panel you paint in, with the mask and the masked image as outputs, a lock and a reset.

PrismTOPPatreon:Base

A kaleidoscopic prism: the input rendered through instanced, rotating polygon facets in up to three ring patterns, with softness, a chromatic distortion pass, fit and transform, and a dry/wet mix. An alternative for the Tile TOP and the Mirror TOP.

RealRampPatreon:Base

A ramp with a true phase and period and its colour keys as parameters: vertical, horizontal, radial or circular, holding, zeroing, repeating or mirroring past its ends, so a driven phase never drifts or snaps the way a keyed Ramp TOP can. An alternative for the Ramp TOP.

  • Phase and period rampComputes the gradient in a shader from a phase and a period, so driving Phase from a CHOP cycles the ramp smoothly forever.
  • Four geometriesDraws the ramp vertical, horizontal, radial or circular.
  • Repeat or mirrorExtends the gradient past one period by repeating or mirroring it.
  • Resolution from inputAn optional TOP input sets the output resolution when connected.

3D and Particles4 tools · 25 features

POP operators, particle systems and 3D stacks.

ExpressionPOP

Per-point attribute expressions for POPs: write lines like P = P + N * 0.1 and they compile to a GLSL compute shader, with local variables carried between lines. An alternative for the Math Combine POP.

  • Line-by-line expressionsWrite one expression per line, such as P = P + N * 0.1, assigning output attributes and reading any input point attribute by name.
  • GPU compute shaderThe lines compile into a GLSL compute shader that runs on the GPU, so the calculation stays fast however many points come in.
  • Local variablesTyped locals such as vec3 offset = N * 0.2 are available to every later line, so a long calculation splits into readable steps.
  • Generated code and compile resultOutputs the generated shader code and the compile result as DATs beside the processed points.
  • Alternative for Math Combine POPOffered in place of a Math Combine POP, wired into the same spot, when you create one with the alternatives shortcut held.
  • Place from the FNS tabPlaced as one node from the FNS tab of the OP Create dialog.

LayerSep3DPatreon:Base

Slices an image into depth layers by a channel threshold and instances them as a stack in 3D, with per layer threshold, softness, mix, position, scale and rotation driven by curves or CHOPs.

  • Slice an image into layersEach layer takes the parts of the input passing a threshold on the channel you pick, with a soft edge between neighbouring layers.
  • Instanced 3D stackInstances the layers as planes along Z, so pointing a camera at it gives a flat picture depth.
  • Per-layer curvesThreshold, softness, mix, offset, scale and rotation each follow a curve over the layer index with offset, amplitude, power and phase.
  • CHOP-driven layersOptional CHOPs wired into in_threshold, in_softness and in_mix override the parameter curves per layer.
  • Separate colour sourcein_color supplies the colour drawn on the layers when it differs from the mask image that is sliced.
  • Layer texture outputout_layers gives the layer stack as a 2D texture array or 3D texture for your own instancing.
  • Instancing overridesPer-layer Z, scale and rotation can also be overridden in the instancing.

Particles2D_POPPatreon:Base

A 2D particle simulation as a POP loop: a source image emits particles, curl noise and wind effectors steer them with lookup ranges, trails stretch them, and the loop rides out as points for your own render.

ParticlesGpuUltimatePatreon:Pro

A GPU particle system driven by images: a thresholded source emits particles, and look, life, turbulence, wind and force fields shape them, each optionally read from its own image, with a feedback pass for trails and one rendered output.

  • Image-driven emissionThe source image is thresholded to decide where particles are born and what colour they carry.
  • Look and lifeLook sets the particles' material, size and fades; Life sets how long they last and maps their life to size and alpha.
  • Turbulence and windTurbulence and Wind push particles with fields that read an image's dark and bright sides differently.
  • Placed force fieldsForces adds radial, axial, vortex or spiral fields that you place.
  • Separate effector imagesLife, Turbulence and Wind each read their own connected image, so a different picture decides where particles live longer, swirl or drift.
  • Feedback trailsPost runs the render through a feedback pass for trails, mixed in with Dry / Wet, composited over the source or a background colour.
  • Raw maps and optical flowOptional raw position and colour maps replace the ones derived from the source, and an optical-flow map moves the particles.

Show & output5 tools · 17 features

Scenes, slides, recording, audio and the perform window.

GlobalVolControl

Global audio volume control.

  • Master volume sliderSets TouchDesigner's application-wide output level from the toolbar, leaving the Volume on every Audio Device Out and Audio Play CHOP unchanged.
  • MuteThe speaker button silences output without moving the slider, so unmuting returns to the same level.

Output

A toolbar button for the perform window: drop an operator to route it, click to open or close, and switch NDI and Spout/Syphon streaming of the same window.

  • Drop to set the Window OperatorDropping an operator on the toolbar button makes it the Window Operator of the /perform window, without opening the Window COMP's parameters.
  • Open or close the perform windowLeft-clicking the button opens the perform window, or closes it if it is already open.
  • NDI and Spout/Syphon streamingThe right-click popup switches streaming of the same window over NDI and Spout (Syphon on macOS), both on by default under configurable sender names.
  • Choose the Window COMPThe button's Perform parameter sets which Window COMP it drives, taking effect on the next drop with nothing to re-install.

FloatDataRecorderPatreon:Base

Records a float texture such as a depth point cloud, a colour texture and a CHOP to files in sync, then plays the three back together against the timeline with a frame offset.

  • Three-stream recordingRec writes a float texture such as a depth point cloud, a colour texture and a CHOP such as skeleton data to files at once.
  • Timeline playback with offsetPlays the three files back in step with the timeline, with a frame offset to line them up, as textures and channels.

SlideShowPatreon:Base

A slideshow of a folder of images: timed or stepped with next and previous, in order or random, with a crossfade between slides and a fitted output resolution.

  • Play a folder of imagesPoint it at a folder and it plays the images in it, each fitted to the output resolution.
  • Timed or stepped playbackA Period advances slides by itself; with Period at zero, Next and Prev step through them.
  • Random orderRandom shuffles the order and draws a new shuffle each time the folder has been played through.
  • Crossfade between slidesEvery change crossfades from the old slide to the new one on the out1 TOP.

SwitchToolsPatreon:Base

A companion for any Switch, Cross or multi-input operator: index by slider, menu or bind, loop or clamp, colour the live input, cook only the inputs in use and unload the rest from the GPU, plus reorder, reverse, randomize and align the inputs.

  • Drive the switch indexBinds the target operator's index to its own Index, driven by a slider, menu, CHOP or bound parameter, looping or clamping at the ends.
  • Cook only the live inputEvery input the switch is not showing stops cooking and, optionally, unloads from the GPU, so only what is on screen costs.
  • Colour the live inputColours the live input in the network editor.
  • Reorder inputs in one clickReorders, reverses, shuffles or aligns the operator's inputs in one click.
  • Cooking and selection callbacksCreate Callbacks makes a DAT with onCookingChange and onSelectionChange, reporting which inputs started or stopped cooking and which were selected.

Core15 tools · 107 features

The registries every other tool plugs into. Installed as a unit.

CommandRegistry

Collects the commands your tools declare and serves them to whatever can run them: the in-TouchDesigner command palette and the TDX launcher. Discovery is by tag, so a tool installed before any consumer still appears the moment one arrives.

  • Tag-based tool discoveryFinds tools tagged fnscommands and harvests their commands, so a tool installed before any palette or launcher still appears when one arrives.
  • Curation that survives movesFavourites, hidden flags and presets are keyed on tool name and command id, so they survive a tool being moved in the network.
  • Presets per copy or pinnedA preset runs on every copy of a tool, or is pinned to one instance label and waits quietly where no copy carries it.
  • Built-in TouchDesigner commandsServes TouchDesigner's own actions, such as the Textport, dialogs, pane changes, saving, recent files, realtime, perform mode and cook rate, badged TD in the palette.
  • Newest version wins for duplicatesWhen two packages offer the same canonical command, the newest package version is served and the other set aside, so the list never doubles.
  • Tools work without itEvery call a tool makes is guarded, so with no registry in the session nothing happens and nothing errors.for tool authors
  • Commands derived from methodsBuilds each command's label, help and prompted parameters from the method's name, docstring and signature, with type hints setting input styles.for tool authors
  • Declared context, surface and stateTools declare what a command acts on, where it is offered, where its live value lives, its capability group and a cross-package canonical id.for tool authors
  • Commands for each tool copyEach copy of a multi-copy tool registers its commands under its own path, labelled by FnsInstance() and grouped under one name by FnsToolName().for tool authors
  • Declaration validationEnforces limits at harvest (24 commands per tool, 6 parameters, 5 contexts, 8 surfaces) and rejects malformed declarations with a reason.for tool authors
  • Consumer APICommands(), Run(key, args), RescanTools(), Shadowed() and Version() let a palette or launcher list, run and re-harvest commands and check the contract version.for tool authors

ConfigRegistry

Settings persistence registry: one aggregated JSON in the user palette, so preferences follow you across projects and survive updates. The raw master, promoted to /sys.

  • Settings page in the browserOpenSettingsUI() opens a browser page, served by Console on localhost, listing every registered tool with its version and editable parameters.
  • One settings file across projectsAggregates every tool's custom parameters, plus extra state from tools like OpTemplates, into one JSON file in the User Palette, outside the .toe.
  • Automatic load and saveEach tool loads its section once per session (Autoload, can be turned off per tool); settings save on project pre-save and before an update.
  • Save All and Load AllPulses on the master or any tool's Registry page sync every tool's settings to or from the JSON file at once.
  • Host copy per toolA tool persists its settings by carrying a small host copy, shown as its Registry page, which forwards to the single promoted /sys registry.for tool authors

Console

The toolkit's web front, served from inside your project: every tool's settings on one page, the install picker, and any tab a tool contributes. The raw master, promoted to /sys.

  • Open on a chosen tabThe Open Settings, Pick Tools and Open Console pulses, or op.FNS_CONSOLE.Open() from Python, open the console on the tab you want.
  • Panel or system browserShows in the toolkit root's webBrowser panel if there is one, else the system browser; the tab sits in the URL, so reloads keep it.
  • Settings for every toolShows every registered tool as a section card with parameters grouped by page, a scroll-spy jump list and search across all tools.
  • Config scope, export and importThe Settings header switches global or project scope, exports settings to a JSON file with a download, and imports a document, keeping sections for later installs.
  • Install and remove tabServes the installer's picker in the console: check a tool to install it, uncheck an installed one to remove it while its settings are kept.
  • Show or hide contributed tabsThe ⋯ button at the end of the tab bar lists every contributed tab with a show/hide checkbox, saved to that tool's Shown in Console parameter.
  • Console or local panel per toolEach tool's Expose to Console parameter chooses between publishing to the console and keeping its own panel; the installer switches it on once at install.
  • Local server only while in useRuns on 127.0.0.1 on the first free port in 36710-36759, switched on by Open and off after ten idle minutes; each open project has its own.
  • Renders only while visibleThe root's webBrowser panel renders only while its window is open or its viewer is active, so a closed console cooks nothing.
  • Contribute a tabA stamped FNS_Console host publishes a tool's self-contained HTML page as an iframe tab, with an optional API DAT defining onConsoleRequest.for tool authors
  • Local browser hand-offWhile a tool's tab is exposed the console switches that tool's own browser panel off, and back on when exposure ends, or calls OnConsoleExposure instead.for tool authors
  • Stamp or register from PythonStampHost stamps a console host into a tool; RegisterTab adds a tab without a host, which is ephemeral and must be re-registered on start.for tool authors
  • HTTP APIRoutes on the console port list and show or hide tabs, read and set tool parameters, export, import, switch scope, and forward installer and tab requests.for tool authors
  • Python APIop.FNS_CONSOLE offers Open, Close, Url, Tabs, SetTabDisplayed, RegisterTab, UnregisterTab and ServeTab; OpenSettingsUI on the config registry forwards here.for tool authors
  • Hot-synced sourcesDisk edits to the externalized console sources hot-sync into the master and the /sys global, so the running console uses them on the next request.for tool authors

Hub

The FNS button in TouchDesigner's main-menu bar and the one-stop manager window behind it: the Toolbar, Navbar and Main Menu configurators as tabs, the console, and any tab a tool contributes. Drop a panel COMP on the button to register it into a surface.

  • Open the hubLeft-clicking the FNS button in the main-menu bar opens the hub on the tab you were last on; quick-launch offers Open FNS Hub too.
  • FNS button menuRight-clicking the FNS button lists every tab, the console's Settings and Install & remove pages, and Show entries that bring hidden tabs back.
  • Toolbar configuratorReorders, groups, hides and shows the widgets on TouchDesigner's bookmark bar and adds dividers between them; right-click a name for its docs.
  • Navbar configuratorReorders pane-bar items, flips them between the left and right side, and shows, hides or groups them.
  • Main menu configuratorArranges the main-menu bar including TouchDesigner's own items, so your entries can sit between them; the TD button restores TD's original order.
  • OP Create contributionsReorders what tools add to the OP Create dialog (search words, row decorations, right-click items, filters) and switches any off without uninstalling its tool.
  • Network overlay layoutReorders, shows and hides everything tools draw on the network editor, and moves each corner list to another corner with its own margin.
  • Console tabRenders the toolkit's web console (settings, install and remove, contributed tabs) inside the hub, running its browser only while the tab is shown.
  • Commands tabLists every command the command registry serves, hidden and built-in ones included, with tool and context, to star or hide; contributed by CommandPalette.
  • Tool tabsShows the larger UIs of installed tools, such as oscMapper, ExprHotStrings, GlobalOutSelect, SearchWords, midiMapper and OpColor, as hub tabs.
  • Arrange and hide tabsDrag a tab onto another to reorder, right-click it for the owning tool's parameters, and hide it with that tool's Shown in Hub parameter.
  • Two tab bar stylesTab Bar picks Rows, which wraps fixed-width tabs, or Strip, TouchDesigner's single-row folder tabs with scroll arrows and a dropdown.
  • Roaming hub layoutTab order, the active tab and the three configurators' layouts roam with your settings through ConfigRegistry.
  • Drop to registerDropping a panel COMP on the FNS button or hub window offers Toolbar, Navbar or Main Menu and gives it a self-registering host, so it appears immediately.
  • Open a tab from Pythonop.FNS_HUBREGISTRY.Open(tab='navbar') opens the hub on a tab by its canonical name, contributed tabs included.for tool authors
  • Contribute a tabA tool carrying a stamped FNS_HubRegistry host gets a tab showing itself, an inner panel, an operator through an OP Viewer, or a parameter page.for tool authors

HubRegistry

The registry behind Hub's tab bar: tools contribute native panels, viewers or parameter pages as hub tabs. The raw master, promoted to /sys.

  • Self-healing Hub tabsKeeps one entry per Hub tab with label, order and visibility, injects a mirror or viewer for each, and prunes tabs whose tool is gone.
  • Hidden tabs stay hiddenClosing a tab in Hub writes Shown in Hub back to its host, so a hidden tab stays hidden across projects.
  • Contribute a tab through a hostA host copy names the tab: the tool's own panel, a mirrored panel COMP, or an OP Viewer of a DAT/CHOP/TOP/SOP/POP.for tool authors
  • Parameter page tabsTab Parameters shows a Parameter COMP view of chosen pages of the tool, or every page with *, as a Hub tab.for tool authors
  • Python tab APIRegisterTab(), Tabs(), SetTabDisplayed(), Open(tab=) and OpenDocs() register, list, show and open Hub tabs from Python.for tool authors
  • Tab exposure callbackAn extension implementing OnHubExposure(exposed) learns when its tab is shown; a palette Web Browser has its Active switched for it.for tool authors

MainMenuRegistry

TD main-menu surface registry, including project-name display. The raw master, promoted to /sys.

  • Order, hide and place entriesHolds the order, visibility and left/right placement of every main-menu entry, TD's own built-in items and tool-published ones alike.
  • Edit from the Hub MainMenu tabThe MainMenu tab of Hub, opened from the FNS button in the bar, reorders, hides or groups entries, TD's own items included.
  • Publish an entry from a toolA tool ships a small host copy of the registry beside its widget to get a main-menu entry, reachable globally as op.FNS_MAINMENUREGISTRY.for tool authors

NavbarRegistry

The pane-bar surface registry. The raw master, promoted to /sys; clone it to add your own pane-bar widgets.

  • Widgets in every pane barRegistered widgets are stamped into the default pane bar and each live one, so they show in every pane, including panes opened later.
  • Navbar layout in HubHub's Navbar tab reorders pane-bar items, flips them between left and right, and shows or hides them; the layout roams with your config.
  • Panel COMP to navbar packageDropping any panel COMP on the FNS button registers it as its own self-installing navbar package.
  • Host copy registrationA tool that wants a pane-bar widget ships a host copy of this registry and registers on load.for tool authors

OpFamily

The FNS tab in the OP Create dialog: an operator family whose members are FNS tools placed from the store as one node each, with stubs for projects that travel and in-place updates that keep retained parameters and state. Built with TDFam.

  • FNS tab in OP CreateAdds an FNS tab beside COMP, TOP, CHOP and the others, whose entries place FNS tools into the current network as one operator each.
  • Optional tabTurn the tab off or on from Pick Tools, the FNS Tab in OP Create toggle or Remove Operator Family; the choice sticks.
  • Members mirrored from the storeThe updater syncs entitled store packages into the family folder, so the tab lists exactly the members the machine holds, also shown in the Palette.
  • Members as operator alternativesA member can also be offered as an operator alternative, such as Random when you create a Noise CHOP with the alternatives shortcut held.
  • Stub operators for travelStub Family Operators turns placed members into light placeholders keeping wiring, position, retained parameters and state; Replace Family Stubs brings the real operators back.
  • Update placed operators in placeUpdate Family Operators upgrades every placed member to the newest version in the family folder, applying its retained parameters and state.
  • Family quick-launch commandsStub, Replace, Update, Sync Family From Store and Remove Operator Family run as quick-launch commands without dialogs, each optionally limited to the current network.
  • Manifest-declared retentionEach member's manifest declares which parameters and which state survive a stub or an update.for tool authors

OpMenuRegistry

OP Create dialog surface registry: search words, row decorations, right-click items, filter stages. The raw master, promoted to /sys.

  • Shared OP Create dialog surfaceArbitrates between tools that change the OP Create dialog, and the dialog goes back to stock when those tools are removed.
  • Operator alternativesCreate a stock operator type with the shortcut held and installed alternatives are offered; one is placed with its wiring restored, several open a picker.
  • Alternatives from the storeAlternatives from tools downloaded to your store but not in the project are offered below a divider and placed from disk; >> marks such types.
  • Search word contributionsTools add extra words that match an operator type, so searching music finds Audio File In.for tool authors
  • Node-table row decorationsTools relabel rows in the node table, such as the >>> OpTemplates puts beside every type you have a template for.for tool authors
  • Right-click menu itemsTools append entries after TouchDesigner's own three in the dialog's right-click menu, such as OpTemplates' Edit Templates.for tool authors
  • Filter-chain nodesTools splice Script DATs into the node table's filter chain to filter or rewrite the operator list itself.for tool authors
  • Panel injectionTools wire Panel COMPs into the dialog at a named anchor.for tool authors

PaletteRegistry

Contribute tabs to TouchDesigner's Palette Browser: a tool publishes a native panel COMP and it appears beside the stock Palette tab, sized to the slot and notified on every tab change.

  • Tabs in the Palette BrowserAdds a tab strip above the Palette Browser's list, with TD's own Palette tab first and one tab per contributed panel.
  • Stock palette left intactWith nothing contributed the palette dialog stays as TouchDesigner ships it; the strip appears with the first registration and goes with the last.
  • Back to the Palette tabSearchPalette's Ctrl+Shift+F switches to the stock Palette tab before focusing its search field; other tools can call ShowTab('palette') the same way.
  • Register a tab from a hostA tool ships a small host copy whose Registration page sets the tab's tool, canonical name, panel, label, order and visibility.for tool authors
  • Tab API from PythonRegisterTab(), Tabs(), SetTabDisplayed(), ShowTab(), CurrentTab() and UnregisterTab() on op.FNS_PALETTEREGISTRY manage tabs from code.for tool authors
  • Tab change callbackAn optional Callbacks DAT gets onPaletteTab(canonical, previous) on every tab change.for tool authors
  • Panels fitted to the slotA registered panel is resized to the slot, restored when the tab goes away, and keeps its state across tab switches, Web Render included.for tool authors
  • Several tabs from one toolThe Tab sequence adds one tab per block, and a block without its own panel reuses the first tab's panel.for tool authors

PaneSearchRegistry

Publish a control into the find bar of every network editor pane: it sits beside the bar's own Home toggle, one copy per pane, and appears in panes opened later too.

  • Controls in every find barCopies a published panel COMP into every network editor pane's find bar after Home, one copy per pane, including panes opened later.
  • Register through a host copyA tool ships a host copy whose Registration page names the panel COMP, a canonical name, its order and whether it is displayed.for tool authors
  • Python widget APIRegisterWidget(), UnregisterWidget(), RefreshWidget() and Instance() add, remove, refresh and find a find bar contribution from Python.for tool authors
  • Reach the find bar's operatorsA script in the contributed panel reaches the bar's search field and the pane's network path through me.parent(2).for tool authors

PaneTypeRegistry

Named, persistent pane-type entries for TD's panebar: any COMP can appear in the pane-type dropdown and be recalled with configurable owner, type, window actions and callbacks.

  • Custom pane types in the dropdownA COMP joins the pane bar's pane-type dropdown; picking it turns the pane into that COMP with the entry's owner, pane type, window behaviour and callbacks.
  • Recall a pane setup by nameEntries are named and persistent, so a pane setup you reach for every session is one dropdown pick away.
  • Registered rows on right-clickEntries appear in the dropdown for every pane, and right-clicking the pane-type menu reaches the registered rows.
  • Register a tool as a pane typeA tool ships a host copy of the registry and registers on load, declaring its COMP, pane type, and window actions or callbacks to fire on recall.for tool authors

TimelineRegistry

Publish a widget into TouchDesigner's timeline bar: transport controls beside the stock ones, an entry on the time-properties block, or a full-width strip in the frame-ruler band that gets its own row.

  • Stock bar when unusedWith nothing contributed the timeline bar stays stock, and it returns to its stock height when the last widget goes.
  • Background zone adds a rowThe background zone makes the bar taller by its own height, recomputed from the base each time so the bar never creeps taller.
  • Publish widgets to the timeline barA tool publishes a panel COMP and it appears in the timeline bar, shown through mirrors so the stock blocks stay as they are.for tool authors
  • Three placement zonesA widget sits beside the play controls, with the time-properties block, or as a full-width strip under the frame-ruler numbers.for tool authors
  • Registration hostA tool ships a small host copy whose Registration page names the COMP, canonical name, zone, order and whether it is displayed.for tool authors
  • Python registration APIRegisterWidget, UnregisterWidget and SetWidgetZone on op.FNS_TIMELINEREGISTRY add, remove and move widgets from Python; the zone settles a frame later.for tool authors

ToolbarRegistry

The toolbar surface registry and mirror rail. The raw master, promoted to /sys; clone it to put your own tools on the bar.

  • Central toolbar stateHolds which widgets are on the bar, their order and visibility, so installing or removing a tool never leaves a hole or dead button.
  • Mirror railKeeps TouchDesigner's own bookmark bar in step with the registered set, so the bar reflects the registry with no button COMPs copied in.
  • Arrange the toolbar in HubThe Toolbar tab of Hub reorders, groups, hides and shows widgets and adds dividers, with the layout following you across projects.
  • Register a tool on the barA tool ships a small host copy of the registry beside its widget and registers itself on load.for tool authors
  • Drop a panel on the FNS buttonDropping any panel COMP on the FNS button stamps the host into it, the quickest way to put your own tool on the bar.for tool authors

Updater

In-place toolkit updates, with settings preserved across the replacement.

  • Update indicator on the help iconThe toolbar ? icon gets a yellow border when any installed package has an update; clicking it prompts to update, otherwise it opens the wiki.
  • Update only changed packagesFetches only the packages that changed from the store, verifies each download's hash and replaces just those, leaving uninstalled packages uninstalled.
  • Settings kept across updatesSaves all tool configs to a JSON file before updating and reloads each replaced tool's saved configs afterwards.
  • Release notes after an updateShows that release's notes once on the first project open after an update; Show Notes After Update turns it off, and Hub's Updates tab keeps them.