Netjack est une fonctionnalité intégrée à
Jack depuis la version 0.116 et utilise le protocole UDP.
Elle permet d'utiliser un montage serveur-client entre plusieurs démons
JACK présents sur plusieurs ordinateurs connectés par le réseau pour transmettre l'Audio, le
MIDI et la synchronisation
Jack-Transport.
L'ordinateur distant client devient une source d'entrée/sortie Audio, MIDI et transport sur l'ordinateur serveur.
Cette fonctionnalité se décline en deux implémentations différentes
netJack1 (disponible dans JACK1 et JACK2) et
netJack2 (uniquement dans JACK2). Les commandes et les fonctionnalités ne sont pas les mêmes.
Cela permet, par exemple, :
- de relier plusieurs ordinateurs en audio et midi par le réseau, et de les synchroniser par le transport jack.
- d'utiliser les ressources de plusieurs ordinateurs pour des grosses sessions avec pleins de pistes, d'effets et tout le toutim...
- faire de la musique à deux ou plusieurs reliés par le réseau!
- d'utiliser le DSP d'une machine distante sur une machine avec une petite carte son intégrée.
- et certainement encore d'autre chose !
Principe
[+]
Ces deux illustrations montrent les possibilités et utilisations typiques de
Netjack.
Machines dans une même pièce
Chaque machine fait tourner un démon Jack.
Sur le serveur, le backend est Alsa ou Freebob-FFADO, c'est à dire, il tournera comme d'habitude avec l'interface audio présente.
Sur le client, le backend est net, c'est à dire Jack n'utilise pas de carte son, mais le réseau pour envoyer les données.
Ces données sont acheminées par jack_netsource sur le serveur.
Jack_netsource produit un port entrée/sortie supplémentaire dans le Jackd du serveur.
L'intégralité de l'information audio n'est convertie qu'à la carte son du serveur.
Le client n'a même pas besoin de carte son (!) en cas d'utilisation locale.
En revanche, si un monitoring sur la machine client est nécessaire (si on n'est pas dans la même pièce), les utilitaires alsa_in/out sont là pour ça.
Si les deux ordinateurs se trouvent dans la même pièce reliés par ethernet (100Mbit/s en duplex!), aucune compression n'est nécessaire même pour plusieurs canaux audio duplex, et l'ordinateur client envoi ses données audio et MIDI directement par ethernet à l'autre serveur Jack.
|
|
Machines distantes
Dans le cas de la connexion par intermédiaire d'un routeur, un codec appelé CELT assure la compression des données audio afin d'être compatible avec le débit disponible.
Il faut s'assurer que les ports correspondants sont forwardés vers les ordinateurs et que la bande passante du réseau dans les deux directions upload et download est suffisante (de l'ordre de 50kByte/s en upload suffisent pour une qualité raisonnable).
Pour assurer une entrée/sortie audio physique pour le client, on se sert d'alsa_in et alsa_out.
|
|
Pré-requis dans tous les cas
[+]
- La version de Jack doit être au moins 0.116.1,
- La version du codec CELT (qui permet la compression audio avec une latence basse à travers le réseau) doit être la même version sur les 2 ordinateurs,
- Une connexion IP active sur chaque machine,
- Un port UDP ouvert (le numéro peut être choisi) sur chaque machine,
- Pas de filtrage icmp,
- Un bon test est de s'envoyer des requêtes
ping IP_de_la_machine
|
Voir aussi <br />
- Si la connexion ne passe pas par l'Internet, c'est alors l'adresse IP locale. La commande ifconfig permet de l'obtenir.<br />
- Si la connexion passe par l'internet, il faut obtenir l'adresse IP externe attribuée en général dynamiquement par le fournisseur. Elle se trouve sur la page de configuration du routeur.
|
Mise en route
[+]
Il faut décider quelle machine sera serveur et quelle machine sera client.
Comme montré sur les figures, l'audio est envoyé par
Jack uniquement sur la carte son du serveur.
En général, le serveur sera donc la machine avec la meilleure carte son.
Le client n'a même pas besoin de carte son (!) en cas d'utilisation locale.
En revanche si un monitoring sur la machine client est nécessaire (si on n'est pas dans la même pièce), les utilitaires
alsa_in/out sont là pour ça.
Connexion par une liaison ethernet dans un réseau local: câble croisé ou switch
- Sur la machine client : dans un terminal, tapez
jackd -R -d net -l 5060
puis lancez QJackCtl sur la machine serveur et connectez tout comme d'habitude dans QJackCtl
Vous pouvez maintenant entendre les sons produits sur le client sur la carte audio du serveur.
Les transports Jack sont synchronisés.
Pour entendre le son du client sur sa carte son interne également, tapez
alsa_out -d hw:0 -f 100000
Vous verrez une sortie supplémentaire apparaitre dans
QJackCtl à laquelle vous devez aussi connecter les sources Audio. (Image à ajouter: alsa_out dans qjackctl)
Les connexions à faire dans Qjackctl
Sur le serveur vous verrez :
- une entrée/sortie audio supplémentaire apparaître dans QJackCtl onglet AUDIO: netsource
- une entrée/sortie MIDI apparaître dans QJackCtl onglet MIDI (non ALSA): netsource
L'image ci-contre montre les entrées netsource dans QJackCtl. Toutes les sources connectées à netsource passeront par le réseau.
Connectez netsource à la sortie system et toutes vos sources audio du serveur à la sortie netsource pour les acheminer du ou vers le client.
|
|
Pour les connexions MIDI ALSA
Pour connecter des applications MIDI ALSA, on peut se servir de l'utilitaire a2jmidid.
Pour envoyer des données MIDI de l'interface UA-25 vers le réseau, il faut connecter les entrées/sorties netsource à a2jmidid Through, et, dans l'onglet ALSA, on connecte l'UA-25 à MIDI Through également. C'est montré dans les images ci-contre :
|
Onglet MIDI :
Onglet ALSA :
|
Connexion par internet
[+]
En plus des points précédents, il faut assurer le suivant
sur les deux postes à relier que :
- Le port UDP choisi doit être "forwardé" ("ouvert") du monde extérieur vers l'ordinateur local. Ceci peut nécessiter des changements sur le pare-feu de votre routeur et votre ordinateur. C'est le même principe que pour ouvrir les ports pour amule. Par exemple, si vous êtes en LowId dans amule, c'est que vos ports sont mal ouvert. Dans un tel cas, netjack ne fonctionnera pas.
- Les deux ordinateurs doivent répondre à une requête 'ping' provenant d'internet (pas de filtre icmp)
- Jack doit être compilé avec le codec celt (de préférence celt>0.5), ce qui est le cas avec les paquets des distributions
- Il est important de disposer des utilitaires alsa_in et alsa_out. Ceci est le cas avec les paquets des distributions.
Sur la machine serveur
|
Hep ! La commande jack_netsource --help donne la liste des autres options.
|
Sur la machine client
- Tapez
jackd -R -d net -l 5060
- Lancez
QJackCtl
- Connectez tout normalement
Pour entendre le son du client sur sa carte son interne également, tapez
alsa_out -d hw:x -f 100000
x étant l'identification de la carte son.
Les connexions dans
QJackCtl seront les même pour internet que celles montrées plus haut pour l'utilisation du réseau local.
Guide de démarrage rapide (style mémo)
[+]
Connexion ethernet locale:
-Branchez les deux machines sur un switch ethernet
-Attribuez des adresses ip aux deux machines
-Ouvrez un port UDP (exemple 5060) sur les deux machines (alternative: desactiver le pare-feu)
Sur le serveur:
- Lancez
QJackCtl
- Tapez
jack_netsource -r5060 -p5060 -H IP_de_l_autre_machine
Sur le client:
- Tapez
jackd -R -d net -l 5060
- Lancez
QJackCtl
Ensuite
- Dans
QJackCtl du serveur : connectez
netsource vers
system out
- Dans
QJackCtl du client : connectez tout normalement.
Connexion par internet ADSL (raisonnable à partir de DSL 4Mbit/s):
- Déterminez les deux adresses IP extérieures
- Forwardez le port choisi et désactiver un filtre
icmp éventuel sur les deux routeurs
Sur le serveur:
-Lancez
QJackCtl normalement
-Tapez
jack_netsource -r 5060 -p 5060 -c qualité_comp -l latence -H IP_de_l_autre_machine
Sur le client:
-Tapez
jackd -R -d net -l 5060
-Tapez
alsa_out -d hw:x -f 100000
Ensuite
-Dans
QJackCtl du client connectez à
alsa_out tout ce que vous souhaitez entendre localement
Cet article, bien que bien fait et toujours pertinent dans le fond, est maintenant obsolète du point de vue commandes, qui ont évolué. Il est conseillé donc de lire d'abord cet article jusqu’à avoir compris le principe, puis de vous rendre sur
Lien vers netjack2 sur le site de jackaudio
pour des commandes plus conformes à l'actuelle implémentation de jack. Testé sous Debian 8, ça fonctionne très bien après quelques tâtonnements !
Vous pouvez aller voir également cette
discussion sur NetJack.
Site de NetJack :
http://netjack.sourceforge.net/
.
Logiciels similaires :
Les informations de cette page ont été rassemblées par
Mysth-R et
dharanamrs suite à la recherche d'une simple synchronisation de deux séquenceurs.
[+]