Problemas con xruns en Ubuntu

#1 por EgArOtH-DrUms el 19/09/2009
Bunas tardes, antes que nada agradecer siempre a la gente que participa en el foro y nos ayuda a los que tenemos problemas con ubuntu a solvertarlos. Bueno mi duda es la siguiente, tengo Ubuntu 9.04 instalado en el pc, la edición es la de 64 bits y con el kernel de serie , he configurado el jack control (version 0.116.1) para que no funcione en RT y he cambiado los cuadros/periodos para que esten en 512 y asi me da 11 ms de latencia. He configurado el archivo limits.conf con los datos pertinenetes:

@audio – rtprio 99

@audio – memlock unlimited

@audio – nice -19

Pues bien usando el ardour con el hydrogen me pueden saltar como 7 xruns por minuto, a lo largo de una cancion de 4 minutos me pueden haber saltado como 25 molestos xruns, pues bueno, tengo un pc practicamente nuevo, de estas navidades, mi pregunta es si puede ser que al ser un sistema de 64 bits sea mas inestable, si el i386 sera mas estable. Si esto no pudiera ser, ¿que podria hacer para remediar esta situacion? ¿pruebo instalando ubuntu studio? ivalldt dice que musix es bastante estable y tiene un kernel bueno, ¿pruebo a instalarme el musix?

Muchas gracias por vuestra ayuda otra vez! Un saludo.
Subir
#2 por Pablo_F el 19/09/2009
Hola Egaroth,

Hay varias cosas que puedes hacer, pero primero tienes que aclarar algunos conceptos.

1. La opción 'realtime' de jack no tiene que ver con el kernel que ejecutes (genérico o rt), sino con las prioridades de realtime del usuario que inicia el servidor jack. En ubuntu, por defecto, el usuario no tiene poder para asignar prioridades de realtime (rtprio) a los procesos. Ahora ya has dado esas prioridades a los usuarios que pertenecen al grupo 'audio'. Por cierto, ¿te has añadido al grupo 'audio'? (mira la salida de 'groups') (Acuérdate de que estos cambios necesitan reiniciar).

2. El kernel con el parche 'real time preemption' (el famoso 'kernel rt') optimiza Linux para trabajar en tiempo real. Parece que el kernel vainilla cada vez hace mejor lo de dejar de pelar la gamba para ponerse a deshuesar las aceitunas, como diría lgarrido (lee su artículo de hace no mucho en este foro, está genial).

3. No dices qué tarjeta de audio tienes. Si es integrada, da la salida de 'lspci | grep -i audio'. 512 cuadros por periodo puede ser muy exigente para según que tarjeta. No pidas peras al olmo. También comprueba que tu tarjeta de audio no esté compartiendo número de IRQ con ningún otro dispositivo. Comprueba con 'cat /proc/interrupts'.

Activa el modo realtime y da a jack una prioridad de 70. Prueba. Después, según cómo te vaya y si tienes más dudas, da también el comando entero con el que inicias jack (ventana mensajes, línea posterior a "jack está iniciándose"). Esto da más información, ya que el concepto de latencia no es unívoco. Jack te dice una cosa y ardour te dice otra. Además, son latencias calculadas, no reales.

Creo que el sistema de 64 bits es mejor que el de 32 para trabajar con audio, pero no te lo puedo decir por experiencia propia pues mi sistema es de 32 bits. Yo que tú, lo dejaba como está.

Prueba lo que más rabia te dé. No hay ninguna distribución perfecta y universal para trabajar con audio en Linux. De momento, si yo fuera tú, intentaría llegar más lejos con lo que tienes ahora, sin dudarlo. Pero a ver qué tarjeta tienes, eso es vital, y a ver qué quieres hacer con el ordenador, no es lo mismo grabarte cuatro pistas en casa que hacer algo 'semi-pro'.

Posteriormente, tienes la opción de instalar un kernel de 64studio (esta es mi opción con el ubuntu jaunty de mi netbook. Arquitectura 32 bits también, por costumbre y total, para lo que hago... me va bien) o de musix, o el tuyo propio... sin tener que reinstalar todo el sistema.

Saludos, Pablo.
Subir
#3 por Pablo_F el 20/09/2009
PD: Para funcionar con hydrogen y ardour solamente, si no vas a enchufar ningún instrumento físico y monitorizar por software, no hace falta baja latencia.
Subir
#4 por EgArOtH-DrUms el 20/09/2009
Buenas, antes que nada agradecerte pablo_f esta ayuda tan fantastica y rapida.

A ver vayamos por partes, aunque llevo un tiempo usando ubuntu, en esta instalación olvide meterme en el grupo audio (vaya cabeza la mia), una vez hecho esto he de decir que los xruns han bajado considerablemente, pero aun me suelen salir como 4 o 5 a lo largo de una cancion de 5 minutos, es decir, como uno por minuto, no se si esto debe de ser asi o no.

Para todo lo demas que me comentas te aclaro, hasta hace poco tenia una tarjeta tascam us-122 que no funciona en ubuntu ni en ninguna otra distribucion linux, al menos en las que he probado, y ni siquiera cargando el firmware a mano, asi que la usaba en windows pero la tarjeta se rompio y ya di el salto definitivo a ubuntu. Ahora mismo estoy usando de forma temporal la que viene integrada en la placa, que segun el comando lpci es: "nVidia Corporation MCP78S [GeForce 8200] High Definition Audio".

Es cierto que para trabajar con hydrogen y ardour no es necesario tener una latencia baja pero tengo una bateria electronica y un cable midi/usb de esos de m-audio y me molaria tener una latencia baja para poder escuchar lo que toco a tiempo real o lo mas a tiempo real posible.

Para solo trastear hydrogen con ardour me basta con poner el valor cuadros por periodo alto y ya esta, me imagino que para poder tener una baja latencia necesitaria otra interfaz audio.

Otra duda que tenia es que nunca he llegado a poder ejecutar jack con el combo box de real time marcado, no se a que puede ser debido...

En cuanto a que busco hacer, decirte que tengo un grupete de musica en el cual toco la bateria e intento grabarnos no de forma profesional pero si poder hacer algo "home" e ir aprendiendo ya que la edicion de audio es algo que me gusta bastante.

P.D.: Se que deberia abrir otro hilo a parte pero aun asi os lo pregunto, teniendo un cable midi/usb para meter informacion al pc ya sea desde un teclado o la propia bateria electronica, que interfaz de audio me recomendais que tenga unos previos "normalitos". He visto casi todos los hilos del foro y la que mas "exito" tiene es la edirol ua25-ex y la presonus inspire y las m-audio ¿con cual os quedariais vosotros? ¿alguna otra que no este en la lista pero de similares caracteristicas?

Bueno muchisimas gracias por vuestra ayuda. Un saludo.
Subir
#5 por Pablo_F el 20/09/2009
Alguien escribió:
...aun me suelen salir como 4 o 5 a lo largo de una cancion de 5 minutos, es decir, como uno por minuto, no se si esto debe de ser asi o no.

Pues no, sólo deberías admitir xruns cuando inicias una aplicación, pero no de forma espontánea, desde luego no uno por minuto.

Sugerencias:

Mientras no vayas a grabar a través de la tarjeta, puede ayudar ejecutar jack en modo sólo reproducción. No hay problema en grabar audio entre hydrogen y ardour. La única diferencia es que no vas a tener los puertos system:capture.

Como bien dices, sube sin piedad los cuadros por periodo. Ya sabes que la configuración de jack depende por completo del driver que a su vez depende por completo del dispositivo de audio. La configuración que tengas ahora tómala como provisional, hasta que te hagas con una tarjeta decente.

A veces periodos por buffer 3 parece que va mejor para determinadas tarjetas integradas. Pruébalo.
Lo mismo, para algunas tarjetas de este tipo, 48.000 Hz va mejor.

Yo creo que la tascam US-122 funciona. En la página de alsa hay instrucciones para cargar el firmware y los drivers y hay gente que la usa.

Si has añadido correctamente la prioridad de tiempo real y estás en el grupo audio, jack tiene que ser capaz de arrancar con la opción realtime. Si no es así, hay algo que no me cuadra. Supongo que has añadido las líneas a '/etc/security/limits.conf' el comando 'groups' te da, entre otros, 'audio' y has reiniciado.

Con respecto al hardware, no tengo gran idea.

Bueno, espero que sea de ayuda. ¡Saludos! Pablo.
Subir
#6 por monon el 21/09/2009
Hola EgArOtH-DrUms
Te explico lo que por ejemplo te puede suceder por que a mi tambien me ha pasado.
Cuando inicio jackd (con qjackctl) a 2 periodos y frames a 256 (11 ms) obtengo muchos xruns. En cambio con 3 periodos a 128 (8,71 ms) todo funciona perfecto.
Esto cuando uso el driver alsa en mi tarjeta integrada (ALC883) en el portatil asus G2S.
La cosa es encontrar la relacion correcta entre los periodos y su tamaño (Buffer - Cuadros).
Cuando uso mi Interface de audio Focusrite PRO40 la cosa cambia y puedo usar 2 periodos a un tamaño de 64 (2,9 ms).
Todo depende de la tarjeta que vayas a usar.
Subir
#7 por EgArOtH-DrUms el 21/09/2009
Gracias a vuestra ayuda he conseguido mejorar considerablemente la estabilidad de jack y ya no aparecen xruns exceto cuando abro algun programa o el navegador, etc. Es mas ya tengo activado el real time del jack, ahora el tema esta en mirar una interfaz de audio que este mas o menos bien ya que como comente arriba mi tascam us 122 esta muerta... para ello abrire un post ahora mismo buscando opiniones de la gente.

Agracederos a los dos la ayuda prestada. Un saludo. Javier.
Subir
#8 por monon el 23/09/2009
Una cosa que te aconsejo es cambiar de runlevel.
Por ejemplo preparate el runlevel 3 para trabajar con audio
Mas que nada deshabilitando servicios que no vayas a usar.
Para hacer que se habiliten o deshabiliten los servicios instala y usa
sysv-rc-conf es una aplicacion grafica en consola (usalo como root)

Para hacer el cambio de runlevel usa telinit

Yo por ejemplo en runlevel 3 tengo deshabilitados los siguientes servicios:
acpi-support (para que no entre en bajo consumo)
acpid (para que no entre en bajo consumo)
anacron (para que no haga nada programado)
avahi-daemon (todos los dispositivos de red a los que accedo tienen IP propia)
bluetooth (no conecto ningun telefono cuando hago trabajos de audio)
cron (para que no haga nada programado)
cupsys (no imprimo cuando hago audio)
laptop-mode ( para que no entre en bajo consumo)
powernowd (cambiar la frecuencia de reloj de la CPU al maximo)
ssh (para que no se pueda acceder a mi ordenador)
Quizas algunos de estos servicios ni siquiera los tengas instalados,
pero por ejemplo powernowd es bastante importante.
Subir
#9 por Ismael Valladolid Torres el 21/10/2009
Prueba también distintas frecuencias de muestreo. Podría ser que la tarjeta de sonido sólo funcione de forma nativa p.ej. a 48.000 KHz, y si eliges cualquier otra hay remuestreos por software que penalizan el rendimiento.

Sígueme en Twitter

Subir
#10 por marcelo el 18/07/2010
monon escribió:
Una cosa que te aconsejo es cambiar de runlevel.
Por ejemplo preparate el runlevel 3 para trabajar con audio
Mas que nada deshabilitando servicios que no vayas a usar.
Para hacer que se habiliten o deshabiliten los servicios instala y usa
sysv-rc-conf es una aplicacion grafica en consola (usalo como root)

Para hacer el cambio de runlevel usa telinit

Yo por ejemplo en runlevel 3 tengo deshabilitados los siguientes servicios:
acpi-support (para que no entre en bajo consumo)
acpid (para que no entre en bajo consumo)
anacron (para que no haga nada programado)
avahi-daemon (todos los dispositivos de red a los que accedo tienen IP propia)
bluetooth (no conecto ningun telefono cuando hago trabajos de audio)
cron (para que no haga nada programado)
cupsys (no imprimo cuando hago audio)
laptop-mode ( para que no entre en bajo consumo)
powernowd (cambiar la frecuencia de reloj de la CPU al maximo)
ssh (para que no se pueda acceder a mi ordenador)
Quizas algunos de estos servicios ni siquiera los tengas instalados,
pero por ejemplo powernowd es bastante importante.


gracias monon por la información aquí compartida, que buenos datos a la hora de deshabilitar servicios no-necesarios si se trabaja con audio !! gracias

Marcelo

Subir
#11 por monon el 22/07/2010
Bueno Marcelo, esos eran solo algunos de los mas evidentes y los cuales tengo clara su funcion... por eso los desactivo al pasar a otro runlevel .

En realidad me gustaria poder saber lo que hacen muchos otros servicios de los cuales solo tengo una muy ligera idea.

Si alguien sabe para que sirven los demas scripts de los servicios bienbenida sea tambien esa info.

Salud y alegria
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo