URL: https://linuxfr.org/news/simpleprotocolplayer-ng-jouez-des-sons-de-votre-ordinateur-sur-votre-appareil-android Title: SimpleProtocolPlayer NG ­— jouez des sons de votre ordinateur sur votre appareil Android Authors: raphj ZeroHeure, Ysabeau et patrick_g Date: 2019-10-22T10:50:48+02:00 License: CC by-sa Tags: Score: 6 Il y a quelques temps, j’ai découvert [SimpleProtocolPlayer](https://kaytat.com/blog/?page_id=301), une application Android sous licence Apache 2 qui permet de lire un flux audio non compressé depuis le réseau. Cette dépêche présente l’application, ainsi que de son inclusion dans la [logithèque F-Droid](https://f-droid.org/). ![paramétrage de SimpleProtocolPlayer](https://gitlab.com/raphj/SimpleProtocolPlayer-ng/raw/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/img0_welcome.png) ---- [SimpleProtocolPlayer NG sur F-Droid](https://f-droid.org/packages/fr.jakse.raphael.simpleprotocolplayer/) [La demande d’empaquetage](https://gitlab.com/fdroid/rfp/issues/919) [La demande de fusion](https://gitlab.com/fdroid/fdroiddata/merge_requests/5720) [Le dépôt de l’application](https://gitlab.com/raphj/SimpleProtocolPlayer-ng/) [Présentation de SimpleProtocolPlayer par la personne qui l’a écrite](https://kaytat.com/blog/?page_id=301) ---- SimpleProtocolPlayer, à quoi ça sert ? ====================================== Concrètement l'application permet de brancher un (vieux) téléphone ou une (vieille) tablette à des enceintes ou un ampli, et de jouer du son en provenance de son ordinateur. Si vous êtes comme moi, et que vous bougez tout le temps, du canapé à la table par exemple, mais que vous écoutez de la musique en permanence, vous apprécierez peut-être de ne pas être embêté·e par une prise jack courte qui vous oblige à bouger vos enceintes dans toute la pièce et/ou faire des montages horribles et dangereux avec vos câbles. Remplacez tout cela, côté ordinateur, par un long câble réseau[^1] ou du Wifi et ça sera beaucoup plus pratique. ![SimpleProtocolPlayer](https://gitlab.com/raphj/SimpleProtocolPlayer-ng/raw/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/img0_welcome.png) Problème : absence dans la logithèque F-Droid ============================================= F-Droid est une superbe logithèque pour Android, contenant uniquement des applications libres. Malheureusement, SimpleProtocolPlayer n’est pas disponible dans F-Droid. Une [requête d’empaquetage avait été ouverte](https://gitlab.com/fdroid/rfp/issues/919), puis fermée à défaut d’avoir des nouvelles de la personne développant l’application. Si F-Droid aurait le droit de publier une application sans l’autorisation de l’auteur ou de l’autrice grâce à la licence, la politique de cette logithèque est d’avoir son accord explicite pour le faire. Solution : le fork ================== Mais c’est quand même dommage de ne pas pouvoir avoir cette application dans F-Droid. Si l’application est libre, il doit bien y avoir un moyen de l’ajouter à F-Droid. Et en effet, il suffit de la forker, comme ça on peut soit-même donner l’autorisation d’empaqueter le code. Et tant qu’on y est, on peut même faire ce travail d’empaquetage. J’en ai profité pour corriger un petit souci : quand on appuie sur le bouton lecture, la lecture flux est maintenant redémarrée, en rechargeant sa configuration à partir de la valeur des champs. Auparavant, le bouton lecture ne faisait rien si un flux était déjà en cours de lecture. Empaqueter une application pour F-Droid ======================================= Dans le principe c’est une opération relativement directe décrite dans le [document CONTRIBUTING](https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md) du dépôt où sont stockées les données utilisées par F-Droid. 1. Installer les outils F-Droid (et le SDK Android). 2. Cloner le dépôt des données. 3. Écrire le fichier de données pour l’application. Certaines données ont leur place dans le dépôt de l’application lui-même (descriptions, captures d’écran, journal des modifications) en suivant une structure de dossiers bien précise. 4. Vérifier que ça compile, sinon revenir à l’étape précédente. Les outils d’F-Droid peuvent demander des adaptations à apporter à l’application (dépôts Maven à changer, détection de blobs propriétaires, …). 5. Ouvrir une demande de fusion. Et je rajouterais une étape avant tout ça : se coordonner dans le fil de demande d’empaquetage de l’application. Pour SimpleProtocolPlayer, il a fallu définir une marche à suivre pour résoudre la situation bloquée. Dans mon cas, l’ajout a été fusionné très vite, et au bout de deux jours, l’application a été ajoutée à F-Droid. [![Get it on F-Droid](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/fr.jakse.raphael.simpleprotocolplayer/) Utiliser l’application ====================== Concrètement, l’application présente plusieurs champs, dont l’adresse et le port à écouter pour lire le flux. Un appui sur le bouton lecture et c’est joué ! Côté ordinateur, sous Windows on pourra installer [un programme fourni par le développeur original](https://github.com/kaytat/SimpleProtocolServer). Je n’ai pas essayé. Sous GNU/Linux, on pourra créer un flux `monitor` (un moniteur) avec PulseAudio. On peut le faire comme ça : Installation (à faire une fois) ------------------------------- 1. Lancez l’outil graphique `paprefs`, allez dans l’onglet « Simultaneous Output », et cliquez sur « Ajouter un périphérique de sortie virtuel pour une sortie simultanée sur toutes les cartes sont locales ». De façon alternative, vous pouvez aussi créer un moniteur avec pactl et/ou en ajoutant une ligne dans le fichier `/etc/pulse/default.pa`. 2. Dans un terminal, la commande suivante liste toutes les sorties : pactl list sources short 3. La sortie ajoutée par `paprefs` est la dernière et s’appelle `combined.monitor`. Repérez son numéro, en début de ligne. Chez-moi, c’est 2. 4. Dans le fichier `/etc/pulse/default.pa`, ajoutez la ligne suivante. Changez le `2` par le numéro que vous avez repéré, et vous pouvez aussi changer le numéro de port par quelque chose qui vous convient. load-module module-simple-protocol-tcp source=2 record=true port=12345 5. Redémarrez PulseAudio : pulseaudio -k Si vous ne voulez pas modifier votre configuration et que vous voulez simplement tester tout cela sur votre session actuelle, vous pouvez remplacer les étapes 4 et 5 par la commande suivante : ``` pactl load-module module-simple-protocol-tcp source=2 record=true port=12345 ``` Jouer des sons -------------- Envoyez les flux audio des applications que vous souhaitez jouer sur le téléphone dans la sortie ajoutée par `paprefs` (« Simultaneous output… »). Normalement, vous pouvez le faire simplement en utilisant le contrôle de volume qui vient avec votre environnement de bureau, ou en utilisant `pavucontrol` ou `kmix`. Vous pouvez éventuellement configurer ce moniteur comme la sortie audio par défaut. Si vous avez créé le moniteur avec `paprefs`, mettez vos sorties réelles en muet, sinon vous allez entendre vos sons à la fois sur l’ordinateur et sur le téléphone. Pistes d’amélioration ===================== Des pistes d’amélioration sont indiquées dans [les rapports de bogues de l’application originale](https://github.com/kaytat/SimpleProtocolPlayer/issues/), parmi lesquelles je retiens surtout : - ajouter une manière de découvrir automatiquement les flux audios sur le réseaux (style Zeroconf). On pourrait aussi imaginer des liens (voire une fusion ?) avec KDEConnect ; - des onglets pour avoir plusieurs flux configurés ; - un avertissement quand le wifi est éteint. Je rajouterais : - plus de messages quand il y a des échecs (cela résoudrait peut-être le troisième point de la liste précédente) ; - une automatisation de l’installation sous GNU/Linux. Ça ne doit pas être très compliqué à faire. On aurait par exemple un petit script qui créée une sortie `monitor` avec un nom sympa et lui ajoute le module `simple-protocol` automatiquement. Conclusion ========== Dans cette dépêche, nous avons survolé l’intégration d’une application dans F-Droid, et présenté SimpleProtocolPlayer (NG), une application que vous trouverez peut-être utile. Toutes les contributions sont les bienvenues. Je ne maîtrise pas encore son code et je n’ai pas prévu de passer un temps fou à développer cette application (elle fait ce que j’ai besoin qu’elle fasse), mais je suis de fait son mainteneur et accepte volontiers les améliorations (y compris celles que je présente dans cette dépêche), suggestions et rapports de bogues. [^1]: Cela dit, si vous faites cela, un long câble jack vous permettra peut-être d’arriver à vos fins plus simplement. :-)