Crear visualizaciones musicales con TouchDesigner y Python

por | agosto 12, 2026
A large screen displaying abstract 3D visuals with colorful geometric patterns reacting to music, in a dimly lit studio with a laptop running TouchDesigner interface, cables and audio equipment around

Las visualizaciones musicales en tiempo real son una forma increíble de dar vida a tus sets de DJ, conciertos o instalaciones artísticas. Combinar TouchDesigner y Python te permite analizar el espectro de audio y convertirlo en gráficos generativos que bailan al ritmo de la música. En esta guía te llevo paso a paso para que puedas montar tu propio sistema interactivo, sin experiencia previa en programación visual.

¿Por qué TouchDesigner y Python?

TouchDesigner es un entorno de desarrollo visual conocido por su capacidad para procesar gráficos, vídeo y audio en tiempo real. Al integrar Python, puedes manipular los datos de audio con una precisión espectacular y crear comportamientos generativos complejos. La combinación es ideal si buscas algo más que los típicos visualizadores predefinidos: aquí tienes control total sobre cada píxel.

Paso 1: Preparar el audio

Antes de abrir TouchDesigner, necesitas una fuente de audio. Puede ser un archivo WAV o la entrada en directo de tu micrófono o mezclador. Si vienes de otro formato, asegúrate de tener el audio en un formato sin pérdida como WAV para mantener la calidad del análisis. Cuando trabajes con frecuencias, cada detalle cuenta.

Crear visualizaciones musicales con TouchDesigner y Python

Configurar el Audio Device In

En TouchDesigner, arrastra un operador Audio Device In a la red. Este nodo captura el audio del sistema o de un dispositivo externo. En sus parámetros, selecciona la fuente y ajusta el tamaño del buffer: valores más bajos dan más reactividad, pero consumen más CPU. Para empezar, 256 muestras por fotograma suele funcionar bien.

  • Si usas un archivo, reemplaza el Audio Device In por un Audio File In y carga tu WAV.
  • Conéctalo a un Null CHOP para referenciarlo fácilmente desde scripts.

Paso 2: Analizar el espectro con un Script CHOP

Ahora viene la magia. Vamos a usar un Script CHOP (tipo Python) para extraer las frecuencias que nos interesan y procesarlas. Los Script CHOPs ejecutan código Python sobre los canales de entrada, devolviendo nuevos canales. La librería estándar de TouchDesigner ya incluye funciones para FFT (Transformada Rápida de Fourier) y filtrado.

Código de ejemplo

Inserta un Script CHOP, conéctale la salida de audio del Null que creaste, y pega este código en la pestaña «Script»:

import math

def onCook(scriptOp):
    # Obtener los datos de audio entrantes
    input = scriptOp.inputs[0]
    
    # Realizar la FFT (rango de 0 a 1), frecuencia de muestreo y tamaño de frame
    spectrum = input.chan(0).fft()
    
    # Bandas de frecuencia: graves, medios, agudos
    low = sum(spectrum[0:5]) / 5
    mid = sum(spectrum[6:20]) / 15
    high = sum(spectrum[21:30]) / 10
    
    # Suavizado (evita parpadeos)
    smooth_low = scriptOp.stored(0, low) * 0.8 + low * 0.2
    smooth_mid = scriptOp.stored(1, mid) * 0.8 + mid * 0.2
    smooth_high = scriptOp.stored(2, high) * 0.8 + high * 0.2
    
    scriptOp.store(0, smooth_low)
    scriptOp.store(1, smooth_mid)
    scriptOp.store(2, smooth_high)
    
    # Crear canales de salida
    output = scriptOp.copy(0)
    output[0].vals = [smooth_low, smooth_mid, smooth_high]
    output[0].name = 'bass'
    output[1].name = 'mid'
    output[2].name = 'high'

Este script divide el espectro en tres bandas y aplica un suavizado exponencial para que los movimientos sean fluidos. Puedes añadir más bandas o usar técnicas como beat detection; la idea es que los datos sean manejables para los gráficos.

Paso 3: Crear gráficos generativos con los datos de audio

Con los valores de graves, medios y agudos listos, es hora de animar nuestros gráficos. TouchDesigner tiene operadores TOP (texturas 2D) y SOP (geometría 3D) que podemos enlazar con los canales del Script CHOP. Vamos a construir un sencillo sistema de partículas que reaccione a la música.

Partículas en 2D

Usa un Particle SOP para generar partículas. Conecta un Noise CHOP al parámetro de movimiento para darles un flujo orgánico. Luego, un Geometry COMP y un Render TOP para visualizarlas.

Para que respondan al audio, arrastra el canal «bass» desde el Script CHOP al tamaño de las partículas (parámetro «Size»). Haz clic derecho sobre el valor > «Reference» > elige el canal. Cuando los graves peguen, las partículas se agrandarán. Repite con «mid» para la velocidad y «high» para el color.

Efectos visuales adicionales

  • Rings: usa un Circle TOP y anima su radio con la banda de graves.
  • Shape shifting: modifica la geometría de un Sop Sphere con los canales del audio mediante un Transform SOP.
  • Color mapping: conecta los canales a un Ramp TOP para cambiar la paleta de colores en tiempo real.

Paso 4: Interactividad y ajustes en tiempo real

La verdadera gracia está en la interactividad. Puedes añadir controles con un Slider COMP o Button COMP para cambiar de escena o ajustar la sensibilidad. Lo mejor es que cualquier parámetro que modifiques mientras la música suena se actualiza al instante.

Conectar controles con Python

Puedes escribir scripts en Python para leer valores de los sliders y modificar el comportamiento. Por ejemplo, un script en un Execute DAT que cambie el rango de frecuencias analizadas según la posición de un deslizador que el usuario mueve durante la actuación.

Para actuaciones en vivo, exporta tu proyecto como un ejecutable con TouchPlayer o compártelo en una tableta mediante la app TouchOSC para que un VJ controle todo desde el escenario.

Consejos para evitar problemas comunes

Verifica siempre la frecuencia de muestreo del audio. Si hay un desajuste, el análisis FFT puede dar resultados erráticos. También ten en cuenta que el suavizado que apliques es crucial para una experiencia visual agradable. Un valor demasiado bajo hará que todo tiemble; demasiado alto y la respuesta será lenta.

Si tu ordenador se ahoga, reduce la resolución del render o la cantidad de partículas. Recuerda que TouchDesigner funciona mejor con GPU dedicada.

Preguntas frecuentes

¿Necesito saber programar para usar TouchDesigner?

No es imprescindible, pero con Python puedes ir mucho más lejos. TouchDesigner permite crear visualizaciones potentes solo arrastrando nodos, pero para un análisis de audio fino y gráficos generativos avanzados, Python es casi obligatorio.

¿Puedo usar Spotify como fuente de audio?

Técnicamente sí, pero de forma indirecta. Necesitas enrutar el audio del sistema hacia TouchDesigner con herramientas como BlackHole (macOS) o VB-Cable (Windows). Luego, el Audio Device In capturará ese flujo. No hay una integración nativa, pero funciona en tiempo real.

¿Qué formatos de audio admite TouchDesigner?

Principalmente WAV y AIFF. Si tienes tus temas en MP3, tendrás que convertirlos primero. Es un paso extra, pero te aseguras de que la señal no tenga compresiones que afecten al análisis espectral.

¿Se pueden guardar las visualizaciones como vídeo?

Sí. Puedes grabar la salida usando un Movie File Out TOP y exportar en códecs como H.264. Es ideal para crear clips promocionales o contenido para redes sociales.