Ir al contenido
Nicolás Calderón
Volver

Neurofunk desde ecuaciones de onda: tres bajos sin osciladores

Cuerda no lineal, placa vibrante y función de onda en doble pozo, renderizadas desde las simulaciones

Hay un matemático iraní, Hamid Naderi Yeganeh, que pinta pájaros y peces sin pincel. Escribe una familia de ecuaciones paramétricas, las grafica, y aparece un ave. No dibuja el ave y luego busca la fórmula: la fórmula es el ave. Tengo un sueño parecido con el sonido. Quiero un track de neurofunk cuyas formas de onda no salgan de un oscilador, ni de un sample, ni de un wavetable dibujado, sino de resolver ecuaciones de onda. Que el bajo sea, literalmente, la solución de una ecuación diferencial.

Este post documenta los primeros tres experimentos en esa dirección. El criterio para elegirlos fue estricto: técnicas que se han hecho muy poco en lo digital, o que solo existen en su versión analógica. No tenía sentido reimplementar FM o Karplus-Strong. Los tres prototipos están escritos en NumPy, renderizan un WAV y un espectrograma, y viven en el repositorio del Quantum Foley Architect, el proyecto de síntesis con física que ya describí en dos posts anteriores.

Qué tiene de especial un bajo neurofunk

Antes de las ecuaciones, la fenomenología. Un bajo neuro tiene tres propiedades perceptivas. Se mueve: el timbre cambia dentro de cada nota, casi siempre por un LFO que abre y cierra un filtro. Gruñe: cuando el bajo “abre”, aparecen armónicos altos que no estaban, casi siempre por distorsión después del filtro. Y respira con el kick: el golpe del bombo y el movimiento del bajo están acoplados, casi siempre por sidechain.

Los tres “casi siempre” son módulos de un sintetizador: LFO, filtro, distorsión, compresor. La pregunta de este proyecto es si un sistema físico puede producir las tres propiedades sin ninguno de esos módulos, solo por cómo evoluciona su ecuación. La respuesta corta es que sí, y cada experimento cubre una de las tres.

Experimento 013: la forma de onda es la forma de una cuerda

En el año 2000, Max Mathews, Bill Verplank y Rob Shaw presentaron en la ICMC una técnica que llamaron síntesis escaneada. La idea es de una elegancia brutal. Se toma un sistema físico lento, una cuerda de masas y resortes que vibra a 1 o 10 Hz, tasa que ellos llamaban háptica porque se puede tocar con la mano. Se usa la forma de esa cuerda como wavetable. Y se lee ese wavetable a frecuencia de audio, a 55 Hz por ejemplo. La forma de onda que suena es la forma de la cuerda en ese instante. Como la cuerda se mueve, el timbre se mueve. Sin LFO: el “LFO” es la dinámica de la cuerda.

Mathews la tocaba con un guante háptico. Las únicas implementaciones públicas que existen son los opcodes scanu y scans de Csound, escritos por Paris Smaragdis ese mismo año, y un par de objetos de Max. En 26 años nadie la llevó a bass music.

Mi versión reemplaza la cuerda lineal de Mathews por una cuerda no lineal. La ecuación es la de Kirchhoff-Carrier con rigidez y dos amortiguamientos:

u_tt = c² (1 + α ∫ u_x² dx) u_xx  −  κ² u_xxxx  −  2σ₀ u_t  +  2σ₁ u_xxt

Cada término tiene un significado físico y un significado sonoro. El primero es la ecuación de onda clásica, c es la velocidad de propagación y fija la frecuencia fundamental de la cuerda, que aquí está en 1.4 Hz. El paréntesis es la no linealidad de Kirchhoff-Carrier: la tensión efectiva crece con el estiramiento total de la cuerda, la integral de u_x². Físicamente, una cuerda que vibra con mucha amplitud está más tensa que una en reposo, y por eso una cuerda de guitarra pulsada fuerte suena un poco más aguda al inicio y baja al decaer. Sonoramente, un martillazo fuerte acelera la oscilación de la cuerda, es decir, el “LFO” acelera solo después del kick.

El término de κ² es la rigidez a la flexión, la que distingue una cuerda de piano de un hilo ideal. Hace que las ondas cortas viajen más rápido que las largas: dispersión. Un martillazo, que es una forma localizada y por tanto llena de componentes cortas, se desparrama en un chirp descendente. Sonoramente: el bajo empieza brillante y se oscurece, sin que ningún filtro se cierre. Los dos amortiguamientos hacen lo esperado, σ₀ frena todo por igual y σ₁ frena más lo agudo, así que la cuerda vuelve con el tiempo a una forma casi sinusoidal.

Espectrograma del experimento 013 y tres instantes de la forma de la cuerda

La cuerda se integra por diferencias finitas a 2000 pasos por segundo, con 64 puntos. Un patrón 2-step a 174 bpm dispara martillazos con perfil de coseno alzado en la posición 0.23 de la cuerda. La posición del martillo importa: golpear en 0.23 no excita los armónicos que tienen un nodo ahí, igual que en un piano real. El gráfico inferior del espectrograma muestra la cuerda a 20, 200 y 600 milisegundos del golpe. Esas tres curvas son, sin ninguna transformación intermedia, tres formas de onda del bajo.

Experimento 013: la cuerda escaneada, 8 segundos a 174 bpm en A1. Sin LFO ni filtro.

Experimento 014: el growl es una placa de Chladni

En 1787 Ernst Chladni espolvoreó arena sobre placas metálicas y las hizo cantar con un arco de violín. La arena se acumuló en las líneas nodales y dibujó las figuras que llevan su nombre. Hans Jenny filmó lo mismo en 1967 y lo llamó cimática. Es la versión analógica pura de “el sonido es la forma de la placa”.

La versión digital rigurosa existe solo en la academia. Stefan Bilbao la desarrolla en Numerical Sound Synthesis (2009) con la ecuación de placa de von Kármán, y el proyecto NESS de Edimburgo la usó entre 2012 y 2016 para sintetizar platillos y gongs, con horas de cómputo por nota. Nadie la ha usado como bajo electrónico.

Lo que quiero explotar es el fenómeno que hace que un platillo “abra” cuando lo golpeas fuerte. A baja amplitud, un platillo es un sistema lineal: suena con sus modos propios, cada uno decae por su cuenta. A alta amplitud, la placa se estira, la tensión inducida por el estiramiento acopla los modos, y la energía que entró en los modos graves cae en cascada hacia los agudos. El tono sube y el espectro se llena. Eso es exactamente la definición de un growl neuro. Solo que aquí no hay distorsión: la no linealidad es geométrica.

Usé la aproximación de Berger, que promedia la tensión inducida sobre toda la placa en vez de resolver la función de tensión de Airy en cada paso. Es la misma idea de Kirchhoff-Carrier pero en dos dimensiones, y es barata:

u_tt = −κ² ∇⁴u  +  (γ² + α ⟨|∇u|²⟩) ∇²u  −  2σ₀ u_t  +  2σ₁ ∇²u_t  +  F(t) δ(x − x_f)

El término de κ² con el bilaplaciano es la rigidez de placa, y es lo que hace inarmónico el espectro. Los modos de una placa cuadrada simplemente apoyada tienen frecuencias que van como κ π² (m² + n²): el segundo modo no está en el doble del primero sino en 2.5 veces. Con κ bajo el sistema se acerca a una membrana afinada, con κ alto a un gong. El término de γ² es la tensión de membrana, y aquí está el truco de afinación: despejo γ para que el modo (1,1) lineal caiga exactamente en la raíz del acorde, 55 Hz. El paréntesis es Berger, la tensión crece con el estiramiento promedio ⟨|∇u|²⟩.

La excitación F es un seno puro en 55 Hz con envolvente de kick, aplicado en un punto de la placa fuera de sus ejes de simetría para excitar muchos modos. No tiene armónicos. Todo el contenido armónico del render lo fabrica la placa. La salida es el desplazamiento de otro punto, también fuera de simetría, como un micrófono de contacto pegado a un platillo.

Espectrograma del experimento 014 y curva de tensión efectiva sobre tensión lineal

El gráfico inferior es el número que importa: la tensión efectiva dividida por la lineal. Vale 1 en reposo y sube a 1.32 en el pico de cada golpe. El growl es ese número subiendo: cuando la tensión sube, los modos suben de frecuencia y el acoplamiento manda energía hacia los 700 Hz. Cuando decae, el sub queda limpio. La amplitud de la fuerza es el único control macro, y decide cuánto “abre”.

Experimento 014: la placa de Berger excitada por un seno puro en 55 Hz. Todo el armónico lo pone la placa.

Experimento 015: el wobble es tunelamiento cuántico

El tercero es el que un físico no puede evitar. Una partícula cuántica en un doble pozo de potencial tiene dos estados de energía más baja casi degenerados: el simétrico, con energía E₀, y el antisimétrico, con E₁. Si preparas la partícula localizada en el pozo izquierdo, que es la superposición de los dos, la diferencia de fase entre ellos crece con el tiempo y la partícula aparece en el pozo derecho después de un tiempo T = 2π / (E₁ − E₀). Luego vuelve. Es tunelamiento: la partícula atraviesa una barrera que clásicamente no podría superar, y lo hace con un periodo perfectamente definido. Ese periodo es un LFO. Un LFO que no existe como módulo: es la estructura del espectro del Hamiltoniano.

La ecuación es la de Schrödinger en unidades naturales, con un potencial cuártico:

i ψ_t = −½ ψ_xx + V(x) ψ ,      V(x) = a (x² − b²)²

Se resuelve con split-step de Fourier: medio paso de potencial en el espacio de posición, un paso de energía cinética en el espacio de momento vía FFT, medio paso de potencial. Es unitario, así que la norma se conserva sin trucos. Antes de propagar, el código diagonaliza el Hamiltoniano en la malla para obtener E₀ y E₁, calcula T, y escala el tiempo de simulación para que T sean dos beats a 174 bpm. La barrera del doble pozo es la perilla del tempo del wobble: barrera más alta, tunelamiento más lento.

La forma de onda del bajo es la función de onda escaneada a la raíz, igual que en la cuerda:

w(x, t) = |ψ|² − ⟨|ψ|²⟩  +  β Re( ψ e^{iE₀t} )

El primer término es la densidad de probabilidad, que se mueve de un pozo al otro. El segundo mete la fase interna de ψ, multiplicada por e^{iE₀t} para quitar la rotación trivial del estado fundamental y dejar solo las fases relativas entre estados. Es lo que en física se llama pasar a la representación de interacción, y en audio se traduce en que el sub no tiembla a 200 Hz.

Faltaban dos cosas para que fuera un instrumento: el kick y la disipación. Ambas tienen versión cuántica honesta. El kick es un impulso de momento: multiplicar ψ por e^{ik₀x} le da a la partícula un empujón de momento k₀, exactamente como una patada. Eso excita estados por encima del doblete y la forma de onda se llena de armónicos; el signo del impulso alterna para que el segundo golpe del compás empuje hacia el otro pozo. La disipación es un paso corto en tiempo imaginario. Si en la ecuación de Schrödinger reemplazas t por −iτ, la propagación deja de ser unitaria y amortigua cada autoestado en proporción a su energía: el estado enfría hacia el fundamental. Es la técnica estándar para encontrar estados base numéricamente, y aquí funciona como la envolvente que devuelve el timbre a su reposo. Una rotación de Wick parcial como release.

Espectrograma del experimento 015, mapa de la función de onda en el tiempo y valor esperado de x

El panel del medio muestra |ψ| en función de posición y tiempo: la mancha salta de un pozo al otro. El panel inferior es ⟨x⟩(t), el valor esperado de la posición, y es el wobble en persona: una oscilación de 0.69 segundos de periodo, perturbada en cada golpe por el impulso y recuperada por el enfriamiento. En el espectrograma se ve el precio: el impulso de momento es instantáneo y produce un click ancho en cada kick. Se puede repartir la fase en diez frames si molesta. A mí me suena a transiente.

Experimento 015: el paquete de onda tuneleando en el doble pozo. El click de cada kick es el impulso de momento.

Lo que tienen en común

Ninguno de los tres usa un LFO, un filtro, una distorsión ni un sidechain. El movimiento, el growl y el acople con el kick salen de la ecuación. Y en los tres el kick entra al sistema como lo que es físicamente: un martillazo con velocidad inicial en la cuerda, un pulso de fuerza en la placa, un impulso de momento en la partícula. El bus de kick del sistema principal ya existía y los tres se enganchan a él, igual que se enganchan al bus de raíz del acorde para quedar afinados.

La tabla de costos es honesta y desigual. La cuerda se integra en 3 segundos por 8 de audio y tiene un boceto en SuperCollider para tiempo real, con la cuerda viviendo en un buffer que una rutina actualiza mil veces por segundo. La placa cuesta 13 segundos por 6 de audio: 1024 celdas por muestra a 44.1 kHz no caben en sclang, y el camino a tiempo real es un UGen en C++ de unas 80 líneas. Schrödinger cuesta 45 segundos por 8 de audio, porque cada frame háptico requiere 117 pasos de split-step con dos FFT cada uno. Por ahora los dos últimos son instrumentos offline: se renderizan bancos de notas y se cargan como buffers en el Gabor Collider.

Hay algo que descubrí haciendo esto y que no esperaba. En los tres sistemas, la perilla que controla “cuánto se mueve” es la misma perilla que controla “cuánto gruñe”: la amplitud de la excitación. En un sintetizador convencional son dos controles independientes, la profundidad del LFO y el drive de la distorsión, y buena parte del trabajo de diseño de sonido consiste en correlacionarlos a mano con macros. En un sistema físico no lineal vienen correlacionados de fábrica, porque son el mismo fenómeno visto en dos escalas de tiempo. Eso es, creo, lo que hace que un bajo neuro bien hecho suene “vivo”: el productor está emulando a mano una no linealidad física. Aquí la no linealidad está, y no hay nada que emular.

Los tres experimentos están en experiments/013, 014 y 015 del repositorio, cada uno con su proto.py, su propuesta con las ecuaciones y las perillas que importan, y su render. El siguiente es obvio: el UGen en C++ para la placa, y un compás entero donde el kick gravitacional, la cuerda escaneada, la placa y el doble pozo suenen juntos. Ese compás sería el primer trozo de neurofunk cuya materia prima son cuatro ecuaciones diferenciales.


Comparte este post:

Post siguiente
Tres organismos, un ADN: la evolución del Quantum Foley Architect