Skip to main content

5 - Les serveurs son : JACK, PipeWire, PulseAudio et autres...


Jack ne se connecte plus automatiquement[Résolu]

France
Bonjur,
au retour des vacances, mises à jour de KX Studio et le lendemain,
au démarrage, plus de son. J'ouvre Cadence et lance jack
(qui est pourtant configuré pour démarrer à la connexion)
et toujours pas de son. Après recherche et bidouilles en tout genre,
je trouve qu'il faut que je force restart et là ca marche.
Je pense qu'il s'agit d'un probleme de carte mouvante car selon la config,
l'ordre des cartes changent :
J'ai acquis il y a peu une webcam avec micro intégré(logitech ?)
la flux video est détecté et fonctionne mais avant la MAJ le son n'était pas détecteé.
Depuis, si la webcam est branché, l'ordre des cartes sons changent:
Avant la webcam, carte son interne 0, loopback 1, usb m audio 2.
Depuis webcam, carte son usb m audio 0, loopback 1 et webcam 2, la carte son interne a disparu.
J'aimerais fixer l'ordre des cartes sons pour qu'au démarrage jack se connecte et qu'il y ait du son sans force restart, l'idéal serait d'avoir carte son interne en 0, loopback en 1,
usb m audio en 2 et webcam en 3.

De plus je suppose que le micro webcam utilise pulseaudio, donc doit-je selectionner
le bridge Alsa-pulseaudio-jack(plugin), actuellent je suis sur Alsa-loop-Jack.

Merci d'avance pour votre aide
Suisse
Il faut fixer l'USB effectivement.

En gros ordonner les périphériques USB. Il me semble qu'il y'a un article ici même. MAis je ne sais plus où.
La dernière fois que j'ai essayé de fixer l'ordre des cartes son dans un fichier ça n'a pas fonctionné. Depuis Debian Jessie (qui utilise systemd maintenant, les fichiers de conf d'ALSA semblent avoir changé) en fait.

Il se trouve que depuis avec Cadence (et même QJackctl que j'ai essayé sur un autre système), choisir explicitement la bonne carte son dans "Device" et laisser "Input Device" et "Output Device" à "none" ou "(par défaut)" à suffit à ce que Jack fonctionne avec la bonne carte son.

Ça semble être le cas aussi sur le portable que j'ai installé il y a quelques jours (Debian Jessie + KXStudio) avec une Scarlett 2i2 comme interface. Pour l'nstant ça charge toujours la bonne carte son comme il faut.

J'aimerais donc savoir si je suis extrèmement chanceux ou si c'est le cas pour tous.
Suisse
Le problème c'est lorsque que tu ajoutes un périphérique USB : webcam, disque externe etc.
Je n'ai pas de webcam (enfin si sur le portable mais je ne l'utilise jamais), et j'utilise des disques externes sur tous mes ordis, surtout le portable, pour l'instant je n'ai pas eu le moindre problème avec la méthode que j'ai indiqué. Du coup ce serait vraiment de la chance ?

Ceci dit il me semble que pour optimiser le système, au moment de faire de l'audio c'est mieux de désactiver tout ce qui peut être parasite : réseau, wifi, webcams, etc.
http://wiki.linuxaudio.org/faq/start#qis_it_possible_to_use_a_label_device_name_instead_of_a_number_when_referencing_a_soundcard_eg_in_qjackctl

Q: Is it possible to use a label (device name) instead of a number, when referencing a soundcard (e.g. in qjackctl)

Instead of 'hw:a.b' (hw:1,0) you can use 'hw:DEVICE_ID' which will tell the command

cat /proc/asound/cards
1 [UA25EX ]: USB-Audio - UA-25EX

here you would specify: hw:UA25EX

full command for jackd: /usr/bin/jackd -P70 -u -dalsa -dhw:UA25EX -r48000 -p512 -n3 -M -Xseq


Voilà, je ne suis pas sûr mais j'ai la forte impression que ce que j'essayais de décrire est lié à cette citation.

Ce que j'en comprend c'est qu'en choisissant le "Device ID" pour désigner la carte son, elle est du coup toujours utilisée quel que soit sa position dans l'ordre des cartes son. Ce qui facilite pour le moins les choses et évite de bidouiller des fichiers.

Mais j'aimerais que ce soit confirmé ou infirmé.
France
Merci à tous pour les réponses,
pour le moment, j'ai toujours pas résolu le schmilblick,
j'ai suivi la procédure pour fixer les cartes (qui si je ne branche pas la webcam
avant le boot démarre toujours dans le bon ordre).

Copy to clipboard
cat /proc/asound/cards cat /proc/asound/modules


Ces 2 là donne les bonnes réponses.par contre le ~/.asoundrc me parait curieux( même si j'y comprend rien),
il est assez différend de ceux que j'ai du modifier par le passé, ayant du réinstaller
le système entre temps et n'ayant pas touché depuis la réinstal, le ~/.asoundrc devrait être proche de
celui-ci

Copy to clipboard
pcm.!default { type plug slave { pcm "jack" } } pcm.jack { type jack playback_ports { 0 system:playback_1 1 system:playback_2 } capture_ports { 0 system:capture_1 1 system:capture_2 } } ctl.mixer0 { type hw card 0 }


Or j'ai (/home/sub26nico/.asoundrc)

Copy to clipboard
# ------------------------------------------------------ # Custom asoundrc file for use with snd-aloop and JACK # # use it like this: # env JACK_SAMPLE_RATE=44100 JACK_PERIOD_SIZE=1024 alsa_in (...) # # ------------------------------------------------------ # playback device pcm.aloopPlayback { type dmix ipc_key 1 ipc_key_add_uid true slave { pcm "hw:Loopback,0,0" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # capture device pcm.aloopCapture { type dsnoop ipc_key 2 ipc_key_add_uid true slave { pcm "hw:Loopback,0,1" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # duplex device pcm.aloopDuplex { type asym playback.pcm "aloopPlayback" capture.pcm "aloopCapture" } # ------------------------------------------------------ # default device pcm.!default { type plug slave.pcm "aloopDuplex" } # ------------------------------------------------------ # alsa_in -j alsa_in -dcloop -q 1 pcm.cloop { type dsnoop ipc_key 3 ipc_key_add_uid true slave { pcm "hw:Loopback,1,0" channels 2 format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 32768 } } # ------------------------------------------------------ # alsa_out -j alsa_out -dploop -q 1 pcm.ploop { type plug slave.pcm "hw:Loopback,1,1" }


ou (/home/sub26nico/dossier/.asoundrc)
Copy to clipboard
pcm.!default { type plug slave { pcm "pulse" } } pcm.pulse { type pulse } type hw card 0 }


Je ne comprend pas pourquoi il y en a un 2eme (peut etre que le dossier vient d'une sauvegarde fait avt la réinstallation).

Je pense fortement que les .asoundrc sont installés par KXStudio.

Mais du coup je veux pas avoir l'air d'insister mais t'as pas essayé ce que je proposais, c.à.d en choisissant la carte son par son nom de périphérique (device name) plutôt que par son numéro dans l'ordre des cartes sons ?
France
Non pas essayer, comment fais t'on?
Comme je le disais plus haut dans mes messages.

youki écrit:
choisir explicitement la bonne carte son dans "Device" et laisser "Input Device" et "Output Device" à "none" ou "(par défaut)" à suffit à ce que Jack fonctionne avec la bonne carte son.


Mais peut-être des captures d'écran seront plus explicites...


Avec Cadence :

JACK Settings Cadence


Avec QJackctl :

JACK Settings Qjackctl


On voit que les noms choisis sont du type 'hw:DEVICE_ID' et pas 'hw:x.y'

Copy to clipboard
$ cat /proc/asound/cards 0 [Loopback ]: Loopback - Loopback Loopback 1 1 [DSP ]: H-DSP - Hammerfall DSP RME Hammerfall DSP + Multiface at 0xfdef0000, irq 17 2 [NVidia_1 ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfe028000 irq 23 3 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfbffc000 irq 16 4 [K32 ]: USB-Audio - Keystation Mini 32 Keystation Mini 32 Keystation Mini 32 at usb-0000:00:02.0-2, full speed


Là on voit que ma Multiface a bien 'hw:DSP' comme "device ID".

Ça fonctionne très bien chez moi sur tous mes systèmes, je ne sais pas si c'est le cas partout.
Salut

youki écrit:
La dernière fois que j'ai essayé de fixer l'ordre des cartes son dans un fichier ça n'a pas fonctionné. Depuis Debian Jessie (qui utilise systemd maintenant, les fichiers de conf d'ALSA semblent avoir changé) en fait.


T'es sûr je vient de faire un essais concluant:

Je créer mon fichier
Copy to clipboard
pluma /etc/modprobe.d/alsa-base.conf


Je lui claque ça:

Copy to clipboard
# My config options snd-aloop index=1 options snd-hda-intel index=2 options snd-bebob index=0


Je reboot et ...

Copy to clipboard
utilisateur_anonyme@System-D ~ $ cat /proc/asound/cards 0 [FA101 ]: BeBoB - EDIROL FA-101 EDIROL EDIROL FA-101 (id:3585, rev:1), GUID 0040ab0000c210b8 at fw1.0, S400 1 [Loopback ]: Loopback - Loopback Loopback 1 2 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0xf8400000 irq 30 utilisateur_anonyme@System-D ~ $ cat /proc/asound/modules 0 snd_bebob 1 snd_aloop 2 snd_hda_intel utilisateur_anonyme@System-D ~ $


Nikel dans l'orde que je veux alors que je veux et je retrouve aussi l'ordre dans :

Copy to clipboard
cat /proc/asound/pcm
alors qu'il était réellement différent avant l'insertion de mon alsa-base.conf ? et pareil il a bien réécrit l'ordre sur
Copy to clipboard
cat /proc/asound/hwdep


Alors si peux tester de ton coté car j'avoue que si je suis le seul à arriver à ce résultat je pige pas ...
France
Youki, en fait j'avais déjà testé, sans succès, je viens de le refaire, pas mieux...
Le truc qui reste, ça marche très bien si je force restart, quelque soit les réglages, patch alsa....mais
ca ne se connecte pas tout seul(jack) alors que c'était le cas avant, la fonction start dans cadence démarre bien
jack mais sans aucun son qui sort par ma carte usb.
et alsamixer t'as essayé? si ça ce trouve le volume est à 0 ...
France
mon alsa-base.conf est correct, l'ordre des cartes est toujours le même (à condition de ne pas brancher
la webcam avant le boot), d'ailleurs, je l'avais fait en suivant tes recommandation utilisateur_anonyme,
le problème semble venir d'ailleurs, je penche pour le asoundrc,
mais étant ignorant en la matière, je préfère avoir un avis plus avisé.
France
Pour alsa mixer, si le volume était à 0, il le serait également en faisant force restart dans cadence, non ?
Ce n'est pas l'objet de la question:
Si le volume de sortie de ta carte son est à zero quelque soit le programme t'aura que dalle en sortie ...

Pour le asoundrc je t'explique : c'est cadence qui écrit le asoundrc dont il a besoin.
Si par exemple tu as avec cadence choisi jack=> pulseaudio alors il correspond à :


Copy to clipboard
pcm.!default { type plug slave { pcm "pulse" } } pcm.pulse { type pulse } type hw card 0 }


si ensuite tu change la config dans cadence et que tu tourne avec aloop alors cadence réécrit ton asoundrc de la sorte:

Copy to clipboard
# ------------------------------------------------------ # Custom asoundrc file for use with snd-aloop and JACK # # use it like this: # env JACK_SAMPLE_RATE=44100 JACK_PERIOD_SIZE=1024 alsa_in (...) # # ------------------------------------------------------ # playback device pcm.aloopPlayback { type dmix ipc_key 1 ipc_key_add_uid true slave { pcm "hw:Loopback,0,0" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # capture device pcm.aloopCapture { type dsnoop ipc_key 2 ipc_key_add_uid true slave { pcm "hw:Loopback,0,1" format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 4096 } } # duplex device pcm.aloopDuplex { type asym playback.pcm "aloopPlayback" capture.pcm "aloopCapture" } # ------------------------------------------------------ # default device pcm.!default { type plug slave.pcm "aloopDuplex" } # ------------------------------------------------------ # alsa_in -j alsa_in -dcloop -q 1 pcm.cloop { type dsnoop ipc_key 3 ipc_key_add_uid true slave { pcm "hw:Loopback,1,0" channels 2 format S32_LE rate { @func igetenv vars [ JACK_SAMPLE_RATE ] default 44100 } period_size { @func igetenv vars [ JACK_PERIOD_SIZE ] default 1024 } buffer_size 32768 } } # ------------------------------------------------------ # alsa_out -j alsa_out -dploop -q 1 pcm.ploop { type plug slave.pcm "hw:Loopback,1,1" }


Et si tu prend alsa => plugin jack alors tu revient à un truc de base:
Copy to clipboard
pcm.!default { type plug slave { pcm "jack" } } pcm.jack { type jack playback_ports { 0 system:playback_1 1 system:playback_2 } capture_ports { 0 system:capture_1 1 system:capture_2 } } ctl.mixer0 { type hw card 0 }


Donc dans un temps choisi toi la configue dont tu as besoin et au pire tu saque pulseaudio s'il te casse trop les miches ...

Copy to clipboard
apt-get remove --purge pulseaudio
et tu reboot...
T'es sûr je vient de faire un essais concluant:


Je suis sûr que ça n'avait pas fonctionné, oui, c'est la méthode que j'utilisais depuis des années.
Depuis je n'ai pas rééssayé puisque la méthode que j'ai décrite a fonctionné sur tous mes systèmes par la suite.
Mais si j'ai besoin je réésayerai du coup.
France
Miracle, ça marche, pourtant j'ai rien changé depuis quelques jours,
juste une mise à jour hier, et ce soir, jack se connecte direct sur la carte usb....
France
Puisque ça a l'air de tenir, on va considérer l'affaire comme résolue.
Pour info, j'avais laisser les paramètres dans cadence comme Youki l'a expliqué (device = carte usb et sans préciser
les entrées/sorties), cela n'avait pas marcher sur le coup (les coups devrais je dire car j'ai fait la manip 2 fois avec redémarrages à la clé sans succès) mais ça fonctionne maintenant,
merci à vous tous pour ls coups de main et explications