Skip to main content

alsa_in et alsa_out sont deux petits outils en ligne de commande très pratiques fournis avec JACK, comme leur nom ne l'indique pas 😉

Ils permettent d'ajouter et de nommer les entrées et sorties de plusieurs cartes puisque par défaut une seule apparaît dans la liste des connexions :
  • alsa_in greffe les entrées,
  • alsa_out greffe les sorties.

Exemples d'utilisation :
  • faire sortir le son d'une application compatible JACK sur 2 paires d'enceintes, chaque paire étant branchée sur une carte son différente.
  • balancer du son sur 2 enceintes dans 2 pièces, bien utile par exemple lors d'un enregistrement-maquettage,
  • faire sortir des sons différents sur chaque paire grâce aux possibilités de connexions de JACK.
  • du monitoring,
  • pour les utilisateurs de Mixxx qui veulent utiliser JACK comme sortie audio,
  • ...



Installation


Sous Fedora (au moins à partir de la version 20, mais peut être avant...) ces utilitaires sont fournis par le paquet
jack-audio-connection-kit-example-clients et s'installent donc avec la commande
Copy to clipboard
yum install jack-audio-connection-kit-example-clients

Sous Debian (Jessie) ils sont dans les paquets jack1 et jack2

Préparation


Nous allons chercher l'emplacement de vos cartes son :
Copy to clipboard
cat /proc/asound/cards


Ce qui devrait vous retourner un truc comme ça :

Copy to clipboard
olinuxx@olinuxx-desktop:~$ cat /proc/asound/cards 0 [M5461 ]: HDA-Intel - HDA ULI M5461 HDA ULI M5461 at 0xff6f8000 irq 22 1 [USX2Y ]: USB US-X2Y - TASCAM US-X2Y TASCAM US-X2Y (1604:8005 if 0 at 002/002) 2 [U0x71040x2202 ]: USB-Audio - USB Device 0x7104:0x2202 USB Device 0x7104:0x2202 at usb-0000:00:1c.2-2, full speed


Dans cet exemple :
  • la carte O, c'est ma carte intégrée,
  • la carte 1, c'est ma carte USB TASCAM US-224,
  • la carte 2, c'est mon clavier midi MIDITECH MidiStart-2, celui-ci ne nous intéresse pas pour ce tutoriel.


Lancement de JACK sur la première carte


Je vais lancer jackd sur ma carte son interne, celle qui s'appelle 0, par l'intermédiaire de QjackCtl par exemple (ça devrait fonctionner avec la ligne de commande ou LADISH également).
Démarrer QjackCtl sur la carte 0
Démarrer QjackCtl sur la carte 0


Ajout de la 2ème carte son sur le graphe de jackd


Maintenant, je vais dire à JACK de greffer les sorties de ma carte son USB TASCAM US-224 sur son graphe interne. Je vais donc pour cela utiliser alsa_out et le régler sur la carte 1 en accord avec le résultat du cat /proc/asound/cards.

Dans un terminal, tapez :
Copy to clipboard
alsa_out -dhw:1


Puis, jetez un œil dans qJackCtl, vous verrez apparaître 2 nouvelles sorties s'appelant alsa_out :
alsa_out dans les connexions de QjackCtl
alsa_out dans les connexions de QjackCtl



Entrée ou sortie nommée


Si vous voulez donner un nom autre que alsa_out à votre greffe, vous pouvez utiliser l'option -j comme ceci :
Copy to clipboard
alsa_out -dhw:1 -jgreffe

ce qui aura pour conséquence de faire apparaitre votre greffe sous le nom de greffe.

Note : si vous voulez mettre un nom comportant un espace, il vous faudra utiliser des apostrophes :
Copy to clipboard
alsa_out -dhw:1 -j'deuxième sortie'



Lancer ça automatiquement


Si vous voulez lancer ça automatiquement, vous pouvez utiliser la fonctionnalité de lancement de script de QjackCtl : dans qjackctl -> réglage -> options -> activer "Exécuter un script au démarrage" et y mettre votre ligne "alsa_out -dhw:1 -j'deuxième écoute'". Il ne vous reste qu'à redémarrer qJackCtl, et le tour est joué 😉
Automatiser tout ça
Automatiser tout ça



Erreur au lancement


Si en tapant :
Copy to clipboard
alsa_out -d hw:1


Vous obtenez un message du genre:
Erreur
Copy to clipboard
Rate doesn't match (requested 48000Hz, get 32000Hz) Setting of hwparams failed: Invalid argument


Dans ce cas il faut spécifier la fréquence d'échantillonage :
Copy to clipboard
alsa_out -d hw:1 -r 32000


Liens et commentaires


Olivier-olinuxx : alsa_out fonctionne très bien pour ce que j'ai pu en tester, alsa_in fonctionne sur le même principe, il est censé, par exemple, pouvoir "prendre" les entrées de plusieurs cartes-son. Ceci dit, je n'ai pas essayé et des rumeurs qui disent "le problème, c'est qu'il va y avoir des soucis de synchronisation" courent. Le mieux est encore d'essayer et de venir nous raconter votre expérience ici ou dans le forum "Les serveurs son : Jack, PulseAudio et autres". 😀

Pour aller plus loin :


Exemple d'utilisation de la méthode :



[+]

notes de travail

à intégrer dans cette page (en provenance de Jack Tuto Associer deux cartes son)

Solution 2
La deuxième solution est d'utiliser alsa_in
J'ai eu quelques problèmes pour la faire fonctionner mais voici le script que j'utilise sur ma distribution (Debian Wheezy)

Copy to clipboard
jackd -P 70 -p 512 -d alsa -P hw:Pro -r 44100 -p 256 -n 2 & jackd_ID=$! alsa_in -j VYNIL -d hw:CODEC qjackctl kill -s KILL ${jackd_ID} rm ~/.jackdrc&

Cette solution est intéressante car on peut associer d'autres cartes son (mais là on sort un peu du sujet😕).

Par exemple si je veux brancher ma guitare ou un micro sur ma carte son, je peux ajouter la commande suivante :

Copy to clipboard
alsa_in -j FTP -d hw:Pro &

Et si je veux en plus sortir le son sur ma carte interne :
Copy to clipboard
alsa_out -j INT -d hw:0 &

Ce qui me donne le script suivant :
Copy to clipboard
jackd -P 70 -p 512 -d alsa -P hw:Pro -r 44100 -p 256 -n 2 & jackd_ID=$! alsa_in -j VYNIL -d hw:CODEC & alsa_in -j FTP -d hw:Pro & alsa_out -j INT -d hw:0 & qjackctl kill -s KILL ${jackd_ID} rm ~/.jackdrc