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.
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.
- OP Create menu entryposition 0
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
| Control | Type / default | What 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. |
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. |
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
| Control | Type / default | What 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) | ||