Touchradio

Touchradio propose une interface graphique moderne, fluide et adaptée à une utilisation tactile permettant de contrôler un lecteur connecté à un serveur Logitech Media Server.

Fonctionnalités principales

  • Commandes de lecture de base : Lecture, pause, précédent, suivant, volume
  • Parcours de la librairie musicale (librairie et favoris)
  • Affichage des pochettes
  • Affichage d’informations sur le morceau en cours de lecture (pochette, artiste, album, titre,…)
  • Interface moderne, fluide et conçue pour être utilisée via un écran tactile
  • Conçu pour fonctionner sur un RaspberryPi, mais devrait tout aussi bien fonctionner sur n’importe quel système compatible avec Qt5.

Screenshots

Premier prototype

Ce premier prototype a été assemblé dans un casier en bois. Ce casier de bière spéciale avait les dimensions parfaites pour me servir de support pour l’écran tactile. Le programme était développé en Python et basé sur la librairie Kivy.

Deuxième prototype

Il s’agit du prototype actuel. Le boîtier a été fabriqué sur mesure en grande partie par un collègue, et le soft est maintenant écrit en C++ et est basé sur Qt5.

Architecture

Touchradio n’est en fait qu’un élément d’un ensemble composé de :

Touchradio est un frontend graphique qui permet de se connecter au serveur LMS ainsi qu’à a lecteur afin de contrôller la lecture des chansons et des flux internet. LMS est utilisé par Logitech pour supporter la gamme de produit Squeezebox. Cette gamme est composée de plusieurs modèles de Squeezebox qui peuvent se connecter à un serveur LMS. Cela permet aux utilisateurs de disposer de plusieurs lecteurs qui se connectent à un serveur personnel. Ce serveur contient la librairie musicale qui va être partagée vers tous les lecteurs connectés. Il s’agit là de produits commerciaux, mais Logitech a décidé de distribuer le code source sous la licence GNU General Public License. Du coup, le monde open-source a accès au code et à la documentation du serveur. LMS est disponible entres-autres sur PC Windows, Mac OSX, Linux et bien sûr, sur Linux ARM et plus particulièrement pour le RaspberryPi! LMS dispose d’une interface web très complète qui permet de contrôller la lecture sur chaque Squeezebox, parcourir la librairie, paramétrer le système,…

Squeezelite, quant à lui, est un émulateur de Squeezebox. Il s’agit donc d’un programme qui se fait passer pour une Squeezebox vis à vis du LMS. Squeezelite se charge de récupérer les flux audio provenant de LMS et de les diffuser sur l’interface audio du système qui l’exécute. Squeezelite ne fournit pas d’interface graphique, mais il est possible de le commander via un API (CLI) du Logitech Media Server.

Touchradio tire donc parti des fonctionnalités de ces deux programmes disponibles gratuitement et en open-source pour permettre à l’utilisateur de contrôller un lecteur de type Squeezebox.

Historique

L’idée de ce projet m’est venue quand le petit radio-cd que j’utilisais dans ma cuisine et tombé en panne. A ce moment-là, plusieurs solutions s’offraient à moi. Je pouvais le remplacer par un autre modèle équivalent mais… la FM et les CD, c’est un peu has-been, non? J’ai ensuite essayé d’utiliser mon smartphone et mon ipod mais ce n’était pas pratique : je passais mon temps à déconnecter et reconnecter les appareils, les déverrouiller pour le moindre changement de chanson ou de volume, et je ne vous parle pas des problèmes de batterie…

Et c’est à ce moment là que j’ai reçu mon premier RaspberryPi. Il n’a pas fallu longtemps pour que je lui trouve une utilisation concrète et utile! Je vais en faire mon lecteur audio de cuisine, qui me permettra d’écouter ma bibliothèque musicale, mes radios internet,…

S’en est suivis une phase de recherche et d’analyse : il m’a fallu trouver un écran tactile, la librairie graphique qui répond à mes besoins, le système audio sous-jacent (j’ai choisis LMS et Squeezelite, finalement, mais j’avais aussi étudié OmxPlayer et MPD, par exemple).

Et enfin, une fois tous ces choix effectués et testés, je suis passé à la phase de développement de ce premier prototype. Certes, il ne s’agit pas d’un projet monstrueusement grand et compliqué, mais il n’est pas toujours facile de trouver du temps et de la motivation après avoir passé 8h à coder au boulot, et en ne délaissant pas la vie privée, les hobbys et les autres projets!

Développement

Touchradio utilise Qt5 et QtQuick2. Qt5 étant une librairie multi-plateforme, Touchradio est sensé fonctionner sur n’importe quel système compatible avec Qt5/QtQuick. Qt5 a été choisit pour ses fonctionnalités graphiques orientées applications mobiles et tactiles et pour son support sur le RaspberryPi. Le code source est écrit entièrement en C++, sans aucune autre dépendance.

Etat du projet

Le projet en est a ses débuts. L’état actuel du programme en fait un prototype de démonstration. Il implémente les fonctionnalités de bases, mais ni complet ni exempt de bugs. D’ailleurs, je déconseille à quiconque de se servir du code source actuellement! Il est dans un état lamentable, et jamais je n’oserais produire du code de ce genre à mon boulot! Mon but était au départ d’arriver à ce prototype, de me persuader que je pouvais arriver à ce résultat. Maintenant que j’y suis arrivé, je vais passer par une phase de refactorisation importante.

Touchradio fonctionne! Je l’utilise dans mon salon et dans ma cuisine depuis que l’état du programme lui permet de démarrer correctement, et j’apprécie chaque amélioration que je lui apporte au jours le jours. Cependant, il n’est pas encore prêt à être utilisé par l’utilisateur lambda, qui recherche une solution clé sur porte qui fonctionne du premier coup. Pour le moment, le programme est assez peu flexible en terme de configuration réseau et taille d’écran, par exemple.

Néanmois, si ce projet vous intéresse, n’hésitez par à me donner votre avis, à le tester, à m’aider à améliorer le code, ajouter des fonctionnalités,…

Et, comme vous l’aurez remarqué sur les photos, la partie mécanique en est réduite à sa plus simple expression: comme boitier, j’utilise… un casier de bière en bois, dont les dimensions sont parfaitement adaptées à l’écran tactile! Et niveau câblage, on a déjà vu mieux! Si vous avez des suggestions pour emballer le tout de manière un peu plus esthétique, elles sont les bienvenues!

Code source

J’ai créé un repository sur GitHub : Touchradio sur GitHub.