Create audio-reactive visual
create_audio_reactiveBuild an audio-reactive visual in TouchDesigner by analyzing spectrum, level, and beat, then rendering the result as bars, particles, rings, or LED grid.
Instructions
Build an audio analysis chain (spectrum + level + optional beat) and a spectrum visual driven by it. Creates a new baseCOMP under parent_path holding the audio source, an Audio Spectrum CHOP, an Analyze level, an optional Beat CHOP, a CHOP-to-TOP texture with a Sensitivity gain, the GLSL visual, and a Null output. Each visual_style renders the spectrum its own way: glsl=horizontal bars, geometric=radial bars, particle=dot field, feedback=ring tunnel, instancing=LED grid. Returns a summary plus a JSON block with the container path, created node paths, the output path, exposed controls, any node errors, warnings, and an inline preview image. Use create_spectrum (Layer 1) or extract_audio_features when you only need the analysis CHOPs without a built-in visual.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audio_source | No | Where audio comes from: 'microphone'/'device_in' create an Audio Device In CHOP, 'file' an Audio File In CHOP (set audio_file_path), 'existing_chop' reuses an audio CHOP you already have (set existing_chop_path). | microphone |
| audio_file_path | No | Path to an audio file to play; used only when audio_source='file'. | |
| existing_chop_path | No | Path of an existing audio CHOP to analyze; used only when audio_source='existing_chop'. | |
| visual_style | Yes | How the spectrum is rendered: glsl=horizontal bars, geometric=radial bars, particle=dot field, feedback=ring tunnel, instancing=LED grid. | |
| frequency_bands | No | Spectrum resolution: sets the Audio Spectrum CHOP output length (TouchDesigner clamps it to 128–4096 bins). Higher = finer spectrum. | |
| beat_detection | No | When true (default), add a Beat CHOP driven by the audio source for tempo/beat signals. | |
| expose_controls | No | When true (default), expose a live 'Sensitivity' knob controlling how strongly the audio drives the visual. | |
| parent_path | No | Parent network where the audio-reactive container is created (default '/project1'). | /project1 |
| transient_gate | No | When true, add a transient/onset channel to a new modulation Null CHOP (`mod1`) for binding to parameters. | |
| transient_threshold | No | Transient threshold (0–1); used only when transient_gate=true. | |
| transient_hold_ms | No | Transient hold time in ms before decay; used only when transient_gate=true. | |
| sidechain_duck | No | When true, add an inverted duck-envelope channel to the modulation Null CHOP (`mod1`). | |
| duck_depth | No | How deeply the duck pulls toward 0 at peak level (0–1). | |
| duck_release_ms | No | Release time of the duck envelope in ms. |