Jamulus est un client/serveur permettant une connexion via internet pour faire des "répètes" en ligne par l’intermédiaire du serveur
JACK...
attention
Cette page est rédigée par un nouvel utilisateur linux et peut comporter des erreur merci de votre indulgence et d'y remédier (en particulier les problèmes de dépendances sur paquets à installer et le dossier de compilation/installation)
Site web officiel :
http://llcon.sourceforge.net/index.html 
.
Version actuelle :
3.11.0 du
2024 09 21.
Licence :
GNU GPL v3.
Plateforme :
GNU Linux, Windows, Mac.
Support :
Alsa,
JACK.
Développeur(s) : Volker Fischer.
Description
Jamulus est un logiciel destiné à se retrouver entre musiciens à distance via l'Internet, pour le bœuf ou la répétition.
Il peut être lancé en mode client ou serveur.
Le client Jamulus s'intègre au système Linux via le serveur de son Jack.
Le client se connecte à un serveur. Le serveur central jamulus.dyndns.org présente au clients d'autres serveurs publics, mais on peut aussi avoir un serveur central privé non publié.
Si on veut fournir un serveur, il est déconseillé de le faire la même machine où le client sera utilisé. Voir à ce propos :
Pb enregistré
Et ressuscité 
.
Utilisation
Le serveur central lancé sans l'option -n (donc avec son interface graphique) :
Le client :
Si la liste des serveurs disponibles reste désespérément vide, peut-être disposez-vous vous d'une connexion chez un fournisseur d'accès qui utilise l'approche
"Address plus Port (A+P)" 
. Par exemple, les gaulois qui utilisent Free peuvent faire la demande d'une IP "full stack" sur le portail.
Installation
[+]
Prérequis
[-]
Remarque : toutes les illustrations et exemples de cette page sont faits avec le présupposé que l'option de compilation "CONFIG+=noupcasename" a été utilisée, donc que le nom de l’exécutable est
jamulus (et non
Jamulus comme avant la version 3.3.5 et dans d'autres tutoriels comme sur le site officiel).
Pour un serveur
[+]
- Processeur 1,5GHz - 1 Go de RAM
- 1Mb/s de débit Internet montant et descendant.
- Un ping très bas (le développeur considère à titre personnel que 40ms est son maximum).
- Pour un serveur privé seulement (non publié sur jamulus.fischvolk.de) et qui se trouve derrière un NAT (style box FAI), ouvrir une plage/redirection de ports UDP vers l'ip privée du serveur au port 22124, en fait un port par instance de serveur que vous prévoyez de lancer. Les clients se connecteront alors à ip/nom_public:port_udp_public.
- Pour Linux, le logiciel est distribué sous forme de source à compiler:
Un des membres du groupe devra faire tourner le serveur sur lequel les membres se connecteront, ou alors tous les membres se connecteront à un serveur public publié sur le serveur
jamulus.fischvolk.de. Dans le premier cas (serveur chez un membre), pour le confort de connexion des copains, il lui faudra soit une adresse ip statique, soit enregistrer le serveur (nom et ip publique) dans un compte
noip.com ou
dyndns ou similiaire, ou encore publier le serveur sur le serveur
jamulus.fischvolk.de (mais là, avec une ip dynamique, il peut y avoir des moments où le serveur ne sera pas joignable quelques temps après le changement d'ip).
Pour le client
[+]
- Une carte son full duplex, supportant le taux d’échantillonnage de 48000Hz (ou alors il vous faudra mettre les mains dans le cambouis d'alsa).
Sinon:
(
explication du développeur 
)
Installation
[-]
Pour le serveur
[+]
Télécharger (ouvrir) le source à partir du lien donné en bas de page et l'extraire sur le Bureau.
Dans un terminal (gardez-le ouvert jusqu'à la fin):
Copy to clipboard
cd ~/Bureau/Jamulus3.3.7 # ou le numéro de version téléchargé
Pour une installation conjointe serveur + client sur la même machine (non recommandé, mais en réalité c'est l'exécution simultanée qui est déconseillée: l'installation du client génère aussi la possibilité de lancer jamulus en serveur), la procédure est détaillée dans le § Pour le client.
1) Il faut avoir build-essential et un Qt minimal pour une
installation en pur serveur sans le client :
Copy to clipboard
sudo apt-get install build-essential libqt4-dev
ensuite on compile :
Copy to clipboard
qmake "CONFIG+=nosound" "CONFIG+=noupcasename" "CONFIG+=nocelt" Jamulus.pro
Là vous aurez peut-être une erreur non bloquante concernant Qt-Widget car le développeur utilis
ait Qt5. Les deux dernières options de CONFIG sont apparues depuis la version 3.3.5. À ce jour (Avril 2020, l'option nocelt ne sert plus à rien.
2) puis
Copy to clipboard
make clean
pour nettoyer le dossier source des fichiers inutiles par rapport à votre version de Qt.
3) puis la compilation proprement dite :
4) et pour finir, l'"installation", si on peut donner ce nom ronflant à cette manip qui consiste à déplacer le binaire exécutable généré par la compilation vers un dossier qui est déjà dans le PATH du système :
Copy to clipboard
sudo mv jamulus /usr/local/bin/
Pour info :
- Le paquet libqt4-dev doit rester installé sur la machine après la compilation même si vous prévoyez de ne jamais lancer le serveur avec son interface graphique.
- Les préférences sont conservées dans ~/.config/Jamulus/Jamulusserver.ini quand on quitte le serveur.
Pour lancer le serveur je me suis créé un script "jam" dans mon home (* voir note en section Liens pour les codes pays)
Copy to clipboard
!/bin/bash
# chrt 99 ionice -c1 nice -n -20 jamulus -s -n -g -l /var/log/llconserver1 -e "localhost" -o "jamulus.dyndns.org;Aachen;82" &
#
# chrt 99: run a new process with the given real-time scheduling properties
# ionice -c1: sets the io scheduling class to 1 for real time
# nice -n -20: run with modified scheduling priority -20 (highest priority)
# -s: Jamulus server mode
# -n: the server shall be run in deamon mode and no GUI is started
# -g: send ping messages to the servers in the server list to keep NAT ports open
# -l /var/log/llconserver1: store the server statistic in the file llconserver1
# -e: central server address (since this is a central server, set to "localhost")
# -o: set the name, city and country information
# chrt 99 ionice -c1 nice -n -20 jamulus -s -g -l /var/log/jamulus1 -e "localhost" -o "NomServeur;MonBled;74" # Pour inscrire le serveur sur le central jamulus.dyndns.org
# chrt 99 ionice -c1 nice -n -20 jamulus -s -n -e "localhost" -o "NomServeur;MonBled;74" & # Sans fichier log
service minidlna stop # bonus :) (par exemple)
if [[ $(echo $0|grep jamgpub) ]]; then
chrt 99 ionice -c1 nice -n -20 /bin/jamulus -s -g -l /var/log/jamulus.log -e "jamulus.dyndns.org" -o "NomServeur;MonBled;74" & #Serveur public avec Log et GUI
elif [[ $(echo $0|grep pub) ]]; then
chrt 99 ionice -c1 nice -n -20 /bin/jamulus -s -g -n -l /var/log/jamulus.log -e "jamulus.dyndns.org" -o "NomServeur;MonBled;74" & #Serveur public avec Log sans GUI
elif [[ $(echo $0|grep jamg) ]]; then
chrt 99 ionice -c1 nice -n -20 /bin/jamulus -s -e "localhost" -o "NomServeur;MonBled;74" & #Serveur privé avec GUI sans Log
else
chrt 99 ionice -c1 nice -n -20 /bin/jamulus -s -n -e "localhost" -o "NomServeur;MonBled;74" & #Serveur privé sans GUI ni Log
fi
exit
que je pourrai lancer en terminal après avoir fini de préparer le terrain :
Copy to clipboard
chmod +x ~/jam
ln -s ~/jam ~/jamg
ln -s ~/jam ~/jampub
ln -s ~/jam ~/jamgpub
ainsi :
Copy to clipboard
sudo ~/jam
ou avec l'interface graphique
gksudo ~/jamg
suffixer avec pub pour lancer un serveur public visible sur jamulus.dyndns.org
Pour fignoler en cas d'utilisation graphique :
Copy to clipboard
sudo mv src/res/jamulus.desktop /usr/share/applications/
sudo mv src/res/mainicon.png /usr/share/icons/hicolor/16x16/apps/jamulus.png
sudo mv src/res/fronticon.png /usr/share/icons/hicolor/32x32/apps/jamulus.png
gksudo gedit /usr/share/applications/jamulus.desktop
remplacer la ligne
Copy to clipboard
Icon=jamulus
par
Copy to clipboard
Icon=/usr/share/icons/hicolor/32x32/apps/jamulus.png
fermer gedit en enregistrant.
Puis supprimer tout le bourier qui n'est plus nécessaire :
Copy to clipboard
cd ..
rm -rf Jamulus3.3.7 # ou le numéro de version téléchargé
Rebonus :
Copy to clipboard
gedit ~/jam-stop
#!/bin/bash
killall jamulus
service minidlna start # (par exemple)
Alt+F4
Enregistrer
chmod +x ~/jam-stop
Pour faciliter les mises à jour, le gars Gilgongo nous a pondu
un script qui automatise 
tout ça. Il est très facilement modifiable pour utiliser l'option "CONFIG+=noupcasename" et aussi pour mettre le client à jour (enlever l'option nosound).
Pour le client
[+]
Après avoir installé Jack, la procédure est la même, sauf qu'en remplaçant les deux commandes au § 1) du chapitre "Pour le serveur" par
Copy to clipboard
sudo apt-get install build-essential libqt4-dev libjack-dev # pour Jack v1
sudo apt-get install build-essential libqt4-dev libjack-jackd2-dev # pour Jack v2
qmake "CONFIG+=noupcasename" "CONFIG+=nocelt" Jamulus.pro
la compilation (make clean puis make) génère à la fois le client et le serveur.
Pour fignoler l'utilisation graphique (sans le -n dans le script de lancement) :
Copy to clipboard
sudo mv src/res/jamulus.desktop /usr/share/applications/
sudo mv src/res/mainicon.png /usr/share/icons/hicolor/16x16/apps/jamulus.png
sudo mv src/res/fronticon.png /usr/share/icons/hicolor/32x32/apps/jamulus.png
gksudo gedit /usr/share/applications/jamulus.desktop
remplacer la ligne
Copy to clipboard
Icon=jamulus
par
Copy to clipboard
Icon=/usr/share/icons/hicolor/32x32/apps/jamulus.png
fermer gedit en enregistrant.
Puis supprimer tout le bourrier qui n'est plus nécessaire:
Copy to clipboard
cd ..
rm -rf Jamulus3.3.7 # ou le numéro de version téléchargé
Créer 2 scripts pour le lancement et l'assassinat automatiques de jamulus par QjackCtl :
Copy to clipboard
echo -e '#!/bin/bash\njamulus &'>~/jam-start
echo -e "#!/bin/bash\npkill jamulus &">~/jamkill
chmod +x ~/jam-start ~/jamkill
Lancer QjackCtl...
Aller dans Réglages/Options, cocher les cases "Exécuter un script après le démarrage" et "Exécuter un script à l'extinction" et indiquez respectivement en face le nom de chaque script créé ci-dessus.
Pour info, les préférences sont conservées dans ~/.config/Jamulus/Jamulus.ini quand on quitte le client. Mais mon script de sauvage jamkill empêche jamulus d'enregistrer sa conf quand il meurt violemment : donc à chaque modif de conf, pensez à arrêter jamulus normalement, puis arrêter QjackCtl et le relancer... jusqu'à ce qu'un linuxien plus malin ne propose ici une modif intelligente de jamkill ou des sources du programme :) voir
ce fil 
.
Démarre jack à partir de QjackCtl. Si tout va bien jamulus se lance et tu peux aller faire tes branchements dans la baie de brassage :
Divers
[+]- Autre nom de cette page :
llcon - ancien nom du logiciel