Skip to main content

Historique: QJackctl - associer deux cartes son

Aperçu de cette version: 1

Jackd : associer deux cartes son


Il y a des cas ou on voudrait pouvoir associer deux cartes son pour une application bien particulière. Un de ces cas est celui qui nécessite une carte en capture et une autre en playback comme s'il s'agissait d'une même carte.


Voila mon utilisation bien particulière

Problème posé

Je dispose d'une platine vinyle USB, d'une carte son interne, et d'une carte son USB M-audio Fast Track Pro. Mon désir est d'écouter des disques soit sur ma carte son interne soit sur ma carte son USB et de pouvoir les enregistrer.

Mes cartes

Copy to clipboard
$cat /proc/asound/cards 0 [SB ]: HDA-Intel - HDA ATI SB HDA ATI SB at 0xfccf4000 irq 16 1 [CODEC ]: USB-Audio - USB Audio CODEC Burr-Brown from TI USB Audio CODEC at usb-0000:00:13.0-1, full speed 2 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfe97c000 irq 19 3 [Pro ]: USB-Audio - FastTrack Pro M-Audio FastTrack Pro at usb-0000:00:12.0-5, full speed $

  • La carte 0 est ma carte son interne
  • La carte 1 appelée CODEC est ma platine vynile USB
  • La carte 2 est inutilisée (HDMI de ma carte vidéo).
  • La carte 3 est ma carte Fast Trac Pro appelée Pro

Voici donc une solution :

J'ai repéré qu'avec Jack on peut construire une interface composée d'une carte en Playback et une autre en Capture. Pour voir les paramètres : man jackd.

Premier essai

Voici les paramètres que j'utilise dans un premier temps pour lancer jackd :

  • -d alsa => pour utiliser alsa
  • -C hw:1 => ma platine vinyle USB
  • -P hw:0 => ma carte son interne.

J'ai donc lancé jack dans un terminal avec les paramètres suivants :

Copy to clipboard
jackd -d alsa -C hw:1 -P hw:0 -n vynil-int

le paramètre -n pour créer une instance de serveur jack appelée vynil-int (*).

Après cela j'ai lancé Audacity, et dans préférences j'ai paramétré l'interface avec JACK Audio Connection Kit. Le périphérique de lecture système et le périphérique d'enregistrement system sont imposés.

Pour vérifier mes niveau d'enregistrement j'ai voulu connecter Meterbridge.

J'ai lancé Qjackctl et cliqué sur démarrer. Cela à pour effet pour Qjackctl de prendre en compte le serveur jackd que j'avais lancé.

J'ai lancé Meterbridge, puis j'ai connecté system => bridge.

J'ai mis un disque et j'ai lancé l'enregistrement. J'ai mis sur pause et j'ai bien vu dans le fenêtre Connecter que PortAudio et system étaitent connectés.

Voila pour ma connexion carte interne et platine vinyle USB.

Deuxième essai

Pour connecter ma carte Fast track pro je n'ai eu qu'à remplacer le paramètre -P hw:0 par -P hw:3

Automatisation de la solution

Le problème maintenant est que si on veut automatiser cette solution on ne peut pas compter sur les numéros des cartes USB car ils sont affectés dans un ordre aléatoire.

Pour cela on remplace le numéro de carte son par le nom donné par la commande cat /proc/asound/cards :

Dans l'exemple plus haut, la carte 1 s'appelle CODEC et la carte 3 s'appelle Pro.

Ce qui fait que ma commande jackd devient :

Copy to clipboard
jackd -d alsa -C hw:CODEC -P hw:Pro -n vynil-ftp

Ajout des paramètres physiques

Les paramètres physiques des cartes sont pris par défaut si on ne les précise pas. On doit/peut définir tous les paramètres du setup de Qjackctl dans la commande jackd.

Par exemple :

Copy to clipboard
jackd --realtime-priority 89 -d alsa -C hw:CODEC -P hw:Pro -p 128 -r 44100 -n vynil-ftp

Création de scripts

J'ai donc fait un script de lancement de jackd :

fichier start_vynil-ftp.bash :

Copy to clipboard
jackd --realtime-priority 89 -d alsa -C hw:CODEC -P hw:Pro -p 128 -r 44100 -n vynil-ftp & echo kill -9 $! >~/testMAO/kill_vynil-ftp.bash chmod +x ~/testMAO/kill_vynil-ftp.bash

Ce script lance jackd en arrière-plan avec les options que j'ai choisies et puis crée un script kill_vynil-ftp.bash et le rend exécutable. Cela me dispense de faire un ps pour connaitre le PID de jackd pour le tuer. Bien sur le répertoire testMAO est à la convenance de l'utilisateur.

Automatiser avec Qjackctl

J'ai essayé sans succès de lancer ces scripts dans les Options de Qjackctl mais cela ne fonctionne pas. Le start se lance mais le kill est exécuté immédiatement après. De plus les options ne sont pas conservées dans le préréglage. Donc pour le moment je lance le start et le kill en dehors de Qjackctl.

Il y a peut-être d'autres outils qui permettent de faire cela mais je ne les connais pas.

Résumé

En résumé je dois faire dans l'ordre :

1) lancer le script start_vynil-ftp.bash
2) lancer Qjackctl
3) lancer Meterbridge
4) connecter system à bridge
5) lancer Audacity
6) paramétrer Audacity pour qu'il utilise jack
7) travailler avec Audacity
8) lancer le script kill_vynil-ftp.bash

(*) Dans mon expérimentation, le nom donné par le paramètre -n n'a aucune importance car le jackd ainsi lancé est celui qui sera pris par Qjackctl quelque soit l'interface choisie dans le setup. Et donc si on veut changer d'interface il faut arréter la commande jack par CRTL_C ou par kill -9 sur son process ID.


Claude Simon

Historique

Information Version
Wed 13 Sep 2017 18:58 olinuxx regroupement des alias + suppression de la redirection de structure inutile à présent 29
Afficher
Wed 13 Sep 2017 18:14 allany alias+1 28
Afficher
Fri 06 Nov 2015 14:42 olinuxx Recherche et remplacement en masse 27
Afficher
Thu 18 Jul 2013 01:48 utilisateur_anonyme2 26
Afficher
Wed 03 Jul 2013 12:43 pianolivier structure par défaut 25
Afficher
Tue 02 Apr 2013 07:41 utilisateur_anonyme2 24
Afficher
Tue 02 Apr 2013 07:41 utilisateur_anonyme2 23
Afficher
Thu 11 Oct 2012 19:01 pianolivier typo 22
Afficher
Thu 11 Oct 2012 19:00 pianolivier +((Jack et plusieurs cartes son)) 21
Afficher
Thu 11 Oct 2012 18:57 pianolivier cohérence 20
Afficher
Thu 11 Oct 2012 18:56 pianolivier retouche de la comparaison avec alsa_io 19
Afficher
Thu 11 Oct 2012 18:44 pianolivier déplacement d'infos vers ((jack_alsa_io)) 18
Afficher
Thu 23 Aug 2012 14:06 pianolivier mise en page 17
Afficher
Thu 23 Aug 2012 14:02 pianolivier 16
Afficher
Thu 23 Aug 2012 14:01 pianolivier 15
Afficher
Thu 23 Aug 2012 13:59 pianolivier +box dynamique 14
Afficher
Sun 08 Apr 2012 15:02 pianolivier +1lien interne 13
Afficher
Mon 19 Mar 2012 10:56 cjpsimon 12
Afficher
Mon 19 Mar 2012 10:53 cjpsimon 11
Afficher
Mon 12 Mar 2012 23:22 cjpsimon 10
Afficher
Mon 12 Mar 2012 19:43 pianolivier renommage de la page 9
Afficher
Mon 12 Mar 2012 19:39 pianolivier +1 lien forum 8
Afficher
Mon 12 Mar 2012 19:36 pianolivier 7
Afficher
Mon 12 Mar 2012 19:35 pianolivier 6
Afficher
Mon 12 Mar 2012 19:29 pianolivier mise en page 5
Afficher
Mon 12 Mar 2012 19:28 pianolivier mise en page 4
Afficher
Mon 12 Mar 2012 19:26 pianolivier améliorations diverses 3
Afficher
Mon 12 Mar 2012 18:19 cjpsimon 2
Afficher
Mon 12 Mar 2012 18:17 cjpsimon 1
Afficher