
En la primera parte de este proyecto, el sistema era una orquesta. Un SynthDef monolítico donde el kick gravitacional, el collider granular y el pad de Yang-Mills vivían conectados por buses compartidos. Sonaba bien en papel. En la práctica, tocar una nota de bajo significaba que el pad cambiaba de carácter, el collider se desincronizaba y el kick perdía pegada.
El problema era arquitectónico. Cada instrumento necesitaba del sistema completo para funcionar. No podías aislar el bajo sin cargar 2000 líneas de código y seis buses de audio. Como encender un acelerador de partículas para medir la masa de un solo electrón.
La solución: desacoplar. Tres instrumentos standalone, cada uno en su propio archivo .scd, con su propia cadena de señal, su propio MIDI, sus propios CCs. Comparten ADN: la misma granulación cuántica (PIG), el mismo temperamento algebraico (PTT), y un concepto que emergió durante el proceso: el reloj acoplado.
Transformer Bass v7: “Living Metal”
654 líneas. Siete versiones. El instrumento que más me enseñó sobre por qué la síntesis convencional suena muerta.
Tres motores suenan simultáneamente: FM con tres operadores, procesamiento espectral (“Heisenberg Metal”) y textura granular (“Crisp”). Lo que los conecta no es un bus de audio. Es un reloj.
La línea más importante del instrumento:
coupledSpeed = morphSpeed * (1 + (uncertainty * 0.3));
morphSpeed es la velocidad base del organismo: CC1, rango de 0.5 a 8 Hz. uncertainty es el caos global: CC16. Cuando subes uncertainty, el reloj se acelera hasta un 30%. Y como todos los procesos internos derivan de coupledSpeed, todo se excita simultáneamente: los LFOs de modulación FM, la velocidad de congelamiento espectral, la densidad de la capa Crisp, la envolvente del filtro formántico.
El motor FM usa tres operadores con distorsión fold2:
fmIdx = (morphLFO.linlin(-1, 1, 1, 18) + (fbProcessed * 25)) * onsetFMBurst;
modOsc = SinOsc.ar(baseFreq * morphStep.linlin(-1, 1, 1.5, 5.0));
carrier = SinOsc.ar(baseFreq + (modOsc * baseFreq * fmIdx));
carrier = carrier + (
Pulse.ar(baseFreq * 0.999, morphStep.linlin(-1, 1, 0.08, 0.92)) * 0.3
);
El índice FM varía entre 1 y 18 según el morphLFO, más retroalimentación procesada multiplicada por 25. En el onset, un burst eleva el índice 1.8x durante los primeros 8 ms. Lo que sale no suena a FM. Suena a metal vivo que se deforma.
Encima, el Heisenberg Metal Engine toma la señal filtrada, la pasa por FFT de 2048 muestras, y aplica cuatro operaciones espectrales: PV_RandComb elimina bins aleatorios según uncertainty, PV_BinShift desliza el espectro con velocidad derivada del reloj acoplado, PV_MagSmear difumina magnitudes, y PV_MagFreeze congela el espectro cuando la energía FM cae. Después pasa por DynKlank con seis resonadores cuyos modos derivan gobernados por coupledSpeed.
El resultado: un bajo que muta. Un organismo que respira, se excita, se calma y muere distinto en cada nota. Las frecuencias altas del carácter mueren primero (envChar), mientras el sub persiste con un ghostRes de 1.0 segundos (envSub). Como una cuerda de piano: el ataque brillante desaparece, pero el fundamental sigue resonando.
Toad Scratch v2: “Corrupted Canopy”
Si el Transformer Bass es metal vivo, el Toad Scratch es selva corrompida.
El buffer semilla: 28 minutos de La Piñuela, un parche de selva húmeda colombiana. Ranas, insectos, agua, viento entre hojas de palma. El motor PIG lee ese buffer con dos punteros simultáneos, el “Real” y el “Imaginario”. La interferencia entre ambos la controla pigPhase:
pigOnset = pigPhase + (onsetEnv * 0.7);
pigReal = grainReal * cos(pigOnset);
pigImag = grainImag * sin(pigOnset);
interference = pigReal + pigImag + (fbProcessed * 0.5);
A pigPhase = 0, interferencia constructiva: la selva suena orgánica y reconocible. A pigPhase = pi, interferencia destructiva: el sonido se vuelve metálico, granular, irreconocible. El puntero imaginario tiene un ring mod inarmónico con ratio áureo (1.618) que se intensifica con la fase cuántica.
La Corruption Engine aplica decimación, micro-freeze y bitcrush sobre la señal interferida, pero con un bloom delay de 100 ms. La corrupción no es instantánea. Espera. El ataque es limpio, orgánico, y luego la podredumbre se infiltra. En v1, el bitcrush tenía un bug: numerador y denominador usaban dos LFNoise0 separados, lo que producía resultados erráticos. En v2, una sola variable res controla ambos.
El scratchLFO cumple la misma función que coupledSpeed en el TB: un reloj maestro del que derivan pitchDrift, posición en buffer, velocidad del puntero imaginario, tasa de decimación, frecuencia del formante, densidad Crisp y posición de paneo estéreo.
Un HPF estricto a 250 Hz asegura que el Toad Scratch nunca pise al Transformer Bass. Cada organismo tiene su territorio frecuencial.
Minca Quantum Desmaterializer: el espacio entre los otros dos
El Minca no es un instrumento melódico. Es un procesador ambiental que toma una grabación de chicharras de la Sierra Nevada de Santa Marta (Freesound #397824, AdrienPola, 127.47 segundos estéreo) y la desmaterializa con un solo macro-parámetro: quantum.
A quantum = 0, las chicharras de Minca tal cual fueron grabadas. A quantum = 1, el audio se ha fragmentado en granos cuánticos con ventanas LFGauss angostas, el puntero imaginario está desplazado un 30% del buffer, y micro-freezes con tasas independientes por canal congelan fragmentos de selva en el aire.
Pero incluso a desmaterialización completa, el rawLevel nunca baja del 25%. La selva siempre está presente. Decisión de diseño, no limitación técnica. El material crudo ancla al oyente. Sin ese 25%, el procesamiento cuántico se convierte en ruido abstracto. Con él, siempre hay un hilo de realidad que conecta lo orgánico con lo imposible.
El Minca usa MIDI canal 2 y su reloj orgánico (driftSpeed = drift * 2.0 + 0.15) gobierna el offset cuántico, las envolventes granulares y el barrido estéreo.
Organismos con reloj acoplado
Los tres instrumentos comparten una idea estructural que no planeé. Emergió.
En un sintetizador convencional, LFO 1 modula el cutoff, LFO 2 modula el pitch, LFO 3 modula el PWM, y cada uno corre a su propia velocidad. El resultado suena mecánico porque los procesos no están relacionados entre sí. En un organismo real, la respiración, el pulso y el movimiento están acoplados. Cuando un animal se excita, todo se acelera. Cuando se calma, todo se desacelera. No hay LFOs independientes.
Los tres instrumentos de este proyecto funcionan así. Un solo parámetro expresivo (uncertainty en el TB, scratchDepth en el Toad, drift en el Minca) modifica la frecuencia cardíaca del organismo. Todo lo que depende de ese reloj reacciona simultáneamente, de forma coherente. No estás moviendo una variable aislada. Estás cambiando el metabolismo de una criatura viva.
PTT: afinación por temperamento algebraico
Los tres instrumentos comparten la misma tabla de 128 notas con A4 = 432.081216 Hz. No es 432 Hz new age. Es un temperamento donde la tercera mayor es exactamente 2^(1/3), la quinta justa es 3/2 y la segunda mayor es 9/8. Intervalos como relaciones algebraicas exactas, no aproximaciones logarítmicas del 12-TET.
~pttRatios = [
1, 2 ** (5/3) / 3, 9/8, 3 * (2 ** (2/3)) / 4,
2 ** (1/3), 4/3, 2 ** (1/2), 3/2,
2 ** (2/3), 2 ** (7/3) / 3, 9 * (2 ** (2/3)) / 8, 3 * (2 ** (1/3)) / 2
];
La diferencia es sutil en notas aisladas. En acordes y relaciones armónicas entre los tres instrumentos, la pureza genera batimientos predecibles en vez de los batimientos caóticos del temperamento igual. En la práctica, el Toad Scratch afinado a armónicos 3-7 PTT del Transformer Bass produce resonancias que suenan limpias, sin la rugosidad del 12-TET.
Tocar esto con un controlador
Flujo actual: SuperCollider para los tres instrumentos (renderizados como WAV), Reaper como DAW, Vital como VST3 para melodía adicional. F Frigio, 85 BPM.
Pero lo que más me interesa es el momento de tocar. Nueve CCs en el TB. Siete en el Toad Scratch. Seis en el Minca. Subir CC16 (uncertainty) en el TB mientras bajas CC17 (scratchDepth) en el Toad produce una transición donde el bajo se descompone en metal granular mientras la selva se limpia y se vuelve orgánica. Vasos comunicantes sonoros.
No hay presets. No hay automation lanes predibujadas. Son organismos que responden en tiempo real y suenan diferente cada vez porque sus relojes internos acoplan procesos estocásticos. La misma nota, el mismo CC, nunca produce exactamente el mismo resultado.
Eso es lo que buscaba desde el principio. No un sintetizador. Un ecosistema.