LOS SISTEMAS DE CONVOLUCIÓN.
El marketing alaba los sistemas basados en la convolución y sus colecciones de respuestas impulsivas que prometen clonar con gran detalle entornos y equipos reales. ¿Quieres saber cómo funcionan?
Vivimos en un mundo convolucionado
La convolución, más allá de su representación matemática, corresponde a un tipo de acción que se presenta a menudo en el mundo real. Existen tanto la convolución continua (para señales continuas –‘analógicas’ si lo entendéis así mejor-) como discreta (para señales ‘digitales’). Nosotros nos centraremos en el caso discreto, porque es el que es más fácil de representar y entender y porque en la práctica los sistemas audio basados en convolución que se han popularizado son de tipo ‘digital’.
En nuestro mundo audio/música abunda la convolución. Un ejemplo fácil de asimilar por todos es el del eco en una montaña o un frontón. El sonido que yo produzco se devuelve y lo oigo de nuevo retrasado.
Si digo una palabra aislada y corta como ‘hola’, la repetición se oye separadamente al original gracias al largo tiempo que lleva el viaje de ida y vuelta del sonido. Mucho mayor que la duración del propio evento sonoro. Pero si lo que hago es leer un discurso empezamos a tener un solapamiento que hace difícil entender qué se está diciendo. Esa amalgama de repeticiones es la esencia de la convolución.
La respuesta impulsiva
Ni las paredes ni las montañas están solas. Si hay más de una, habrá rebotes en cada una de las paredes, habrá sonido rebotando entre una pared y otra y por tanto generando sucesivas réplicas, etc. En una situación real el número, distribución y nivel de esas repeticiones puede seguir un patrón bastante complejo. Basta una pared más, un pequeño cambio en la posición de la fuente o del oyente/micrófono y el patrón resultante de las repeticiones cambia enormemente.
Pero para un entorno determinado y una determinada posición de escucha, el patrón de esas repeticiones es fijo, puede caracterizarse. Si represento o registro de alguna manera ese patrón de repeticiones tengo la ‘huella dactilar’ de cada combinación de entorno y punto de escucha. Basta que someta cualquier señal a ese mismo patrón de repeticiones para que aparente estar siendo reproducida en ese espacio.
Un caso sencillo: eco único
El caso de un eco único es demasiado simple, pero nos permite avanzar paso a paso. La señal se replica retrasada y se superpone a sí misma
Aunque hayamos presentado separadas y coloreado diferente la señal original y su réplica para que se aprecien mejor, realmente lo que acabamos obteniendo y oyendo es la suma de ambas, en la que ya no es nada sencillo escindirlas.
Para avanzar en entender cómo funciona un sistema de convolución, pensad que la repetición de la palabra o frase puede también entenderse como la repetición (con un mismo patrón de eco) de cada una de las letras sucesivas. La ‘E’ está sometida a un patrón de eco que es el mismo que recibe la ‘n’, etc.
Podemos a la postre tratar ‘instantáneamente’ el eco. Es equivalente pensar que la señal se replica, o que cada instante de la señal se replica más tarde y se suma con la señal original.
Lo que nos lleva inmediatamente a pensar en implementaciones discretas (digitalizadas), que, con tal de que garanticen una suficiente velocidad de muestreo, cumpliendo el criterio de Nyquist, son una representación correcta de las señales continuas originales. Pero antes de hablar de la implementación, avancemos un paso más allá del mero retardo simple.
Reverberación y convolución
Todas las características de una determinada reverberación quedan perfectamente descritas en su patrón de rebotes. Pero la amalgama de reflexiones, muchas y muy próximas, es tan densa que no podemos discernirlas y se produce esa cola de ‘emborronamiento’ característica. Llega a configurar la señal final de una forma tal que puede ser difícil apreciar en ella la señal original, desdibujada ante la avalancha de superposiciones. Para poder obtener la salida en un instante tengo que sumar las contribuciones que en ese instante realizan todas y cada una de las réplicas.
Disponiendo de ese patrón de rebotes, podemos ‘recrear’ cualquier reverberación. Y aunque la relación entre la salida final y la señal original puede llegar a ser muy compleja, tanto como la propia colección de rebotes, lo relevante aquí es que el proceso por el que se llega a construir sí es ‘sencillo’: sumar una colección de réplicas de la señal original. Eso es precisamente lo que hace un sistema de convolución: combinar muchas repeticiones.
Convolución: rebotes en acción
Un equipo o software que haga convolución puede llegar a emular con enorme detalle entornos y sistemas reales si cuenta con la ‘huella’ adecuada que describe la distribución de los rebotes.
Volvamos a la cuestión de la implementación, porque nos ayudará a entender cómo funciona. Un sistema de convolución, ya sea hard/plugin o lo que queráis, no es más que una máquina de producir rebotes. Eso sí, una máquina en la que podemos ser nosotros quienes definamos el patrón de los rebotes. La definición del retardo y nivel de cada uno de esos rebotes será la que determine la actuación final de sistema: ya sea un eco más o menos complejo, una reverberación, o (tal como veremos) un filtrado o ecualización, etc.
Puede concebirse conceptualmente como un ‘multitap delay’, pero a lo bestia. Un retardo de duración suficiente para poder recrear el rebote más tardío de todos, y con suficientes ‘taps’ o ramas para poder generar tantos rebotes como sea necesario.
Con esa idea en la cabeza, avancemos un poco más en cuanto a arquitectura de lo que hay realmente. Si tanto la señal como el patrón de repeticiones están bien muestreados, la realización digital equivale plenamente a lo que sucede en el caso continuo. Como siempre la velocidad de muestreo debe al menos duplicar la anchura de banda.
La señal se puede digitalizar en un A/D y llevar las muestras a una memoria FIFO (first in, first out) que hace que cada nueva muestra que llega ‘empuje’ a las demás (perdiéndose por el otro extremo la más antigua), de forma que en todo momento tengamos el fragmento más reciente de la señal almacenado en esa memoria, con una duración igual al patrón de rebotes deseado. Si en una segunda memoria (‘fija’ en cuanto a su contenido) tenemos el patrón de rebotes deseado, podemos multiplicar una por una las celdas de ambas memorias y sumar el resultado de todas esas multiplicaciones. Como resultado tenemos la posibilidad de calcular muestra a muestra la combinación de todos esos rebotes que podemos llevar a un D/A para obtener la señal de salida.
Aunque la idea de esa arquitectura nos es útil para comprender cómo actúa, la implementación es, las más de las veces, en forma de programa. Pensad que montar tantísimos multiplicadores en hardware implica construir un dinosaurio. En vez de una memoria FIFO se usa una memoria convencional y se simula el comportamiento FIFO con punteros, y la sucesión de multiplicaciones y sumas también se realiza por programa, en algún procesador, usando reiteradamente un único multiplicador.
Una única arquitectura puede variar su comportamiento según la forma de la respuesta impulsiva. El mismo sistema o software de convolución podrá servirnos para realizar reverberación, filtrado o ecualización arbitrariamente complejo, imitar la respuesta de otros equipos, etc. Basta para ello cargar en la memoria el patrón de rebotes o ‘forma’ necesaria. En definitiva, siempre un mismo soft, pero acompañado de una amplia colección de ficheros con las ‘formas’ necesarias y entre las que pueda escoger cuál usar en cada caso.
Convolución: más allá de los rebotes individuales
Hay en lo que he ilustrado hasta ahora una pequeña simplificación (que ahora deshacemos): para que se entendiera mejor, he mostrado siempre patrones en los que podemos discernir rebotes individuales y cada uno de ellos es un perfecto clon de la señal original, salvo por su nivel o amplitud.
Volviendo al ejemplo de los ecos y reverberaciones, la absorción de las paredes y del aire y otras diversas cuestiones pueden hacer que las repeticiones sean cada vez más opacas, o al contrario, que pierdan graves. En términos más generales, las repeticiones pueden ser versiones ‘filtradas’ de la señal original. Pero (como trataremos luego) filtrar es algo que también puede realizarse por convolución. Lo ilustro (no lo demuestro) con un ejemplo.
Pensad que nuestra señal fuera una cuadrada, y que como ‘forma’ para el patrón pusiéramos no una colección de rebotes individuales sino una curva de tipo caída exponencial (continua o discreta nos da lo mismo, ya hemos comentado la equivalencia de ambas soluciones si la frecuencia de muestreo es suficiente).
Aquí tenéis varios instantes de lo que sucedería. Para simplificar pensad en que fuera una cuadrada unipolar (no centrada en cero). A medida que la parte ‘activa’ del pulso cuadrado comienza a entrar en la memoria, empezamos a observar una salida que va creciendo progresivamente. Ese incremento gradual suaviza la transición, realizando por tanto un filtrado (en este caso de tipo paso bajo). De forma parecida la ‘salida’ del pulso cuadrado da lugar a una desaparición progresiva. El resultado es ‘redondeado’ o ‘suavizado’, con pérdida de altas frecuencias, una versión filtrada paso bajo de la señal cuadrada de origen.
Frente a los casos mostrados hasta ahora, con rebotes individuales, este ejemplo lo es del caso en el que tenemos una especie de ‘dispersión’ de la señal (definida aquí con esa forma exponencial). Y ‘dispersar’ señales es lo que hacen los filtros.
Convolución y filtrado
No sólo el caso que hemos ilustrado, cualquier filtro puede ‘pensarse’ en términos de convolución. El truco está, como en el ejemplo anterior, en que el patrón de rebotes ya no presenta ecos individuales perfectos (los ‘rebotes’ aislados que hemos venido mencionando), sino una forma más continua, como esa exponencial u otras cualesquiera. Un patrón que ya no es de ‘rebotes’ individuales sino de una ‘dispersión’ más continua.
¿Recordáis cuando pensábamos en los efectos de la caja de resonancia de un violín o guitarra? Hay en su interior una acción que recuerda a la reverberación. Las distancias son tan cortas y los rebotes tantos y tan cercanos que no podemos discernirlos. También podríamos decir lo mismo sobre un altavoz o sobre un micrófono cuyo cuerpo rodea al transductor. El resultado es más el de una ‘dispersión’. Ya hemos hablado en los artículos de síntesis de cómo se al sonar dentro de esa caja, se impone un patrón de resonancias característico (frecuencias realzadas / rebajadas, desplazamientos de fase), resultado precisamente de la combinación de la señal original y los rebotes en las paredes del cuerpo del instrumento.
Cada instrumento, cada altavoz, micrófono, o previo, cada filtro, etc. implica una determinada ‘forma’ con la que dispersa en el tiempo el sonido original. Y a causa de esa dispersión (revisad artículos anteriores) hay cambio de nivel y/o fase de unas componentes frecuenciales frente a otras, esto es, una acción de filtrado. En definitiva, los filtros son sistemas que podemos caracterizar y ‘reconstruir’ por la vía de la convolución. No sólo podemos definirlos a través de su acción en frecuencia. También mediante una ‘forma’ de dispersión, esto es, en términos de convolución. Y es que realmente hablar de convolución y de filtrado es una misma cosa. No sólo reverberaciones,también se puede emular por un filtro o un ecualizador.
Cuando describimos un filtro solemos hacerlo centrándonos en su respuesta en frecuencia, en cómo afecta a cada posible frecuencia. Que si realza esta banda, que si rechaza esta otra, etc. Cuando hablamos de convolución nos centramos en una descripción más de tipo temporal: qué ecos o réplicas deseamos superponer a una señal. Que ‘forma’ tiene el emborronamiento, la dispersión. Pero son dos caras de una misma realidad. Entendemos con mayor facilidad los ecos de la montaña (tan distantes entre sí) como un patrón de repeticiones espaciadas en el tiempo. Entendemos con mayor facilidad la actuación de un filtro como subir o bajar tales o cuales frecuencias. Pero sería factible describir el eco de la montaña como un filtro (con una respuesta en frecuencia complicada) y sería factible describir un ecualizador en términos de un patrón de rebotes o una forma de emborronamiento que genere ese preciso realce de unas u otras frecuencias.
Si ataco la entrada de un filtro con un impulso (una señal infinitamente corta) y registro lo que se produce a la salida, tengo la ‘respuesta al impulso’, su forma de dispersión. Y esa forma es una huella dactilar del filtro y puedo usarla para recrear el efecto del filtro mediante convolución. Habría que acudir al detalle matemático para demostrarlo, pero creed que hay una relación directa entre cada posible acción de un filtro y su correspondiente respuesta impulsiva.
Obtener la respuesta impulsiva
Volvamos al caso de las montañas o de una sala. Hay formas mucho más precisas de hacerlo, pero si doy una palmada y registro en qué momentos y con qué niveles se producen el sonido original y las sucesivas repeticiones en una sala, tengo esa caracterización realizada. Lo que acabamos de decir es lo que en términos de ingeniería se llama ‘respuesta impulsiva’: qué es lo que sucede en ese sistema cuando la excitación o señal con la que lo ataco es un impulso, un chasquido brevísimo. En lugar de la palmada hay quien prefiere explotar un globo porque se parece más a un impulso ideal.
Nada desconocido para los luthiers, que golpean de forma seca las tablas que formarán el instrumento a fin de localizar su ‘sonido’ y poderlo corregir si es necesario limando y rebajando la madera aquí o allá o bien disponiendo barras u otros elementos adheridos a las tablas que modifiquen sus resonancias naturales.
Es también algo que acostumbro a hacer al entrar a un aula o sala nueva. En silencio doy una palmada y se puede perfectamente ‘oír’ cómo va a colorear el sonido, qué frecuencias se enfatizan, etc. Se puede escuchar cómo cambiará el sonido según dónde ubiques la fuente dando palmadas en diferentes posiciones y localizar frecuencias y puntos críticos propensos a exponerlas.
Para obtener la respuesta impulsiva de un filtro se actuaría de forma parecida, sólo que ahora son la entrada y la salida del filtro los puntos que tomamos como excitación y observación.
Si fuera capaz de generar un sonido infinitamente corto esa medición sería una caracterización perfecta de cómo actúa ese entorno o sistema. Si lo que queremos estudiar es un sistema digital, la cosa está fácil: podemos atacarlo con una señal que sea silencio perfecto salvo en una única muestra. Ya tenemos el impulso ideal (más corto no lo hay en digital).
Si vamos a sistemas analógicos, o a los rebotes en los espacios naturales, intentar aplicar la medición con el impulso ultracorto para obtener la respuesta impulsiva y usarla en un sistema de tipo convolución tiene algunas pegas. Un impulso ultracorto tiene tan poca energía, que, salvo que sea de un nivel descomunal -como una explosión con lo que saturaría y haría inútil cualquier intento de medida- quedaría oculto entre el ruido de fondo y no serviría para medir nada útil. Como un impulso infinitamente corto es en definitiva una entelequia matemática, y un impulso de gran nivel saturaría cualquier sistema, hay otras técnicas que sí pueden emplearse para obtener la respuesta impulsiva.
Un impulso de duración infinitesimal corresponde a un espectro plano, es decir, energía igual en todas las frecuencias. Tiene su gracia que sea a esos efectos tan parecido a un ruido blanco, si no fuera porque el ruido blanco persiste y el impulso dura un infinitésimo.
Gracias a la dualidad entre la representación temporal y la espectral, la respuesta impulsiva (que es una caracterización temporal) puede obtenerse a través de una señal de tipo barrido en frecuencia que tiene también ese carácter ‘blanco’ de visitar todas y cada una de las zonas del espectro. Algo así como ir probando cómo responde el sistema bajo estudio a cada una de las frecuencias, con lo que tenemos la posibilidad de establecer su ‘respuesta en frecuencia’. A partir de ella la transformada de Fourier (o la FFT inversa en la práctica) nos puede devolver la respuesta impulsiva. Cuanto más detallada sea la prueba (cuantas más frecuencias visite) más detallada será la respuesta impulsiva obtenida.
No voy a entrar en los detalles, no estamos en un curso de ingeniería. Pero toda respuesta impulsiva equivale a un filtrado (una respuesta en frecuencia) y viceversa. Cualquier sistema lineal e invariante (y lo son los filtros, ecualizadores, ecos, reverberaciones, etc. cuando no son variables en el tiempo) puede implementarse en forma de convolución y existen formas de obtener su respuesta impulsiva. De hecho algunos productos comerciales de convolución cuentan con rutinas para generar señales de prueba, registrar las respuestas y calcular automáticamente la respuesta impulsiva. Generalmente usan un barrido de tono.
El camino está trazado
La convolución no es magia, es una técnica conocida hace mucho y plenamente madura. La realización digital de
la convolución (con una frecuencia de muestreo y precisión en bits suficiente)
permite emular con tanta precisión como se desee un sistema que sea lineal e invariante, categoría en la que se encuentran los
ecualizadores y filtros fijos (que actúan sin mover su frecuencia, Q u otros parámetros),
y todo tipo de ecos y reverberaciones nuevamente fijos (no sometidos a modulación). Por la misma razón, puede modelar
también la respuesta en frecuencia (en cuanto a amplitud y fase) de cualquier sistema ya
sea un micrófono, un previo, un canal, un altavoz, etc.Con algo de imaginación se le pueden dar otros usos (incluso en síntesis).
Aspectos Prácticos de la Convolución
Ya sea en hardware como el DRE S777 de Sony o en plugin como Altiverb, abundan hoy los sistemas basados en convolución. Con precios comerciales que suelen andar por las decenas o cientos de euros, pero que alcanzan también los miles, no faltan versiones freeware como HybridReverb2.
Tras haber digerido la presentación teórica, vemos los límites de lo que sí y no puede emularse por convolución, consideraciones sobre el coste computacional y la latencia, productos disponibles, o la obtención de respuestas impulsivas (incluyendo webs de las que descargar algunas).
Convolución = ‘sampler de sistemas’ pero sólo lineales
“Consiga sonar como si estuviera en el cañón del Colorado o en el teatro de ópera de Milán”. “No importa qué mesa use conseguirá el sonido del previo marca X modelo Y”. “Convierta usted su micro en cualquiera de estos otros 20 modelos de alta gama”… La publicidad recalca que un sistema de convolución puede adquirir la personalidad de muchos otros sistemas. ¿Es la convolución el clonador universal, el todo-en-uno capaz de imitar cualquier espacio o equipo?
Tal como veíamos el patrón de rebotes/dispersión de un entorno o sistema (lo que llamábamos respuesta impulsiva) actúa como su ‘huella dactilar’ o casi sería mejor decir como su ‘DNA’. Puede usarse dispersar la señal de forma parecida a como lo hace el entorno o sistema real y con ello emula su comportamiento.
No es extraño por ello que se hable a veces de un ‘sampler de sistemas y entornos’, por analogía a los tradicionales samplers que permiten registrar sonidos. Y sí, ciertamente la convolución es una estrategia universal, sencilla y fiable para emular entornos acústicos y equipos audio diversos, pero sólo en lo referente a su comportamiento lineal.
Excelente para recrear con inusitado detalle los ambientes debidos a los ecos, reflexiones y reverberación que suceden en muchos espacios reales. Pero en cuanto a la emulación de equipos tipo micrófonos, previos, amplificadores, etc. aunque la convolución conseguirá imitar la coloración de tipo ‘filtrado’ que estos equipos imponen, deja fuera completamente las más que posibles saturaciones internas en donde se encierra una buena parte de la personalidad de estos equipos.
El paso por una cinta o equipo analógico (que a veces se aplica en grabaciones digitales para recuperar el calor analógico) no sólo imparte unas determinadas restricciones de ancho de banda, sino que tiene su sentido principalmente por la coloración que introduce como resultado de la saturación, que es inaccesible totalmente a ser imitada en forma de convolución.
Podremos imitar magníficamente las desviaciones de fase que introduce un ecualizador, o el paso por un previo analógico en cuanto a su singular respuesta en frecuencia, pero un sistema de convolución no tiene capacidad para recrear la pequeña distorsión que pueda aparecer en esosmismos equipos. No digamos ya en el caso de querer imitar un amplificador de guitarra, en el que la distorsión no es pequeña y es esencialísima parte de su acción. Imitar sólo la coloración lineal que imparte el conjunto formado por previo, etapa, altavoz y caja no conseguirá recrear con precisión el sonido distorsionado original.
Emulación de micros
Las no linealidades, a veces pequeñas y despreciables y otras veces no tanto, están en todos los sitios. Pensad en un micro. Da igual dinámico con su bobina o de tipo condensador. En el extremo de su excursión tanto la bobina como la placa del condensador vienen forzados, no están tan dispuestos a moverse con la misma comodidad que cuando están enfrentados a señal más pequeña. En definitiva distorsionan. Pretender que un sistema de convolución pueda recrear el sonido de un micro o de un previo ‘forzado’ a saturar, no tiene sentido. Sólo imitará la respuesta en frecuencia, lo que no está mal en sí, pero no es el todo. Imitación por convolución sí y magnífica, pero estrictamente circunscrita al comportamiento lineal.
Para obtener esa emulación lineal de un determinado micro habrá que hacer dos cosas: deshacer el efecto del micro que realmente hemos usado al grabar(para ‘neutralizarlo’, aplanando su respuesta), e imponer el efecto del micro deseado. Ambas cosas son factibles por convolución. Lo de neutralizar un micro correspondería a compensar sus desviaciones respecto a una respuesta plana, es decir, imponer la inversa a su respuesta en frecuencia (que no deja de ser otra respuesta en frecuencia para la que existe una respuesta impulsiva asociada). Pero será siempre la emulación del comportamiento lineal.
Fijaos
por ejemplo en Antares MicMod EFX. Es un plug-in de ‘reemplazo’ de micrófonos: indicas qué micro has usado en la grabación y como cuál otro deseas que suene y dejas que haga su magia. Pero veis que cuenta con una
simulación de válvula como forma de impartir una cierta saturación añadida.
No está modelada realmente a partir del comportamiento no lineal de cada micrófono. Es un añadido para embellecer el sonido final, sin relación con los fenómenos no lineales en cada uno de los micros. Intenta aportar algo de esa parte que está ausente en una solución de convolución pura, pero sin realizar un modelado no lineal, siempre terriblemente difícil.
Ojo con las reverbs no naturales
Con las reverbs en espacios naturales no suele ser el caso que haya un efecto destacado de no linealidad. Por eso mismo la convolución es tan exitosa para este uso. El modelo lineal que subyace en la idea de la convolución es adecuado para la reverberación natural.
Pero en este concepto de ‘reverb natural’ no entrarían por ejemplo las unidades de muelles. Alguien comentaba tras el primer artículo que nunca estaba a gusto con las versiones digitales de las reverb de muelles, y que para las específicas ocasiones en las que se necesita ese tipo de reverb nada como la ‘electromecánica’ de una unidad de muelles de verdad.
Y tiene toda la razón. Es un ejemplo de un sistema que lleva de forma inherente no linealidades importantes, y que ilustra como a veces algo tan simple como un muelle puede resistirse a la enorme potencia de cálculo que tenemos en el hardware digital y los ordenadores de hoy.
Es evidente (probadlo si aún tenéis por casa algún somier de muelles y no de lamas) que un muelle, al igual que una cuerda libre, resuena a muy distintas frecuencias según esté más o menos tenso. Cambia mucho su flexibilidad y su patrón de resonancias en función de la tensión o estiramiento a que esté sometido. Cuando está en reposo tiene menor tensión y más dispuesto a vibrar en simpatía con lo que le llegue, pero cuando entra en movimiento está ‘estirándose’ y por tanto al mismo tiempo haciéndose más ‘duro’, menos abierto a vibrar. Pero la propia presencia de señal modifica su tensión y por tanto su respuesta. La definición misma de un sistema no lineal: el sistema cambia su comportamiento en función de cómo sea la señal que recibe.
Fijaos de hecho que en cualquier unidad reverb por muelles hay un control de tipo ‘drive’ que permite forzar el uso de la unidad en unos niveles de señal en los que sea claramente no lineal (
ejemplo ). El uso que se hace de ese tipo de reverb es proclive a forzar la distorsión y aprovecharla creativamente, demasiado para una reverb convolutiva pura.
En definitiva, la convolución puede ser una herramienta excelente para recrear el carácter de sistemas lineales pero no pidáis peras al olmo. Cuando veáis que a una emulación convolutiva de un micro, de una reverb de muelles, de un previo, de un EQ… le falta carácter respecto a aquello que queríamos imitar:añadid algo de saturación o distorsión suave.
Imitación sí, pero foto fija
Aún hay más. Una respuesta impulsiva sólo representa una configuración fija del sistema estudiado. Pensando por ejemplo en imitar la respuesta de un micrófono, una respuesta impulsiva corresponde a una distancia y ángulo determinados entre la fuente y el micrófono. Sin embargo un cantante o instrumentista experimentado aprovecha su movimiento en relación al micro para variar el sonido resultante. Esas ‘variaciones’ no son posibles en un sistema basado en convolución, en el que por definición se aplica una respuesta impulsiva fija.
Pensad en algo tan sencillo conceptualmente como un filtro de reducción de ruido o si os gusta más como ejemplo un auto-wha. Ambos modifican su frecuencia de corte, más abierta para señales fuertes, más cerrada para señales débiles. Eso es nuevamente inasequible a ser imitado por convolución. Son sistemas que la convolución no puede alcanzar a imitar, porque son variantes en el tiempo. La respuesta impulsiva que puedo tener registrada corresponderá a una determinada frecuencia de corte. Alguno diréis: OK, puedo registrar la respuesta impulsiva para el filtro abierto y para el filtro cerrado y promediar ambas. Lo siento, no funciona. Mezclar al 50% las respuestas impulsivas lo que hace es combinar al 50% las respuestas en frecuencia y eso no lleva el punto de corte a la mitad, sino que crea una especie de ‘shelving’, porque equivale a poner los dos filtros (abierto y cerrado) en paralelo:
Siguiente idea que podéis plantear: OK, puedo registrar varias respuestas impulsivas e ir cambiando de una a otra… Pero se notarán los saltos, no será una transición fluida. Volveréis a contestar: en ese caso monto dos unidades de convolución para poder hacer que las transiciones de una a otra respuesta impulsiva estén sujetas a fundido. Y siento deciros que tampoco vale. No es lo mismo una variación continua que el fundido de variaciones a saltos. La diferencia es la misma que realizar un glissando, con una variación gradual, o ir recorriendo varias afinaciones de forma escalonada (pese a que se intente maquillar con los fundidos). No son acciones equivalentes y las diferencias pueden resultar demasiado burdas y obvias.
Yo suelo hacer la analogía con el mundo de la imagen: no tiene nada que ver un verdadero morphing que transforma la cara de una persona en la de otra estirando y desplazando sus cejas, nariz, etc., que el fundido de las fotos de la primera y la segunda que es una mera superposición de las dos caras durante la transición.
Sin ir a cosas tan extremas como lo del filtro de eliminación de ruido o lo del wha, hay que tener claro que convolución implica respuesta fija, comportamiento sin cambios, sin movimiento. No podemos modelar por convolución un flanger o un chorus por más que nos parezca que se trata de sistemas basados en un retardo / filtrado. Y no podemos porque en ellos por esencia ese retardo es móvil, cambiante.
Modelos por convolución, sin automatización
Relacionado con lo anterior. No podéis pensar en automatizar una emulación por convolución. Si queréis imitar un ecualizador en una posición fija de sus controles, perfecto. Obtenéis y aplicáis su respuesta impulsiva y hecho. Pero si se pretende imitar el que los controles del sistema imitado varíen sobre la marcha, la respuesta es no. La convolución no lo soporta.
Claro que hay plugins por convolución que permiten automatizar algunos de sus controles. Podréis automatizar, por ejemplo, la mezcla seco/mojado en una reverb por convolución, porque se trata de un parámetro que no es propiamente del motor de convolución. Sin embargo cualquier aspecto que se refiera esencialmente a cambios en el objeto emulado y su respuesta no puede soportarse.
Por convolución, si contáis con suficientes respuestas impulsivas para ‘situaros’ en distintos puntos del escenario de un teatro, podréis dedicaros a situar cada instrumento de la mezcla en una de esas posiciones, obteniendo una imagen estéreo espectacular y una sensación de espacio hiperrealista y congruente con esa particular sala. Pero olvidaros de conseguir imitar el que un instrumentista se esté moviendo por el escenario. Salvo que queráis que se mueva ‘a saltos’ claro. El ‘movimiento’ auditivo y la convolución me temo que no se llevan muy bien. Los efectos de tipo movimientos 3D en audio (RSS y semejantes) no pueden realizarse por esta vía.
Los parámetros controlables que ofrece una reverb por convolución son muchos menos que los que estamos acostumbrados a ver en una reverb algorítmica. Pensad por ejemplo en la difusión y densidad de rebotes: está ‘grabada’, no está ‘generada’ algorítmicamente, y como resultado no puede alterarse.
Sí podéis jugar a dar más brillo o menos (los clásicos HF y LF damp) o en general a ecualizar la reverb. Sí podréis hacerla más corta porque se puede modificar la respuesta impulsiva atenuándola con una rampa decreciente para acortarla. Podréis también aplicar el impulso invertido para una reverb ‘reverse’. Pero poco más. Podéis ver esa ‘escasez’ de parámetros en esta figura.
En algunas ocasiones tenéis control para gobernar con una cierta autonomía los primeros milisegundos de reverb (las primeras reflexiones) y el resto de la respuesta impulsiva, quizá incluso gobernando el ‘predelay’ de cada una de esas dos partes. En esos casos se trata nuevamente de transformaciones simples de la respuesta impulsiva: se trocea para separar el primer fragmento y la cola y se permite su manipulación separada. Pero olvidaros de una actuación más ‘íntima’ sobre la calidad de la reverb, como la referida del control de difusión o densidad que son sin embargo parámetros cotidianos en otras reverbs digitales.
El coste de calcular la convolución
He querido manifestar primero esas otras limitaciones de los sistemas convolutivos, porque son menos oídas. Pero no podemos dejar de mencionar la que siempre se cita: A cambio de su universalidad, tiene el precio de una computación que puede ser ingente y devora el uso de la CPU. En la entrega anterior veíamos la arquitectura interior de un plug-in de convolución, cómo se calcula eso que llamamos convolución. Pensando en esa figura podéis entender mejor lo que significa en términos de cómputo.
Supongamos que deseamos imitar una reverb cortita, de un segundo de cola. Bien modesta ¿verdad? No es un ‘hall’ ni un ‘canyon’, desde luego. Pero para poder tener registradala respuesta impulsiva a un frecuencia de muestreo de 44100 Hz necesitamos 44100 muestras. Y, ahora viene lo gordo, al aplicar ese patrón de rebotes, para cada muestra de la señal de entrada necesitamos realizar 44100 productos y sumas. Como hay 44100 muestras por segundo, resulta la friolera de un total casi dos mil millones de multiplicaciones y otras tantas sumas por segundo. A las que hay que sumar los accesos a memoria, ajustes de punteros,… Es más, necesitaremos operaciones en coma flotante que consumen más tiempo y energía (porque 2000 millones de valores sumados en coma fija desbordan seguro) o bien más operaciones para ir compensando los problemas de la coma fija.
No sigo. Pero lo que está claro es que la estrategia de la convolución demanda mucha capacidad de cómputo.Es cierto que en muchos procesadores (desde luego en cualquiera de tipo DSP, pero también cada vez más en procesadores ‘normales’ por la importancia que tiene a día de hoy toda la cuestión multimedia) existen precisamente elementos dedicados para resolver este tipo de cálculos: doble bus de datos, modos de direccionamiento peculiares, unidad MAC -multiplicación y acumulación en un único ciclo-, etc. Pero con todo, el coste computacional sigue siendo mayúsculo.
¿CPU caliente? Congela tu convolución
Si vuestro ordenador ya lo pasa mal para tener abiertas algunas reverberaciones algorítmicas dentro de un proyecto, mejor no intentéis reemplazarlas por reverbs de convolución… salvo que lo hagáis fuera de tiempo real. Es decir, dejando precalculada (fuera de tiempo de mezcla) la aplicación de esa reverb por convolución. Haciendo un ‘freeze’ pista a pista de esos efectos tan computacionalmente costosos.
No es ninguna idea nueva: siempre que el indicador de CPU se aproxima al 100% ha llegado el momento de congelar efectos y dejarlos grabados. Pero con los sistemas de convolución os podréis encontrar haciéndolo más que de costumbre.
¿No hay ninguna otra alternativa posible para reducir el cómputo? Si.
Reduciendo el cómputo
Para reducir el cómputo en lugar de realizar las operaciones en el dominio del tiempo (esos 2000 millones de productos y sumas) se prefiere trabajar en el dominio de la frecuencia. Esa suma de productos temporal corresponde en el dominio de la frecuencia a multiplicar el espectro de la señal por el ‘espectro’ de la respuesta impulsiva (que deberíamos mejor llamar ‘respuesta en frecuencia’ antes que ‘espectro’).
No es tanta panacea: hay que calcular la transformada de Fourier de la respuesta impulsiva y de la señal. La primera puede estar precalculada, no hay problema (el impulso es fijo), pero la segunda no queda más narices que irla calculando sobre la marcha. Calcular la transformada añade sus propias (y no pocas) sumas de productos. Pero al final con el uso de la FFT compensa ypuede reducirse el cómputo unos cuantos centenares de veces (la cifra exacta depende de varios factores como la duración del impulso).
No es una entelequia. La propia Sony SRE S777 lo hace. Calcula la convolución en el dominio de la frecuencia para hacer factible realizarla en tiempo real a pesar de la larga duración de los impulsos que puede aplicar. Y estoy tentado de deciros que casi cualquier equipo o soft que soporte duraciones de impulsos amplias (no sólo para las primeras reflexiones o milisegundos) también aborda el cálculo saltando al dominio de la frecuencia.
Esos 2000 millones de productos y 2000 millones de sumas eran para entrada y salida mono, a ‘sólo’ 44100 y con una cola corta. Pensad en cualquier otra configuración y recordad que el crecimiento es cuadrático: si dobláis la frecuencia de muestreo, cuadriplicáis la demanda de cómputo. Si en lugar de un segundo el impulso en la sala dura dos, de nuevo cuadriplicáis cómputo. En definitiva, la sencilla implementación temporal no resulta factible salvo para el fragmento más inicial de la reverberación. Si queremos respetar el impulso original en su integridad y no sustituir su cola con una reverb generada de forma algorítmica, no queda más posibilidad que acudir al dominio de la frecuencia.
La aparición de latencia
Pero… (no podía faltar algún pero) para calcular el espectro de la señal tenemos que ir considerando trozos de la señal, fragmentos. No podemos ir calculando el ‘espectro’ de cada muestra. El espectro sólo tiene sentido para fragmentos de señal. Y en definitiva eso implica que no podemos obtener la salida de forma ‘instantánea’. Tiene que haber algún tipo de buffering que acumule muestras hasta formar el fragmento con el que realizar el cálculo. Y buffering siempre implica latencia (p.ej. unos 6 o 7 ms si no recuerdo mal en el SRE S777). Cuando la señal con latencia se combine con la original (o con la diafonía que se haya colado hacia otras pistas por los micros, etc.) podemos esperar la aparición de cancelaciones de fase y demás florituras. No todo el mundo está feliz tras gastarse unos cuantos miles de euros en una reverb para luego ver que junto con ella te han regalado un flanger sin botón de on/off. Ciertamente hay formas de sobrevivir con compensación de latencia, realineando pistas, etc. pero son soluciones para situaciones ‘no en vivo’, claramente.
Es más cualquier tratamiento ‘por bloques’ como el que se necesita para realizar la convolución operando en el dominio de la frecuencia exige trocear la señal, y conseguir que esa ‘granularización’ no se evidencie en el resultado exige hacer las cosas con mucho cuidado, introducir enventanado y solapamiento entre los fragmentos, u otras soluciones. Cosas que de nuevo pueden subir la computación e introducir algunos efectos de cancelaciones.
¿Son todos los sistemas de convolución iguales?
Así que tenemos la implementación ‘a las bravas’ en el dominio del tiempo con una salvajada de operaciones pero que está libre de latencia, o la implementación más asequible computacionalmente de tipo frecuencial, pero acompañada de algunos inconvenientes. La tentación de ir por la vía de calcular todo en el tiempo y evitar así latencias y granularización no es la solución, es inabordable computacionalmente.
Y aquí es donde podéis encontrar diferencias audibles entre lo que, en teoría deberían ser procesos equivalentes (al fin y al cabo la convolución con un mismo impulso debería dar siempre un mismo resultado ¿no?).. En sistemas de convolución de alta gama podéis esperar que se hayan estrujado la cabeza lo suficiente para obtener una solución en el dominio de la frecuencia con un cómputo no imposible pero libre de los artefactos de ‘granularización’, con un solapamiento controlado y bien alineado, sin cancelaciones notables.
Eso sí siempre existirá latencia si el cálculo es frecuencial, por muy alta gama que sea el equipo. Quizá suficiente dinero pueda comprar la voluntad cualquier persona, pero con la física los euros no valen.
En definitiva, no todos los sistemas de convolución (incluso usando los mismos impulsos) van a sonar igual ni tener las mismas prestaciones/comportamiento. Algunos serán más consumidores de CPU, otros menos, algunos tendrán mayor latencia que otros…
Las diferencias audibles son casi siempre pequeñas, pero inciden en cosas como un mejor/peor reflejo de la imagen estéreo, una pequeña dosis de presencia extra de reverb,…Para una comparativa sobre varios sistemas de convolución podéis ver
http://re-sounding.com/2011/06/15/ir-plugin-comparisions, en donde tenéis un mismo impulso aplicado a una misma señal a través de distintos paquetes de soft.
Algunos productos
Para que nadie quede sin probar esto de la convolución, en los viernes freeware de hispasonic recientemente apareció mencionado
Nebula3 free disponible para Mac y Win, pero es una versión cerrada con unos cuantos modelos ‘prefijados’. Más abierta es HybridReverb2 que podéis descargar por ejemplo en
http://www.myvst.com/vst-effects/hybridreverb2-free.
Por la vía del hardware los ejemplos clásicos son la Sony SER S777 y la Yamaha REV1, ambos con calidad y precios estratosféricos para la mayoría de los mortales. Pero la vía hardware no parece un mercado prolífico.
De hecho ha llegado a convertirse en un ‘imprescindible’ hasta el punto de que muchas DAWs incorporan sistemas de convolución: REVerence en CubaseSteinberg, SpaceDesigner en Logic, TL Space en ProTools.
Muchos de ellos a día de hoy soportan la convolución multicanal (para recrear la reverberación natural en sistemas 5.1 y semejantes).
Hay casos en los que se venden con el atractivo argumento de la convolución reverbs que en realidad son híbridas y que combinan una estrategia de convolución para las primeras reflexiones y una generación de cola algorítmica algorítmica. Un caso evidente es
Audioreverb para iOS de VirSyn,no cabría esperar de un dispositivo tipo iPad el que resistiera las exigentes necesidades de una convolución más extensa.
Dentro de otros tipos de productos también encontramos uso de la convolución nuevamente híbrida las más de las veces. Por ejemplo el uso de convolución en las reverbs de sintes como DrumLab o Halion y tantísimos otros, que permiten cargar una respuesta impulsiva, aunque corta, para al menos poder replicar las primeras reflexiones, que es bien cierto son las más significativas en nivel y perceptualmente.
Limitar la parte convolutiva a los muy primeros milisegundos reduce muchísimo la demanda computacional y permite un implementación estrictamente en el dominio del tiempo, ajena a latencias. Pero recrear el resto de la cola por medios algorítmicos, hace que se pierda en esas colas la naturalidad. Como con cualquier reverb algorítmica, hay un exceso de ‘redundancia’, de ‘autosemejanza’ o repetición en la cola, una falta de verdadero ‘caos’ y aleatoriedad en la secuencia de rebotes. Y eso de alguna forma nuestra percepción lo detecta como una reverb comparativamente más pobre y que cuesta más llegar a asentar en la mezcla.
Generar respuestas impulsivas
Obtener las respuestas impulsivas no es una labor para principiantes (salvo en el caso trivial de sistemas digitales en los que el impulso sí existe y es usable). Así que dependemos en buena medida de la colección de respuestas disponibles. Pasa a ser casi más importante que el propio software (muy simple de diseñar, lo que no quita que conlleve un coste de CPU enorme).El precio de Altiverb por ejemplo no nace tanto del desarrollo del software de convolución como de la cantidad de trabajo realizado para generar y documentar una extensísima colección de respuestas, que están clasificadas en una base de datos que facilita su uso.
Típicamente las respuestas impulsivas que acompañan a los sistemas de convolución se distribuyen como ficheros de audio (a menudo en formato wav). No se trata de ficheros pensados para ser oídos, sino para ser aplicados mediante convolución a los verdaderos ficheros audio. Aún así, como en el caso del lutier que golpea la caja del instrumento, su escucha da buenas pistas sobre su carácter.
Y esas colecciones de respuestas impulsivas pueden ser generadas por cualquiera (no sólo por el fabricante del software). No es extraño que haya terceras partes desarrollando colecciones de impulsos que se comercializan como librerías de impulsos para los sistemas de convolución más exitosos. Si tiene el conocimiento y las herramientas necesarias para la obtención de respuestas impulsivas, esas terceras partes pueden crearlas y venderlas.
Una forma de generar respuestas impulsivas es usar programas que permiten diseñar una sala (sus paredes, materiales, etc.), ubicar una fuente y unas escuchas y dejar que se sintetice artificialmente el conjunto de ecos. No siempre sonarán íntegramente naturales, pero en ocasiones puede resultar interesante. Una de tales herramientas es
Impulse Modeler de Voxengo.
La otra forma de obtenerlas es ‘sampleando’ un entorno real. Ya lo mencionábamos en la entrega anterior. Muchos de los productos comerciales de convolución cuentan con rutinas para generar señales de prueba, registrar las respuestas y calcular automáticamente la respuesta impulsiva. Generalmente usan un barrido de tono. Pese a que estén disponibles esas facilidades, lo cierto es que llegar a buenos resultados no es tan fácil. Hay que contar con buenos equipos de reproducción y grabación y asegurar que el entorno esté en silencio suficiente para obtener un registro adecuado.
Esencialmente Altiverb ofrece un juego de señales de prueba que son barridos entre 5Hz y 22KHz de distintas duraciones (a efectos de poder obtener la reverb de salas con mayor o menor tiempo de reverberación). El barrido va precedido/sucedido de silencio. Eso permite estimar el nivel espectral de ruido y usarlo para mejorar la calidad de la medición, y también permite abrigar la cola de reverb tras el barrido. Todo el conjunto silencio/barrido/silencio va enmarcado entre sendos ‘pitidos’ de principio y fin y que permiten a Altiverb automatizar la comparación entre la señal de prueba y la registrada en la sala. Esa señal hay que reproducirla con un equipo de buena calidad en la sala y habrá que grabar lo que se escucha en el punto deseado de esa sala. Comparando el barrido original (limpio) y el registrado en la sala (reverberante) puede obtenerse una respuesta impulsiva. Para conseguir una medición con una buena relación señal ruido, hay que reproducir el barrido a alto nivel, sin llegar a saturar.
No es una tarea difícil, pero sí exige un cierto rigor y equipo. Siendo realistas ni tú ni yo vamos a obtener los permisos para dedicar unas jornadas dentro del Carnegie Hall para estas cuestiones, ni tampoco el que ofrezcamos la respuesta de nuestro salón o nuestro cuarto de baño va a resultar atractivo para los posibles compradores. Así que lo de crear librerías comerciales lo dejaremos para otros. Aun así, obtener tus propias respuestas no es algo para descartar. Si tenemos un espacio donde algo suena generalmente bien o que nos interesa reutilizar más tarde, podemos hacernos con su respuesta impulsiva. Un ejemplo de clarísima utilidad es el que sigue.
Utilidad para el doblaje
El uso de reverbs de convolución en vídeo, cuando sabemos que el sonido directo va a ser reemplazado mediante doblaje, es una alternativa muy interesante. Una forma no complicada de asegurar una consonancia adecuada entre el espacio que se ve en la imagen y el espacio que se escucha es capturar respuestas impulsivas de ese espacio (antes de que lleguen los actores y tramoyistas, claro, para asegurar silencio). Si tu software sólo realiza la convolución pero no cuenta con un sistema de ‘captura’ de respuestas impulsivas, puedes usar
Deconvolver de Voxengo.
Podremos así contar con ellas como recurso en tiempo de postproducción y mezcla para aplicarlas y recuperar esas reflexiones naturales. Pueden ser una forma ágil de realizar la producción, sin descartar complementarla con otros tipos de reverb (algorítmicas) especialmente cuando lo que necesitemos sea generar sensaciones ‘de movimiento’. Pero como siempre, cuando de cualquier cosa nos importa el movimiento, no nos importa tanto su precisión. Un sistema tipo RSS puede generarnos la ilusión de una trayectoria acústica, y lo que dominará la escucha será el disfrute de esa trayectoria haciendo irrelevante el detalle íntimo de la propia reverberación en sí. Pero sin embargo en una situación más estática, la naturalidad de una reverb que emula el espacio real, con sus dimensiones y formas, sus materiales, etc. puede aportar una agilidad impagable para llegar al resultado final.
Disponer de las respuestas del espacio donde se rodó la imagen es una forma de agilizar la postproducción. No necesitaremos probar y probar hasta dar con una reverb que encaje. Sencillamente aplicar la reverb natural de ese espacio ‘sampleada’ en su respuesta impulsiva.
Una situación análoga se da cuando tenemos un solista acompañado por orquesta. A menudo pondremos microfonía cercana al solista para poder recoger un sonido lo más aislado posible, sin tanta mancha de los demás elementos que comparten el escenario. Pero al estar tan cercano la sensación es pobre: se pierde la riqueza del efecto sala. Y un micro de ambiente, volverá a darnos un exceso de diafonía.
Si contamos con la respuesta impulsiva, podremos aportar ese efecto sala a la señal de ese micro tan cercano y tendremos una posibilidad más para jugar y decidir el mejor tratamiento en tiempo de producción/mezcla.
Diferentes puntos de escucha / fuente
La respuesta impulsiva grabada en un auditorio en la fila 7 de butacas o en la fila 4 de entresuelo (no digamos ya en el gallinero) no tiene nada que ver. O equivalentemente, si me sitúo en la fila 7, el patrón de reflexiones que me llega del violín concertino situado en primer plano de la izquierda del escenario no tiene nada que ver con el que llega de la flauta travesera más atrás y a la derecha. Por ello, no existe una única ‘respuesta impulsiva’ de una sala.
Tiene especial importancia en casos
como la librería Vienna Suite. Tratándose de una librería orquestal, ofrece el MIR-Pro (Multiple Impulse Response) y varias librerías de impulsos correspondientes a algunos auditorios selectos. MIR-Pro aprovecha múltiples respuestas impulsivas de cada sala presentes en esas librerías y correspondientes a diferentes situaciones de la fuente sonora. Una mejora que permite separar y definir mejor cada instrumento en la mezcla situando cada instrumento en su lugar. Lógicamente la computación se dispara salvajemente al aplicar convolución con impulsos diferentes a cada pista, instrumento o sección y no una única respuesta compartida con envío desde cada pista.
Ejemplos de colecciones de impulsos
A estas alturas debería estar claro que un sistema de convolución no es nada si no tenemos junto con él una colección de impulsos adecuada. Así que no podíamos cerrar página sin ofrecer algún recurso gratuito de este tipo.
No sólo los espacios naturales y grandes auditorios ‘sampleados’, en librerías de impulsos de pago también suelen incluirse respuestas extraídas de equipos de prestigio. Si pensamos en las reverbs digitales, muchas de ellas usan algoritmos fijos y el patrón de ecos que generan es constante, ningún problema por tanto para una emulación por convolución. Pero en algunas (Lexicon viene a la cabeza) se potencia una mayor riqueza de la reverberación haciendo que el patrón de reflexiones esté sometido a variación. Los enlaces con impulsos de algunas reverb clásicas os permitirán juzgar por vosotros mismos el resultado de samplear estas unidades de reverb que son ‘variantes’. Dando por hecho que la duración de la respuesta impulsiva sea ‘completa’, pasan por una magnífica reconstrucción del carácter de esos equipos. Esa duración retiene suficiente variación como para aportar esa riqueza.
El hispasónico Fernando Monreal en respuestas a un
hilo sobre Altiverb aportó tres enlaces que aquí repito. Toda una ocasión para tener en nuestra casa las reverb de algunos productos de alta gama.
- En una librería de 84 MB están disponibles los impulsoso de un montón de presets de la Lexicon 480L
- Si os apetece saber cómo sonaría una Bricasti M7 en vuestro proyecto podéis mirar aquí
- Otro lote de impulsos interesante es este
Añado otros cuantos que seguro harán soñar a más de uno:
Y finalmente
aquí podéis encontrar otras varias colecciones de impulsos gratuitos (id al final de esa página para ver los enlaces).
Artículo publicado en Pablo Fernández-Cid en www.hispasonic.com