Table des matières

, , ,

Configuration d'un serveur Troop sur debian 10

Page créée le 28 septembre 2021 / Projet en cours

But : avoir un ordinateur capable de lancer rapidement un serveur troop pour livecoder de la musique à plusieurs sans passer une plombe à régler des petits bidules techniques…
En somme : une machine avec un bouton on-off et qui affiche l'adresse IP, la version de troop nécessaire en gros caractères!

Pour se faire, un client léger M73 est utilisé (CL21 Meridion)

Configuration

Système : Debian 10.9 Buster avec LXDE

Réglage des polices :

Configuration du dongle wifi ( Realtek RTL8188CUS)

Ajouter les paquets non-free dans /etc/apt/sources.list

deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free 

Suivant le modèle de clé wifi il peut être nécessaire d'installer des paquets. Pour identifier un firmware manquant, dans un terminal taper

sudo dmesg |grep firm

Puis rechercher dans votre moteur de recherche préféré le paquet qui fourni le firmware désiré, par exemple pour une clé Ralink RT5370 identifiée 148f:5370, le firmware rt2870.bin est fourni par le paquet firmware-ralink

Puis en commande

su                                   # passer en root
apt-get update                       # mise à jour de la liste des paquets
apt install firmware-realtek         # installer les drivers wifi

Le module est reconnu mais n'apparait pas dans wicd, pour qu'il apparaisse il a fallu récupérer le nom de l'interface wifi avec ip ad et l'écrire dans les préférences de wicd (parametres généraux / interfaces réseau / interface sans fil), puis actualiser. Il peut être nécessaire de redémarrer la machine.

Installation de quelques paquets logiciels

su                                   # passer en root
apt-get update                       # mise à jour de la liste des paquets
apt install htop terminator git      # outils de base

Installation pip (python2 et python3 sont pré-installés sur Debian 10) source

su
apt install python-pip               # installer pip2, confirmer avec pip --version ou pip2 --version
apt install python3-venv python3-pip # installer pip3, confirmer avec pip3 --version 
apt install python3-tk               # pour tkinter
pip3 install tk

Installation supercollider

su
apt install supercollider

Installer foxdot

su
pip3 install FoxDot
exit

Démarrer supercollider (dans LXDE : menu démarrer / son et vidéo / supercollider IDE ) Dans l'éditeur de supercollider, écrire la ligne suivante, puis CTRL+ENTER pour l'activer

Quarks.install("FoxDot")

Puis dans le menu Language, choisir Recompile class library

(Je n'installe pas les sc3-plugins, nécessaires pour certains effets : https://github.com/supercollider/sc3-plugins)

Ensuite on démarre avec FoxDot.start dans l'IDE de supercollider (et CTRL+ENTER), ça c'est si tout marche bien, dans le cas présent, ça n'a pas marché aussi vite (cf problème avec jackd ci-dessous)

Installer troop

Récupérer depuis github : https://github.com/Qirky/Troop
Décompresser, puis pour démarrer

python3 /home/xor/troop-0.10.3/run-server.py

Eventuellement

python3 /home/xor/troop-0.10.3/run-client.py

Problèmes rencontrés et résolus

Problème avec jackd

Lancer FoxDot.start déclenchait le message suivant :

could not initialize audio.
Server 'localhost' exited with exit code 0. 

Du à un problème avec jackd qui n'arrivait pas à se lancer …
En fait la carte audio n'est pas hw:0 (on peut s'en rendre compte avec le résultat de aplay -l ) Il faut lancer jackd au préalable, sur la bonne carte audio hardware ( source )

pulseaudio -k              # stopper pulseaudio
jackd -rd alsa -d hw:1     # lancer jackd sur la bonne carte audio!

Démarrage

Procédure pour démarrer FoxDot et Troop (à retester)

pulseaudio -k              # stopper pulseaudio, peut-être superflu
jackd -rd alsa -d hw:1     # lancer jackd sur la bonne carte audio!
# dans l'IDE supercollider :
# FoxDot.start suivi de CTRL + ENTER
python3 -m FoxDot &
# 
python3 /home/xor/troop-0.10.3/run-server.py
# dans un autre terminal
python3 /home/xor/troop-0.10.3/run-client.py &

Démarrage automatique

TO BE CONTINUED…

démarrer tout, récupérer l'adresse IP, créer un fichier html à la volée et l'afficher avec xdg-open

Le script ressemble à ça : (et fonctionne!)

pulseaudio -k                          # arrêter pulseaudio
jackd -rd alsa -d hw:1 &               # démarrer jack sur la carte audio adaptée à cet ordi
sleep 2
sclang /home/xor/troop-0.10.3/start_foxdot.scd &    # démarrer le serveur supercollider et foxdot 
sleep 6
python3 -m FoxDot &                    # démarrer un IDE foxdot            
sleep 4
python3 /home/xor/troop-0.10.3/run-server.py --port=57890 --password="ok" &  # serveur troop
sleep 3
variable=`hostname -I`                 # récupérer l'adresse IP dans une variable
echo $variable
# créer un fichier HTML avec les infos du serveur
echo "<html><h1>Pour se connecter au serveur Troop : </h1><h1>IP : $variable</h1><h1>Port : 57890</h1><h1>password : ok</h1></html>" > troop.html
sleep 2
xdg-open ./troop.html                  # afficher le fichier (le navigateur sera choisi automatiquement)
sleep 2
python3 /home/xor/troop-0.10.3/run-client.py &  # ouvrir un client troop 
echo "tout est lancé"

C'est un peu cracra et il reste à le lancer au démarrage, peut être configurer le client automatiquement aussi

TO BE CONTINUED…