Docs CHOPs & sensing

ChopBank

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.

∿ CHOPs & sensing ◆ Patreon:Base OP Create menu entry

This tool unlocks with Patreon. It installs through the same picker as everything else and unlocks with the Patreon Base tier or higher, connected from inside TouchDesigner. Everything else in the toolkit stays free and MIT, and the membership is what keeps that work moving.

Join on Patreon → How unlocking works →

Where it appears

Read off the registry hosts in the component, so this is where the tool puts itself in a default install; every one of these can be reordered or hidden from Hub.

What it is

ChopBank shapes a whole controller in one node. Every block in the Bank is one channel with its own processing: a range to limit and remap it, an exponent curve, Zero Below, a lag, and a speed mode that turns it into a running total. It's the same chain as ChopProcess, set per channel. A bank of eight faders, each with its own range and feel, is one node.

Snap Input builds the bank for you: it makes one block per incoming channel, named after it and holding its current value. A new block starts with the settings of the block before it, so setting up a row of similar faders is quick. With Promote to Property on, each block is also a property on the node, so op('ChopBank').Fader1 reads and sets that block's Value.

A block takes the input channel it is named after, or the channel at its position when its Name is empty. When no input channel matches, it outputs its own Value instead. That way a bank can also add channels that aren't in the input.

It is an alternative for the Math CHOP and for the Constant CHOP: create either with the alternatives shortcut held and ChopBank is offered in its place, wired into the same spot. It is also a member of the FNS operator family: pick it from the FNS tab of the OP Create dialog and it lands as one node.

Input and output

  • in1 (CHOP): the channels to process.
  • out1 (CHOP): one processed channel per block.

Parameters

Bank

ControlType / defaultWhat it does
In ScopeScoperead-only text* Which input channels the bank takes, as a pattern like fader* . Only asked when the input has more than one channel.
Gain PreMastergainpre number1 Gain on every input channel before the bank processes it.
Gain PostMastergainpost number1 Gain on every output channel after the bank.
Snap InputSnapinput button Rebuild the bank from the input: one block per channel, named after it and holding its current value.
BankBank sequence0 One block per channel. Add a block to process one more channel.
NameBank0name textempty The input channel this block processes, and its output name. Empty takes the channel at this block's position. A name the input does not have makes a new channel from Value.
ValueBank0value number0 The value this block outputs while no input channel matches it.
Math
TypeBank0type menuOff What happens outside the From Range: off lets values through, clamp holds them at the ends, loop wraps them round, zigzag bounces them back.
Options: Off, Clamp, Loop, Zigzag
From RangeBank0fromrange number0 The input range. With Type set to clamp, loop or zigzag this is also the limit.
To RangeBank0torange number0 The output range the From Range maps onto.
Zero BelowBank0zerobelow on / offoff Output 0 while the input sits at the bottom of the From Range, instead of the bottom of the To Range. Only with Type set to clamp.
Exponent ValueBank0expval number1 Exponent for the curve between the ranges: 1 is linear, above 1 eases in, below 1 eases out.
LagBank0lag number0 Seconds to glide up and down toward a new value.
Speed
Is SpeedBank0isspeed on / offoff Treat the processed value as a speed and output its running total instead, so a held input keeps moving.
Limit TypeBank0limittype menuOff What happens when the running total leaves Minimum and Maximum.
Options: Off, Clamp, Loop, Zigzag
MinimumBank0min number0 Lower limit for the running total.
MaximumBank0max number1 Upper limit for the running total.
Reset ValueBank0resetvalue number0 The value the running total returns to on reset.
ResetBank0reset on / offoff Hold the running total at the Reset Value while on.
Reset PulseBank0resetpulse button Return the running total to the Reset Value once.

Common

ControlType / defaultWhat it does
Promote to PropertyPromote on / offon Expose each block as a property on this COMP, named after the block, that reads and sets its Value.
To get/set values as .{prefix}{name}
Property PrefixPrefix textC_ Put in front of every property name, to keep them clear of other names on the COMP.
Author: Function Store (@function.str)

Edit this page on GitHub →