Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Este documento está disponible en los siguientes idiomas: English  Castellano  Deutsch  Francais  Nederlands  Russian  Turkce  Arabic  

convert to palmConvert to GutenPalm
or to PalmDoc

[Fotografía del Autor]
by Philip de Groot

About the author:
Pronto recibirá su doctorado en la Universidad de Nijmegen en la asignatura de Quimiometría. Le gusta trabajar con Linux y escribe sus experiencias de forma regular.
Content:

Grabación en mp3 en tiempo real

[Ilustración]

Abstract:

Este artículo muestra cómo grabar música con Linux. Al contrario que en el consejo LinuxFocus de Enero de 2001, no es el 'costoso' formato WAV el utilizado. En cambio, grabamos directamente en el mucho mas reducido formato mp3. Usando este formato se hacen realidad grabaciones de 24 horas en calidad CD.



 

Introducción

Normalmente no se puede convertir directamente sonido wave a sonido mp3 en tiempo real. El procedimiento que se usaría es:
  • Primero, grabar un archivo wave con un programa de grabación.
  • Usar un compresor de mp3 (p.ej. 'Lame') para convertir el archivo wave a un archivo mp3.
Grabar un archivo wave consume rápidamente gran cantidad de espacio en disco (100 MB para 10 minutos de música estéreo en calidad CD). Esto limita la capacidad de almacenamiento de música grabada en este formato. Un compresor de mp3 es capaz de convertir el archivo wave de 100 MB a 10 MB en la calidad estándar para mp3 (128 kbps, estéreo). Esta cualidad permite la grabación digital de música durante 24 horas, ¡sin ninguna interrupción! 24 horas son 60*24=1440 minutos, ¡¡¡usándo sólo 1,4 GB (1440 MB) de espacio en el disco duro!!! He utilizado esta característica para grabar el top 300 de los años ochenta, transmitido por radio Loostad (también disponibles algunas páginas en inglés). La grabación sólo se interrumpió una vez: el programa de grabación de mp3 se para automáticamente después de 24 horas, y ésto no estaba documentado...; ¡la grabación fue muy buena! Os mostraré qué software utilicé y explicaré formas alternativas de hacer grabaciones mp3 en tiempo real. También he puesto el software que se usa en el artículo a disposición pública en mi página web (los enlaces están más abajo en el artículo).
 

El procedimiento

Aquí se discuten dos métodos para hacer grabaciones mp3 en tiempo real, estéreo y con calidad CD: 'Mpegrec' hace lo mismo que 'sox|lame', pero están definidas unas opciones diferentes. No se necesita nada más. ¡Simplemente instala 'Lame'! Te aconsejo usar 'mpegrec'. ¡¡¡No obstante, ten en cuenta que este programa se para a las 24 horas!!! Más aún, un molesto error en la emisión resulta en tiempos de grabación erróneos: el tiempo de grabación según el usuario lo fija no es usado correctamente. ¡Muchas veces, es mucho menor!  

Cómo usar mpegrec

Es fácil usar 'mpegrec'. En un xterm, escribe 'mpegrec -b 128 -o ./prueba.mp3' ¡y ya está!
Explicación de las diferentes opciones:
-b Usar 128 kbps como bitrate del mp3. El valor estándar de 'mpegrec' es 192, que es un valor extraño (y con mucho demasiado grande). Casi todos los archivos mp3 tienen un bitrate constante de 128 kbps.
-o Nombre del archivo de salida. En este ejemplo: ./prueba.mp3. Si no se define un archivo de salida, todo se envía a la salida estándar ('stdout'). Normalmente, ésta es el xterm donde el programa es ejecutado. Todos los códigos mp3 son impresos en la pantalla en vez de ser almacenados en un archivo...

Atención:
Por favor, ten cuidado de que los ajustes del mezclador sean correctos. ¡Si no, no se grabará nada! Debes seleccionar la fuente de grabación correcta y los controles de volumen apropiados deben estar en su punto más alto.  

Cómo usar 'sox | lame'

Escribe el siguiente comando en un xterm:
sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t raw - | lame -x -m s - ./prueba.mp3
Explicación de las opciones suministradas:
sox El programa de grabación: el sonido se graba usando la 'entrada de linea' de la tarjeta de sonido.
-t ossdsp La entrada de sonido se origina desde los drivers de sonido OSS. Estos drivers están incluidos en el kernel de Linux si está incluido el soporte estándar de sonido.
-w El tipo de bit de la muestra es palabra larga de 16 bits (si no entiendes esto no te preocupes, no es importante).
-s Los datos de la muestra son de tipo lineal con signo (idem).
-r 44100 La frecuencia de muestreo es 44100 Hz (calidad CD).
-c 2 Grabar desde 2 canales (estéreo).
/dev/dsp Este es el dispositivo de muestreo del sonido: el dispositivo Linux que provee los datos de la grabación. Todos los dispositivos, puertos, discos, etc son accedidos usando el directorio '/dev'. El flujo de forma de onda se accede en linux desde /dev/dsp. De hecho, es posible incluso obtener tu fichero de audio usando el siguiente comando: 'cat /dev/dsp >prueba.wav' (¡¡¡funciona sólo si los valores del mezclador son correctos!!!).
-t raw La salida son datos 'raw' (crudo) (sin cambios, directo desde la tarjeta de sonido).
- Usar la salida estándar, simbolizada por '-'
lame El compresor de mp3: el sonido grabado se canaliza a 'lame' para la conversión a mp3.
-x 'Forzar la permutación de bytes en la entrada'. No sé la función concreta de esta opción, pero sin ella el procedimiento simplemente no funciona (¡hasta que descubrí esto!).
-m s Comprimir como archivo mp3 estéreo. Por defecto, 'lame' lo comprime como 'joint-stereo': sólo las DIFERENCIAS entre ambos canales de sonido se comprimen. Como resultado, se consigue una mayor compresión, pero la calidad del mp3 es más pobre.
- La entrada es 'stdin'. Esto es correcto para el ejemplo actual.
./prueba.mp3 El nombre del archivo mp3 final.
 

El mezclador

Un ajuste correcto del mezclador es muy importante. El mezclador determina la fuente de grabación. Por defecto, el mezclador de KDE está ajustado como sigue:
Los ajustes estándar del mezclador de KDE
Figura 1: Los ajustes estándar del mezclador de KDE.

La Figura 1 muestra que el micrófono es la fuente de grabación actual. Para nuestros propósitos, la fuente externa está conectada al ordenador usando la entrada de línea (line-in) de la tarjeta de sonido. Esta debería ser la fuente de grabación. Si el puntero del ratón está posicionado en la entrada de línea del mezclador de KDE, un click con el botón derecho tiene como resultado el menu representado en la Figura 2.

Seleccionando la fuente correcta de grabación
Figura 2: Seleccionando la fuente correcta de grabación.

 


Por supuesto, se selecciona 'RecSource' para utilizar la entrada de línea de la tarjeta de sonido como fuente de grabación. Usa el mismo procedimiento para desactivar el micrófono como fuente de grabación: ¡no queremos el ruido adicional!  

Atención:

Si no se selecciona la entrada de línea como fuente de grabación, no se obtiene sonido de ella (¡incluso si tu mism@ puedes oir el sonido!) No olvides poner la 'entrada de linea' como 'no muda'. La Figura 2 muestra esto correctamente: puedes poner la entrada de línea en 'mute', por lo que ahora está como 'no muda'.

El mezclador de KDE está ajustado correctamente
Figura 3: El mezclador de KDE está ajustado correctamente.

 

Precauciones para obtener buenas grabaciones

Es probable que trabajes normalmente en XWindows y que 'mpegrec' se ejecute en XWindows. Ésto no es buena idea por los siguientes motivos: Las observaciones mencionadas indican que las grabaciones obtenidas son mejores si no está presente ningún entorno gráfico. Esto significa que se debe usar la shell Bash (una shell basada en texto). Este enfoque tiene las siguientes consecuencias: Estos dos problemas se pueden solucionar bastante fácilmente. El primer problema, soporte para sonido, se soluciona como sigue:
'modprobe -k sb'

Este comando carga el módulo 'sb', que instala mi tarjeta de sonido (una SoundBlaster AWE 64), si no sabes qué módulo deberías instalar, mira en tu '/etc/conf.modules' (SuSE) o '/etc/modules.conf' (depende de la distribución). En mi caso, la parte referente a la tarjeta de sonido es la siguiente:
 

alias char-major-14 sb
pre-install sb /sbin/modprobe "-k" "adlib_card"
pre-install sb /sbin/modprobe "-k" "awe_wave"
options sb io=0x220 irq=5 dma=1 dma16=5 # mpu_io=0x330
options adlib_card io=0x388 # FM synthesizer
post-install sb /usr/bin/sfxload "/win98/Program Files/Creative/ctsnd/sfbank/synthgs.sbk"
La tarjeta de sonido se define siempre en 'alias char-major-14' (si usas los drivers OSS estándar, que es lo más común). La línea termina con 'sb', por lo que 'modprobe -k sb' inicializa los servicios de la tarjeta de sonido.
 

El segundo problema es seleccionar la entrada de línea de tu tarjeta de sonido con un mezclador en modo texto. Yo uso el programa 'aumix'. Si se ejecuta el comando 'aumix' en Bash, el mezclador se inicia en modo interactivo. En este modo, los ajustes se pueden comprobar y cambiar en un abrir y cerrar de ojos (ver Figura 4).

El mezclador en modo texto 'aumix'
Figura 4: El mezclador en modo texto 'aumix'.

 


Puedes seleccionar las diferentes fuentes de grabación con las flechas. Las teclas '<' y '>' seleccionan el volumen (izda.) o el balance (dcha.). Las teclas '+' y '-' aumentan y disminuyen el volumen de la fuente seleccionada. 'm' enmudece la fuente actual . Si la fuente actual está seleccionada como fuente de grabación, una 'R' roja aparece a la izquierda del volumen de esta fuente. Si la fuente solo se puede usar para reproducción, aparece una P. La tecla 's' graba los ajustes hechos en '~/.aumixrc'. Estos ajustes se pueden activar muy fácilmente en el siguiente arranque con el comando: 'aumix -L'.
 

Para automatizar el procedimiento anterior, he escrito un pequeño guión: './mrec prueba.mp3'. Este guión contiene las siguientes líneas:

#!/bin/sh
if [ -z "$1" ]; then
        echo "Usage: mrec mp3-output-file"
        exit 0
fi
modprobe -k sb
aumix -L
mpegrec -b 128 -o "$1"
Se inicializa el sonido, se selecciona la entrada de línea como fuente de grabación, y 'mpegrec' comienza acto seguido la grabación.  

Instalando mpegrec

He puesto 2 versiones de 'mpegrec' en mi página web: una para Windows (win32) y una para Linux . Se puede encontrar más información sobre 'mpegrec' en http://www.netwaysglobal.com/mpegrec/. Aqui se pueden encontrar únicamente las fuentes y la versión compilada para win32. No existe una página con más información, pero se puede encontrar algo más aquí.

Los archivos de 'lame' y consejos sobre la instalación se pueden encontrar aquí.

Instalación bajo Linux

Nota: no se discutirá la instalación en windows, pero necesitarás la versión para windows de 'lame'. La versión para windows de 'mpegrec' está disponible solamente para aquellos que estén interesados. En el archivo .tar.gz (winzip) está incluida una buena documentación. El enlace a la página principal también podría ser útil.  

Instalación de lame

También están disponibles dos versiones de 'lame', una para Windows (win32) y una para Linux . La página principal de 'lame' está en http://www.mp3dev.org/mp3/. De nuevo, no explicaré la instalación de la versión windows. La documentación incluida y el enlace a la página principal son útiles para usuarios de windows.

Instalación bajo Linux

 

Instalar sox

'Sox' es un programa para grabar, convertir y editar sonido. Por ejemplo, se puede añadir eco a un archivo de sonido. Lee las páginas del manual de 'sox' ('man sox') para más información. Las conversiones que sox puede hacer son: convertir un archivo wave a un archivo .au (el formato estándar de audio de Sun) y viceversa. Ésta posibilidad es a veces muy útil. La versión de 'sox' utilizada en este artícula se puede encontrar aquí y la página principal http://home.sprynet.com/~cbagwell/sox.html.

Instalación bajo Linux

 

Otros problemas

He encontrado otros dos problemas:

Cron

Este es un problema de SuSE en general. Un pesado proceso es ejecutado para actualizar las páginas man y para borrar archivos antiguos de log. Este proceso es muy útil, pero utiliza demasiada potencia del procesador, destinada a la grabación de mp3. Cambié el nombre de 'cron' durante la grabación, de forma que no pudo ser encontrado y ejecutado. Despues de la grabación, se vuelve a renombrar 'cron'. utiliza el siguiente comando para cambiar el nombre de archivo de 'cron':

mv /usr/sbin/cron /usr/sbin/cron.backup

Es probable que la ubicación de 'cron' difiera para otras distribuciones. Puedes encontrar la ubicación de 'cron' con el siguiente comando:

which cron

Comprueba por favor si 'cron' es nacesario para otras tareas. en una máquina Linux de escritorio, esto no debería ser un problema.

Problema con los drivers de sonido

Solucioné este problema usando los drivers de sonido alternativos Alsa . En la documentación de Alsa (no incluída en el paquete de los drivers y utilidades) hay instrucciones sobre cómo instalar estos drivers. Es mejor no usar estos drivers a no ser que surjan verdaderos problemas. --%--multipart-mixed-boundary-1.1069.984580334--%--  

Talkback form for this article

Every article has its own talkback page. On this page you can submit a comment or look at comments from other readers:
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Philip de Groot, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
nl -> -- Philip de Groot
nl -> en Philip de Groot
en -> es Rodrigo Olmos

2001-03-16, generated by lfparser version 2.9