Tutorial - Recording Computer Playback on Linux/es



En Linux hay dos sistemas diferentes de audio que proveen controladores a su dispositivo de sonido, OSS y el más reciente ALSA. Adicionalmente, servidores de sonido avanzados como PulseAudio y JACK pueden usar ALSA para proveer características de audio profesional como enruteado de salidas y entradas, mezcla y remuestreo de alta calidad, agregación de dispositivos o tarjetas de audio y (en el caso de JACK) [Glossary/es#latency latencias] muy bajas.

PulseAudio
PulseAudio es un servidor de sonido que provee características de audio profesional como mezcla y enrutamiento de entrada/salida. Es el dispositivo de audio predeterminado en muchas distribuciones de Linux incluyendo Ubuntu, Open Suse y muchas distribuciones basadas en Debian/Ubuntu. PulseAudio opera como un proxy entre las aplicaciones de sonido y el hardware de audio (usualmente vía ALSA). El control de volumen de PulseAudio provee un dispositivo "Monitor" que escucha el audio de salida de otras aplicaciones como Firefox o Rhythmbox. Ajustar el control de volumen de PulseAudio para capturar desde el dispositivo Monitor le permite a Audacity grabar la reproducción del computador cuando su dispositivo de entrada es ajustado a pulse.   Si aún no está instalado, añada el control de volumen de PulseAudio (pavucontrol) a su sistema. Este está usualmente disponible en el repositorio de la distribución.  Asegúrese que PulseAudio está corriendo. En la Barra de herramientas de dispositivos de Audacity, ajuste el servidor a ALSA y el dispositivo de entrada de a pulse.  En sistemas donde PulseAudio es el sistema de sonido predeterminado el dispositivo de entrada debiera ser ajustada a default. La salida debiera ser ajustada a pulse o a cualquier tarjeta de sonido disponible como se muestra abajo:
 * [[Image:pulse-device-toolbar.png|Dispositivo de entrada ajustado a pulse en la Barra de herramientas de dispositivos]]

 Asegúrese que la "Reproducción a través del software" no está activada en el Menú Control, luego haga clic izquierdo en el medidor de grabación para activar la monitorización.  Abra el control de volumen de PulseAudio y elija la pestaña de "Grabación". En el desplegable de "Capturar desde", seleccione la opción "Monitor" del dispositivo de reproducción usado por la aplicación desde la que desea grabar, como se muestra a continuación:
 * [[Image:Pavucontrol-CaptureMonitor.png|Captura desde el dispositivo Monitor]]

Lance la aplicación que desea grabar y empiece a reproducir. En la pestaña "Grabación" del control de volumen de PulseAudio, arrastre los deslizadores de volumen para que el nivel de entrada de la barra de herramientas de medición de Audacity esté a la izquierda de 0 dB (-6 dB es un buen nivel al cual aspirar). El nivel de reproducción de la aplicación siendo grabada también afectará el nivel de la grabación. Use la pestaña "Reproducción" en el control de volumen de PulseAudio o el control de volumen en la aplicación para ajustar el nivel de salida. Cuando el nivel de entrada ha sido correctamente ajustado, presione el botón de grabación en Audacity .</ol>

Para una descripción detallada usando Ubuntu 10, vea Mezcla estéreo con Ubuntu 10 en la Wiki de Audacity.

JACK
El sistema de audio Jack es comúnmente usado en distribuciones de Linux que se especializan en creación de medios como Ubuntu Studio y Studio 64.

Para usar Audacity con Jack es útil o en algunos casos esencial tener unos paquetes adicionales instalados. Esta documentación asume que usted tiene el sistema de audio Jack funcionando en su máquina. Para ayuda con la configuración de Jack, por favor consulte la documentación para su distribución de Linux.

Grabar sonidos reproduciéndose en otras aplicaciones es muy fácil con Jack. Jack debe ser iniciado usando QjackCtl o desde la línea de comando. Si Audacity es lanzado después de que Jack es iniciado entonces "Jack Audio Connection Kit" estará disponible como opción de servidor en la Barra de herramientas de dispositivos. Si Jack es iniciado después de que Audacity ha sido lanzado entonces será necesario Control > Buscar denuevo los dispositivos de audio para nuevos dispositivos de audio antes de que Jack esté disponible para Audacity.

Cualquier aplicación compatible con Jack que esté corriendo antes de que Audacity sea lanzado tendrá sus puertos disponibles en la Barra de herramientas de dispositivos. Para hacer que una aplicación lanzada después de Audacity esté disponible para Audacity es necesario volver a buscar los dispositivos nuevamente. Después de volver a buscar los dispositivos de audio, los puertos de entrada y salida de otras aplicaciones estarán disponibles en los ajustes de Grabación y Reproducción de la barra de herramientas de dispositivos.

En esta imagen de la salida de la batería de Hydrogen está siendo seleccionada como la fuente de grabación. Esto le permitirá a Audacity grabar directamente desde la salida de audio de Hydrogen. Si "System" es seleccionado como la fuente de grabación entonces Audacity grabará desde la entrada física de la tarjeta de sonido.


 * Select Jack recording input.png

Aplicaciones que no soportan directamente Jack también pueden ser usadas en un sistema que use PulseAudio (como las distribuciones basadas en Debian y Ubuntu) instalando "pulseaudio-module-jack". Esto provee los módulos "Jack Source" y "Jack Sink" que permiten a PulseAudio usar Jack. Por ejemplo, para grabar sonidos que se reproducen a través de Firefox, el control de volumen de PulseAudio (pavucontrol) puede ser usado para dirigir la salida de Firefox a Jack Sink. La entrada de grabación para Audacity puede ser entonces ajustada para grabar desde "PulseAudio Jack Sink" y el sonido será grabado.

Alsamixer
Para sistemas que tienen ALSA pero no los sistemas de audio Jack o PulseAudio, puede aún ser posible grabar sonidos reproduciéndose en el computador. Alsamixer es una herramienta de línea de comando con opciones "ver" para representar el dispositivo de sonido gráficamente. Es instalado por defecto en la mayoría de las distribuciones de escritorio de Linux. Para ver el manual de alsamixer, abra una ventana del terminal y escriba man alsamixer o vea el manual en línea.

Para iniciar alsamixer, escriba alsamixer en una ventana del terminal. Si un dispositivo Mix es mostrado como dispositivo de captura, ajuste esto como el dispositivo activo para activar la grabación de sonidos que se están reproduciendo en el computador.

OSS
OSS fue la API de audio estándar en Linux hasta la serie 2.4 de los núcleos oficiales (kernel.org) de Linux. ALSA fue añadido desde 2.5, en esas versiones, los autores del núcleo de Linux marcaron OSS como obsoleto.

El desarrollo de OSS fue continuado por 4Front Technology, inicialmente como un programa propietario pero posteriormente liberado parcialmente como código libre. Posibles soluciones a la grabación de audio reproduciéndose en un computador usando OSS son descritas aquí.

Programas alternativos para grabar reproducciones del computador
Una alternativa a grabar audio transmitido desde Internet es descargar los datos directamente al disco, ya sea usando herramientas de línea de comando como streamripper o mplayer, o con un complemento para el navegador (hay varios disponibles para Firefox), o escribiendo la transmisión al disco desde reproductores de medio como VLC o xmms, o usando descargadores gráficos como streamtuner.

<div id="alsa_pcm">

Usando el archivo ALSA PCM
No es necesario usar Audacity para grabar sonidos reproduciéndose en el computador. Usted puede capturar el sonido desde la aplicación que lo produce antes de que llegue al dispositivo de sonido, lo que evita la captura de sonidos no deseados del sistema. Esta solución puede ser usada incluso si no hay dispositivo de sonido. Nota: esta solución puede no funcionar en un sistema que use PulseAudio pero usted puede usar el control de volumen de PulseAudio en su lugar.

Primero usted debe crear el archivo (o si ya existe, añadirlo al final del archivo) ~/.asoundrc. Hágalo en su editor de texto plano favorito. Nota: ~ es su directorio de usuario por lo que debe cambiarlo a /home/juan o el que sea si no está trabajando en una terminal de Linux.

pcm.teeraw { type empty slave.pcm "tee:default,'/tmp/out.raw',raw" # 48000 S16_LE 2ch (aplay -t raw -f dat) }

Ahora dígale a las aplicaciones desde las que está intentando grabar que usen el dispositivo ALSA "teeraw" para reproducir - lea el manual de la aplicación para ayuda. A pesar de que no hay interfaz para hacer esto en Adobe Flash, puede ser logrado ajustando la variable de entorno FLASH_ALSA_DEVICE al nombre del dispositivo de sonido a usar por ejemplo:

FLASH_ALSA_DEVICE=teeraw firefox

Gracias a wensley.org por este consejo.

Ejecute la aplicación. Detenga la aplicación. Ahora /tmp/out.raw debiera contener su sonido con una calidad perfecta. Si usted cambia "default" a "null" en el texto anterior, usted no escuchará nada pero el sonido seguirá yendo al archivo. Si "empty" no funciona con su librería ALSA intente con "copy".

Si usted quiere grabar todos los sonidos reproducidos por su computador, usted tendrá que ajustar el dispositivo teeraw como su dispositivo predeterminado con algo como:

pcm.!default{ type empty slave.pcm "teeraw" }

En este caso sin embargo, usted tendrá que cambiar "tee:default,'/tmp/out.raw',raw" a "tee:null,'/tmp/out.raw',raw" u otro porque de otra forma creará un circulo vicioso. En muchos casos cambiar "null" a "dmix" debiera hacer el truco - usted graba un audio de cualquier aplicación y seguirá escuchándolo a través de sus parlantes. Nótese que usted cogerá sonidos aleatorios de otras aplicaciones como "timbres" del sistema y el archivo de datos en bruto (raw) puede quedar corrupto o ser sobrescrito. Salvo que su instalación de ALSA le permita una configuración como la de abajo usted debe asegurarse totalmente de que solo la aplicación deseada está produciendo sonido mientras graba de esta forma.

Con nuevas versiones de ALSA usted puede probar estos parámetros para conveniencia (también puede adaptarlos para usar un codificador diferente a lame):

pcm.teewav { type copy slave.pcm "tee:default,'/tmp/out.raw',wav" } pcm.teemp3 { type file format "raw" slave.pcm "default" file '|/usr/local/bin/lame -S -r -s %r --bitwidth %b -m j - /tmp/asound-$$.mp3' }

Use un cable de retorno
Este es el método más simple y efectivo de grabar lo que se reproduce en el computador. Tiene la desventaja de que la seña de audio es convertida de digital a análogo, y luego de análogo a digital, en lugar de permanecer en el dominio digital. Esto puede resultar en un pequeño incremento de ruido y distorsión.

Conecte su salida de línea o de audífonos a la entrada de línea usando un cable con un mini-plug estéreo en cada extremo, entonces grabe desde la entrada de línea. Para escuchar el sonido mientras graba, use un conector de uno a dos conectores estéreo para darle una toma para los parlantes o audífonos.

Si usted solo tiene una entrada de micrófono y no hay entrada de línea seleccionable a través de alsamixer, usted puede armar un atenuador para reducir el nivel de salida de línea a un nivel adecuado para entrada de micrófono. Pero probablemente esto solo proveerá grabación mono, porque la entrada de micrófono es mono en la mayoría de los casos. También, la calidad puede ser cuestionable.

Enlaces
|< Tutorial - Grabando audio reproduciéndose en el computador