Webradios et logiciel libre

Posté par  (site web personnel) . Modéré par Jaimé Ragnagna.
Étiquettes :
0
8
nov.
2006
Son
Quel est le rapport entre une grosse webradio étudiante et une petite nouvelle dédiée à la musique libre ? Le logiciel open-source générant leurs flux audio.

Liquidsoap, qui vient de sortir en version 0.3.0, est un langage de script permettant de concevoir simplement des systèmes complexes de flux audio. Ce système étend considérablement les possibilités typiquement offertes. Grâce à lui, construisez la radio de vos rêves. Liquidsoap offre une collection rare de possibilités: mixage de flux, accès transparent aux fichiers distants, playlists dynamiques, émissions live, bot IRC, détection de blanc, multiples sorties, encodage distribué...

Liquidsoap a été développé conjointement à la webradio des élèves de l'École Centrale, RadioPi. Il permet la diffusion continue de playlists dynamiques et de directs, répartis sur huit canaux thématiques, le tout assuré par une solution simple et entièrement libre.

Avec Liquidsoap, une webradio dédiée à la musique libre a aussi vu le jour : Dolebraï. Son but est de faire connaître ce mode de diffusion alternatif et ses artistes, en présentant au public une sélection de morceaux de qualité. Le site web permet d'accéder rapidement aux playlists et aux informations sur les pistes diffusées. Afin d'assurer la qualité de la sélection, les playlists sont faites par les membres du projet. Nous cherchons des partenariats afin d'enrichir sa programmation ! Les morceaux de la playlist de Dolebraï sont distribués par leurs auteurs sous licences type Creative Commons ou Art Libre. L'unique contrainte est que les morceaux soient librement redistribuables. La playlist comporte de nombreuses pistes issues de petits netlabels, mais aussi de structures plus importantes comme Jamendo par exemple. Dolebraï restera autant que possible une radio sans publicité, autant sur le site web que dans le flux audio. Pour l'instant aucun apport financier n'existe. A terme le projet pourrait payer la location du serveur par des dons d'auditeurs ou des partenariats avec les distributeurs. Une autre forme de partenariat viserait à améliorer la bande passante, par la mise en place de relais Icecast ou Peercast.

RadioPi est une grosse webradio enregistrée à la SACEM. Elle émet sept canaux thématiques en Ogg/Vorbis, ainsi qu'un canal "web" sautant d'un thème à l'autre au fil de la journée, émis en Ogg/Vorbis et MP3. Des émissions en direct ont lieu régulièrement, relayées sur tous les canaux.

Liquidsoap est le générateur de flux du projet Savonet, qui regroupe plusieurs librairies et outils programmés en OCaml, autour du traitement audio. Le but initial du projet était de créer des outils pour la radio du campus de l'ENS Lyon, sans pour autant se restreindre à un type de configuration en particulier. Construit sur des concepts simples, liquidsoap s'est tout naturellement transformé en un petit langage de script où le flux audio est un type de base. Liquidsoap était stable en version 0.2.0 -- Avril 2005. La version 0.3.0 apporte de nombreuses nouveautés issues de la collaboration avec RadioPi, mais est surtout plus simple d'utilisation, notamment avec l'arrivée de la documentation sur notre wiki.

Ces deux premières radios publiques utilisant liquidsoap montrent bien comment cet outil permet de gérer simplement les systèmes simples, en s'étendant naturellement à des systèmes plus complexes. On trouvera sur le wiki du projet Savonet les configurations associées à ces deux utilisations:

1. Dolebraï fait dans la simplicité. Le flux est généré à partir d'une simple playlist, statique mais rechargée périodiquement, à laquelle s'ajoutent les jingles. Le site web est s'appuie sur Django, et utilise la base de données contenant les informations associées aux morceaux. L'unique interaction entre liquidsoap et le site web se fait via un fichier XML mis à jour à chaque nouvelle piste.

2. À RadioPi, liquidsoap permet de gérer tous les flux en une seule instance, change de style sur le canal web selon une programmation horaire, saute automatiquement sur les directs. Encore plus fort, la détection de blanc permet de couper les bonus-tracks ou les directs silencieux. Et depuis peu, nous avons mis en place l'encodage distribué: des flux bruts étant transmis en RTP à une instance secondaire de liquidsoap chargée de les encoder. Deux simples PC à 2GHz pourraient ainsi encoder quatorze canaux, malheureusement il n'y en a actuellement que neuf à diffuser. Les playlists thématiques sont gérées par un outil PHP/MySQL développé localement. Liquidsoap interagit avec ce système par le biais de deux scripts PHP: l'un fournit les prochaines pistes à diffuser, l'autre prend note des pistes effectivement diffusées.

Aller plus loin

  • # pas de sorties vers Jack ?

    Posté par  (site web personnel) . Évalué à 4.

    Comme tout lemonde, je me demande si ça correspond à mon projet !
    Je travaille à sonoriser le jardin du nombril du monde (swww.nombril.com pour les curieux). Un système de gestion/diffusion de radio est proche de nos besoins: base de données de sons, gestion de playlistes, diffusion simultanées de plusieurs playlistes sur plusieurs sorties, enregistrements live, gestion par plusieurs postes, ... Bref, je me suis penché sur Rivendell (http://www.salemradiolabs.com/rivendell/) qui est assez complet, mais évidemment tellement dédié radio, que certaines choses sont un peu lourdes pour nous.
    Liquisoap a l'air prometteur. Et pas trop compliqué. En parcourant la doc je vois que je peux faire des sorties vers Alsa. Pas de Jack en vue ? Et pas de connexion à des bases de données ?

    "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

    • [^] # Re: pas de sorties vers Jack ?

      Posté par  (site web personnel) . Évalué à 6.

      Réponse simple: non... pas encore. On nous on déja demandé du jack, on a un embryon de code sur le SVN, mais c'est très loin de marcher. Le truc dur c'est de binder la libjack pour OCaml, le modèle d'exécution est très spécial. Je serais ravi de recevoir des contributions dans ce sens (de l'aide sur le RTP serait utile aussi), mais je me rends bien compte que peu de gens sont à même d'interfacer C et Caml.

      Pour les bases de données. Il y a quelques temps j'avais implémenté dans liquidsoap le protocole DJ (protocole au même titre que HTTP, FTP, ..) utilisant une connection à une table mysql au format particulier. Ocaml-mysql était demi-bugué, et c'était trop spécifique de toute façon, j'ai donc abandonné. Ce que je conseillerait maintenant est de faire un petit script dans le langage de ton choix pour parler à ta bdd, et interfacer liquidsoap avec ce script. Ils font ça chez radiopi. Si tu veux des détails vois le cookbook sur notre wiki ou maile nous à <savonet-users@lists.sf.net>.

      Pour le reste, je suis déja tombé sur Rivendell, qui a l'air très complet. Je n'ai jamais étudié sa conception, ni même essayé. J'ai l'impression que liquidsoap est plus simple, probablement plus facile à étendre, mais étant le développeur j'ai clairement une vision biaisée. En tout cas je suis dispo pour toute question.
      • [^] # Re: pas de sorties vers Jack ?

        Posté par  (site web personnel) . Évalué à 2.

        Petites précisions sur jack. En fait tout dépend du besoin exact. S'il ne s'agit que d'avoir une sortie jack, ça parait jouable pas trop difficilement, en utilisant libjackasyn que je viens de découvrir. S'il faut faire des entrées sorties, ça a l'air encore plus ou moins possible, sauf qu'il y aurait une petite latence, probablement pas gênant dans la plupart des utilisations.

        Bref, pourquoi penses-tu à jack exactement ?
      • [^] # Re: pas de sorties vers Jack ?

        Posté par  (site web personnel) . Évalué à 0.

        Pour le reste, je suis déja tombé sur Rivendell, qui a l'air très complet. Je n'ai jamais étudié sa conception, ni même essayé. J'ai l'impression que liquidsoap est plus simple, probablement plus facile à étendre

        Rivendell n'est pasun langage de script ! C'est un ensemble logiciel complet (en C++ avec Qt).

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: pas de sorties vers Jack ?

        Posté par  (site web personnel) . Évalué à 1.

        Vous connaissez Chuck ?
        les deux projets ont l'air assez proches
        http://chuck.cs.princeton.edu/

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: pas de sorties vers Jack ?

          Posté par  (site web personnel) . Évalué à 1.

          Ouais je suis tombé sur chuck. Ca a son côté sexy avec ses "chucks" dans tous les sens, et les interfaces graphiques de Audicle. Après j'ai aussi l'impression qu'ils utilisent le mot chuck à la va-vite pour plein de concepts pas du tout nouveaux.

          En tout cas il me semble que c'est pas le même but que liquidsoap. Ca travaille surtout à bas niveau, complètement orienté vers la composition simple de flux, avec applications au live coding & co. Liquidsoap permet de travailler sur le flux même, mais a aussi une notion, plus "haut-niveau", de piste dans un flux, et permet de travailler sur des meta-données insérées dans le flux. Enfin, un flux peut se tarir puis redevenir disponible. Bref, tous ces trucs qui nous permettent d'agencer différentes sources de musique dans un script liq, passer de l'une à l'autre en fin de piste, réécrire les meta-données, etc.
  • # anniversaire

    Posté par  (site web personnel) . Évalué à 4.

    A noter que les radios "libres" fêtent leur 25ème anniversaire.
  • # Paquets debian pour tester ?

    Posté par  . Évalué à 3.

    Salut a tous !

    Si il y en a parmis vous qui ont envie de tester, on a package la derniere version :
    http://www.dolebrai.net/~toots/

    Le paquet est encore a tester, mais il devrait etre largement suffisant pour faire des essais ou plus sans se prendre la tete a tout installer/compiler... :)

    Romain

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.