Last night I built a professional audio-reactive visual system in TouchDesigner. Six crossfading GLSL shader scenes. A floating 3D mesh with chrome reflections. Three-band frequency analysis driving every parameter. Bass hits that make the visuals explode, then settle back to a calm drift. I built all of it in one session without writing a single line of code myself.

I directed an AI agent to do it.

Why This Matters to Me

I'm not a VJ by trade. But I've DJed for years, including opening for Giorgio Moroder. When you're behind the decks for the guy who invented electronic dance music, you learn something about what separates good from great: it's not technique. It's taste. Knowing when to push the energy, when to pull back, when a transition feels right versus when it feels forced. That same instinct applies to visuals.

I've always wanted reactive visuals for my sets but never had the technical chops to build them in real-time graphics software. Until now.

What TouchDesigner Actually Is

For those outside the creative tech world, TouchDesigner is the industry standard for real-time visuals. Projection mapping on buildings. Stage visuals for concerts and festivals. Interactive museum installations. The software behind immersive experiences at places like teamLab and Artechouse.

GLSL shader programming in TouchDesigner is the critical step toward professional-level work. These are GPU programs running at 60fps, generating visuals procedurally from math. Not beginner territory. The non-commercial edition is free, which means anyone can start, but the learning curve is steep.

How the Session Actually Worked

I have an AI agent connected to TouchDesigner's HTTP API. It can execute Python inside TD, create nodes, write shaders, wire audio analysis chains, and adjust parameters in real time. I direct it through Telegram messages.

The session went like this:

I said "make it more reactive to the music." The agent analyzed the existing shaders, discovered the audio uniforms were hardcoded to static values (that's why nothing was reactive), created mid and high frequency analysis chains, rewrote all seven shaders with three-band audio reactivity, and reported back. About two minutes.

Then: "Calm it down but make it more explosive. Bigger gap between variables. A speed ramp effect."

Power curves applied. Brightness floor lowered. Ceiling raised. Base speeds slowed. The visuals went from constant motion to breathing. Nearly still at rest, bursting on every bass hit.

"Slow it down another 25%." Done. "Pick a script from my ShaderToy file and add it as a second scene with crossfading." Done. Then a third, fourth, fifth, sixth scene. Each time I described what I wanted. Each time the agent wrote the GLSL, handled the crossfade math, and adjusted reactivity.

It wasn't all clean. Scene F rendered black for 20 minutes because a variable assignment was missing. The 3D mesh loaded as a default placeholder until we figured out the FBX import quirks. Debugging happened. But even the debugging was conversational: I said "Scene F is still black," and the agent diagnosed and fixed it while I watched.

By the end, I had six visual worlds cycling every 30 seconds with smooth crossfades, a floating 3D logo with metallic material, and every parameter driven by live audio.

Taste Is the Skill

Here's the thing nobody talks about when they dismiss AI-generated content as "slop."

Slop happens when there's no taste in the loop. When someone prompts an AI and accepts whatever comes back. That's not collaboration. That's abdication.

What happened in my session was different. Every creative decision was mine. The speed. The reactivity curve. When the distortion was too heavy, I called it. When Scene C needed more speed ramp, I pushed for it. When the mesh was in the wrong position, I adjusted until it felt right. I never once accepted the first output without evaluating it against what I knew the visuals needed to feel like on a dance floor.

I never thought about GLSL syntax, uniform binding, or audio CHOP routing. That's execution. The agent handles execution. I handle direction.

This is the difference between slop and art: a human with taste and lived experience making every call. The AI didn't know that the visuals needed to breathe with the music, not thrash. I knew that because I've stood behind decks and felt what works. The AI didn't know that Scene C's rotation was too fast. I knew that because I've watched crowds respond to visuals that complement the music versus visuals that compete with it.

Taste isn't something you can prompt for. It's accumulated through years of doing the thing. The AI gave me leverage to express taste I already had but couldn't execute technically. That's the opposite of slop.

What This Actually Means

The gap between "I want this" and "here it is, how does it look?" collapsed from hours to seconds. I could try an idea, evaluate it, and pivot in 30 seconds. That compression changes what's possible in a single session. I didn't plan six scenes. I started with one and kept going because each iteration was so fast that the creative momentum never broke.

The skill that separates people now is direction. The person who can direct well and evaluate quality has more creative leverage than the person who can only execute. But direction without taste produces slop. Taste without tools produces nothing. The combination produces work that neither human nor AI could create alone.

Next step for this project: DMX lighting output from the same audio analysis, so the stage lights and visuals react identically. All from one system.

The future of creative work isn't about knowing how to write shaders. It's about knowing what they should do. And that knowing comes from doing the actual thing, not from prompting.