SoundConverter y la Computación Multi-core

SoundConverter es un programa de GNOME que permite traspasar música de cualquier formato (Ogg Vorbis, AAC, MP3, FLAC, WAV, AVI, MPEG, MOV, M4A, AC3, DTS, ALAC, MPC, Shorten, APE, SID, etc.) a otros formatos (WAV, FLAC, MP3, AAC, and Ogg Vorbis).

Lo bueno es que está pensado para ser sencillo y a la vez potente. Por ejemplo en mi equipo que tiene 4 núcleos, comprime de a 4 archivos a la vez. Es una de las primeras aplicaciones que observo que logran aprovechar al máximo el AMD Phenom X4 sin requerir intervención del usuario o una estrategia de uso compleja para aumentar el trabajo que se realiza en paralelo.

Es difícil hacer aplicaciones que usen correcta y eficientemente varios núcleos. En algunas aplicaciones es tan difícil que nadie se toma el trabajo. En este caso particular es muy sencillo y por suerte se tomaron el trabajo de hacerlo. En mi experiencia, se puede ahorrar hasta un 70% del tiempo de codificación usando cuatro núcleos en lugar de uno.

Por supuesto que está en los repositorios de Ubuntu.

Anuncios

Tu MP3 Chino Reproduce Ogg Vorbis

La noticia es que muchos reproductores de MP3 que dicen reproducir MP3 y WMA, casi con seguridad también reproducen Ogg Vorbis.

Daihatsu D-Z40, reproduce MP3, WMA, WAV y también Ogg Vorbis

Daihatsu D-Z40, reproduce MP3, WMA, WAV y también Ogg Vorbis

Este modelo Daihatsu D-Z40 de $199 (pesos)  lo hace, aunque en el manual jamás lo menciona y parece ser así para casi todos los reproductores basados en ciertos chips chinos y que se venden bajo diferentes marcas.

Si tu reproductor de MP3 es chino y dice que pasa MP3, WMA y WAV, además tiene FM y graba voz, cargale un par de Vorbis y empezá a disfrutar de un formato que da mejores resultados que MP3 en bitrates bajos. Por ejemplo un archivo Vorbis codificado en calidad cero (q0) que ronda los 64 kbit/s tiene mucha mejor calidad que un MP3 con similar tasa de bits.

Lleva Toda tu Música de Vacaciones

Hoy en día casi todos tenemos un DAP o reproductor de audio digital (mal llamados emepetrés); quien no tenga uno, tal vez tenga un teléfono con capacidad de reproducir música. Cuando nos vamos de vacaciones enfrentamos 2 problemas, dónde cargar el aparatito y qué música vamos a llevar con nosotros.

El primer problema es más grave con los reproductores que se cargan conectándolos al puerto USB de una computadora. Si no tenemos una disponible en nuestro lugar de descanso, el reproductor se convertirá en una molestia. Esa es una de las principales razones para comprar reproductores a pila o que se carguen en cualquier enchufe.

El segundo problema es un lindo dilema: en general tenemos más música en formato digital de la que entra en la memoria de nuestro reproductor. Si bien hay algunos con 16 GB de capacidad, tenemos la tendencia a acumular mucha música y si las vacaciones son largas no sabemos qué podremos querer escuchar.

En mi caso, mi presupuesto no me permitió comprarme un reprouctor de más de 512 MB. Con ese espacio disponible tengo que seleccionar bien la calidad para reducir todo lo que pueda el tamaño de los archivos.

El problema es que el formato MP3, aún usando el mejor codificador, degrada un poco la calidad si se baja de 115 KB/s. Algunos se animan a llegar a 64 Kb/s, pero hay que tener en cuenta que para bajar de 115 Kb/s el sonido original es modificado en su frecuencia de muestreo (de los 44.100 Hz originales del CD o WAV a 32.000 Hz). En la página de hydrogenaudio se pueden leer al detalle las cuestiones de calidad y tratamiento del sonido según cada nivel de compresión usando el codificador de MP3 LAME.

Para bajar aún más hay que recurrir a otros formatos de música comprimida. La razón es que el formato MP3 fue creado cuando la capacidad de procesamiento de las computadoras era mucho menor a la actual y se buscó que la descompresión fuera sencilla para permitir que una PC de esa época pudiera reconstruir la música en menos tiempo del que se tarda en reproducirla.

Los formatos que se desarrollaron posteriormente como Vorbis, AAC, MP3Pro, etc. logran mantener la calidad con mayor compresión a un costo de mayor potencia de cálculo al descomprimir.

En reproductores portátiles, usar esos formatos impacta en la duración de la batería, pero a la vez que se generan archivos más pequeños (64 kbit/s por ejemplo) hay menos datos que descomprimir por minuto y menos trabajo que realizar. En general, a menor tasa de bits menor uso de energía para cualquier formato.

Hoy en día no hay motivo para usar el formato MP3 si nuestro reproductor soporta Vorbis, AAC o algún otro formato y queremos llevarnos toda la música con nosotros.

En mi caso, mi iRiver T10 reproduce Vorbis que en los últimos años ha mejorado mucho la calidad con tasas de bit bajas como 64 kbit/s, 48 kbit/s y hasta 32 kbit/s.

Vorbis a 64 kbit/s es muy aceptable sobre todo con reproductores portátiles y en lugares ruidosos. Pero para poder llevar toda la música de vacaciones se puede llegar a 32 kbit/s. La opción de Vorbis es “q-2” lo que sería quality -2. Originalmente Vorbis estaba pensado para soportar calidad de 1 a 10, pero sus buenos resultados en tasas de bits bajas hicieron que creciera el interés por achicar más el tamaño manteniendo la calidad todo lo posible. Hoy en día la versión de codificador Vorbis aoTuV 5.7 es la que da mejor calidad.

Con calidad -2 se notan las diferencias con el original, sobre todo en el timbre de voz humana y en el efecto estéreo, pero la ventaja es poder meter 34 horas de música en 500 megabytes.

Para instalar el codificador Vorbis mejorado hay un repositorio para Ubuntu. Ahí están los paquetes a instalar para tener Vorbis aoTuV 5.7 integrado en todas las aplicaciones automáticamente.

Procesamiento en Paralelo en AMD Phenom X4

Comparé el tiempo que se tarda en traspasar 4 canciones de formato flac a formato ogg en forma secuencial y en paralelo en un procesador de cuatro núcleos como es el AMD Phenom X4 9550 en Ubuntu 8.10 de 64 bits. El resultado es asombroso.

Ejecutando en serie:

time oggenc -Q 01_threnody_in_x.flac 02_bc_blood.flac 03_goop.flac 04_soda_pop.flac)

real    0m37.265s
user    0m37.166s
sys    0m0.100s

En paralelo:

time (oggenc -Q 01_threnody_in_x.flac & oggenc -Q 02_bc_blood.flac & oggenc -Q 03_goop.flac & oggenc -Q 04_soda_pop.flac & wait)

real    0m11.697s
user    0m36.274s
sys    0m0.172s

En paralelo tarda el 31% del tiempo. Significa que casi se llega el límite teórico de reducir a un cuarto el tiempo de cálculo. Ahora resta que más aplicaciones de uno cotidiano aprovechen estas nuevos procesadores al máximo. (Notemos que hasta el comando time se confunde e informa un tiempo de usuario de 36 segundos, cuando el proceso efectivamente tardó 11 segundos).