Wine y pulseaudio

nch79
#1 por nch79 el 21/02/2014
Tengo una pequeña duda sobre que método usa wine para generar el sonido cuando uso algún sintetizador. En mi equipo estoy usando un derivado de debian con pulseaudio.
Por ejemplo, al usar el Nord Modular G2 (para windows), tengo la opción de sacar 96 khz y aparentemente funciona, incluso puedo grabar con audacity el sonido del sistema a esos khz y 24 bits.
Y no solo con audacity, a veces uso savihost (bajo wine) para cargar algún vst y de paso utilizo su grabador incorporado, con el mismo resultado.
Luego usando el comando "file" desde la terminal compruebo esa grabación y todo está correcto, 96 khz y 24 bits.
Pero en cambio cuando uso jack (alsa) para algunos programas nativos de linux, no me deja pasar de 16 bits y de 48 khz. ¿Porqué?
¿Como se genera el sonido en wine?

Gracias!
Subir
OFERTASVer todas
  • -48%
    Behringer Powerplay P16-M Personal Mixer
    129 €
    Ver oferta
  • -7%
    Modal Argon8 (B-Stock)
    559 €
    Ver oferta
  • -13%
    Roland Juno-D6
    839 €
    Ver oferta
RaulMX
#2 por RaulMX el 23/02/2014
Yo a ciencia cierta no se, pero tal vez sea por que el plugin soporta esa configuración de audio y los plugins nativos no o tal vez dentro de la emulación de Windows que hace Wine venga incluido un controlador primario de sonido que detecte la configuración de la placa sin pasar por pulseaudio.
Subir
Pablo_F
#3 por Pablo_F el 23/02/2014
Me parece que puede ser porque tu tarjeta de sonido sólo llega hasta 16 bits / 48 KHz. Jack con el driver alsa usando una tarjeta tipo hw:x no hace resampling por software. Para poder arrancar jack sobre esa tarjeta con una frecuencia no soportada por el hardware tienes que poner el prefijo plug. Por ejemplo, plughw:0
Subir
nch79
#4 por nch79 el 23/02/2014
Gracias a los dos por la ayuda.
Estoy usando un mac mini con debian y la tarjeta del mac mini si llega a los 96 khz y 24 bits. Tengo en el mismo ordenador linux y os x, cuando uso os x puedo elegir sin problemas esa configuración. También he probado a usar otros programas nativos en linux, como sunvox (directamente por alsa en vez de jack) y en ese caso si me deja subir a 96 khz sin problemas.
También probé a cambiar a plughw:0 después de leer algo en este foro, pero cuando lo hago sigue sin funcionar. La verdad es que jack siempre me ha dado problemas, no se porqué.
Lo que nunca me ha quedado muy claro es si pulseaudio puede generar sonido por su cuenta sin mediar con alsa. ¿Es independiente?
Subir
Pablo_F
#5 por Pablo_F el 25/02/2014
Que yo sepa, tanto pulse como jack se comunican con el mismo driver. Pulse hace cosas por software pero Jack es más exigente y no trata de hacer funcionar configuraciones no soportadas por el driver.

Puede que:

1) El driver alsa no soporte esa configuración aunque el hardware la soporte
2) Que el hardware no la soporte y Mac, wine, pulse... hagan resampling por software.

En culaquier caso, para salir de dudas, en lugar de usar Jack usa directamente arecord. Intenta grabar a 96000 y a un formato que veas adecuado (mira "man arecord") y ver qué te dice. Por ejemplo, he encontrado estas instrucciones que te pueden venir bien para ejemplos de pruebas.

http://www.voxforge.org/home/docs/faq/faq/linux-how-to-determine-your-audio-cards-or-usb-mics-maximum-sampling-rate

Ahora, si no soporta 96000 Hz, no sabría cómo distinguir si la razón es la 1) o la 2) de arriba.

EDITADO: Otra cosa, el comando "arecord -l && aplay -l" te vendrá bien para saber qué dispositivos tienes para captura y reproducción. A veces, incluso en la misma tarjeta, el driver distingue "dispositivos" diferentes.
Subir
nch79
#6 por nch79 el 26/02/2014
Gracias Pablo_F.

Consigo grabar a 96 khz desde arecord, pero solo a 16 bits, aunque no me queda claro porqué, ya que poniendo esto:
"arecord -f dat -r 96000 -D hw:0,0 -d 5 test.wav" graba sin problemas a 16bits, en cambio con esto "arecord -f S16_LE -r 96000 -D hw:0,0 -d 5 test.wav" me da el siguiente error:

arecord: set_params:1087: Channels count non available

No entiendo porqué, pensaba que eran los mismos 16 bits usando "dat" o "S16_LE"

Eso si, en la terminal si introduzco un formato de 24 bits, que no parece estar disponible, me dan los siguientes formatos como válidos:

Available formats:
- S16_LE
- S32_LE
- FLOAT_LE
Subir
Pablo_F
#7 por Pablo_F el 26/02/2014
Estoy aprendiendo contigo ahora. Si no indicas lo contrario, grabas a un canal pero parece que S16_LE tiene que ser estéreo, luego te falta indicar "-c 2".

Saludos, Pablo
Subir
nch79
#8 por nch79 el 26/02/2014
Eso era, ahora va perfecto y puedo grabar a 96 khz y 32 bits sin problemas con arecord, así que supongo que entonces el fallo estará en la configuración de jack y no en que el sistema no pueda hacerlo. Voy a buscar información por ahí sobre como configurarlo correctamente y seguiré haciendo pruebas.
Muchas gracias a todos por la ayuda.
Saludos!
Subir
Pablo_F
#9 por Pablo_F el 27/02/2014
Perfecto!

Ya que te arreglas bien con la terminal, te puede interesar lanzar jack desde línea de comandos, para entender mejor lo que hace. qjackctl tiene demasiadas opciones que no se deberían utilizar y que confunden un poco, mientras que en la línea de comandos sólo tienes que añadir lo estrictamente necesario, lo que sea diferente a la configuración por defecto que es la más segura. Una vez que des con la configuración ideal, ya será fácil trasladarla a qjackctl para mayor comodidad si te parece.

Por ejemplo, puedes empezar por:

jackd -d alsa -d hw:0,0 -r 96000

Y a ver qué pasa. No olvides "man jackd".

Otra cosa, te insisto en que tienes que asegurarte si hw:0,0 es un dispositivo duplex (capaz de captura y reproducción). Algunas tarjetas tienen la captura y la reproducción en dispositivos separados (por ejemplo, hw:0,0 para captura y hw:0,1 para reproducción) y ni el driver ni jack se ocupan de "juntarlos".
Subir
nch79
#10 por nch79 el 28/02/2014
Si, mejor desde la terminal, normalmente me resulta más cómodo usarla, supongo que porque una vez que lo tienes pillado es todo más inmediato.
He probado lo que me dices y también he leido el manual de jack. Cuando meto esa linea todo parece funcionar correctamente (96khz y 32 bits) y arranca sin dejar ningún fallo en la terminal, pero nada, no hay sonido. En cambio si funciona cuando bajo a 16 bits y 48 khz. Ni siquiera va bien a 32 bits y 48 khz, porque en este caso si hay sonido, pero muy muy distorsionado.
Supongo que cuando consigo los 96khz/32bits desde otro software será debido al resampling del que hablabas, lo que ahora me deja una duda nueva. ¿Al hacer resampling se consiguen realmente esos 96khz/32bits o en realidad solo convierte una señal de 48khz/16bits a 96khz/32bits, pero con la cantidad de información de los 48khz/16bits originales? No se si me he explicado correctamente.
Subir
Pablo_F
#11 por Pablo_F el 01/03/2014
Alguien escribió:
Cuando meto esa linea todo parece funcionar correctamente (96khz y 32 bits) y arranca sin dejar ningún fallo en la terminal, pero nada, no hay sonido.


¿Dónde no hay sonido? Jack toma para sí la tarjeta de audio y el efecto básico es que sólo habrá sonido de aplicaciones "jack-aware". Esto no es radicalmente así porque existen puentes entre sistemas de audio, pero tienes que saber que existen y cómo se aplican o bien, usar una distro especializada que te lo ponga fácil. Primero asegúrate de que funcionan los reproductores que van con jack. Está muy bien mplayer en línea de comandos, o bien aqualung (gráfico). A mplayer le tienes que decir que use la salida de jack: "mplayer -ao jack archivo.audio".

Jack funciona internamente a 32 bits de coma flotante. Eso no significa que tu tarjeta sea capaz de grabar a 32 bits. Eso dependerá de la resolución del convertidor AD y creo que la única forma de saberlo sería consultando la documentación técnica, pero será 24 bits como máximo, si llega. Jack convierte esos datos digitales a 32 bit manteniendo la frecuencia y sin perder ni añadir información al audio capturado. La frecuencia será la correcta supongo, ahora que sabemos que la tarjeta con su driver es capaz de 96000 Hz.
Subir
nch79
#12 por nch79 el 01/03/2014
Si. Me refiero a que cuando pruebo cualquier aplicación bajo jack con esos parámetros o no obtengo sonido o está muy distorsionado, con muchísimo ruido. Aunque en la terminal todo parece estar correcto.
De momento he probado con pure data, ams, sunvox y mplayer. Solo obtengo sonido usando jack a 48khz/16bits, es más cuando pongo 96khz/16bits tampoco funciona.
Lo curioso es que con sunvox, por ejemplo, en su configuración puedes elegir si usar alsa o jack. Cuando elijo alsa directamente y pongo 96khz de rate, funciona perfecto. Si luego cambio la configuración a jack, bajo ese mismo rate (a los bits que sean), no funciona, me aseguro de que todas la conexiones de jack están correctas, incluso reinicio sunvox por si acaso, pero nada.
No se, seguiré probando, pero es probable que use alsa directamente sin pasar por jack, porque de todas formas puedo grabar la mezcla de todo lo que suena con audacity, vía pulseaudio, con la opción de grabar "monitor of audio interno...". Así me deja grabar sin problemas a 32 bits y 96khz.
Lo único que me da miedo de eso es que esté haciendo algún tipo de resampling y en realidad solo esté tomando una señal de 48khz/16bits y la esté multiplicando por dos, solo para decuarla, pero sin tener la información real de esos 96khz/32bits.
De nuevo no se si me explico bien :???:
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo