config alsa

Le
Christophe PEREZ
Bonjour,

J'ai mis il y a quelques temps une carte son Creative Sound Blaster
Audigy FX pour lequel je ne suis pas satisfait du résultat.
Mais je me rends compte que les chose peuvent être largement améliorées
pour de la configuration alsa, ne serait-ce qu'en rajoutant un équaliser
(alsaequal).

Après un peu de tâtonnement, je parviens à un résultat, pas parfait mais
largement meilleur avec .asounrc :
ctl.equal {
type equal;
}

pcm.plugequal {
type equal;
slave.pcm "plug:dmix";
}
pcm.!default {
type plug;
slave.pcm plugequal;
}

Je configure l'équiliser avec alsamixer -D equal.

Aujourd'hui, je me rends compte que du coup, je n'ai plus de micro :
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.8/work/alsa-lib-1.1.8/
src/pcm/pcm_dmix.c:1043:(snd_pcm_dmix_open) The dmix plugin supports only
playback stream
arecord: main:828: erreur à l'ouverture audio: Argument invalide

Si je vire le .asoundrc, j'ai bien le micro (sauf sous discord avec apulse
mais c'est un autre problème) mais plus d'équaliser.

Il me faudrait sans doute modifier la config pour y "intégrer" la
capture, mais je ne comprends pas grand chose (mais ce n'est pas nouveau)
à tout ça.
Je ne sais pas comment exploiter les infos suivantes :

$ aplay -l
**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: Creative [HDA Creative], périphérique 0: ALC898 Analog [ALC898
Analog]
Sous-périphériques: 1/1
Sous-périphérique #0: subdevice #0


$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=Creative
HDA Creative, ALC898 Analog
Default Audio Device
front:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
Front speakers
surround21:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

$ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 0: Creative [HDA Creative], périphérique 0: ALC898 Analog [ALC898
Analog]
Sous-périphériques: 1/1
Sous-périphérique #0: subdevice #0
carte 0: Creative [HDA Creative], périphérique 2: ALC898 Alt Analog
[ALC898 Alt Analog]
Sous-périphériques: 2/2
Sous-périphérique #0: subdevice #0
Sous-périphérique #1: subdevice #1

$ arecord -L
null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=Creative
HDA Creative, ALC898 Analog
Default Audio Device
front:CARD=Creative,DEV=0
HDA Creative, ALC898 Analog

lspci me donne :
01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio
Controller (rev a1)
Subsystem: Micro-Star International Co., Ltd. [MSI] GP107GL High
Definition Audio Controller
Flags: bus master, fast devsel, latency 0, IRQ 10
Memory at df080000 (32-bit, non-prefetchable) [sizeK]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel modules: snd_hda_intel

Je suppose que c'est la sortie HDMI de la carte graphique

Et :
03:00.0 Audio device: Creative Labs Sound Core3D [Sound Blaster Recon3D /
Z-Series] (rev 01)
Subsystem: Creative Labs SB1570 SB Audigy Fx
Flags: bus master, fast devsel, latency 0, IRQ 18
Memory at df104000 (64-bit, non-prefetchable) [sizeK]
Memory at df100000 (64-bit, non-prefetchable) [sizeK]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [170] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [180] Power Budgeting <?>
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

J'ai essayé de nombreuses configs trouvées au hasard de mes recherches,
mais pas forcément exactement adaptées à mon cas, et que je ne suis pas
apte à adapter, donc forcément, pas de résultat.

Si ça parle à un expert, merci d'avance à lui.

PS : Je suis sous Gentoo, avec alsa, sans pulseaudio
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe PEREZ
Le #26531317
Le Tue, 19 Nov 2019 14:59:29 +0000, Christophe PEREZ a écrit :
Aujourd'hui, je me rends compte que du coup, je n'ai plus de micro :
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.8/work/alsa-lib-1.1.8/
src/pcm/pcm_dmix.c:1043snd_pcm_dmix_open) The dmix plugin supports only
playback stream arecord: main:828: erreur à l'ouverture audio: Argument
invalide

Mais fonctionne avec arecord -vv -D plughw:0,0 -f dat /dev/null
"plus qu'à" l'inclure dans la config.
Désolé pour toutes les fautes du premier post, je n'ai pas pris le temps
de me relire, et je constate que mes mains ne font pas du tout ce que
j'espère ;)
PS : je suis très intéressé par une bonne doc, en français de préférence,
expliquant bien tous ces éléments de config alsa (pcm, ctl etc...)
Nicolas George
Le #26531340
Christophe PEREZ , dans le message écrit :
Aujourd'hui, je me rends compte que du coup, je n'ai plus de micro :
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.8/work/alsa-lib-1.1.8/
src/pcm/pcm_dmix.c:1043:(snd_pcm_dmix_open) The dmix plugin supports only
playback stream
arecord: main:828: erreur à l'ouverture audio: Argument invalide

Je ne sais pas si equal supporte l'enregistrement, mais dmix je suis sûr
que non.
Donc il faut que tu utilises, entre default et dmix (ou entre default et
equal, à tester) un plugin asym, pour que la lecture soit envoyée sur
dmix mais l'enregistrement directement sur le périphérique.
Christophe PEREZ
Le #26531346
Le Tue, 19 Nov 2019 20:39:06 +0000, Nicolas George a écrit :
Donc il faut que tu utilises, entre default et dmix (ou entre default et
equal, à tester) un plugin asym, pour que la lecture soit envoyée sur
dmix mais l'enregistrement directement sur le périphérique.

Je vois (un peu) l'idée. Le truc que je ne sais absolument pas faire,
mais je vais creuser.
Franchement, si je connaissais une carte comme mon ancienne SBLive avec
hardware et module complet (mixer, équaliseur ...), je la changerais avec
grand plaisir.
Edit : j'ai cherché avant de poster, et à l'aide de https://
alsa.opensrc.org/Asym, sans doute avec bcp de chance, je suis arrivé à :
ctl.equal {
type equal;
}
pcm.plugequal {
type equal;
slave.pcm "plug:dmix";
}
pcm.dsnooped {
ipc_key 1027
type dsnoop
slave.pcm "hw:0,0"
}
pcm.asymed {
type asym
playback.pcm "plugequal"
capture.pcm "dsnooped"
}
pcm.!default {
type plug;
slave.pcm asymed;
}
qui semble être la solution (et qui en plus me permet enfin d'utiliser
discord avec apulse)
Merci Nicolas pour la piste. Je ne savais vraiment pas dans quelle
direction partir.
Nicolas George
Le #26531354
Christophe PEREZ , dans le message écrit :
qui semble être la solution (et qui en plus me permet enfin d'utiliser
discord avec apulse)

Oui, c'est bien le genre de chose à quoi je pensais.
Note que dsnoop n'est utile que si tu veux enregistrer dans plusieurs
applications en même temps, ce qui est nettement moins utile que dmix.
Christophe PEREZ
Le #26531369
Le Wed, 20 Nov 2019 09:45:38 +0000, Nicolas George a écrit :
Note que dsnoop n'est utile que si tu veux enregistrer dans plusieurs
applications en même temps, ce qui est nettement moins utile que dmix.

Ça je l'ai bien compris, mais l'exemple que j'ai trouvé y fait appel, et
je n'ai pas poussé la réflexion assez loin.
Du coup mon .asoundrc se réduit à :
ctl.equal {
type equal;
}
pcm.plugequal {
type equal;
slave.pcm "plug:dmix";
}
pcm.asymed {
type asym
playback.pcm "plugequal"
capture.pcm "hw:0,0"
}
pcm.!default {
type plug;
slave.pcm asymed;
}
Même si après réflexion, je me demande si le dsnoop n'aurait pas
l'avantage de ne pas bloquer des applis qui voudraient justement "ouvrir"
le micro sans forcément s'en servir. Genre lancer discord ET mumble, et
ne pas utiliser pour la sortie micro sur le premier lancé, mais que ça
bloque l'autre ensuite. Je ne sais pas si je me fais comprendre.
Publicité
Poster une réponse
Anonyme