Como crear script para Pulseaudio?

sagaznovato
#1 por sagaznovato el 15/01/2011
Saludos

Verán pulseaudio me da problemas al correr algunas aplicaciones de audio, después de utilizarlas este se qeda muerto, y no se desbloquea hasta reiniciar la maquina, y si por ejm qiciera seguir en la pc me qedo sin audio (eso es muy triste).
Peroooo la cosa se soluciona con las siguientes lineas en la terminal:

pulseaudio -k
pulseaudio -D

El lio es andar con lo mismo cada vez q ejecuto la misma aplicacion, teniendo como base ya un script qe se supone arregla esto pero que no lleva las lineas q les comento pienso q si se las agrego ya automatizo el proceso y me ahorro algunas tecleadas. Aqui el script:

#!/bin/bash

gksu killall pulseaudio
sleep 1
gksu /usr/local/(aqui va la ruta de la aplicacion)
sleep 1
gksu /etc/init.d/pulseaudio start

Como ven ni con la ultima linea [pulseaudio start] revive, asi q yo qiciera agregar las lineas q solucionan mi problema pero no se como, no conosco nada de lenguajes de programacion asi q no tengo la menor idea.

Gracias de antemano.
Subir
vagar
#2 por vagar el 15/01/2011
Por si sirve de algo, está bastante extendida la opinión de que en una máquina que se va a utilizar para trabajo de audio puede ser buena idea no instalar PulseAudio, ya que ha dado bastantes problemas, pero quizá ahora esté más depurado.

No es una solución que te pueda recomendar, porque yo no tengo experiencia personal con PA, ni buena ni mala. Nunca me ha hecho falta y, por lo tanto, nunca lo he instalado. Lo saco todo por jackd, menos el Firefox y el Skype que vienen configurados por defecto por alsa/dmix.

Pero es cierto que PA es prescindible y, como dice el refrán, muerto el perro se acabó la rabia. Así que es una posibilidad que puedes considerar.
Subir
monon
#3 por monon el 15/01/2011
prueba a cambiar las lineas
gksu /etc/init.d/pulseaudio start
por
pulseaudio --start

Sin el gksu ya que pulseaudio es un servicio del usuario y no del sistema.

Otra cosa a tener en cuenta es que cuando le dices
pulseaudio --kill
El servicio se reiniciara automaticamente ya que tiene la opcion de "respawn", asi que deberas crear el archivo
$HOME/.pulse/client.conf
con el siguiente contenido
autospawn = no
Subir
Pablo_F
#4 por Pablo_F el 15/01/2011
En ubuntu, pulseaudio y jack se toman un espacio compartido en la RAM para alocar memoria. Este espacio está montado en /dev/shm. Por ejemplo, en mi caso:

df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
none 1000M 60K 1000M 1% /dev/shm


Por alguna razón, pulseaudio deja basura y puede llegar a atascar la RAM, sobretodo en ordenadores que no andan sobrados, 512 MB por ejemplo. (ver https://bugs.launchpad.net/ubuntu/+source/jack-audio-connection-kit/+bug/491329 y http://pulseaudio.org/ticket/806).

Se puede comprobar con ls -l /dev/shm

En mi caso, ahora mismo (estoy ejecutando jackd):

ls -l /dev/shm
total 0
drwx------ 3 pablo pablo 60 2011-01-15 20:57 jack-1000


Pero a mucha gente le ocurre que /dev/shm está repleto de archivos del tipo pulse-shm-xxxxxxxxx y no con 60K sino ocupando mucha más memoria, y no sólo uno, sino unos cuantos.

Yo tampoco he desinstalado pulseaudio, lo que hago es lo que comenta monon. Lo mato y evito el respawn, pero también borro los pulse-shm-xxxxxx desde que me enteré que dan problemas. Por cierto, killall pulseaudio, pulseaudio -k y pulseaudio --kill hacen lo mismo que yo sepa.

En mis scripts de qjackctl, hago esto:

Antes de iniciar jackd (en lugar de artshell -q terminate que es completamente inútil):

#!/bin/bash
#mato pulseaudio y espero
sed -i 's/yes/no/g' ~/.pulse/client.conf
pulseaudio -k
sleep 2
#limpio /dev/shm
rm -f /dev/shm/pulse*


Después de iniciar jackd:

#!/bin/bash
#Lanzo a2jmidid y patchage
a2jmidid -e &
sleep 1
patchage &
#Vuelvo a borrar /dev/shm de pulse*
rm -f /dev/shm/pulse*


Veis que limpio /dev/shm incluso después de haber matado pulseaudio porque increíblemente a veces me ocurría que pulseaudio dejaba uno de sus archivitos. Seguramente no pasa nada pero por si acaso.

Y después de detener jackd, vuelvo a poner a "yes" el respawn de pulseaudio y lo arranco:

#!/bin/bash
# mato jackd
killall jackd
sleep 1
# Arranco pulseaudio
sed -i 's/no/yes/g' ~/.pulse/client.conf
pulseaudio --start


pulseaudio --start y pulseaudio -D hacen lo mismo o parecido.

De esta forma, cuando estoy con jackd pulseaudio está completamente fuera del juego y cuando detengo jackd, pulseaudio vuelve a entrar como si no hubiera pasado nada.

Y todo esto, con un click para iniciar jackd y otro click para detenerlo, gracias a la utilidad de lanzar scripts de qjackctl.

A la pregunta original, como dice monon, no uses gksu en un script de usuario, pero no sólo en esa línea sino en ninguna y nunca. Y como propongo más arriba, añade la línea rm -f /dev/shm/pulse* a tu script después de matar pulseaudio. Es más, puede que esa línea sea lo único que necesites. Comprueba tu directorio /dev/shm


Y, hagas lo que hagas, no te dejes ni un espacio ni una letra ni guión. No es lo mismo pulseaudio start que pulseaudio --start. Lo primero no hace nada.

Saludos, Pablo
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo