Universitat Oberta de Catalunya

Trabajando con Audio y Processing: Ondas y espectros

Introducción

Muchas veces cuando se habla de posproducción, lo primero que se nos viene a la cabeza es la realización de efectos especiales o la conocida edición por corte,  pero nos quedaríamos a medio camino de su significado real si solo habláramos de ellos.

Por qué? El mundo multimedia que conocemos actualmente no solo nació a partir de la digitalización de la imagen, sino también de la digitalización del audio. Ejemplo de ello lo tenemos en el nacimiento de los sintetizadores digitales en substitución de los sintetizadores analógicos, todo gracias a la gran potencia de los ordenadores actuales permitiendo la edición y creación de audio en tiempo real, cosa impensable hace unas décadas atrás.

En esta práctica nos acerca de forma sutil a unas bases de conocimiento del audio y la programación orientada a objetos (POO), para poder comprender que hay detrás de cada sonido, porqué se producen algunos efectos y como evitarlos o producirlos.

Con la practica obtendremos los siguientes conocimientos:

  • Comprender que es la frecuencia y la amplitud.
  • Análisis de espectros de frecuencias.
  • Efectos psicoacusticos y porque se producen.
  • Aprender que es el ruido blanco y la sonoridad del audio.
  • Programar en Processing y el uso de las librerías Minim/Ugens (POO).

Etapas y retos

En esta práctica aprendí una nueva forma de edición de audio mediante Processing, un código de programación que ha tomado como base a Java y que permite programar con mayor facilidad haciendo que nuestra mayor preocupación sea el diseño.

La práctica se basa en tres actividades en las que se tiene que realizar un programa por actividad, creado mediante Processing. A parte de resolver la forma de como programar y realizar el código, se tenía que investigar y explicar los efectos producidos por los programas. Así que para resolver las actividades, previamente se debe  tener unos conocimientos mínimos de audio como de Processing. Así que antes de embarcarme en su desarrollo, realicé unos pasos previos.

Investigar y compresión del temario:

Igual que cuando se construye una casa, no se empieza por el tejado sino por los cimientos, empecé por realizar una investigación y estudio del temario, empezando por:

  • Investigación: Investigar los diferentes efectos psicoacústicos de primer y segundo orden, entender que es la frecuencia y la amplitud.
  • Experimentación: Practicar y experimentar con Processing, las librería Minim/Ugens.

Una vez realizado estos dos pasos, siempre me marco unas pautas para que el trabajo llegue a un nivel de calidad apropiada para una práctica de universidad. Para conseguirlo, seguí estos pasos:

  1. Tener claro la estructura de programación: Decidir si debo programar en una única “pestaña” o vamos a hacer uso de funciones, clases, objetos, etc.
  2. Establecer un diseño en papel (forma de la interfaz): Como buen diseñadores, realicé unos prototipos de cómo iba a ser la interfaz, que quería mostrar, que tipo de interacción, etc.
  3. Distribuir una forma organizativa del código de programación: Parte más avanzada del punto 1, donde crearemos las clases y definiremos que hará cada una (diseño UML).
  4. Establecer y definir un tiempo de realización de trabajo: Definir la estructura de trabajo y calcular cuánto tiempo puede llevar su realización y el tiempo diario que podía dedicar a él. Esto me ayudó a realizar el punto 5.
  5. Establecer una estructura base y las partes optativas/ampliaciones del proyecto: Definir cuál va a ser la estructura base y los extras que podía añadir.
  6. Control de errores: Realizar un conjunto de pruebas constantes en retroalimentación/iteración y corregir errores del programa.

La realización de estos pasos no debía tomar más de un par de tardes, ya que estaría quitando tiempo a la producción del ejercicio, reduciendo la calidad final de este.

Actividad 1

En la primera actividad nos invita a analizar los efectos entre ondas llamadas interferencias constructivas y destructivas. Por ello creé un código en el que generaba dos ondas sinusoidales puras permitiendo modificar su frecuencia, amplitud y fase mediante la interacción con el cursor y teclado.

Visualización del código de processing y de la interfaz.
Visualización del código de processing y de la interfaz.

La mayor dificultad del ejercicio se encuentra en el establecimiento de cada onda con una salida (altavoz derecho y altavoz izquierdo). Por ello se tiene que realizar un código un poco complejo que permite realizar esta acción.

Esquema de la señal de audio
grafico y de código Processing, de cómo funciona parte del programa.

Mediante la creación del objeto PAN, podemos dividir la salida del audio de forma que por cada altavoz se puede enviar un sonido diferente, tal como se puede ver en el dibujo de arriba.

Otra complicación que pude encontrar en el ejercicio, es mostrar la suma de las ondas de forma visual. Debido a que se usa dos PAN’s y que no interesaba escuchar la suma de las ondas, realicé una suma manual mediante la representación gráfica.

Ondas en contrafase e interferencia destructiva.
Ondas en contrafase e interferencia destructiva.

Los resultados de la experimentación del ejercicio, son bastantes positivos. Con la posibilidad de modificar la amplitud y la fase de la onda del canal derecho del altavoz, se puede producir un efecto de interferencia constructiva/destructiva, obteniendo resultados de forma visual, tal como se puede observar en el dibujo superior. No obstante al dividir las oscilaciones en canales diferentes, estos no se anulan y por tanto podemos escuchar las dos oscilaciones por separado .

Diferentes estados 1)Ondas en fase o interferencia constructiva, el 2)Onda derecha sin amplitud por tanto no afecta en el resultado y la 3) ondas en contrafase o interferencia destructiva, el sonido se anula en la resultante.
Diferentes estados 1)Ondas en fase o interferencia constructiva, el 2)Onda derecha sin amplitud por tanto no afecta en el resultado y la 3) ondas en contrafase o interferencia destructiva, el sonido se anula en la resultante.

Actividad 2

Este ejercicio es muy interesante y me ayudó a entender que era el nivel de sonoridad. ya que es un concepto de percepción individual. La actividad se basa en establecer y reproducir frecuencias puras que van desde los 20 Hz hasta los 20 KHz y mediante la interacción del ratón en el eje de las X o teclado, se puede seleccionar las frecuencias que queremos escuchar.

Ondas y espectograma.
Ondas y espectrograma.

En la experimentación, me di cuenta de la diferencia de sonoridad en cada frecuencia, aun teniendo la misma amplitud. Por tanto el nivel de presión sonora (SPL o variación de presión) no es un buen marcador para la fuerza sonora, y por lo tanto interviene una nueva variable para medir esta sensación. El nivel de sonoridad (LL) que se mide con la nomenclatura fon, y que nos sirve para comparar la sonoridad en diferentes frecuencias a partir de su nivel de intensidad (IL o dB).

En el cuadro inferior podemos comparar diferencias frecuencias y que amplitud necesitamos para que las dos se escuchen igual de fuertes, por ejemplo una frecuencia de 500 Hz y 40 dB es equivalente a la frecuencia de 100 Hz a unos 60 dB, ambos con un nivel de sonoridad de 40 fons.

Curvas de Fletxer Munson.
Curvas de Fletxer Munson.

Ejercicio 3

En este ejercicio experimenté con sonidos harmónicos i ruido blanco. Se trataba de ver cómo afecta el ruido blanco respecto un audio original. Mediante la interacción con el cursor en el eje de las X,  modificando la amplitud del ruido blanco o del sonido happy.wav (audio dado en el ejercicio).

Ejemplo del ejercicio 3
Ejemplo del ejercicio 3

En la imagen superior, donde se observan los casos con y sin ruido blanco, se puede ver la onda del audio happy.wav, el ruido blanco y finalmente la suma de ambos sonidos. En la parte inferior se puede observar el análisis de espectro de frecuencias/dB, donde se ve con claridad la aparición de todas las frecuencias del ruido blanco, y con frecuencias cercanas a los 200 Hz encontramos el rango de frecuencias de happy.wav.

Diferencias frequenciales entre los dos sonidos resultanetes.
Diferencias frecuenciales entre los dos sonidos resultantes.

En la observación del resultado, vi muy interesante que la forma de la onda resultante era muy parecida a hapy.wav, y que en la misma representación como si cogiera de referencia la representación de happy.wav como el centro, dibujaba el ruido blanco sobre ella.

Herramientas

Processing: Es un sencillo lenguaje de programación basado en Java el cual hace el uso de un entorno de desarrollo de código abierto, creado para la producción de proyectos multimedia.

Conclusiones

Antes de empezar la asignatura, el conocimiento que tenía sobre el mundo del audio era mucho más simple, tanto que pensé que no sería una asignatura complicada. Cuando me adentré en el temario, me llevé una grata sorpresa y de como lo que pensaba que iba a ser sencillo se convertía en algo bastante complejo. Esta práctica es un pequeño ejemplo de ello.

Pero la asignatura no es pura dificultad, ya que el aprendizaje me ha parecido bastante estimulante y te obliga a ver tu entorno con otros ojos, hasta tal punto de entender lo que te rodea. Por ejemplo, cuando aprendí sobre los efectos psicoacusticos de primer orden, comprendí inmediatamente que los famosos auriculares con cancelación de ruido que tanto están de moda actualmente, se basan en las interferencias destructivas de la primera actividad.

Finalmente, me ha parecido interesante el hecho de programar y editar audio mediante Processing, algo que desconocía totalmente y que ha valido la pena, abriendo un camino infinito de posibilidades, como la creación de un sintetizador digital personalizado hasta la edición de audio para juegos.

Acerca del autor

Graduado Multimedia, Técnico superior en administrador de sistemas informáticas (ASI) y Técnico superior en desarrollo de aplicaciones informáticas (DAI). Actualmente trabaja como freelance en la programación y diseño para web y móviles, aunque también ha estado trabajando como administrador de sistemas en el Consell Comarcal de Reus y programador en Avellana Digital.

Deja un comentario