Want to make your visuals really “dance” to the music? This recipe shows you how to build a responsive audio visualizer that feels connected to every beat. We’ll take a sound feed, break it into frequency bands (Bass, Mids, Treble), and use those numbers to drive a 3D scene.
New to TouchDesigner?
If this is your first time, check out the Basic VJ Mixer first. We’ll be using:
- CHOPs (Channel Operators): For audio signals and numbers.
- TOPs (Texture Operators): For images and the final render.
- SOPs (Surface Operators): For 3D shapes.
- COMPs (Components): For the 3D “world” (Camera, Light, Geometry).
1. Turning Sound into Data (CHOPs)
First, we need to listen to audio and turn it into numbers we can use.
1.1 Get the Audio
- Add an Audio Device In CHOP. This grabs sound from your microphone or system audio.
- Add an Audio Spectrum CHOP and connect the audio into it.
- What it does: This is called an FFT. It splits the sound into a graph where the left side is Bass and the right side is Treble.
1.2 Smooth and Prep
- Connect the spectrum to a Lag CHOP.
- Why? Raw audio is very “jittery.” A Lag of
0.05makes the movement look smooth and organic rather than flickering.
- Why? Raw audio is very “jittery.” A Lag of
- Connect to a Math CHOP. In the “Mult-Add” tab, set Multiply to
2.0. This makes the visual more sensitive to quiet sounds. - Connect to a Null CHOP and name it
OUT_AUDIO.
2. Setting Up the 3D Scene (COMPs & SOPs)
We need a 3D “world” to visualize the music.
- The Shape: Create a Box SOP.
- The Container: Connect the Box to a Geometry COMP.
- The Environment: Add a Camera COMP, a Light COMP, and a Render TOP.
- Tip: You should now see a single box in the
render1node.
- Tip: You should now see a single box in the
3. The Visualization (Instancing)
We want to create a row of boxes that jump to different frequencies.
3.1 Create the Grid
- Add a Noise TOP. Set its resolution to
32 x 1(this gives us 32 points in a line). - Connect it to a TOP to CHOP. This converts the “image” of noise into a list of numbers.
- Add a Rename CHOP and rename the channel
rtotx(Translate X). - Add a Math CHOP and multiply by
10to spread the boxes out. - Connect to a Null CHOP named
NULL_INSTANCES.
3.2 Link to Audio
- Go to your Geometry COMP → Instance tab.
- Turn Instancing →
On. - Drag
NULL_INSTANCESinto the Instance CHOP field. - Map Translate X to the
txchannel. - Map Scale Y (Height) to your
OUT_AUDIOchannel.
4. Making it “Pop” (Post-Processing)
Let’s make it look professional with some glow.
- Connect your Render TOP to a Bloom TOP.
- Set Threshold to
0.5and Intensity to0.8.
- Set Threshold to
- Connect to an HSV Adjust TOP.
- Tip: Use a Python expression in the Hue Offset parameter:
absTime.seconds * 5. Now the colors will slowly shift over time!
- Tip: Use a Python expression in the Hue Offset parameter:
- Finish with a Null TOP named
OUT.
Troubleshooting
- “I don’t hear/see anything!” — Check the “Device” parameter on your Audio Device In. Make sure your mic isn’t muted.
- “The boxes are too tall.” — Use a Math CHOP after your audio spectrum to lower the Multiply value.
- “The movement is too fast.” — Increase the Lag value (try
0.1or0.2). - “Nothing is rendering.” — Ensure your Render TOP has the
geo1,cam1, andlight1paths set in its parameters.
Next Steps
- Change the Layout: Use a
Grid SOPinstead of aNoise TOPto arrange the boxes in a 2D square. - Reactive Color: Map the audio volume to the Instance Color parameters so it gets brighter on loud kicks.
Parameter Tuning & Behavior
| Parameter | Behavior |
|---|---|
| Lag (Smoothing) | Higher (0.2) = smooth, liquid transitions; Lower (0.01) = sharp, snappy response to beats. |
| Math Multiply | Higher = more reactive to quiet sounds; Lower = requires loud audio to trigger movement. |
| Bloom Intensity | Higher = blinding, ethereal glow; Lower = subtle, clean highlights on the boxes. |
| Hue Offset Speed | Higher = rapid, psychedelic color cycling; Lower = slow, majestic mood shifts. |
| Noise Grid Size | Higher (64x1) = more boxes/finer frequency detail; Lower (8x1) = fewer, chunky bars. |
Network Architecture
To visualize how the audio and 3D data flows, here is the final network map:
[ AUDIO DATA (CHOPs) ] [ 3D GEOMETRY ]
Audio In ──▶ Spectrum (FFT) Box SOP
│ │
▼ ▼
[ PROCESSING ] [ Geo COMP (geo1) ] ◀──────────┐
Lag (Smooth) ────────────────▶ (Instancing On) │
│ │
[ LAYOUT DATA ] ▼ ▼
Noise TOP ──▶ TOP to CHOP ──▶ [ Merge CHOP ] ────────▶ [ Render TOP ]
(tx, ty) │
▼
[ RENDERING ] [ Bloom TOP ] ──▶ [ HSV Adjust ] ──▶ [ OUT ]Data Flow Explanation
- Audio Analysis: The
Audio Spectrum CHOPis the core. It performs an FFT, converting time-based sound into a frequency graph (Bass → Treble). - Smoothing: We use a
Lag CHOPbecause raw audio data jumps 60 times a second. The lag ensures the boxes move fluidly rather than “jittering.” - Layout Logic: The
Noise TOPgenerates the static grid positions. TheTOP to CHOPconverts these pixels into thetx(Translate X) coordinates for our 32 boxes. - The Bridge (Instancing): The
Geo COMPtakes the 32 layout coordinates and the 32 audio frequency heights, spawning 32 copies of theBox SOPon the GPU. - Post-Processing: The
Bloom TOPandHSV Adjust TOPare the final layers. They add a glow and a slow color cycle to make the visual feel alive.
(y) Return to Recipes & Projects | (y) Return to TouchDesigner | (y) Return to Home