Normaliza el audio de tu biblioteca de música

Cuando se tiene una biblioteca extensa de música digitalizada y que proviene de diferentes fuentes, es habitual encontrarse con diferencias muy acusadas en el volumen que percibimos al reproducir cada álbum. Existen diversas formas de solucionar este inconveniente. Yo he elegido una de ellas: normalizar con ReplayGain.

ReplayGain es una propuesta de estándar técnico publicada por David Robinson en 2001 que mide y normaliza el volumen percibido de los archivos de audio digitales . Es decir, iguala el volumen que percibimos para que todas las canciones (o álbumes) suenen igual de fuertes, a un volumen prefijado de 89 dB de presión sonora.

Si el ajuste se hace por pista, todas las pistas tendrán el mismo volumen percibido. Probablemente no es esto lo que queremos hacer con nuestra biblioteca musical. En realidad, lo que debemos hacer es normalizar (igualar) el volumen de cada álbum completo para que así se respete el contraste de volumen que el compositor le quiso dar a su obra. Oír Carmina Burana toda al mismo volumen le provocaría varias úlceras a Carl Orff en su tumba.

Existen varios programas que aplican esta técnica a archivos MP3 y OGG. He elegido mp3gain por ser uno de los que más me han convencido por su versatilidad y porque es software libre.

mp3gain puede normalizar los archivos MP3 tanto por pista como por álbum. En ambos casos hace un análisis previo de los archivos para calcular la ganancia que se debe aplicar al archivo para normalizarlo al volumen definido (89 dB por defecto).

Lo que hay que saber sobre este proceso es que es NO destructivo, es decir, el audio del archivo NO se modifica, la ganancia calculada se guarda en las etiquetas que lleva el archivo incrustadas (como las ID3v2, por ejemplo) y, también muy importante, el proceso es totalmente reversible: el programa lleva la opción de deshacer lo que hizo (undo).

Las opciones que he elegido para mis archivos MP3 son:
-a Para calcular la ganancia para el álbum completo.
-k Para evitar el clipping.
-p Para preservar las fechas de los archivos.
-s i para usar las etiquetas ID3v2.
-o Para ver la salida que produce el programa de forma tabulada.

Para automatizar el proceso y no tener que ir álbum a álbum repitiendo el comando, he usado el siguiente comando ejecutado en bash (GNU/Linux):

find /media/media/musica/ -type d -links 2 -print0 | while IFS= read -r -d '' file; do mp3gain -a -k -p -s i -o "$file"/*mp3; done >> /media/media/musica/mp3gain.log

Si te interesa cómo funciona el comando, sigue leyendo…

La idea es buscar, desde un directorio padre que contiene toda la música, todos los álbumes y aplicar la normalización a cada uno de ellos de forma separada. Pero, si la estructura de nuestra música es, por ejemplo, «musica/autor/album» ¿cómo extraemos una lista de los directorios que contienen las canciones? (porque dentro del directorio /album pueden haber otros –si es multi-album–: cd1, cd2, etc.) Esto lo consigue el comando:

find /media/media/musica/ -type d -links 2 -print0

La opción -type d selecciona solo directorios, la opción -links 2 cuenta los hard links que tiene cada directorio que encuentra. Solo los directorios que NO tienen subdirectorios tienen 2 hard links, uno lo tiene el padre y el otro el «.» que contiene ese directorio. Por último, la opción -print0 hace que los nombres de los directorios acaben en un carácter NULL para que funcione bien la siguiente parte del comando.

La forma de hacer un bucle sobre los archivos encontrados por find y que respete los espacios en blanco que haya en dichos nombres es con la tubería:

find ... -print0 | while IFS= read -r -d '' file; do ...; done

El while itera sobre toda la salida del find, se desactiva el IFS para que no exista separador de palabras en las cadenas encontradas, luego, el comando interno read desactiva el separador (-d con la cadena vacía) para que las cadenas leídas acaben en NULL (de aquí el porqué del -print0 del find) y se usa la opción -r para que el backslash (\) no sea considerado como carácter de escape.

Tan solo queda ejecutar el comando mp3gain con los parámetros explicados anteriormente sobre cada directorio (álbum) para normalizarlo y se redirige la salida del comando a un archivo por si se desea analizar el resultado al finalizar la ejecución de todo el bucle.

Share on RedditShare on FacebookTweet about this on TwitterShare on LinkedIn

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Antes de enviar el formulario: