Create modulators
create_modulatorsBuild a bank of BPM-synced LFO modulators in TouchDesigner, each with independent rate, shape, and phase. All outputs combine on one Null CHOP, tempo-locked for parameter modulation.
Instructions
Build a bank of N BPM-synced LFOs in one self-contained container — each an oscillator (sine/triangle/saw/square or a random sample-&-hold) with its own rate-in-beats, output range and phase offset. Every rate locks to a tempo source (a create_tempo_sync Null, or TouchDesigner's global tempo) by expression, so the whole bank speeds up/slows down with the music and stays phase-continuous across tempo changes. All outputs land on one Null CHOP (mod_out) with one named channel per modulator, ready for bind_to_channel — the 'everything breathes' lever. Note: modulators are timeline-driven, so they only move while the timeline is playing. Re-running with an existing container name rebuilds it in place (clearing that container's children), so this tool is marked destructive and hidden from the safe profile.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"modulators": "<modulators>"
},
"name": "create_modulators"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the self-contained modulator-bank container. | modulators |
| modulators | Yes | The modulators (LFOs) to build. Each becomes one named output channel on the bank's Null. | |
| bpm_channel | No | Name of the BPM channel on the tempo source to lock rates to. | bpm |
| parent_path | No | Parent COMP the 'modulators' container is created inside. | /project1 |
| tempo_source | No | Path to an existing tempo Null/Beat CHOP carrying a 'bpm' channel (e.g. the Null from create_tempo_sync, '/project1/tempo_sync/tempo'). Omit to create a fresh Beat CHOP locked to TouchDesigner's global tempo inside the bank. | |
| expose_controls | No | Expose a live custom-parameter page on the bank: a master Rate multiplier and a master Depth (amplitude) scale, so you can speed up or flatten the whole bank from one knob during a show. |