Recientemente recibí una tarjeta de sonido externa / DAC (Fiio E17) y actualmente estoy tratando de configurarla correctamente en mi instalación de Ubuntu 12.04. Al enchufarlo a través de USB, se reconoce de inmediato y aparece como un nuevo dispositivo en la configuración de audio. La reproducción también funciona bien (excepto algunos problemas menores relacionados con el volumen, que están fuera del alcance de esta pregunta).
Sin embargo, al intentar probar la reproducción de 24 bits / 96 kHz reproduciendo un archivo de audio con este tipo mplayer
, encontré un pequeño problema:
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 2 ch, s24le, 4608.0 kbit/100.00% (ratio: 576000->576000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 96000Hz 2ch s16le (2 bytes per sample)
Como se puede ver en la salida, aunque el archivo reproducido contiene audio de 24 bits / 96 kHz, se vuelve a muestrear a 16 bits antes de la reproducción. Reproducir el mismo archivo con aplay
muestra el motivo:
Playing WAVE 'sr003-02-2496.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
aplay: set_params:1081: Sample format non available
Available formats:
- U8
- S16_LE
- S16_BE
- S32_LE
- S32_BE
- FLOAT_LE
- FLOAT_BE
- MU_LAW
- A_LAW
Sin embargo, /proc/asound/card1/stream0
confirma que el hardware admite 24 bits:
FiiO FiiO USB DAC-E17 at usb-0000:00:1a.0-1.1, full speed : USB Audio
Playback:
Status: Running
Interface = 3
Altset = 1
Packet Size = 388
Momentary freq = 44100 Hz (0x2c.199a)
Interface 3
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000, 96000
Interface 3
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000, 96000
En este punto, noté que en la pestaña de hardware de la configuración de sonido, puedo seleccionar dos perfiles diferentes para la tarjeta de sonido: estéreo digital (IEC958) y estéreo analógico. Sin embargo, cambiar entre estos dos no produce ningún cambio, por lo que puedo decir.
Sin embargo, especificar el dispositivo ALSA ayuda (es decir, aplay -Dhw:1,0 sr003-02-2496.wav
funciona bien y reproduce el archivo sin volver a muestrearlo). Pero dado que Pulseaudio solo muestra un dispositivo / receptor Fiio en la configuración de sonido, no estoy seguro de cómo le diría a Pulseaudio que use el dispositivo ALSA hw:1,0
. Agregando load-module module-alsa-source device=hw:1,0
a/etc/pulse/default.pa
resultados en Pulseaudio abortando module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.
durante el inicio.
Entonces, esa es la introducción, aquí están mis preguntas reales :
- ¿Cómo puedo determinar qué dispositivo ALSA utiliza realmente Pulseaudio cuando selecciono el Fiio E17 en la configuración de sonido?
- ¿Cómo le digo a Pulseaudio que use el dispositivo ALSA hw: 1,0 cuando selecciono el Fiio E17 en mi configuración de sonido?
Información de depuración más (con suerte útil):
- La salida de
aplay -L
- La salida de
aplay -l
- La salida de
pacmd list-sinks
- Y finalmente, en caso de que sea relevante, mi .asoundrc
fuente
mplayer
yaplay
?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
yaplay -Dhw:1,0 sr003-02-2496.wav
uso el dispositivo correcto, si eso es lo que estás preguntando.aplay sr003-02-2496.wav
ymplayer sr003-02-2496.wav
. Y sí, me gustaría usar PulseAudio si es posible.Respuestas:
Respondiendo las dos preguntas:
Puede seleccionar el dispositivo predeterminado en PulseAudio con una GUI como el control de volumen GNOME, pavucontrol o desde la línea de comando usando
pacmd set-default-sink
.Por defecto, PulseAudio abre dispositivos para 44.1 kHz o 48 kHz, lo que conduce a un menor esfuerzo de remuestreo (por lo que el audio de 96 kHz generalmente llevaría a que el dispositivo se abra a 48 kHz. Además, abrimos los dispositivos para S16LE de forma predeterminada.
Ahora, tú tienes dos opciones. Si solo desea reproducir algunos archivos en su formato nativo,
paplay --passthrough <file>
debe hacer el trabajo por usted. Incluso puede especificar qué dispositivo usar.La otra opción es hacer que PA use globalmente 96/24. Puede cambiar eso en
/etc/pulse/default.conf
(alternate-sample-rate = 96000
,default-sample-format=s24-32le
). Esto va a llevar a una mayor utilización de la CPU, sin embargo. Esta es una situación un poco tonta, tener que aplicar la configuración global para todos los dispositivos. Estamos planeando agregar la configuración por dispositivo en algún momento.Tenga en cuenta que después de esto, debe usar el backend PulseAudio de mplayer en lugar de hacer que mplayer hable con ALSA y luego ALSA con PulseAudio. Puede hacerlo con
mplayer -ao pulse ...
y si desea configurarlo permanentemente, agregueao=pulse
a~/.mplayer/config
.fuente
pacmd set-default-sink
solo me permite configurar uno de los sumideros enumeradospacmd list-sinks
, ¿verdad? Aunque supongo que la segunda parte de tu respuesta hace que esa pregunta sea discutible de todos modos;) Entonces, si te entiendo correctamente, Pulseaudio no admite el cambio dinámico entre 24 y 16 bits. Después de cambiar midefault.conf
, mplayer todavía parece volver a muestrear todo a 16 bits antes de pasarlo a pulso ( ver aquí ), es por eso CL. describe en su respuesta?paplay
parece que no me gustan mis archivos de audio :) Reproducir el archivo de 24 bits conduce a una falla por defectoCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.
, y reproducir un archivo de 32 bits incluso bloquea Pulseaudio .Después de la actualización a 13.10, Pulseaudio se configuró de manera predeterminada en HDMI, probablemente porque tengo un monitor adicional conectado a mi computadora portátil (Lenovo T430S) a través de mi puerto de mini pantalla. El sitio web de archlinux proporcionó una respuesta dulce y breve para restablecer o establecer el valor predeterminado:
iniciar sesión y cambiar la salida predeterminada a analógica
correr
$ aplay -l
y encontrar que análogo es la tarjeta 0
correr
$ pacmd list
y encuentra la línea:
"output: analog-stereo + input: analog-stereo" es mi nombre de perfil, así que agregue
en /etc/pulse/default.pa y guarde
fuente
El formato de muestra utilizado en la interfaz entre aplicaciones y PulseAudio no siempre está directamente relacionado con el formato de muestra que PulseAudio utiliza para acceder al dispositivo de hardware.
S24_3LE
no es uno de los formatos de aplicación compatibles de PulseAudio (como se muestra en laaplay
salida). Para permitir que aplicaciones con formatos tan inusuales se ejecuten con PulseAudio, agregue un complemento que realice la conversión automática de formato si es necesario para el dispositivo PCM predeterminado en su.asoundrc
:fuente
.asoundrc
,mplayer
sigue bajando la muestra de audio a 16 bits (es decir, la salida se ve igual que la publicada en mi pregunta) y/proc/asound/card1/stream0
todavía muestra el altset incorrecto que se está utilizando. Si en realidad fue un problema con los formatos admitidos por PA, ¿no deberíamplayer
reducir el muestreo del audio incluso al especificar el dispositivo ALSA, ya que todavía utiliza Pulseaudio?aplay
Funciona ahora? Esto parece ser un error enmplayer
.aplay
todavía falla con la misma salida. Me he dado cuenta ahora que mediante el establecimientodefault-sample-format = s24-32le
en mi.pulse/daemon.conf
me puede obligar PA para utilizar el dispositivo de salida correcto. Sin embargo,mplayer
aún vuelve a muestrear el audio, yaplay
aún falla al intentar reproducir el archivo de audio de 24 bits, por lo que supongo que esto tampoco ayuda.Solo una solución rápida que descubrí usando Lubuntu Trusty Tahr con mi Fiio E17 conectado a través de USB: también me preguntaba sobre la tasa de bits, es por eso que encontré estas publicaciones aquí. Pero como escucho música en un Netbook bastante antiguo, no quería configurarlo en 96/24 de forma predeterminada (la CPU no es la más rápida). Sin embargo, lo que funcionó para mí fue usar VLC y especificar en la configuración de audio experta usar el módulo ALSA para la salida y luego usar el siguiente dispositivo de salida: "Fiio USB DAC-E17, dispositivo de hardware USB Audio Direct sin ninguna conversión"
De esta manera, pude emitir sonido 96/24 al Fiio a través de USB cuando quería (también se muestra en la pequeña pantalla del Fiio), y no tuve que cambiar algo más fundamental en el sistema operativo. Los jugadores como audaces o los navegadores todavía usan la salida de audio de pulso predeterminada. A veces, VLC dice que el dispositivo ya se está utilizando, luego cierre cualquier otro software como audaz, que está utilizando, por ejemplo, la salida de audio de pulso, y debería funcionar.
saludos, Andi
fuente
Aquí está la respuesta correcta a esta pregunta:
De ArchWiki
Determine el dispositivo ALSA hw que desea usar. Luego agregue esto a su archivo default.pa. (Cambie 0,0 para adaptarlo a su dispositivo).
fuente
Agregar
load-module module-alsa-source device=hw:1,0
a/etc/pulse/default.pa
es el enfoque correcto. Sin embargo, los siguientes módulos deben descargarse para evitar conflictos de dispositivos (elinitialization failed
error que obtuvo):Observe cuidadosamente
/etc/pulse/default.pa
y elimine las líneas que contienen esos módulos. Además, en este caso, los dispositivos no se pueden detectar automáticamente, por lo que también desea cargarlosmodule-alsa-sink
para especificar un sumidero manualmente.fuente