web-dev-qa-db-fra.com

Définition du périphérique ALSA par défaut pour Pulseaudio

J'ai récemment eu une carte son externe/DAC (Fiio E17) et j'essaie actuellement de la configurer correctement sur mon installation Ubuntu 12.04. Lorsqu'il est branché via USB, il est immédiatement reconnu et apparaît comme un nouveau périphérique dans les paramètres audio. La lecture fonctionne également généralement très bien (à l'exception de quelques problèmes mineurs liés au volume, qui dépassent le cadre de cette question).

Cependant, en essayant de tester la lecture 24 bits/96 kHz en lisant un tel fichier audio avec mplayer, j'ai rencontré un petit problème:

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)

Comme le montre la sortie, même si le fichier lu contient de l’audio 24 bits/96 kHz, il est rééchantillonné à 16 bits avant la lecture. La lecture du même fichier avec aplay en indique la raison:

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

Cependant, /proc/asound/card1/stream0 confirme que le matériel prend en charge 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

À ce stade, j'ai remarqué que dans l'onglet Matériel des paramètres audio, je peux sélectionner deux profils différents pour la carte son: Digital Stereo (IEC958) et Analog Stereo. Le passage de l'un à l'autre n'entraîne aucun changement, pour autant que je sache.

Spécifier le périphérique ALSA est utile (c’est-à-dire que aplay -Dhw:1,0 sr003-02-2496.wav fonctionne très bien et lit le fichier sans rééchantillonnage). Mais comme Pulseaudio n’affiche qu’un seul périphérique/récepteur Fiio dans les paramètres audio, je ne sais pas comment je dirais à Pulseaudio d’utiliser le périphérique ALSA hw:1,0. L'ajout de load-module module-alsa-source device=hw:1,0 à /etc/Pulse/default.pa entraîne l'abandon de Pulseaudio avec module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed. au démarrage.

Donc, voilà l'introduction, voici mes questions actuelles :

  • Comment savoir quel périphérique ALSA Pulseaudio utilise réellement lorsque je sélectionne le Fiio E17 dans les paramètres audio?
  • Comment dire à Pulseaudio d'utiliser le périphérique ALSA hw: 1,0 lors de la sélection de la Fiio E17 dans les paramètres sonores?

Quelques informations de débogage supplémentaires (utiles, espérons-le):

8
tmnt

Répondre aux deux questions:

Vous pouvez sélectionner le périphérique par défaut dans PulseAudio avec une interface graphique telle que le contrôle de volume GNOME, pavucontrol ou à partir de la ligne de commande à l'aide de pacmd set-default-sink.

Par défaut, PulseAudio ouvre les appareils à 44,1 kHz ou à 48 kHz, ce qui entraîne un effort de rééchantillonnage moindre (donc, un son à 96 kHz entraîne généralement l'ouverture de l'appareil à 48 kHz. Nous ouvrons également les appareils pour S16LE par défaut.

Maintenant, vous avez deux options. Si vous voulez seulement lire quelques fichiers dans leur format natif, paplay --passthrough <file> devrait faire le travail à votre place. Vous pouvez même spécifier quel appareil utiliser.

L’autre option est de faire en sorte que PA utilise globalement 96/24. Vous pouvez changer cela dans /etc/Pulse/default.conf (alternate-sample-rate = 96000, default-sample-format=s24-32le). Ceci sera mènera à une plus grande utilisation du processeur, cependant. C’est un peu une situation idiote de devoir appliquer une configuration globale à tous les appareils. Nous prévoyons d'ajouter une configuration par périphérique à un moment donné.

Remarque: après cela, vous devriez simplement utiliser le backend PulseAudio de mplayer plutôt que de demander à mplayer de parler à ALSA puis à ALSA avec PulseAudio. Vous pouvez le faire avec mplayer -ao Pulse ... et si vous voulez le configurer de façon permanente, ajoutez ao=Pulse à ~/.mplayer/config.

8
Arun Raghavan

Après la mise à jour vers 13.10, Pulseaudio est passé par défaut à HDMI, probablement parce que je possède un moniteur supplémentaire connecté à mon ordinateur portable (Lenovo T430S) via mon port mini-écran. Le site Web archlinux a fourni une réponse douce et brève pour réinitialiser ou définir la valeur par défaut:

  • se connecter et changer la sortie par défaut en analogique

  • Courir

    $ aplay -l

et trouver que l'analogique est la carte 0

  • Courir

    $ pacmd list

et trouvez la ligne:

active profile: <output:analog-stereo+input:analog-stereo>

"sortie: analogique-stéréo + entrée: analogique-stéréo" est mon nom de profil, alors ajoutez

set-card-profile 0 output:analog-stereo+input:analog-stereo

dans /etc/Pulse/default.pa et enregistrez

  • redémarrer pulseaudio
3
user235147

Le format d'échantillon utilisé dans l'interface entre les applications et PulseAudio n'est pas toujours directement lié au format d'échantillon utilisé par PulseAudio pour accéder au périphérique matériel.

S24_3LE ne fait pas partie des formats d'application pris en charge par PulseAudio (comme indiqué dans la sortie aplay). Pour permettre aux applications avec des formats aussi inhabituels de s'exécuter avec PulseAudio, ajoutez un plug-in qui effectue la conversion automatique de format si nécessaire pour le périphérique PCM par défaut dans votre .asoundrc:

pcm.!default {
    type linear
    slave.pcm Pulse
}
2
CL.

Juste une solution de contournement rapide, j'ai découvert l'utilisation de Lubuntu Trusty Tahr avec mon Fiio E17 connecté via USB: je m'interrogeais également sur le débit binaire, c'est pourquoi j'ai trouvé cet article ici. Mais comme j'écoute de la musique sur un Netbook plutôt ancien, je ne voulais pas le régler par défaut sur 96/24 (le processeur n'est pas le plus rapide). Cependant, ce qui a fonctionné pour moi a été d'utiliser VLC et de spécifier les paramètres audio experts. utiliser le module ALSA pour la sortie, puis utiliser le périphérique de sortie suivant: "Périphérique matériel Fiio USB DAC-E17, USB Audio Direct sans conversions"

De cette façon, je pouvais restituer le son 96/24 sur la Fiio via USB quand je le voulais (cela se voit également sur le petit écran de la Fiio) - et je n’ai pas eu à changer quelque chose de plus fondamental dans le système d’exploitation. Les lecteurs comme audacious ou les navigateurs utilisent toujours la sortie pulseaudio par défaut. Parfois, VLC indique que le périphérique est déjà utilisé - fermez ensuite tout autre logiciel comme Audacious, qui utilise par exemple la sortie pulseaudio, et cela devrait fonctionner.

cordialement, Andi

2
Andi

Voici la réponse correcte à cette question:

De ArchWiki

Déterminez le périphérique ALSA hw que vous souhaitez utiliser. Ajoutez ensuite ceci à votre fichier default.pa. (Modifiez 0,0 en fonction de votre appareil.)

load-module module-alsa-sink device=hw:0,0
1
Hydranix

Ajouter load-module module-alsa-source device=hw:1,0 à /etc/Pulse/default.pa est la bonne approche. Cependant, les modules suivants doivent être déchargés pour éviter les conflits de périphériques (l'erreur initialization failed que vous avez):

  • module-udev-detect
  • module-detect

Examinez attentivement votre /etc/Pulse/default.pa et supprimez les lignes contenant ces modules. De plus, dans ce cas, les périphériques ne peuvent pas être détectés automatiquement. Vous souhaitez donc charger module-alsa-sink pour spécifier également un récepteur manuellement.

1
Huan Zhang