Salut tout le monde !
Ce que j’aimerais pouvoir faire, tout simplement : « Gladys, mets l’album de Daft Punk dans le salon », ou dans une scène, « À 7 h, lance ma playlist du matin dans la cuisine ». Et que ça marche quelle que soit la source de la musique (mon Navidrome, Spotify, Plex, une webradio…) et quelle que soit l’enceinte (Sonos, ampli, Chromecast…).
Aujourd’hui, toutes les briques existent, mais elles ne se parlent pas. D’où cette proposition, que j’appelle pour l’instant Gladys Music. @pierre-gilles, j’aimerais bien ton avis avant d’aller plus loin.
Où on en est
- Côté enceintes, il y a déjà de quoi faire : Sonos, AirPlay et Google Cast dans le cœur, et des intégrations externes pour le DLNA, les amplis Denon / Marantz, MusicCast, LinkPlay (WiiM…), Lyrion (Squeezebox), les Echo, VLC…
- Côté musique, pareil : Subsonic / Navidrome, Spotify, Plex, Jellyfin, les serveurs DLNA, les webradios…
- Mais entre les deux, rien. Les fonctionnalités « musique » du cœur savent faire lecture, pause, suivant, volume et « jouer une notification », mais pas « joue ça ». Et l’IA de Gladys n’a aucun outil pour la musique : elle allume la lumière, mais elle ne sait pas lancer un album.
Résultat, chaque intégration bricole dans son coin. Celle de DLNA, par exemple, sait chercher un album sur un serveur et le jouer sur un ampli, mais uniquement entre appareils DLNA, et uniquement depuis une scène. Le sujet ne date pas d’hier : il y avait déjà « Gestion service musique » en 2022.
La proposition : trois briques dans le cœur
1. Des sources de musique. Une intégration (du cœur ou externe) peut se déclarer « source » : on lui donne un texte et un type (titre, album, artiste, playlist, radio), elle renvoie des résultats avec leur pochette et de quoi les jouer, le plus souvent une adresse de flux. Subsonic, Plex, Jellyfin, les serveurs DLNA ou une intégration de webradios rentrent naturellement là-dedans.
2. Des lecteurs qui savent « jouer ça ». Une nouvelle fonctionnalité musique, par exemple play_media, à côté de play_notification qui sait déjà jouer une adresse. Le cœur fait le lien entre les deux :
- dans le cas général, la source fournit une adresse de flux, et n’importe quel lecteur qui sait lire une adresse la joue (DLNA, Sonos, AirPlay, Cast…) ;
- quand une source ne joue que chez elle (Spotify sur ses appareils Spotify Connect), le cœur ne propose que les lecteurs compatibles.
3. Une seule façon de s’en servir, partout :
- un outil musique pour l’IA : « joue quoi, où » (avec une source préférée par défaut), plus pause / suivant / volume. C’est ce qui rend la commande vocale naturelle, depuis le micro du téléphone dans l’appli ;
- une action de scène « Jouer de la musique » avec une recherche, valable pour toutes les sources et toutes les enceintes ;
- un widget « Musique » : une recherche, un choix d’enceinte, et c’est parti.
Pour les intégrations externes, il suffirait d’une petite déclaration de plus dans le manifeste et le SDK (« je suis une source », « ce lecteur sait jouer une adresse »). Pas besoin d’installer un serveur de plus, contrairement à Music Assistant chez Home Assistant : ça marcherait avec ce que les gens ont déjà.
Ce que je peux apporter
Si l’idée te va, je peux :
- écrire la spécification, sur le modèle de
docs/specs/external-integrations; - faire la partie SDK pour les intégrations externes ;
- brancher les premières sources et les premiers lecteurs de mon côté (Subsonic, DLNA, une intégration de webradios…) pour valider le tout ;
- et proposer une PR pour le cœur, si tu préfères que je m’y colle plutôt que de le faire toi-même.
Mes questions
- Le cœur te semble-t-il le bon endroit, ou tu vois ça autrement ?
- Plutôt une nouvelle fonctionnalité
play_media, ou étendreplay_notificationqui sait déjà jouer une adresse ? - Côté IA : un outil dédié à la musique te va-t-il, à côté de ceux qui pilotent déjà les appareils ?
- Le nom « Gladys Music » te parle, ou tu as mieux ?
Et pour les autres : est-ce que ça correspond à vos usages ? Qu’est-ce qui vous manquerait ?