Glosario Técnico y Léxico Operativo de Max/MSP
Este glosario condensa la terminología matemática, acústica y de ciencias de la computación que sustenta el entorno de Max/MSP. Cada término se presenta bajo el estándar de 4 bloques de rigor operativo: su definición formal, su criticidad en tiempo real en vivo, la confusión típica que suele inducir a error y los objetos nativos donde se implementa.
1. Paradigma Dataflow, Control y Scheduler
Bang
Ontología de EjecuciónEl mensaje atómico más fundamental de Max. Representa un impulso de ejecución desprovisto de valor numérico intrínseco; su único significado computacional es la orden inmediata: "calcula ahora y emite tu estado actual".
Cualquier disparo rítmico o cambio de compás depende de la propagación limpia de un bang. Generar ráfagas descontroladas de bangs satura la cola de eventos y degrada la precisión del tempo.
No equivale al número 1 ni a un estado booleano true. Un número 1 transporta un dato; un bang es un suceso temporal puro.
button, bang, metro, trigger. Ver Módulo 1.1.
Scheduler Thread (Hilo del Planificador)
Control / TimingHilo de ejecución de prioridad media-alta encargado de despachar eventos discretos, temporizadores (metro), mensajes de control y tareas programadas en la cola temporal en milisegundos.
Si se activan algoritmos bloqueantes o parsing de texto masivo en este hilo, el tempo fluctúa y se introduce jitter temporal en eventos rítmicos y MIDI.
No confundir con el Audio Thread. El Scheduler mide el tiempo en milisegundos lógicos; el Audio Thread opera a sample-rate continuo (48 kHz) mediante interrupciones de hardware.
metro, pipe, delay, clocker. Ver Módulo 1.1.
Priority Inversion & Low-Priority Queue
Concurrencia / HilosMecanismo de protección arquitectónica que desvía operaciones pesadas (dibujado en pantalla, guardado en disco, peticiones HTTP) del hilo de alta prioridad a la cola de baja prioridad (Main GUI Thread), evitando que bloqueen el reloj rítmico.
Esencial cuando se capturan datos de sensores o video: si se envían miles de mensajes de control sin regular, la interfaz gráfica colapsa el Scheduler a menos que se use qmetro o deferlow.
defer retrasa el mensaje al hilo principal solo si estamos en el Scheduler; deferlow siempre encola el mensaje al final absoluto de la cola de eventos sin importar el origen.
qmetro, defer, deferlow, speedlim. Ver Módulo 1.1 y 1.2.
Overdrive
ArquitecturaModo del motor de Max que otorga al Scheduler Thread prioridad de temporización de interrupción por hardware por encima del hilo de la interfaz gráfica de usuario (GUI).
Debe estar siempre activado en directo. Garantiza que mover ventanas o renderizar pantallas no desincronice secuencias MIDI o metrónomos.
No acelera la CPU ni optimiza el cálculo; simplemente altera la jerarquía de despacho de los hilos del sistema operativo.
Configuración en Audio Status y objeto overdrive. Ver Módulo 0.1.
Inlet Caliente vs. Frío (Hot / Cold Inlet)
Semántica DataflowConvención del paradigma de mensajes de Max. Un Hot Inlet (generalmente el izquierdo) procesa el dato recibido y dispara inmediatamente el cálculo y salida del objeto; un Cold Inlet únicamente actualiza el estado interno sin disparar emisión.
Ignorar esta semántica provoca orden de ejecución errático, computaciones con parámetros desactualizados y bucles infinitos no deseados.
En el mundo MSP (señal ~), los inlets no son "fríos" ni "calientes": todos los inlets reciben vectores de señal continuos simultáneamente cada $N$ muestras.
+, pack, trigger (t), float (f). Ver Módulo 1.1.
Orden Derecha a Izquierda (Right-to-Left Rule)
Semántica DataflowRegla determinista del evaluador de Max: cuando múltiples patch cords emergen de un mismo outlet hacia varios inlets, o cuando varios objetos son disparados, los mensajes se transmiten en estricto orden de posición espacial (de derecha a izquierda, y de abajo hacia arriba).
Confiar en la posición visual de los objetos en el patcher es frágil. Ante cualquier movimiento accidental de cables, el algoritmo se altera.
La regla de oro del ingeniero profesional es: nunca depender de la posición espacial. Se debe forzar el orden de despacho explícitamente mediante el objeto trigger (t).
trigger (t b f i s), bang. Ver Módulo 1.1.
Garbage Collection Spikes & Delta Queue Jitter
Timing / DeterminismoInterrupción o fluctuación aperiódica (jitter) en la entrega temporal de eventos producida cuando el recolector de basura (Garbage Collector) de un motor de scripting en tiempo de ejecución (como V8 en Node for Max o SpiderMonkey en js) detiene el hilo para liberar memoria de objetos huérfanos.
Genera micro-congelamientos audibles y desfasajes en pasajes de alta densidad rítmica. Entornos como Scheme For Max mitigan este problema acoplando un intérprete Lisp de tamaño acotado directamente a la Delta Queue de Max a nivel de milisegundo de hardware.
No es una sobrecarga de CPU por cálculos pesados; es una pausa no determinista e involuntaria del runtime al reciclar punteros de memoria dinámica no reutilizada.
js, node.script, s4m. Ver Módulo 6.1 y Módulo 6.2.
Cánones RCMC de Vuza (Teselación Rítmica Regular)
Composición AlgorítmicaModelos rítmicos canónicos basados en la factorización formal de grupos cíclicos finitos $\mathbb{Z}_n = R \oplus S$. Permiten teselar el tiempo discreto de manera exhaustiva, de modo que la superposición de voces idénticas a diferentes desfases periódicos cubra cada pulso de la línea temporal sin vacíos ni colisiones.
Sustenta estructuras polirrítmicas infinitas perfectamente balanceadas para secuenciadores y cajas de ritmo complejas, asegurando que no existan picos aperiódicos acumulativos ni solapamientos destructivos de energía de transitorios.
No es un canon polifónico tradicional con imitaciones armónicas libres; es una propiedad combinatoria estricta descubierta por Dan Vuza aplicable al diseño de particiones rítmicas auto-sostenidas.
dict, zl.group, vuzalizer, bach. Ver Módulo 1.3 y Referencias Bibliográficas.
Diseño Conceptual & Concept Clashes (Daniel Jackson)
Arquitectura de SoftwareParadigma de ingeniería propuesto por Daniel Jackson (MIT) en The Essence of Software que descompone un sistema computacional en conceptos autónomos formados por cuatro elementos: un propósito singular (specificity), un modelo de estado con invariantes, acciones atómicas y un principio operacional. Un Concept Clash ocurre cuando dos conceptos incompatibles o acoplados compiten por el mismo recurso o estado sin sincronización determinista.
En parches complejos y dispositivos Max for Live, aplicar diseño conceptual previene colisiones catastróficas entre el hilo de audio de alta prioridad y la asincronía del modelo de objetos (LOM), garantizando que las abstracciones mantengan un contrato de ejecución limpio e inmune a comportamientos erráticos durante la performance.
Confundir un concepto con una clase o un objeto de Max. Un objeto de Max es una implementación sintáctica en C; un concepto es el modelo mental de propósito y comportamiento que gobierna la interacción modular del sistema.
patcherargs, bpatcher, dict, live.object. Ver Módulo 4.1 y Referencias Bibliográficas.
Handshaking Serial & Histéresis de Schmitt
Physical ComputingProtocolo bidireccional de control de flujo (Call-and-Response) para comunicaciones serie por microcontroladores, combinado con acondicionamiento de entrada mediante doble umbral de histéresis (Schmitt Trigger) para descartar fluctuaciones inducidas por ruido electrostático en el conversor ADC.
El sondeo por handshaking impide que un sensor mande paquetes a ráfaga libre y desborde el buffer circular del puerto serie; la histéresis elimina los disparos espurios (falsos bangs) causados por el rebote de contacto o vibraciones de escenario.
Creer que leer sensores a máxima tasa libre ($1000\text{ Hz}$) mejora la precisión; en realidad colapsa el Scheduler. La tasa debe gobernarse por sondeo coordinado y filtrado histérico de umbral.
serial, speedlim, split, thresh. Ver Apéndice C.
2. DSP, Audio Digital y Motor MSP
Audio Thread (Hilo de Procesamiento de Señal)
DSP / C EngineHilo de máxima prioridad en el sistema operativo que calcula los vectores de audio muestra a muestra de forma ininterrumpida a la tasa $f_s$ del conversor DA.
Cualquier operación bloqueante en este hilo (acceso a disco, reserva dinámica de memoria con malloc, locks de mutex) causa un Audio Dropout (clic / chasquido audible instantáneo).
No puede pausarse para esperar un mensaje de control. Si no termina a tiempo antes de que el buffer DAC se vacíe, se produce un buffer under-run destructivo.
dspstate~, perform64, dac~. Ver Módulo 3.1.
I/O Vector Size vs. Signal Vector Size
Buffers / HardwareEl I/O Vector Size (iovs) es el tamaño del buffer que intercambia el driver de audio con la tarjeta física (determina la latencia analógica). El Signal Vector Size (sigvs) es el número de muestras que los objetos de Max computan internamente en cada iteración del bucle perform64.
Reducir el iovs (ej. de 512 a 64 muestras) disminuye la latencia de monitoreo a menos de 3 ms, pero eleva la carga de interrupciones de la CPU de forma exponencial.
El Signal Vector Size jamás puede ser mayor que el I/O Vector Size (debe ser un submúltiplo exacto: $sigvs \le iovs$).
Ventana Audio Status, adstatus, dspstate~. Ver Módulo 3.1.
Detección de Cruce por Cero (Zero-Crossing)
Edición de Audio / GranulaciónPunto en una forma de onda donde la amplitud de la señal pasa exactamente por el valor cero ($y[t] = 0$) al transitar de signo positivo a negativo o viceversa.
Cortar, loopear o reiniciar la lectura de un buffer fuera de un cruce por cero genera una discontinuidad escalonada instantánea, produciendo un "clic" o chasquido de alta frecuencia en los altavoces.
No sustituye a las curvas de fundido cruzado (*crossfades*). En audio polifónico o señales estéreo, el cruce por cero de un canal rara vez coincide con el del otro canal.
groove~, play~, wave~, zerox~. Ver Módulo 3.8.
Interpolación Band-Limited
Muestreo & WavetablesMétodo de reconstrucción de muestras fraccionarias basado en la función Sinc o polinomios de Hermite/Spline cúbico que garantiza que no se inyecte energía por encima del límite de Nyquist al alterar la velocidad de reproducción.
Al hacer transposición hacia arriba (*pitch shifting*) de muestras o wavetables, la interpolación lineal barata genera aliasing abrasivo; la interpolación cúbica preserva la pureza tímbrica del oscilador.
No incrementa la frecuencia de muestreo física, sino la precisión inter-muestra calculada en el acumulador de fase.
2d.wave~, lookup~, cycle~, polyblep. Ver Módulo 3.2.
Aliasing (Plegamiento Espectral)
Teoría de SeñalesArtefacto no lineal que ocurre cuando una señal analógica o sintetizada genera componentes con frecuencias superiores al límite de Nyquist ($f_N = f_s / 2$). Esos armónicos se reflejan hacia abajo como frecuencias espurias inarmónicas: $f_{alias} = |f_s - f|$.
En síntesis por modulación de frecuencia (FM) profunda, distorsión no lineal o síntesis de pulsos duros, el aliasing genera un "barro" metálico disonante que destruye la claridad acústica de la mezcla.
No se puede eliminar con un filtro pasa-bajos convencional después de que ya ocurrió en el dominio digital: las frecuencias ya se plegaron sobre el espectro audible. Se previene con sobremuestreo (oversampling) o algoritmos anti-aliasing (BLEP / PolyBLEP).
poly~ con atributo @down/@up, gen~. Ver Módulo 3.1 y 3.2.
Denormal Numbers (Números Denormalizados)
Punto Flotante / CPUNúmeros en punto flotante IEEE 754 infinitesimalmente cercanos a cero ($< 10^{-38}$ en 32-bit). Cuando un filtro IIR o reverb decae en silencio infinito, la CPU entra en microcódigo para calcularlos, disparando el uso de procesador del 3% al 90%.
Puede congelar repentinamente el parche de audio en pasajes de silencio absoluto (dropouts invisibles que ocurren cuando la música para).
No se soluciona silenciando la salida. Se resuelve inyectando ruido ultra-bajo de dither analógico o activando los flags de hardware Flush-to-Zero (FTZ) y Denormals-Are-Zero (DAZ).
biquad~, teeth~, gen~. Ver Módulo 3.6.
Virtual Analog (VA) & Zero-Delay Feedback (ZDF)
DSP / Modelado FísicoMetodología de diseño de filtros y circuitos no lineales que resuelve los lazos de retroalimentación instantáneos del dominio analógico sin introducir el retardo parásito unitario ($z^{-1}$) inherente a la discretización digital clásica, resolviendo analíticamente la ecuación algebraica implícita o mediante iteraciones de Newton-Raphson.
Permite modular la resonancia y el corte hasta el punto de auto-oscilación extrema sin que el filtro explote en coeficientes inestables ni altere catastróficamente su frecuencia de corte ante variaciones rápidas de LFO.
Creer que un filtro digital tradicional en biquad~ equivale a un filtro ladder analógico; el filtro IIR estándar añade un retardo de una muestra en el lazo que destruye el comportamiento acústico de la resonancia no lineal analógica.
gen~, codebox, history. Ver Módulo 5.3.
Transformada Bilineal & Frequency Pre-Warping
Matemática DSPTécnica de mapeo conforme que transforma funciones de transferencia analógicas continuas $H(s)$ en filtros digitales discretos $H(z)$ mediante la sustitución $s = \frac{2}{T}\frac{1 - z^{-1}}{1 + z^{-1}}$. Debido a la compresión no lineal del eje frecuencial $(\omega = \frac{2}{T} \arctan(\frac{\Omega T}{2}))$, el Pre-Warping pre-distorsiona la frecuencia analógica de diseño ($\omega_a = \frac{2}{T}\tan(\frac{\omega_d T}{2})$) para que el corte digital coincida con precisión absoluta.
Evita el corrimiento espectral y la compresión plástica del sonido en las frecuencias altas cuando se diseñan ecualizadores de precisión quirúrgica o filtros resonantes cerca del límite de Nyquist.
Ignorar el pre-warping provoca que un filtro ajustado teóricamente a $12\text{ kHz}$ termine resonando en $9.8\text{ kHz}$ cuando opera a $44.1\text{ kHz}$, descalibrando afinaciones y armónicos de sintetizadores.
filtergraph~, biquad~, gen~. Ver Módulo 3.6 y Referencias Bibliográficas.
Parameter Smoothing & Zipper Noise
DSP / AcondicionamientoEl Zipper Noise es un artefacto acústico generado por pasos en escalera (discontinuidades instantáneas de amplitud o frecuencia) cuando un parámetro de control discreto a baja tasa modula una señal de audio. El Parameter Smoothing aplica un filtro pasa-bajos de un polo ($1$-pole, $y[n] = x[n]\cdot \alpha + y[n-1]\cdot(1-\alpha)$) para interpolar exponencialmente cada muestra.
Erradica los molestos chasquidos y estallidos percusivos al mover faders de volumen, barridos de corte de filtro o controles de ganancia durante una presentación ante sistemas de PA de alta potencia.
Conectar una salida de control discreta directamente al factor multiplicador de *~ sin usar line~ o slide~ para amortiguar la transición muestra a muestra.
line~, slide~, rampsmooth~, slide en gen~. Ver Módulo 3.5.
Sincronización de Fase de Kuramoto
Dinámica No Lineal / SíntesisModelo matemático que describe la transición de orden en una población de osciladores acoplados no lineales con frecuencias naturales dispersas: $\frac{d\theta_i}{dt} = \omega_i + \frac{K}{N}\sum_{j=1}^{N}\sin(\theta_j - \theta_i)$. Al superar un umbral crítico de acoplamiento $K_c$, los osciladores convergen espontáneamente a un ritmo común.
Permite construir motores rítmicos y polifónicos generativos con comportamiento biológico y orgánico, donde los pulsos no están sincronizados mecánicamente a un metrónomo rígido sino que "respiran" y se alinean como bandadas de aves o luciérnagas.
No es una modulación por modulación de frecuencia cruzada (FM compleja caótica); es una auto-organización de fase colectiva que conserva frecuencias estables con balance emergente.
gen~, kuroscillator, cycle~, phasor~. Ver Módulo 5.3 y Referencias Bibliográficas.
3. Gen~ y Computación a Nivel de Muestra
Single-Sample Delay (Retardo de Muestra Única)
Gen~ / DSP RecurrenteOperación elemental de retardo $z^{-1}$ que permite almacenar el valor de una muestra en el instante $t-1$ para reutilizarlo en el cálculo de la muestra actual $t_0$, resolviendo bucles algebraicos de retroalimentación.
En el mundo MSP tradicional, un bucle de feedback tiene una latencia mínima forzada de un vector entero ($sigvs$, típicamente 64 muestras). En gen~, el operador history reduce esta latencia a exactamente 1 muestra ($20.8\,\mu\text{s}$ a 48 kHz), permitiendo modelado físico y filtros auto-oscilantes reales.
No es una línea de retardo de audio perceptiva (como delay~ o tapin~/tapout~), sino una variable de estado de retroalimentación en memoria de registros.
history (dentro de gen~). Ver Módulo 5.1.
Wavefolding (Plegamiento de Onda: Wrap & Fold)
Gen~ / No LinealidadTransformación no lineal de modelado acústico (típica de la síntesis West Coast de Buchla) donde la señal, al superar un umbral de saturación, en lugar de recortarse bruscamente (clipping), invierte su dirección reflejándose hacia el centro.
Genera armónicos ricos y orgánicos a partir de ondas simples (senoides o triángulos) sin la crudeza estática de un clipper digital.
clip trunca tajantemente los picos produciendo ondas cuadradas; fold refleja la señal de ida y vuelta; wrap restablece el valor al inicio de la fase (aserrín).
fold, wrap, clip en Gen~. Ver Módulo 5.3.
GenExpr
Sintaxis / CompiladorLenguaje textual formal de programación estructurada que opera dentro del objeto codebox en Gen~. Se compila en tiempo real (JIT) a código máquina y admite bucles for, condicionales if/else, y funciones matemáticas sin costo de parcheo gráfico.
Permite condensar algoritmos de filtros no lineales o iteraciones complejas que requerirían cientos de cables en un bloque conciso y optimizado para instrucciones vectoriales de CPU.
No es JavaScript ni C++. Aunque comparte similitudes sintácticas con C, no admite punteros libres, llamadas a funciones del sistema operativo ni reservas dinámicas de memoria.
codebox (dentro de gen~). Ver Módulo 5.2.
Aritmética de Punto Fijo (Fixpoint Phasor)
Gen~ / Optimización NuméricaRepresentación numérica que utiliza enteros binarios de 32 o 64 bits para simular fracciones decimales mediante un factor de escala fijo, aprovechando el desbordamiento natural (*integer overflow*) para crear acumuladores de fase circulares sin condicionales.
Elimina las ramas de condición if (phase >= 1.0) phase -= 1.0; en el procesador, permitiendo que osciladores y LFOs en gen~ alcancen una velocidad de cálculo inigualable con jitter de fase nulo.
No sacrifica la afinación: un acumulador entero de 32 bits a 48 kHz ofrece una resolución de frecuencia de $48000 / 2^{32} \approx 0.000011\,\text{Hz}$.
phasor, accum, rate en Gen~. Ver Módulo 5.1.
4. Arquitectura de Bajo Nivel y C SDK
Función perform64
Max C SDK
Firma de función en lenguaje C canónica del Max SDK moderno (64 bits) encargada de procesar un vector de muestras de audio: void my_object_perform64(t_my_object *x, t_object *dsp64, double **ins, long numins, double **outs, long numouts, long sampleframes, long flags, void *userparam).
Es el corazón del Audio Thread. Toda la lógica de procesamiento DSP debe completarse antes de salir de esta función. Está terminantemente prohibido imprimir en consola (post()) o bloquear el hilo dentro de su cuerpo.
Reemplaza a la función heredada de 32 bits perform. Opera estrictamente con punteros de precisión doble (double*, 64-bit float).
Cabecera z_dsp.h, Max SDK, Min-DevKit. Ver Módulo 6.3.
Estructura t_pxobject
C API / MSP Engine
Estructura base de C que debe incluirse como primer miembro en cualquier objeto externo que procese señales de audio MSP (Pox Object). Extiende a t_object agregando descriptores para el Audio Thread y registro de métodos DSP.
Permite que Max gestione automáticamente la desconexión segura del objeto de la cadena de procesamiento de audio cuando el motor DSP se apaga o reinicia.
Si un objeto solo maneja mensajes de control y números, basta con usar t_object; si procesa señales de audio (~), es obligatorio heredar de t_pxobject.
z_dsp.h, dsp_setup(), dsp_free(). Ver Módulo 6.3.
Estructura t_atom
Memoria / C API
Unión etiquetada fundamental en C utilizada por el núcleo de Max para almacenar cualquier dato elemental homogéneo: enteros (A_LONG), decimales (A_FLOAT), cadenas o selectores (A_SYM) y referencias a objetos (A_OBJ).
El paso de listas en Max (mensajes entre objetos) consiste en enviar un arreglo contiguo de punteros t_atom* junto con un contador long argc.
Un atom no almacena buffers de señal de audio (las señales MSP viajan como arreglos puros de double* sin envoltorios de atom para máxima velocidad SIMD).
atom_getfloat(), atom_getlong(), ext_obex.h. Ver Módulo 6.3.
Vectorización SIMD (Single Instruction, Multiple Data)
Hardware / OptimizaciónCapacidad de los procesadores modernos (instrucciones AVX2, AVX-512, ARM Neon) para ejecutar una misma operación matemática sobre 4 u 8 muestras de audio en punto flotante simultáneamente en un único ciclo de reloj.
La vectorización permite que un parche procese 64 canales de audio con filtros y reverberación convolutiva consumiendo una fracción mínima de CPU.
El compilador solo puede auto-vectorizar bucles de audio si los punteros no tienen solapamiento de memoria (*aliasing de punteros*) y se declaran con el modificador restrict.
Min-DevKit, perform64, CMake flags. Ver Módulo 6.3 y Apéndice D.
Min-DevKit & RAII en C++17
Arquitectura C++ / SDKFramework moderno de abstracción basado en C++17 para la creación de objetos externos de Max. Reemplaza la manipulación manual de punteros y estructuras opacas de la API clásica de C (t_object, sysmem_newptr) por semántica de objetos tipados, gestión de recursos por vida útil (Resource Acquisition Is Initialization - RAII), lambdas y metaprogramación declarativa.
Garantiza ausencia total de fugas de memoria (memory leaks) y desreferencias de punteros nulos durante la ejecución continuada en vivo de parches con alta rotación de instancias dinámicas o inicializaciones dinámicas.
Creer que Min-DevKit introduce sobrecarga o latencia frente al C SDK puro; al basarse en templates y funciones en línea (inlining), el compilador C++ optimiza el código hasta generar instrucciones de máquina equivalentes o superiores en rendimiento.
Clases min::object, min::inlet, min::outlet, min::attribute. Ver Apéndice D.
5. Computación Visual y Matrices (Jitter)
Matriz Jitter (jit.matrix)
Jitter / GPU
Estructura de datos multidimensional de memoria contigua caracterizada por 4 parámetros fijos: nombre, plano (canales de datos como ARGB), tipo de dato (char, long, float32, float64) y dimensiones espaciales ($X \times Y \times Z$).
Copiar matrices de video pesadas de CPU a GPU cuadro a cuadro satura el bus PCI Express. Para alta tasa de cuadros (60 fps), se procesa directamente en la textura de video de la GPU mediante texturas OpenGL (jit.gl.texture).
No transporta video como un flujo codificado h.264 comprimido, sino como arreglos de píxeles o tensores numéricos crudos accesibles celda a celda.
jit.matrix, jit.gl.texture, jit.world. Ver Apéndice A.
Disposición Planar vs. Interleaved
Memoria de VideoForma en que se ordenan los canales cromáticos en memoria: Interleaved almacena cada píxel completo en secuencia contigua ($R_0, G_0, B_0, R_1, G_1, B_1$); Planar almacena toda la capa roja completa, seguida por toda la verde y luego la azul ($R_0...R_N, G_0...G_N, B_0...B_N$).
Jitter utiliza arquitectura planar por planos indexados (Plano 0: Alfa, Plano 1: Rojo, Plano 2: Verde, Plano 3: Azul). Esto permite aislar y procesar un canal cromático sin tocar los demás.
El plano 0 en Jitter suele ser el canal Alfa o de transparencia, no el Rojo. Olvidar esto descoloca las operaciones cromáticas.
jit.pack, jit.unpack, jit.matrix. Ver Apéndice A.
Texture Sharing GPU (Spout / Syphon)
Interoperabilidad / VideoProtocolo de memoria de video compartida a nivel de hardware (Spout en Windows / Syphon en macOS) que permite intercambiar texturas de alta resolución (4K/60fps) entre diferentes aplicaciones en tiempo real con latencia cero.
Permite delegar la síntesis y reactividad sonora a Max/MSP mientras TouchDesigner, Resolume o Notch renderizan la escenografía visual masiva sin penalizar la CPU.
No viaja por red local ni utiliza ancho de banda Ethernet (como NDI); requiere que ambos programas corran en la misma máquina física con la misma GPU.
jit.gl.spoutsender, jit.gl.spoutreceiver, jit.gl.syphonserver. Ver Apéndice B.
6. Audio Espacial e Inteligencia Artificial
Formato B Ambisonics (B-Format FuMa / Ambix)
Espacialización 3DRepresentación matemática jerárquica de un campo sonoro espacial en primer orden descompuesto en 4 señales canónicas: componente omnidireccional $W$ (presión escalar) y componentes en figura de ocho $X, Y, Z$ (gradientes de velocidad en los ejes adelante/atrás, izquierda/derecha y arriba/abajo).
Independiza la composición espacial de la disposición física de altavoces. Una obra mezclada en Ambisonics se decodifica en directo a 4, 8, 16 o 32 canales sin necesidad de volver a mezclar.
No confundir el orden clásico de ponderación Furse-Malham (FuMa, con factor de escala $1/\sqrt{2}$ en $W$) con el estándar contemporáneo ACN-SN3D (Ambix). Mezclar convenciones invierte las fases acústicas espaciales.
spat5.pan~, spat5.hoa.*, mc.*. Ver Apéndice F.
Decodificación en Fase (In-Phase vs. Max-rE)
Acústica / AmbisonicsCriterios psicoacústicos de decodificación de armónicos esféricos. Max-rE maximiza el vector de energía para la zona central (*sweet spot*); In-Phase anula completamente la emisión en contrafase de altavoces opuestos, eliminando el filtrado en peine en salas grandes.
En auditorios y conciertos masivos, la decodificación estándar genera interferencias destructivas si la audiencia está dispersa; conmutar a In-Phase asegura una imagen espacial homogénea en toda la platea.
In-Phase ensancha ligeramente la fuente percibida respecto a Max-rE, pero evita que los oyentes alejados del centro escuchen cancelaciones de fase molestas.
spat5.hoa.decoder~, spat5.virtualspeakers~. Ver Apéndice F.
Latencia Causal vs. Lookahead Buffer
Machine Learning / StreamingUn sistema de audio causal solo depende de muestras pasadas y presentes ($y[t] = f(x[t], x[t-1], ...)$) permitiendo latencia cero de predicción. Un modelo no causal requiere un buffer de *lookahead* acumulando audio futuro ($t+N$), introduciendo retraso inevitable.
Para interacción instrumental reactiva en Max, solo son viables arquitecturas convolucionales causales o modelos recurrentes (RAVE, Silero VAD) donde la latencia sea estrictamente menor a 5-10 ms.
Un modelo con un RTFx excelente (ej. 50×) puede ser completamente inútil en un concierto si su arquitectura fue entrenada con convoluciones bidireccionales que exigen chunks fijos de 1 segundo.
nn~, fluid.bufcompose~. Ver Apéndice E.
RTFx (Real-Time Factor / Factor de Tiempo Real)
Machine Learning / IAMétrica de eficiencia computacional que relaciona la duración del fragmento de audio producido con el tiempo que el algoritmo o modelo neuronal tarda en computarlo: $\text{RTFx} = \frac{\text{Duración Audio}}{\text{Tiempo de Cómputo}}$.
Si $\text{RTFx} \le 1.0$, el modelo no puede operar en tiempo real y causa fallos de búfer inmediatos. Para un concierto seguro en vivo en Max, se exige un margen de $\text{RTFx} > 2.5\times$.
Un RTFx alto no implica latencia cero: un modelo puede tener $\text{RTFx} = 10.0$ pero requerir una ventana de lookahead de 2 segundos para inferir (haciéndolo no causal e inviable para interacción instrumental en directo).
nn~, fluid.bufnmf~, RAVE. Ver Apéndice E.
Higher Order Ambisonics (HOA) & ICST Ambisonics
Audio EspacialRepresentación matemática del campo acústico tridimensional basada en el desarrollo en serie de Fourier en coordenadas esféricas mediante armónicos esféricos $Y_n^m(\theta, \phi)$ de orden $N \ge 2$. Requiere $(N + 1)^2$ canales de transmisión independientes e independiza la codificación posicional del arreglo físico de altavoces de reproducción.
Permite expandir el sweet spot auditivo a audiencias completas en auditorios o cúpulas de proyección esférica, rotando el campo sonoro global en tiempo real mediante matrices ortogonales de Euler (Yaw, Pitch, Roll) sin distorsionar la geometría acústica.
Confundir Ambisonics de primer orden (4 canales FuMa/AmbiX: W, X, Y, Z) con HOA; el primer orden produce una localización difusa en recintos grandes, mientras que órdenes 3º ($16$ canales) o 5º ($36$ canales) entregan precisión de imagen casi holográfica.
hoa.2d.encoder~, hoa.3d.scope~, icst.ambipack, icst.ambimonitor. Ver Apéndice F.
Virtual Microphone Control (ViMiC) & Método de Fuentes Imagen
Acústica / EspacializaciónParadigma de síntesis de campo sonoro en salas cerradas que modela fuentes puntuales virtuales recibidas por una constelación de micrófonos virtuales con patrones de captación polares específicos (cardioide, omni, figura 8), calculando reflexiones tempranas exactas mediante el método de fuentes imagen en geometrías de paralelepípedo.
Otorga profundidad tridimensional perceptual instantánea (eje Z de distancia) a fuentes de síntesis o instrumentos acústicos microfoneados en seco, sin el enmascaramiento farragoso y pérdida de inteligibilidad característicos de las reverberaciones convolutivas estándar.
No es un paneador envolvente por intensidad ni un retardo Haas estático; computa atenuación por distancia cuadrática inversa, absorción atmosférica en alta frecuencia y directividad angular por cada cápsula microfónica virtual.
spat5.vimic~, spat5.early~, icst.spat. Ver Apéndice F.
PCA (Principal Component Analysis) en Mapeo Gestual
Inteligencia Artificial / GestosProcedimiento matemático de álgebra lineal que calcula la descomposición en valores singulares (SVD) de una matriz de covarianza para transformar un conjunto de variables de sensores correlacionadas en un nuevo sistema de coordenadas ortogonales (ejes principales o autovectores) no correlacionados, ordenados por varianza explicada.
Permite tomar capturas de movimiento complejas (guantes con 10 flexómetros y acelerómetros 9-DOF) y proyectar los gestos expresivos en sólo 2 o 3 faders ortogonales de control de síntesis, eliminando redundancias y haciendo que el instrumento responda con fluidez corporal intuitiva.
No es un clasificador de gestos categórico (como un modelo k-NN o SVM); no etiqueta gestos, sino que comprime el espacio dimensional continuo preservando la máxima información dinámica.
mnm.pca, fluid.pca~, mubu.pca. Ver Apéndice E y Módulo 2.2.
7. Ableton Live, Max for Live (M4L) y Live Object Model (LOM)
Live Object Model (LOM)
Arquitectura M4L / Host APIÁrbol jerárquico orientado a objetos que expone la totalidad del estado y las acciones del DAW (pistas, clips, escenas, dispositivos, faders y transporte) como nodos navegables mediante rutas canónicas, observables mediante listeners y mutables por llamadas a funciones en C++ y Python.
Permite construir secuenciadores algorítmicos generativos capaces de disparar clips en tiempo real, conmutar cadenas de mezcla y leer el BPM maestro para sincronizar eventos sin tocar el teclado ni el ratón.
No es un bus MIDI tradicional ni depende de mapeos CC fijos. Opera como una API directa de introspección sobre la memoria viva del proyecto de Ableton Live.
live.path, live.observer, live.object, LiveAPI en JavaScript. Ver Apéndice H.
Device Freezing (Congelamiento de Dispositivo .amxd)
Distribución / EmpaquetadoProceso de serialización atómica que compila e incrusta dentro del contenedor binario .amxd todas las dependencias externas requeridas por el parche: subparches, abstracciones de usuario, archivos JavaScript (.js), tablas JSON y muestras de audio en RAM.
Es la garantía indispensable para llevar un proyecto de estudio a una computadora de gira: evita el colapso por archivos faltantes, rutas relativas rotas o librerías que solo existían en la máquina de desarrollo original.
No congela el audio a disco como la función "Freeze Track" de los DAWs; lo que congela y sella es el código fuente y las dependencias del propio instrumento o efecto.
Menú contextual Freeze Device en Max for Live. Ver Apéndice H.
Modulación en Audio Thread (live.remote~)
DSP / Control HíbridoMecanismo que inyecta una señal de audio flotante continua de 64 bits directamente en un parámetro expuesto de Ableton Live a la frecuencia de muestreo del DAC ($f_s$), puenteando la cola de mensajes de control del hilo de usuario.
Permite modulación extrema por audiofrecuencia (LFOs a 50 Hz, envolventes percusivas hiper-rápidas) sin saturar la GUI ni degradar la pila de deshacer (Undo History) de Ableton Live.
Confundir modular un parámetro con live.remote~ frente a automatizarlo con set value vía live.object. El primero vive en el Audio Thread a costo cero de GUI; el segundo es un mensaje discreto que registra un punto en la línea de automatización.
live.remote~, live.dial, phasor~. Ver Apéndice H.