Cómo reproducir youtube y myspace a través de jack en ubuntu

#1 el 03/10/2009
Publicidad
Hoy en día, la gran mayoria de los reproductores de multimedia para Linux pueden reproducir a través de jack. Algunos muestran puertos de jack audio por defecto; otros se pueden "jackificar", de una forma más o menos sencilla, instalando un paquete extra y/o modificando el plugin de salida de audio. Sin embargo, los videos de youtube o la música de myspace no hay forma de tenerlos a través de jack de forma "nativa". Pero hay un truco, el plugin alsa-jack.

Este plugin debería estar en el paquete 'libasound2-plugins' y de hecho, creo que estaba en hardy. Pero desafortunadamente no está a partir de intrepid. En el inminente ubuntu karmic supongo que tampoco estará. Lo mismo digo para Linux Mint o cualquier otra distribución basada en ubuntu. En cualquier caso, vamos a comprobarlo. En '/usr/lib/alsa-lib/' debemos tener los archivos:

libasound_module_pcm_jack.la
libasound_module_pcm_jack.so

Lo podemos comprobar con:

[code:vm3watwt]ls /usr/lib/alsa-lib/ | grep jack[/code:vm3watwt]

Pasos:

0) Hacer la comprobación de arriba. Si tenemos estos archivos, ir a paso 12).
1) Instalar el paquete 'libasound2-dev'
2) Descargar el archivo comprimido con las fuentes de alsa-plugins (en el momento de escribir esto, alsa-plugins-1.0.21.tar.bz2) desde http://www.alsa-project.org/main/index.php/Main_Page
3) Descomprimirlo en alguna parte. En mi caso, lo muevo a '/home/pablo/Fuentes/' y lo descomprimo con botón derecho.
4) Abrir una terminal y situarnos en la carpeta creada al descomprimir, en este caso, 'cd Fuentes/alsa-plugins-1.0.21'.
5) Hacer: './configure --prefix=/usr'
6) Compilar con: 'make'
7) Situarnos en el directorio jack: 'cd jack'
Ocho) Copiar el archivo 'libasound_module_pcm_jack.la' a /usr/lib/alsa-lib/ Es decir:
[code:vm3watwt]sudo cp libasound_module_pcm_jack.la /usr/lib/alsa-lib/[/code:vm3watwt]
9) Situarnos en el directorio '.libs': 'cd .libs'
10) Copiar el archivo 'libasound_module_pcm_jack.so' a /usr/lib/alsa-lib/ Es decir:
[code:vm3watwt]sudo cp libasound_module_pcm_jack.so /usr/lib/alsa-lib/[/code:vm3watwt]
11) Ir al paso 0)
12) Crear (o editar) el archivo '.asoundrc' en '/home/usuario/'. En mi caso:

pablo@pablo-desktop ~ $ gedit .asoundrc

y copiar el siguiente texto:

pcm.!default {
type plug
slave { pcm "jack" }
}

pcm.jack {
type jack
playback_ports {
0 system:playback_1
1 system:playback_2
}
}

13) Reiniciar alsa, con 'sudo alsa force-reload' (nos saldrá un mensaje de error del control de volumen, damos al botón recargar y ya)

Si todo ha ido bien, al lanzar youtube o myspace escucharemos el audio y podremos comprobar que se han creado puertos 'alsa-jack' en la ventana de conexiones de Jack Control, los cuales se conectan automáticamente a los 'system:playbacks'.

Créditos y para saber más:

http://alsa.opensrc.org/.asoundrc
https://bugs.launchpad.net/ubuntu/+sour ... +bug/84900
http://www.linuxmusicians.com/viewtopic ... lash#p5400

Saludos, Pablo.
Subir
#2 el 04/10/2009
Muchas gracias Pablo. Un post que vale su peso en oro.

Saludos.
Subir
#3 el 05/10/2009
Esta es la puñeta de Linux, las cosas complicadas, se pueden hacer de forma muy sencilla. En cambio cosas que en teoría son más simples, hay que hacer esto.

Menos mal que hay gente como tú, que son unas auténticas máquinas!

Nominados a mejor portal de música electrónica ¡Toma!

Para votar puesdes hacerlo aquí:

http://hms-radio.com/web_premios/news.php

Subir
#4 el 06/10/2009
Gracias, en fin... no soy máquina... me gusta Linux me gusta la música y me gusta escribir.

De todas formas Mider, la gran mayoría de usuarios de ubuntu no necesitan ni quieren esto. En el .asoundrc estamos obligando a alsa a ir a través de jack, sí o sí. Es decir, que si después de hacer esto arrancas youtube sin haber lanzado antes jack... ¡No suena!. El usuario medio de ubuntu usa pulseaudio, no jack. Que el archivo .asoundrc haya que cambiarlo manualmente no me parece mal. Lo malo es que hayan quitado el soporte para alsa-jack en los libasound-plugins. En realidad es esto lo que ha complicado todo, porque tampoco estaba muy claro si hacía falta el .la, el .so o yo qué se. Pues hacen falta los dos, y encima el segundo, al compilar, aparece en una carpeta oculta. Para volverse loco.

A mí me gusta dar la vuelta a los argumentos: Linux no es que sea más difícil, sino que nos permite llegar más lejos.
Si Adobe o quien sea abrieran su código fuente, o en su defecto, diesen soporte nativo para Jack, no habría que hacer nada de esto. Entonces la gente busca otros caminos para conseguir lo que quiere, que es verdad, no siempre son fáciles. Pero no es tanto: "Es malo porque es difícil". Yo prefiero pensar ¡Es bueno que se pueda conseguir!. ¡Tenemos acceso! La parte mala (lo difícil), intentamos que sea no tan mala (la ayuda entre usuarios).

Pero en fin, insisto que este hack solo merece la pena para entornos dedicados a producción de música donde Jack es el rey y está ejecutándose siempre. Así podemos tener el audio de youtube, myspace, etcétera, sin tener que recurrir a otra tarjeta de audio o, lo que sería inadmisible, sin tener que matar Jack.

Saludos, Pablo.
Subir
#5 el 26/10/2009
Rectificación:

Parece ser que no es necesario copiar el archivo .la. El que importa es el .so. Me he liado en algún sitio. De todas formas, tampoco pasa nada por que se copie también el .la.
Subir
#6 el 23/11/2009
Intentaré este hack más adelante y ya te cuento, Pablo. Para mí es un engorro tener que cerrar Jack y todo el arsenal de programas clientes que tenga abiertos en ese momento para poder escuchar un video de YouTube o un archivo de audio local a través de Tótem o el programa reproductor que sea.

Algo tan sencillo como escuchar una canción y querer tocarla por encima con Rakarrack funcionando se hace un mundo de complicado en Ubuntu.

Desde ya gracias por tu tiempo y esfuerzo.

Ni Soy Informático, ni Soy Músico

Subir
#7 el 24/11/2009
¡De nada Jose! No, no es complicado reproducir una canción y seguirla con rakarrack.

Este hack sólo es necesario(1)(2) para el flash player pero no para reproducir música que tengas en tu disco duro.

Muchos reproductores multimedia se pueden hacer jack-aware de una forma muy sencilla. Por ejemplo:

VLC: Instalar el paquete 'VLC-plugin-jack' y elegir jack en las preferencias.
Audacious: Instalar el paquete audacious-plugins-extra y elegir jack en las preferencias
Aqualung: Si jack está activo, funciona con jack por defecto

mplayer, totem, amarok, rythmbox, exaile... también se pueden jackificar pero yo no los uso tanto y ahora mismo no me lo sé de memoria. Pero ya he hecho funcionar mplayer y amarok-xine a través de jack siguiendo instrucciones sencillas encontradas en internet.

(1) Hay otra alternativa, a través del sink de pulseaudio. Eso no lo tengo muy controlado y lo tengo que investigar porque creo que puede ser una solución mejor que el plugin alsa-jack.

(2) Hay otra alternativa más que no pasa por el plugin alsa-jack: Cuando ves un video de youtube, primero se descarga al directorio /tmp del disco duro. Entonces puedes tener acceso al archivo de flash y reproducirlo con cualquier reproductor "jackificado" como vemos arriba (aunque probablemente tengas que cambiar permisos o propiedad de ese archivo).

Saludos, Pablo

www.semicorchux.blogspot.com
"Ayuda para hacer música con Linux"
Subir
#8 el 26/11/2009
A ver si lo pillo. Tal y como lo pones, la idea es poder usar dos aplicaciones simultáneamente a través de la salida jack ¿no?

¿Es posible mezclarlo con dmix, para tener simplemente una salida a través de jack y que varias aplicaciones puedan usarla?

Sígueme en Twitter

Subir
#9 el 27/11/2009
Hola ...

Yo no te recomiendo usar el plugin alsa-jack .... el hecho de pasar el audio de alsa a jack para que este lo devuelva a alsa es una chapuza ... considerable ... hoy en dia practicamente se puede usar jack para reproducir "casi" todo el audio pues la mayoria de reproductores decentes tienen un driver para jack que solo debes de seleccionar.

En el caso de youtube ..el audio se produce a traves de libreria de flash .... que por supuesto tiene su plugin para jack .. bueno para ser exactos es relativamente reciente, el problema es que quizas no esté disponible como paquete de Ubuntu, y que tendras que compilarlo.

Para obetener la libreria el comando es:

git clone [url=git://repo.or.cz/libflashsupport-jack.git]git://repo.or.cz/libflashsupport-jack.git[/url]

Eso te creará un directorio llamado "libflashsupport-jack" en el directorio desde donde lances este comando, una vez finalizado entras en el directorio ese ... y lo de siempre para compilar ...
./configure
make
sudo make install

Con esta libreria instalada podrás navegar y todo el audio que sea de de reproductores flash pasará a traves de jack.

Por supuesto que jack que es un servidor de audio a tiempo real te sirve para tener todo el audio que quieras sonando a la vez a traves de multiples programas con la ventaja de que podrás interconectarlos además ... es decir podrias pasar cualquier audio de youtube a traves de rakarrack por ejemplo para ecualizarlo.

That's all folks ..

Josep
Subir
#10 el 27/11/2009
Hum ... se me olvidó comentarte que la instalacion por defecto de este plugin te pondra la libreria compilada de flash en /usr/local/lib, la mayoria de distros buscan las librerias primero en la /usr/local/lib y luego en /usr/lib, lo siento pero no se como lo hace ubuntu.

El problema es que el mozilla, iceweasel o la version que tengas del firefox aparte de mirar esos dos directorios de libs primero mira tambien los locales de cada usuario, y yo sinceramente no se donde Ubuntu instala la libreria libflash, yo uso debian, y ademas tampoco uso el paquete debian de la libflash .... me la bajo de la web y la instalo a mano.

Esto lo digo porque obviamente ya tienes instalada la libreria de flash aunque no tenga soporte para jack gracias a su paquete correspondiente de ubuntu .... Y el hecho de tener dos librerias "iguales" aun cuando el cogerá la primera en el orden de busqueda de librerias en el path ... pues no es lo mas recomendable .... siempre puedes quitar el paquete o borrar los files a mano ... :-) si te ves con animo :-)

La solución a todo esto en realidad es sencilla ..... al compilar se genera un fichero llamado : libflashsupport.so
lo que hay que hacer es poner este fichero donde tienes el antiguo y listo .... reiniciar el "firefox" y ya coge el nuevo.

Josep
Subir
#11 el 27/11/2009
ivalladt escribió:
A ver si lo pillo. Tal y como lo pones, la idea es poder usar dos aplicaciones simultáneamente a través de la salida jack ¿no?
¿Es posible mezclarlo con dmix, para tener simplemente una salida a través de jack y que varias aplicaciones puedan usarla?


Bueno, la idea es poder usar TODAS las aplicaciones a través de jack. Para ello, todas las aplicaciones tienen que estar "jackificadas". El problema es (o era) que el flash player no se puede (o no se podía) jackificar.

El plugin alsa-jack es una chapuza, vale. Con eso te contesta Josep. Para mezclar, depende de lo que quieras hacer con el audio pero hay una aplicación llamada 'jack mixer' que hace eso. Puedes rutear las salidas de varias aplicaciones a entradas de jack mixer y llevar su salida estéreo a los system:playbacks. También puedes usar el mezclador de ardour.
O sin más, puedes llevar la salida directamente a los system_palybacks y jugar con el volumen integrado en la propia aplicación.

Pero ahora viene la alternativa, claro, el plugin de jack para flash. Esto es lo mejor sin duda, claro que sí. Para mí es nuevo :)

Ahora vienen los peros. No se me compila :( . ./configure no va. Entonces he instalado autoconf y automake.
Lo he intentado con todas la versiones de automake disponibles en ubuntu 9.10 (1.4, 1.7, 1.9 y 1.10). No he descubierto cómo usar el m4_pattern_allow. ¿Le pasa a alguien más? ¿bug o pebkac? A ver si nos puedes echar una mano Josep.

pablo@Desktop:~$ git clone [url=git://repo.or.cz/libflashsupport-jack.git]git://repo.or.cz/libflashsupport-jack.git[/url]
Initialized empty Git repository in /home/pablo/libflashsupport-jack/.git/
remote: Counting objects: 73, done.
remote: Compressing objects: 100% (33/33), done.
remote: Total 73 (delta 40), reused 73 (delta 40)
Receiving objects: 100% (73/73), 21.23 KiB, done.
Resolving deltas: 100% (40/40), done.

pablo@Desktop:~$ cd libflashsupport-jack/
pablo@Desktop:~/libflashsupport-jack$ ls -a
. bootstrap.sh flashsupport.c .gitignore
.. configure.ac .git Makefile.am

pablo@Desktop:~/libflashsupport-jack$ ./configure
bash: ./configure: No existe el fichero ó directorio

pablo@Desktop:~/libflashsupport-jack$ autoconf
configure.ac:26: error: possibly undefined macro: AM_INIT_AUTOMAKE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:29: error: possibly undefined macro: AM_PROG_CC_C_O
configure.ac:61: error: possibly undefined macro: AM_DISABLE_STATIC
configure.ac:62: error: possibly undefined macro: AC_PROG_LIBTOOL

pablo@Desktop:~/libflashsupport-jack$ ./configure
./configure: line 1955: syntax error near unexpected token `foreign'
./configure: line 1955: `AM_INIT_AUTOMAKE(foreign -Wall)'

pablo@Desktop:~/libflashsupport-jack$ make
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

Muchas gracias.

Saludos, Pablo
Subir
#12 el 28/11/2009
Hola ....

Pues la verdad no recuerdo como venian esos sources ..... normalmente cuando pillas sources de CVS,svn, git o sucedaneos .. suele haber algun script que genera el configure ..... si no lo hay lo suyo es ejecutar esto:

aclocal-1.x

(la x es la version suele importar poco que sea la 6 la 7 la 8 la 9 ) aunque eso depende del file de conf de los sources ..)

autoconf

autoheader

automake-1.x -a --gnu ( donde la x es la version y deberia ser la misma que la del aclocal)


hay un comando que ejecuta todo eso que es el "autoreconf" :-) pero vaya yo prefiero hacerlo a mano :-)
eso deberia de generar el configure.


y luego

./configure
make
sudo make install

Los de Adobe (que no son tontos) ... idearon un sistema para poner plugins a la libreria .... obviamente esto no genera toda la libflash, lo que hace es añadirle la salida de jack .... pero para compilar esto es necesario tener instaladas las librerias de desarrollo de alsa y jack que no se como se llaman en ubuntu pero algo como libasound2-dev y libjack-dev.

Otra cosa .... no se porque motivo el señor Stallman .... decidio que cuando compilas una libreria ..el fichero resultante se mete en un directorio oculto ... ( lo digo por si lo quieres copiar a mano ) el libflashsupport.so esta en el directorio
".libs"
Subir
#13 el 28/11/2009
Como dice Raka, el script configure no se pone en control de versiones porque es un subproducto de otros ficheros: configure.ac y Makefile.am. Sí se incluye en las tarballs para evitar que el usuario tenga que instalar una determinada versión de autotools, que tiene la mala costumbre de ser poco compatible hacia atrás.

Cuando te bajas las fuentes directamente del repo tienes que tener las autotools instaladas y ejecutar un script que te proporciona el desarrollador que ya sí te genera el configure. El nombre cambia, pero los más comunes son:

bootstrap.sh
autogen.sh
Makefile.cvs (se ejecuta con 'make -f Makefile.cvs')

Así que ejecuta bootstrap.sh y después ya configure.

¿Y qué tiene que ver Stallman en eso? Los subproductos de la compilación se suelen llevar a un subdirectorio aparte para que no estorben en el árbol de código fuente. No debería ser un problema que sea un directorio oculto, "make install" sabe perfectamente dónde están.

Ars longa, vita brevis.

Subir
#14 el 28/11/2009
Siiiiiiiii! ¡Qué bueno!

Muchas gracias, Josep y Luis. Eso es, al final he hecho lo que ha sugerido Luis. Simplemente, desde el directorio libflashsupport-jack:

sh bootstrap.sh (que incluye el configure en este caso)
make
sudo make install

Los paquetes a instalar en ubuntu son (creo que no me dejo ninguno):

libasound2-dev
libjack-dev
libsamplerate0-dev
libssl-dev

Además de, por supuesto:

build-essential
git-core
autoconf
automake
libtool

Y no hay que borrar (o al menos no hace falta) ninguna librería previamente instalada por flashplugin-nonfree / flashplugin-installer. La librería nueva toma otro nombre, libflashsupport.so (no libflashplayer.so). De todas formas, como dice Luis, sudo make install te lo hace todo bien.

Ahora sí, ya no hace falta el plugin alsa-jack. Ahora sí, JACK es el REY.

Saludos y gracias de nuevo, Pablo
Subir
#15 el 28/11/2009
Hola

Fragmento del man del make en debian:

DESCRIPTION
The purpose of the make utility is to determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them. The manual describes the GNU implementation of make, which was written by Richard Stallman and Roland McGrathe.

Que por cierto ... lo han cambiado .... antes ponia traducido literalmente " el gran Richard Stallman" :-)

Saludos ...

Josep
Subir
Respuesta rápida
Identíficate o regístrate para poder responder en este hilo.