md
Lecteur de postes de radio sur Internet avec MOC
2018-05-16

RSO (Radio sans ondes) est un lecteur de radio sur Internet écrit avec Lazarus, l'EDI libre en Free Pascal. Parce qu'il utilise le lecteur de média audio Music on Console, il fonctionne sous Linux. Je l'utilise sur mon ordinateur de bureau UbuntuUbuntu 17.10.

RSOn'est pas destiné à remplacer un lecteur multimédia à part entière tel que Rhythmbox qui est lecteur de flux audio sur Internet et bien plus et qui est beaucoup plus efficace dans la gestion de listes de lecture et autres. L'application est un banc d'essai pour un lecteur de radio Internet construit autour d'un Raspberry Pi pour améliorer une mini-chaîne stéréo plus vieille. Je vais l'utiliser pour simuler et tester les interfaces utilisateur matérielles possibles. Comme le montre l'image ci-dessus, je pense actuellement à l'utilisation d'un écran LCD classique et de deux encodeurs rotatifs à bouton-poussoir. Chacun des encodeur est représenté par un contrôle flèches haut/bas et un bouton. Il y a aussi un bouton marche/arrêt représenté par le point rouge.

Actuellement, l'encodeur rotatif de gauche est un contrôle de volume/sourdine tandis que l'encodeur de droite est un sélecteur de station. Il y a une analogie évidente avec un autoradio à l'ancienne, mais si le volume et la syntonisation devaient être les seules fonctions à gérer, un seul encodeur rotatif suffirait probablement.

Il existe des boutons supplémentaires qui ne représentent pas les éléments de l'interface. Deux ne servent qu'à des fins de débogage. Le bouton info montre l'état actuel du service Music On Console.

Le bouton more affiche la communication entre l'application et le service MOC en temps réel.

Parce que je l'utilise pour lire des stations tout en travaillant sur mon ordinateur, l'application peut être réduite à une icône dans la barre des tâches. Ceci est fait en cliquant sur la case blanche avec le trait de soulignement dans le coin supérieur droit. Bien sûr, il n'y aura pas d'objet équivalent dans le projet physique. Les étiquettes indiquant le niveau sonore et l'index de la station de radio affichée existent à titre indicatif et ne feront pas partie du matériel.

La fenêtre de RSO peut être déplacée n'importe où sur l'écran, sauf lorsqu'on tente d'établir une connexion vers une nouvelle station. Il y a un défaut de conception de logiciel, bien que je ne sois pas trop sûr si j'ai besoin de m'inquiéter à ce sujet.

La liste des stations connues est conservée dans un fichier au format JSON relativement simple. Le contenu exact de ce fichier n'est pas encore définitif. Contrairement à l'application typique de lecteur multimédia, le contenu du fichier doit être ajusté manuellement par l'utilisateur. Plus tard, je compte écrire une application pour facilement mettre à jour ce fichier en utilisant mon ordinateur de bureau pour le télécharger sur le Raspberry Pi.

Bien sûr, j'ai dû installer MOC sur mon ordinateur Ubuntu, chose facile à faire. Cependant, il y a un problème avec mon système, en partie parce que je veux utiliser les haut-parleurs intégrés à mon moniteur HDMI. Parfois, le système ne charge pas le pilote audio numérique HDMI approprié et souvent, mais pas toujours, le système utilise la carte de son analogique interne comme sortie par défaut. Cela semble être partiellement, sinon totalement lié à la séquence dans laquelle l'ordinateur et le moniteur sont placés sous tension. Systématiquement, avant d'utiliser RSO, je vérifie les réglages du système sonore pour m'assurer que le contrôleur audio HDMI est utilisé avec le bon profil et que le son provient des haut-parleurs, puis je redémarre le service MOC.

michel@hp:~$ sudo systemctl restart moc@michel

Ce n'est que lorsque le système d'exploitation sera mis à jour vers Ubuntu 18.04 LTS que je chercherai à résoudre ces problèmes liés au son s'ils ne sont pas déjà résolus d'ici là.

Le code source est disponible dans une archive zip: rso_01.zip qui contient les fichiers suivants.

main.lfm Fichier de fiche Lazarus avec les informations de configuration pour tous les composants sur la seule fiche du projet.
main.pas Code source Pascal pour les actions liées aux objets du fichier main.lfm.
mocpi.pas Code source de l'unité d'interface Pascal avec le démon Music on Console.
radios.pas Code source de l'unité pour gérer une liste au format JSON des stations de radio Internet.
radios.json JSON formaté liste des stations de radio Internet. Ce n'est pas une liste définitive et il y a des erreurs volontaires pour tester le logiciel puis d'autres erreurs involontaires sans aucun doute.
rso_icon_256x256.png Image (laide!) qui peut être utilisée pour créer l'icône du projet : Project/Project Options/Application/Load Icon.
rso.lpi Fichier d'informations sur le projet Lazarus avec les paramètres spécifiques au projet.
rso.lpr Fichier programme Lazarus géré par l'EDI et qui initialise l'application, crée le formulaire principal et lance la boucle d'événement.

J'espère que je n'ai rien oublié d'essentiel. Commentaires et suggestions bienvenus.