Streamer de la musique au local === Le local est désormais équipé d'une paire de haut-parleurs connectés à `hackens-milieu`. Il est possible de se connecter depuis sa propre machine pour diffuser de la musique au local. # Howto 1. Il faut d'abord s'assurer que `hackens-milieu` est allumé (normalement c'est le cas), ainsi que les enceintes (la multiprise au dessus de la porte de l'arrière contôle ça, ainsi que les projos pour une ambiance 100% cozy). 2. Dans le cas d'une configuration réseau avec `NetworkManager`, il est possible d'utiliser [un script](https://git.dgnum.eu/HackENS/script_box/src/branch/main/toggle_hackens_sink.sh) qui active/désactive le transfert de l'audio sur les enceintes. Sinon, il faut : - S'assurer d'être connecté au réseau local, soit par ethernet soit par Wi-Fi en étant connecté à `The_Game`. - Avoir `pactl` (disponible dans les paquets `pulseaudio` et `pipewire` sur la plupart des distros) - Lancer `pactl load-module module-tunnel-sink server=hackens-milieu sink=@DEFAULT_SINK@` puis `pact set-default-sink tunnel-sink.hackens-milieu`. 3. Il suffit ensuite de faire quelque chose qui fait du son (musique, vidéo, jeux...) pour qu'il soit diffusé au local ! 4. Pour se déconnecter, il suffit de, au choix, - Lancer `pactl unload-module module-tunnel-sink` - Se déconnecter du réseau local - Re-exécuter [toggle_hackens_sink.sh](https://git.dgnum.eu/HackENS/script_box/src/branch/main/toggle_hackens_sink.sh) # Problèmes potentiels ## Je n'arrive pas à me connecter, alors que je suis sur le réseau local Est-ce que `hackens-milieu` est bien allumé ? Si il faut réinitialiser la configuration depuis cette machine, il faut : - Se placer dans une nix-shell avec les bons paquets `nix-shell -p pulseaudioFull` - Lancer `~/launch_remote_sink` ou, de façon équivalente `pactl load-module module-native-protocol-tcp auth-anonymous=true` ## J'ai fait un script pour me connecter automatiquement mais j'ai une erreur lorsque j'essaie de configurer le default-sink C'est possiblement une race condition. `pactl` rend le contrôle avant d'avoir fini son opération, donc il arrive que si l'on fait un script avec `load-module` et `set-default-sink` à la suite, ça ne fonctionne pas. Une solution un peu hacky consiste à juste introduire un léger délai (`sleep 0.1` suffit). Une solution plus sérieuse demanderait d'attendre jusqu'à ce que le module soit effectivement chargé.