@bottobot/td-mcp
Version:
TouchDesigner Documentation MCP Server v2.3 - Pure MCP server for VS Code/Codium with comprehensive operator documentation for 629 operators + 7 tutorials across all categories (TOP, CHOP, SOP, DAT, MAT, COMP, POP). Features experimental POP operators wit
1,509 lines • 81.8 kB
JSON
{
"id": "math_chop",
"name": "Math CHOP",
"displayName": "Math CHOP",
"category": "CHOP",
"subcategory": "Math",
"version": "",
"lastUpdated": "2025-08-07T07:50:03.719Z",
"sourceFile": "C:\\Program Files\\Derivative\\TouchDesigner\\Samples\\Learn\\OfflineHelp\\https.docs.derivative.ca\\Math_CHOP.htm",
"url": "",
"description": "The Math CHOP performs arithmetic operations on channels. The channels of a CHOP can be combined into one channel, and several CHOPs can be combined into one CHOP.",
"summary": "The Math CHOP performs arithmetic operations on channels. The channels of a CHOP can be combined into one channel, and several CHOPs can be combined into one CHOP.",
"details": "",
"usage": "",
"tips": [],
"warnings": [],
"parameters": [
{
"id": null,
"name": "Channel Pre OP",
"label": "Channel Pre OP",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Math performs arithmetic operations on channels. The channels of a can be combined into one channel, and several CHOPs can be combined into one .\t\t\nThe OP page lets you pre-operate on each sample, like making all samples positive or taking the square of each sample.\t\t\t\nUsing Combine Channels, for an input with multi-channels, you can multiply the samples of one channel by the samples in the other channels, reducing N channels down to one. You can combine them by multiplying, adding, finding the maximum, etc.. \t\t\t\nUsing Combine CHOPs, where there are two or more inputs, you can multiply (or add, etc.) the channels in one with the channels in all the other CHOPs, reducing N CHOPs to 1. (otherwise channels of multi-inputs are just merged)\t\t\t\nYou can then post-operate on the resulting samples - negate, square root, etc.\t\t\t\nThen using the Mult-Add page it can offset and scale the values of each sample.\t\t\t\nMore conveniently you can use the Range page to do linear scaling as well by setting an output low-high range for a certain input low-high range.\t\t\t\nFinally, you can round the resulting values off to an integer.\nTip: You can affect only certain channels of your input by using the parameter on the Common page.\nNote: To do logic operations (and, or, ...) between channels or CHOPs, use the Logic CHOP.\nTip: Customizing each channel:: You can use the local member chanIndex in a parameter like Post-Add, for example, me.chanIndex*2 to give a different post-add value for each channel. chanIndex is available in numerous CHOPs like the Pattern CHOP. (expressions are non-optimized)\nmathCHOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\nThe four steps are performed in the following order:\n\n preop - - Unary operations can be performed on individual channels. A menu of unary operations (as described above) that are performed on each channel as it comes in to the Math include:\n\n off - Don't do anything to the channel. negate - Take the negative value of each sample of the channel. pos - Make negative values of the channel positive (absolute). root - Take the square root of all values in the channel. square - Square all the values in the channel. inverse - Take the inverse (1/x) of all values in the channel.\n\t\t\n chanop - - A choice of operations is performed between the channels of an input , for each input. The Nth sample of one channel is combined with the Nth sample of other channels:\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n chopop - - A menu of operations that is performed between the input CHOPs, combining several CHOPs into one.\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply of all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n postop - - A menu (same as Channel Pre ) is performed as the finale stage upon the channels resulting from the above operations.\n\n off - negate - pos - root - square - inverse -\n\t\t\n match - - Match channels between inputs by name or index.\n\n index - name -\n\t\t\n align - - This menu handles cases where multiple input CHOPs have different start or end times. All channels output from a share the same start/end interval, so the inputs must be treated with the Align Options:\n\n auto - It will trim to the current Time Slice if there are any Time Slices, else it will do an Extend Min/Max. none - Find the earliest start and latest end, and extend all inputs to that range using the extend conditions. (see Extend Conditions). stretch - Find the earliest start and latest end, and stretch every channel's start and end to that range. start - Find the earliest start and shift all channels so they all start at that index. All channels are extended to the length of the longest one. end - Find the latest end and shift all channels so they all end at that index. Extend all channels to the length of the longest one. shift1 - Shift all channels to the start of the first and sample all inputs using the first input's range. trim1 - Trim all channels to first 's range. stretch1 - Stretch all channels to the first 's range. trim - Trim all channels to the smallest start/end interval. The start and end values may not come from the same channel. squash - Stretch all channels to the smallest start/end interval. The start and end values may not come from the same channel.\n\n interppars - Use this option when the input is a higher frequency than the timeline (example: audio). It will avoid any pops or crackles in the output when adjusting the multiply, add or range parameters.\n\n\n\n integer - - The resulting values can be converted to integer.\n\n off - Don't affect the value. ceiling - Round a value up to the next integer. floor - Round a value down to the next integer. round - Round a value to the nearest integer.\n\n\n\nThe three steps are next performed in the following order:\n\n preoff - First, add the value to each sample of each channel.\n\n\n\t\t\n gain - Then multiply by this value.\n\n\n\t\t\n postoff - Then add this value.\n\n\n\n\n\nThis is the final step prior to output.\n\n fromrange - - Another way to multiply/add. Converts from one low-high range to another range.\n\nfromrange1 -fromrange2 -\n\t\t\n torange - - Another way to multiply/add. Converts from one low-high range to another range.\n\ntorange1 -torange2 -\n\n\n\n timeslice - Turning this on forces the channels to be \"Time Sliced\". A is the time between the last cook frame and the current cook frame.\n\n\n\n scope - To determine which channels get affected, some CHOPs use a string on the Common page. See Pattern Matching.\n\n\n\n srselect - - Handle cases where multiple input CHOPs' sample rates are different. When Resampling occurs, the curves are interpolated according to the Interpolation Method Option, or \"Linear\" if the Interpolate Options are not available.\n\n first - Use rate of first input to resample others. max - Resample to the highest sample rate. min - Resample to the lowest sample rate. err - Doesn't accept conflicting sample rates.\n\n exportmethod - - This will determine how to connect the channel to the parameter. Refer to the Export article for more information.\n\n datindex - Uses the docked table and references the channel via the index of the channel in the . datname - Uses the docked table and references the channel via the name of the channel in the . autoname - The channel is the full destination of where to export to, such has geo1/transform1:tx.\n\n autoexportroot - This path points to the root node where all of the paths that exporting by Channel Name is : are relative to.\n\n\n\n exporttable - The used to hold the export information when using the Table Methods (See above).\n\n\n\n\n\n -\n\nExtra Information for the Math can be accessed via an Info CHOP.\n\n\n\n - Start of the interval in samples. - Number of samples in the . - The samplerate of the channels in frames per second. - Number of channels in the . - 1 if is enabled, 0 otherwise. - A count of how often the export connections have been updated.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2021.100002018.28070before 2018.28070\nCHOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nA parameter in most CHOPs that restricts which channels of that CHOP will be affected. Normally all channels of a CHOP are affected by the operator. TOPs have Channel Mask, a similar feature.\n\n\n\nAny of the procedural data operators. OPs do all the work in TouchDesigner. They \"cook\" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.\n\n\n\nTouchDesigner is a hierarchy of components. \"root\" is the top-most network in the hierarchy. The Network Path or Path for root is simply /. A typical path is /project1/moviein1.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nA Time Slice is the time from the last cook frame to the current cook frame. In CHOPs it is the set of short channels that contain the CHOP channels' samples between the last and the current cook frame.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nExporting is the connection of CHOP channels to parameters of operators. The output of each exporting CHOP is one or more channels, active only while the CHOP Viewer is on. The current value of a channel can be exported to a parameter of any operator, overriding that parameter's value. See Parameter.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nEvery operator in TouchDesigner has a set of control Parameters that can be integer or floating point numbers, menus, binary toggles, text strings or operator paths, which determine the output of the operator.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Math_CHOP&oldid=27464\"\n\t\tCategory: CHOPs",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.712Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Channel Pre OP",
"label": "Channel Pre OP",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "From Derivative\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tJump to navigation\n\t\tJump to search\n\t\t\nThe Math performs arithmetic operations on channels. The channels of a can be combined into one channel, and several CHOPs can be combined into one .\t\t\nThe OP page lets you pre-operate on each sample, like making all samples positive or taking the square of each sample.\t\t\t\nUsing Combine Channels, for an input with multi-channels, you can multiply the samples of one channel by the samples in the other channels, reducing N channels down to one. You can combine them by multiplying, adding, finding the maximum, etc.. \t\t\t\nUsing Combine CHOPs, where there are two or more inputs, you can multiply (or add, etc.) the channels in one with the channels in all the other CHOPs, reducing N CHOPs to 1. (otherwise channels of multi-inputs are just merged)\t\t\t\nYou can then post-operate on the resulting samples - negate, square root, etc.\t\t\t\nThen using the Mult-Add page it can offset and scale the values of each sample.\t\t\t\nMore conveniently you can use the Range page to do linear scaling as well by setting an output low-high range for a certain input low-high range.\t\t\t\nFinally, you can round the resulting values off to an integer.\nTip: You can affect only certain channels of your input by using the parameter on the Common page.\nNote: To do logic operations (and, or, ...) between channels or CHOPs, use the Logic CHOP.\nTip: Customizing each channel:: You can use the local member chanIndex in a parameter like Post-Add, for example, me.chanIndex*2 to give a different post-add value for each channel. chanIndex is available in numerous CHOPs like the Pattern CHOP. (expressions are non-optimized)\nmathCHOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\nThe four steps are performed in the following order:\n\n preop - - Unary operations can be performed on individual channels. A menu of unary operations (as described above) that are performed on each channel as it comes in to the Math include:\n\n off - Don't do anything to the channel. negate - Take the negative value of each sample of the channel. pos - Make negative values of the channel positive (absolute). root - Take the square root of all values in the channel. square - Square all the values in the channel. inverse - Take the inverse (1/x) of all values in the channel.\n\t\t\n chanop - - A choice of operations is performed between the channels of an input , for each input. The Nth sample of one channel is combined with the Nth sample of other channels:\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n chopop - - A menu of operations that is performed between the input CHOPs, combining several CHOPs into one.\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply of all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n postop - - A menu (same as Channel Pre ) is performed as the finale stage upon the channels resulting from the above operations.\n\n off - negate - pos - root - square - inverse -\n\t\t\n match - - Match channels between inputs by name or index.\n\n index - name -\n\t\t\n align - - This menu handles cases where multiple input CHOPs have different start or end times. All channels output from a share the same start/end interval, so the inputs must be treated with the Align Options:\n\n auto - It will trim to the current Time Slice if there are any Time Slices, else it will do an Extend Min/Max. none - Find the earliest start and latest end, and extend all inputs to that range using the extend conditions. (see Extend Conditions). stretch - Find the earliest start and latest end, and stretch every channel's start and end to that range. start - Find the earliest start and shift all channels so they all start at that index. All channels are extended to the length of the longest one. end - Find the latest end and shift all channels so they all end at that index. Extend all channels to the length of the longest one. shift1 - Shift all channels to the start of the first and sample all inputs using the first input's range. trim1 - Trim all channels to first 's range. stretch1 - Stretch all channels to the first 's range. trim - Trim all channels to the smallest start/end interval. The start and end values may not come from the same channel. squash - Stretch all channels to the smallest start/end interval. The start and end values may not come from the same channel.\n\n interppars - Use this option when the input is a higher frequency than the timeline (example: audio). It will avoid any pops or crackles in the output when adjusting the multiply, add or range parameters.\n\n\n\n integer - - The resulting values can be converted to integer.\n\n off - Don't affect the value. ceiling - Round a value up to the next integer. floor - Round a value down to the next integer. round - Round a value to the nearest integer.\n\n\n\nThe three steps are next performed in the following order:\n\n preoff - First, add the value to each sample of each channel.\n\n\n\t\t\n gain - Then multiply by this value.\n\n\n\t\t\n postoff - Then add this value.\n\n\n\n\n\nThis is the final step prior to output.\n\n fromrange - - Another way to multiply/add. Converts from one low-high range to another range.\n\nfromrange1 -fromrange2 -\n\t\t\n torange - - Another way to multiply/add. Converts from one low-high range to another range.\n\ntorange1 -torange2 -\n\n\n\n timeslice - Turning this on forces the channels to be \"Time Sliced\". A is the time between the last cook frame and the current cook frame.\n\n\n\n scope - To determine which channels get affected, some CHOPs use a string on the Common page. See Pattern Matching.\n\n\n\n srselect - - Handle cases where multiple input CHOPs' sample rates are different. When Resampling occurs, the curves are interpolated according to the Interpolation Method Option, or \"Linear\" if the Interpolate Options are not available.\n\n first - Use rate of first input to resample others. max - Resample to the highest sample rate. min - Resample to the lowest sample rate. err - Doesn't accept conflicting sample rates.\n\n exportmethod - - This will determine how to connect the channel to the parameter. Refer to the Export article for more information.\n\n datindex - Uses the docked table and references the channel via the index of the channel in the . datname - Uses the docked table and references the channel via the name of the channel in the . autoname - The channel is the full destination of where to export to, such has geo1/transform1:tx.\n\n autoexportroot - This path points to the root node where all of the paths that exporting by Channel Name is : are relative to.\n\n\n\n exporttable - The used to hold the export information when using the Table Methods (See above).\n\n\n\n\n\n -\n\nExtra Information for the Math can be accessed via an Info CHOP.\n\n\n\n - Start of the interval in samples. - Number of samples in the . - The samplerate of the channels in frames per second. - Number of channels in the . - 1 if is enabled, 0 otherwise. - A count of how often the export connections have been updated.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2021.100002018.28070before 2018.28070\nCHOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nA parameter in most CHOPs that restricts which channels of that CHOP will be affected. Normally all channels of a CHOP are affected by the operator. TOPs have Channel Mask, a similar feature.\n\n\n\nAny of the procedural data operators. OPs do all the work in TouchDesigner. They \"cook\" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.\n\n\n\nTouchDesigner is a hierarchy of components. \"root\" is the top-most network in the hierarchy. The Network Path or Path for root is simply /. A typical path is /project1/moviein1.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nA Time Slice is the time from the last cook frame to the current cook frame. In CHOPs it is the set of short channels that contain the CHOP channels' samples between the last and the current cook frame.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nExporting is the connection of CHOP channels to parameters of operators. The output of each exporting CHOP is one or more channels, active only while the CHOP Viewer is on. The current value of a channel can be exported to a parameter of any operator, overriding that parameter's value. See Parameter.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nEvery operator in TouchDesigner has a set of control Parameters that can be integer or floating point numbers, menus, binary toggles, text strings or operator paths, which determine the output of the operator.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Math_CHOP&oldid=27464\"\n\t\tCategory: CHOPs",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.714Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Channel Pre OP",
"label": "Channel Pre OP",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "The Math performs arithmetic operations on channels. The channels of a can be combined into one channel, and several CHOPs can be combined into one .\t\t\nThe OP page lets you pre-operate on each sample, like making all samples positive or taking the square of each sample.\t\t\t\nUsing Combine Channels, for an input with multi-channels, you can multiply the samples of one channel by the samples in the other channels, reducing N channels down to one. You can combine them by multiplying, adding, finding the maximum, etc.. \t\t\t\nUsing Combine CHOPs, where there are two or more inputs, you can multiply (or add, etc.) the channels in one with the channels in all the other CHOPs, reducing N CHOPs to 1. (otherwise channels of multi-inputs are just merged)\t\t\t\nYou can then post-operate on the resulting samples - negate, square root, etc.\t\t\t\nThen using the Mult-Add page it can offset and scale the values of each sample.\t\t\t\nMore conveniently you can use the Range page to do linear scaling as well by setting an output low-high range for a certain input low-high range.\t\t\t\nFinally, you can round the resulting values off to an integer.\nTip: You can affect only certain channels of your input by using the parameter on the Common page.\nNote: To do logic operations (and, or, ...) between channels or CHOPs, use the Logic CHOP.\nTip: Customizing each channel:: You can use the local member chanIndex in a parameter like Post-Add, for example, me.chanIndex*2 to give a different post-add value for each channel. chanIndex is available in numerous CHOPs like the Pattern CHOP. (expressions are non-optimized)\nmathCHOP_Class\n\nContents\n \n \n \n \n \n \n \n \n \n\n\n\n\n\nThe four steps are performed in the following order:\n\n preop - - Unary operations can be performed on individual channels. A menu of unary operations (as described above) that are performed on each channel as it comes in to the Math include:\n\n off - Don't do anything to the channel. negate - Take the negative value of each sample of the channel. pos - Make negative values of the channel positive (absolute). root - Take the square root of all values in the channel. square - Square all the values in the channel. inverse - Take the inverse (1/x) of all values in the channel.\n\t\t\n chanop - - A choice of operations is performed between the channels of an input , for each input. The Nth sample of one channel is combined with the Nth sample of other channels:\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n chopop - - A menu of operations that is performed between the input CHOPs, combining several CHOPs into one.\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply of all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.\n\t\t\n postop - - A menu (same as Channel Pre ) is performed as the finale stage upon the channels resulting from the above operations.\n\n off - negate - pos - root - square - inverse -\n\t\t\n match - - Match channels between inputs by name or index.\n\n index - name -\n\t\t\n align - - This menu handles cases where multiple input CHOPs have different start or end times. All channels output from a share the same start/end interval, so the inputs must be treated with the Align Options:\n\n auto - It will trim to the current Time Slice if there are any Time Slices, else it will do an Extend Min/Max. none - Find the earliest start and latest end, and extend all inputs to that range using the extend conditions. (see Extend Conditions). stretch - Find the earliest start and latest end, and stretch every channel's start and end to that range. start - Find the earliest start and shift all channels so they all start at that index. All channels are extended to the length of the longest one. end - Find the latest end and shift all channels so they all end at that index. Extend all channels to the length of the longest one. shift1 - Shift all channels to the start of the first and sample all inputs using the first input's range. trim1 - Trim all channels to first 's range. stretch1 - Stretch all channels to the first 's range. trim - Trim all channels to the smallest start/end interval. The start and end values may not come from the same channel. squash - Stretch all channels to the smallest start/end interval. The start and end values may not come from the same channel.\n\n interppars - Use this option when the input is a higher frequency than the timeline (example: audio). It will avoid any pops or crackles in the output when adjusting the multiply, add or range parameters.\n\n\n\n integer - - The resulting values can be converted to integer.\n\n off - Don't affect the value. ceiling - Round a value up to the next integer. floor - Round a value down to the next integer. round - Round a value to the nearest integer.\n\n\n\nThe three steps are next performed in the following order:\n\n preoff - First, add the value to each sample of each channel.\n\n\n\t\t\n gain - Then multiply by this value.\n\n\n\t\t\n postoff - Then add this value.\n\n\n\n\n\nThis is the final step prior to output.\n\n fromrange - - Another way to multiply/add. Converts from one low-high range to another range.\n\nfromrange1 -fromrange2 -\n\t\t\n torange - - Another way to multiply/add. Converts from one low-high range to another range.\n\ntorange1 -torange2 -\n\n\n\n timeslice - Turning this on forces the channels to be \"Time Sliced\". A is the time between the last cook frame and the current cook frame.\n\n\n\n scope - To determine which channels get affected, some CHOPs use a string on the Common page. See Pattern Matching.\n\n\n\n srselect - - Handle cases where multiple input CHOPs' sample rates are different. When Resampling occurs, the curves are interpolated according to the Interpolation Method Option, or \"Linear\" if the Interpolate Options are not available.\n\n first - Use rate of first input to resample others. max - Resample to the highest sample rate. min - Resample to the lowest sample rate. err - Doesn't accept conflicting sample rates.\n\n exportmethod - - This will determine how to connect the channel to the parameter. Refer to the Export article for more information.\n\n datindex - Uses the docked table and references the channel via the index of the channel in the . datname - Uses the docked table and references the channel via the name of the channel in the . autoname - The channel is the full destination of where to export to, such has geo1/transform1:tx.\n\n autoexportroot - This path points to the root node where all of the paths that exporting by Channel Name is : are relative to.\n\n\n\n exporttable - The used to hold the export information when using the Table Methods (See above).\n\n\n\n\n\n -\n\nExtra Information for the Math can be accessed via an Info CHOP.\n\n\n\n - Start of the interval in samples. - Number of samples in the . - The samplerate of the channels in frames per second. - Number of channels in the . - 1 if is enabled, 0 otherwise. - A count of how often the export connections have been updated.\n - Number of times the operator has cooked since the process started. - Duration of the last cook in milliseconds. - Frame number when this operator was last cooked relative to the component timeline. - Frame number when this operator was last cooked relative to the absolute time. - Time in milliseconds at which the operator started cooking in the frame it was cooked. - Time in milliseconds at which the operator finished cooking in the frame it was cooked. - 1 if operator was cooked this frame. - Number of warnings in this operator if any. - Number of errors in this operator if any.\nTouchDesigner Build: Latest\\n2021.100002018.28070before 2018.28070\nCHOPs\n• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • \n\nAn Operator Family which operate on Channels (a sequence of numbers (Samples)) which are used for animation, audio, mathematics, simulation, logic, UI construction, and data streamed from/to devices and protocols.\n\n\n\nA parameter in most CHOPs that restricts which channels of that CHOP will be affected. Normally all channels of a CHOP are affected by the operator. TOPs have Channel Mask, a similar feature.\n\n\n\nAny of the procedural data operators. OPs do all the work in TouchDesigner. They \"cook\" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.\n\n\n\nTouchDesigner is a hierarchy of components. \"root\" is the top-most network in the hierarchy. The Network Path or Path for root is simply /. A typical path is /project1/moviein1.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nA Time Slice is the time from the last cook frame to the current cook frame. In CHOPs it is the set of short channels that contain the CHOP channels' samples between the last and the current cook frame.\n\n\n\nsamples-per-second of a CHOP. Each CHOP in your network has a sample rate. In contrast, the overall timeline has a Frame Rate, which is the number of frames to cook and display per second, generally your monitor display frequency, default 60.\n\n\n\nExporting is the connection of CHOP channels to parameters of operators. The output of each exporting CHOP is one or more channels, active only while the CHOP Viewer is on. The current value of a channel can be exported to a parameter of any operator, overriding that parameter's value. See Parameter.\n\n\n\nAn Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a python Script or GLSL Shader, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.\n\n\n\nThe location of an operator within the TouchDesigner environment, for example, /geo1/circle1, a node called circle1 in a component called geo1. The path / is called Root. This path is displayed at the top of every Pane, showing which Component's network you are currently in. To refer instead to a filesystem folder, directory, disk file or http: address, see Folder.\n\n\n\nEvery operator in TouchDesigner has a set of control Parameters that can be integer or floating point numbers, menus, binary toggles, text strings or operator paths, which determine the output of the operator.\n\n\n\n\n\n\n\n\nRetrieved from \"https://docs.derivative.ca/index.php?title=Math_CHOP&oldid=27464\"",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.716Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Channel Pre OP",
"label": "Channel Pre OP",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "preop - - Unary operations can be performed on individual channels. A menu of unary operations (as described above) that are performed on each channel as it comes in to the Math include:\n\n off - Don't do anything to the channel. negate - Take the negative value of each sample of the channel. pos - Make negative values of the channel positive (absolute). root - Take the square root of all values in the channel. square - Square all the values in the channel. inverse - Take the inverse (1/x) of all values in the channel.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.716Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Off",
"label": "Off",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "off - Don't do anything to the channel. negate - Take the negative value of each sample of the channel. pos - Make negative values of the channel positive (absolute). root - Take the square root of all values in the channel. square - Square all the values in the channel. inverse - Take the inverse (1/x) of all values in the channel.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Combine Channels",
"label": "Combine Channels",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "chanop - - A choice of operations is performed between the channels of an input , for each input. The Nth sample of one channel is combined with the Nth sample of other channels:\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Off",
"label": "Off",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Combine CHOPs",
"label": "Combine CHOPs",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "chopop - - A menu of operations that is performed between the input CHOPs, combining several CHOPs into one.\n\n off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply of all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Off",
"label": "Off",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "off - Don't combine the channels. add - Sum all the channels. sub - Subtract all the channels from the first. mul - Multiply of all the channels. div - Divide the first channel by all the rest. avg - Take the average of all the channels. min - Take the minimum value of all the channels. max - Take the maximum value of all the channels. len - Assume the channels are a vector and compute its length.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Channel Post OP",
"label": "Channel Post OP",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "postop - - A menu (same as Channel Pre ) is performed as the finale stage upon the channels resulting from the above operations.\n\n off - negate - pos - root - square - inverse -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Off",
"label": "Off",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "off - negate - pos - root - square - inverse -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Match by",
"label": "Match by",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "match - - Match channels between inputs by name or index.\n\n index - name -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Channel Number",
"label": "Channel Number",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "index - name -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Align",
"label": "Align",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "align - - This menu handles cases where multiple input CHOPs have different start or end times. All channels output from a share the same start/end interval, so the inputs must be treated with the Align Options:\n\n auto - It will trim to the current Time Slice if there are any Time Slices, else it will do an Extend Min/Max. none - Find the earliest start and latest end, and extend all inputs to that range using the extend conditions. (see Extend Conditions). stretch - Find the earliest start and latest end, and stretch every channel's start and end to that range. start - Find the earliest start and shift all channels so they all start at that index. All channels are extended to the length of the longest one. end - Find the latest end and shift all channels so they all end at that index. Extend all channels to the length of the longest one. shift1 - Shift all channels to the start of the first and sample all inputs using the first input's range. trim1 - Trim all channels to first 's range. stretch1 - Stretch all channels to the first 's range. trim - Trim all channels to the smallest start/end interval. The start and end values may not come from the same channel. squash - Stretch all channels to the smallest start/end interval. The start and end values may not come from the same channel.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Automatic",
"label": "Automatic",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "auto - It will trim to the current Time Slice if there are any Time Slices, else it will do an Extend Min/Max. none - Find the earliest start and latest end, and extend all inputs to that range using the extend conditions. (see Extend Conditions). stretch - Find the earliest start and latest end, and stretch every channel's start and end to that range. start - Find the earliest start and shift all channels so they all start at that index. All channels are extended to the length of the longest one. end - Find the latest end and shift all channels so they all end at that index. Extend all channels to the length of the longest one. shift1 - Shift all channels to the start of the first and sample all inputs using the first input's range. trim1 - Trim all channels to first 's range. stretch1 - Stretch all channels to the first 's range. trim - Trim all channels to the smallest start/end interval. The start and end values may not come from the same channel. squash - Stretch all channels to the smallest start/end interval. The start and end values may not come from the same channel.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Interp Pars per Sample",
"label": "Interp Pars per Sample",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "interppars - Use this option when the input is a higher frequency than the timeline (example: audio). It will avoid any pops or crackles in the output when adjusting the multiply, add or range parameters.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Integer",
"label": "Integer",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "integer - - The resulting values can be converted to integer.\n\n off - Don't affect the value. ceiling - Round a value up to the next integer. floor - Round a value down to the next integer. round - Round a value to the nearest integer.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Off",
"label": "Off",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "off - Don't affect the value. ceiling - Round a value up to the next integer. floor - Round a value down to the next integer. round - Round a value to the nearest integer.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.717Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Pre-Add",
"label": "Pre-Add",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "preoff - First, add the value to each sample of each channel.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Multiply",
"label": "Multiply",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "gain - Then multiply by this value.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Post-Add",
"label": "Post-Add",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "postoff - Then add this value.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "From Range",
"label": "From Range",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "fromrange - - Another way to multiply/add. Converts from one low-high range to another range.\n\nfromrange1 -fromrange2 -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "To Range",
"label": "To Range",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "torange - - Another way to multiply/add. Converts from one low-high range to another range.\n\ntorange1 -torange2 -",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Time Slice",
"label": "Time Slice",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "timeslice - Turning this on forces the channels to be \"Time Sliced\". A is the time between the last cook frame and the current cook frame.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Scope",
"label": "Scope",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "scope - To determine which channels get affected, some CHOPs use a string on the Common page. See Pattern Matching.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Sample Rate Match",
"label": "Sample Rate Match",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "srselect - - Handle cases where multiple input CHOPs' sample rates are different. When Resampling occurs, the curves are interpolated according to the Interpolation Method Option, or \"Linear\" if the Interpolate Options are not available.\n\n first - Use rate of first input to resample others. max - Resample to the highest sample rate. min - Resample to the lowest sample rate. err - Doesn't accept conflicting sample rates.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Resample At First Input's Rate",
"label": "Resample At First Input's Rate",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "first - Use rate of first input to resample others. max - Resample to the highest sample rate. min - Resample to the lowest sample rate. err - Doesn't accept conflicting sample rates.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Export Method",
"label": "Export Method",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "exportmethod - - This will determine how to connect the channel to the parameter. Refer to the Export article for more information.\n\n datindex - Uses the docked table and references the channel via the index of the channel in the . datname - Uses the docked table and references the channel via the name of the channel in the . autoname - The channel is the full destination of where to export to, such has geo1/transform1:tx.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "DAT Table by Index",
"label": "DAT Table by Index",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "datindex - Uses the docked table and references the channel via the index of the channel in the . datname - Uses the docked table and references the channel via the name of the channel in the . autoname - The channel is the full destination of where to export to, such has geo1/transform1:tx.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Export Root",
"label": "Export Root",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "autoexportroot - This path points to the root node where all of the paths that exporting by Channel Name is : are relative to.",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
},
{
"id": null,
"name": "Export Table",
"label": "Export Table",
"group": "General",
"page": "",
"type": "float",
"dataType": "number",
"style": "",
"defaultValue": null,
"minValue": null,
"maxValue": null,
"step": null,
"menuItems": [],
"menuLabels": [],
"allowCustom": false,
"maxLength": null,
"pattern": null,
"isArray": false,
"arraySize": 1,
"dimensions": 1,
"description": "exporttable - The used to hold the export information when using the Table Methods (See above).",
"tooltip": "",
"help": "",
"units": "",
"examples": [],
"isReadOnly": false,
"isAdvanced": false,
"isHidden": false,
"isAnimatable": true,
"isExpression": false,
"isPython": false,
"dependsOn": [],
"affects": [],
"linkedTo": [],
"expressionLanguage": "",
"defaultExpression": "",
"commonExpressions": [],
"order": 0,
"isVisible": true,
"conditionalDisplay": null,
"isValid": true,
"validationErrors": [],
"lastUpdated": "2025-08-07T07:50:03.718Z",
"rawData": {},
"sourceElement": null
}
],
"parameterGroups": {},
"codeExamples": [],
"pythonExamples": [],
"expressions": [],
"commonInputs": [],
"commonOutputs": [],
"relatedOperators": [],
"workflowPatterns": [],
"images": [],
"videos": [],
"assets": [],
"keywords": [
"math",
"chop",
"performs",
"arithmetic",
"operations",
"channels.",
"channels",
"combined",
"into"
],
"tags": [
"CHOP",
"TouchDesigner",
"Math CHOP"
],
"searchWeight": 1,
"contentHash": "",
"processingDate": "2025-08-07T07:50:03.719Z",
"processingVersion": "1.0.0",
"isValid": true,
"validationErrors": []
}