Documentation de la WebRadio
Cette page a pour but de rassembler tout et n'importe quoi à propos de la WebRadio, que ce soit technique ou pas. De comment fonctionne le serveur, à comment animer des émissions ...
Sommaire
Animation
A remplir avec des idées utilisées à des émissions, ou avec des idées pour les prochaines ...
Gros schéma technique global
Note : eole.crans.org est utilisé temporairement; c'est un serveur personnel et non un serveur de la WebRadio. (Tout comme webradio.dgmil.net au final ...)
Diffusion
Checklist globale
Légende
Il était une fois ... la Checklist pour le démarrage d'une diffusion !
Noms utilisés :
[Serveur] : serveur webradio.crans.org
[Table] : table de mixage
[Diffuseur] : machine d'où est diffusée l'émission
[Forwardeur] : machine qui s'occupe d'envoyer l'émission à l'extérieur
Les détails d'utilisation sont donnés plus bas dans la documentation.
La checklist
Vérification du serveur
(optionnelle)
[Serveur] front.liq démarré
[Serveur] WRCServ démarré
Le principe est juste de vérifier que le serveur n'a pas planté entre-temps. Pour ce faire, il suffit de récupérer le screen webradio, et de vérifier que tout est encore lancé !
Réglage du son
[Table] Micros réglés
[Table] Entrées réglées
[Table] Retour réglé
[Table] Sortie réglée
[Diffuseur] Entrée réglée sans gain (sinon saturation)
Il faut tout régler de façon à ne pas avoir de saturation, et de façon à ce que le son soit homogène entre les micros, les entrées, etc. ...
Démarrage de la diffusion
[Diffuseur] Lancement de live.liq
[Forwardeur] Lancement de forward.liq
[Serveur] front.liq diffusant live-harbor
[Serveur] front.liq ne prend pas de retard
On commence la diffusion ! Pour ça, on lance les deux scripts de diffusion, puis on vérifie sur le serveur que les canaux diffusent bien l'émission, et qu'il ne rame pas ...
Scripts de diffusion
Ce sont des scripts Liquidsoap (cf. Logiciels Utilisés).
live.liq
C'est le script qui s'occupe de diffuser l'entrée son de la machine qui diffuse vers le serveur WebRadio.
Le script live.liq, dans le repository darcs
forward.liq
C'est le script qui s'occupe de récupérer l'émission et de l'envoyer vers le serveur de diffusion extérieur.
Le script forward.liq, dans le repository darcs
Matériel audio
Câbles
On commence par une petite légende des prises :
XLR : les grosses prises rondes avec trois pointes à l'intérieur
RCA : les prises doubles (blanc et rouge)
Gros jack : les gros jack, qui ressemblent aux mini-jacks mais en plus gros
Mini-jack : les prises "classiques" que l'ont trouve sur les ordinateurs, baladeurs, casques, etc.
Pour l'instant on utilise un peu n'importe quoi comme câbles ...
Table de mixage
Note : La table de mixage appartient à la WebRadio ...
Les entrées
La table de mixage a 9 entrées :
- 4 entrées principales, avec choix entre XLR et Gros jack stéréo
- 4 entrées secondaires, 2 * Gros jack mono, les entrées pouvant se mettre par paire pour faire du stéréo
- 1 entrée platine "CD In", RCA
Les sorties
La table de mixage a 5 sorties :
- 1 sortie principale "Main Out", 2 * Gros jack mono
- 1 sortie principale "Control Room", 2 * Gros jack mono
- 1 sortie "FX", Gros jack stéréo
- 1 sortie "Phones", Gros jack stéréo
- 1 sortie ampli "CD Out", RCA
Les contrôles
En entrée
- Chaque entrée principale ou secondaire a un contrôle de gain, un contrôle de balance stéréo, et un contrôle d'envoi vers la sortie FX
- Chaque entrée principale a en plus un égaliseur 3 bandes, et un contrôle d'amplification d'entrée (Trim)
- L'entrée platine possède deux boutons permettant de l'envoyer ("copie" du son, il n'y a aucun contrôle dessus) vers la sortie principale, et/ou vers la sortie "Control Room"
En sortie
- Un bouton permet de copier la sortie "FX" vers la sortie "Control Room"
- Un contrôle "Master" permet de régler le volume global
- Des LEDs indiquent le niveau de sortie
Réglage du son
Mettre toutes les entrées à zéro (pour éviter les bruits parasites, mais aussi pour ne pas griller de carte son )
- Brancher toutes les entrées
- Brancher les sorties
- Régler les gains des micros les uns par rapport aux autres (avec le contrôle Trim surtout)
- Régler les gains vis-à-vis des autres entrées (ordinateur)
- Régler le gain en sortie (Master)
- Vérifier que l'entrée du diffeur ne présente aucun gain
Séquenceur
Note : Le séquenceur a été prêté à la WebRadio.
A remplir ...
(Il faudrait aussi potasser le manuel à l'occasion ...)
Logiciels utilisés
Repository WRC
Les scripts faisant fonctionner la WRC sont dans un repository Darcs, disponible localement sur le serveur webradio, et sur Internet.
Icecast2
Icecast2 est le serveur de diffusion. C'est un logiciel qui s'occupe juste de recevoir un flux audio, et de le distribuer aux clients.
Il ne s'occupe que de "copier" le flux, à aucun moment il n'en génère vraiment un ... En particulier, il ne peut pas remplir de blanc un flux discontinu, et déconnecte les clients le cas échéant. (C'est pourquoi on utilise Liquidsoap pour combler les trous ...)
C'est un serveur, la configuration est dans /etc/icecast2/icecast.xml, et à part le configurer, on ne peut pas faire grand-chose avec lui.
Liquidsoap
Liquidsoap est un logiciel de génération de flux audio en direct. Il permet de générer des flux à partir de diverses sources : fichiers audio locaux ou distants, entrées audio (prise micro), flux audio (reçus via le serveur Harbor intégré), autres webradios ...
Il fonctionne par scripts, et intègre un pseudo-langage de programmation : le script décrit le contenu des flux et leur diffusion. Une fonction peut ainsi retourner un flux, en combiner plusieurs, ou en lancer la diffusion. Par exemple :
entree = in() : la variable entree contiendra le flux arrivant du micro
output(entree) : le flux contenu dans la variable entree sera diffusé lors de l'exécution sur la sortie audio par défaut
output.icecast.ogg([options...], entree) : le flux contenu dans entree sera envoyé vers un serveur Icecast2 (spécifié dans les options)
source_finale = fallback([source1, source2, source3, ...]) : si la source source1 est disponible, on aura source_finale = source1, sinon, on regarde source2, et ainsi de suite (cf. explication pour le cas de la WebRadio plus bas)
Le meilleur moyen pour créer un nouveau script pour la WebRadio est de s'inspirer des scripts existants (qui sont assez bien documentés).
Côté serveur (webradio.crans.org)
Vue globale
Le serveur webradio.crans.org est un ordinateur acheté en 2004, par le Cr@ns, pour les besoins de la WebRadio. C'est dessus que tournent tous les scripts nécessaires au fonctionnement de la WebRadio.
Toute personne ayant un compte au Cr@ns et les droits WebRadio peut y accéder (avec son login/mot de passe du Cr@ns), et agir sur la WebRadio. (Bien sûr, pour les gens qui n'ont pas de compte au Cr@ns, il est possible de créer un compte en local.) Ces droits donnent un accès assez complet au serveur; ils sont surtout donnés à ceux qui s'occupent du côté technique.
Il n'est pas nécessaire de toucher au serveur webradio pour diffuser une émission !
Les scripts sont situés dans /home/webradio/scripts/. C'est une copie du repository Darcs de la WebRadio.
L'utilisateur webradio est l'utilisateur principal : c'est sous cet utilisateur que tournent les scripts constituant le serveur et assurant la diffusion. Ces scripts sont démarrés automatiquement sur le serveur, et sont récupérés dans un screen afin de permettre aux gens de récupérer le contrôle dessus.
Organisation
Sur le serveur webradio, les différents dossiers importants sont :
/home/webradio/scripts : le dossier avec tous les scripts, en particulier :
./liquidsoap/front.liq : le script de diffusion
./wrcserv/main.py : le serveur WRCServ
./other/ftp_to_m3u.sh : le script de génération des playlistes
/home/musique : le dossier contenant la musique
Les fichiers de "configuration" se trouvent aussi dans /home/webradio/scripts :
radio : décrit les différents canaux
Chaque canal est une ligne de la forme identifiant|Nom|Description|Genre
Exemple : rock|Radio Rock/Metal|Du Rock et du Metal !|Rock
- Lu par la plupart des scripts côté serveur
[identifiant].m3u : playliste par défaut du canal identifié (voir plus bas)
Quelques commandes (pour ceux ayant les droits WebRadio) :
wrc : récupère le screen webradio
sudo iptraf -i eth1 : lance IPTraf en mode "traffic monitor"; permet de voir les connexions, et, en particulier, les auditeurs
Le screen avec tout
Au démarrage du serveur, un screen est démarré en tant que l'utilisateur webradio, et contient :
front.liq : le serveur principal
main.py : le script WRCServ
IPTraf : pour voir les auditeurs
Top : afin de voir l'utilisation processeur des différents scripts
Pour les gens ayant les droits WebRadio, taper la commande wrc permet de récupérer le screen. (Cette commande fait un sudo et demande donc le mot de passe.)
front.liq
Le schéma résume assez bien toutes les parties du script front.liq, qui génère les différents canaux de la WebRadio.
Le script front.liq, dans le repository darcs
En particulier, chaque canal est un fallback (cf. plus haut) :
On diffuse le live s'il y en a un
Sinon, on regarde s'il y a un bypass : si un animateur envoie un flux bypass-[canal] vers le serveur, ce flux remplacera entièrement le flux du canal en question
- Sinon, on regarde s'il y a des chansons qui ont été demandées ("requêtes") dans la file d'attente
- Si rien n'est programmé, on utilise la playliste par défaut (programmation habituelle du canal)
- S'il n'y a pas de playliste, on met du blanc.
Les playlistes
Les playlistes sont au format M3U, un format très simple où chaque ligne contient le chemin vers un fichier audio à lire.
Elles sont générées automatiquement à partir des dossiers correspondant aux canaux /home/musique/[identifiant], par le script ftp_to_m3u.sh.
Le script ftp_to_m3u.sh, dans le respitory darcs
WrcServ
La documentation se trouvera probablement un jour sur la page des ../LogicielsWrc ... ou pas.