Réalisé début Avril, je suis fier de vous présenter le premier prototype de « S-light », ma solution « Ambilight » artisanale !
Il s’agit ici du 1er prototype, deux autres versions déjà en cours de développement paraitront dans les semaines/mois à venir
Cette première version fonctionne avec une application .NET/WPF sur votre PC pour calculer les couleurs de votre écran et piloter des bandes de LED RGB collées derrière votre écran via la « Slight Box », une petite boite refermant des modules .NET Gadgeteer basés sur le .NET Micro-framework.
Plutôt que de rédiger de longues phrases, voici une démonstration en image :
Pour connaître tous les détails techniques ainsi que les secrets de fabrication, je vous donne rendez-vous le mois prochain dans le magazineProgrammez!pour un article complet sur le sujet. En attendant voici quelques images :
Côté software (configuration simplifiée, correction gamma des couleurs, ajustement dynamique au format de la source, etc…) :
La « S-light box » :
Vue intérieure (sauriez-vous reconnaître les modules Gadgeteer utilisés ? ):
Pour le teasing (ou les curieux), la V2 est une version « low-cost » sans .NET Gadgeteer. La V3, quant à elle, est un système autonome… Mais je n’en dirais pas plus Wait & see…
En attendant, rendez-vous le mois prochain dans le magazine Programmez!disponible dans vos kiosques préférés
Un grand merci à Pierre-Marie Cronier (Creative director & Co-founder Studio Josette) pour le logo, les photos et la vidéo de présentation de Slight.
Présenté dans mon post précédent, Stream What You Hear (raccourci “SWYH”) est une petite application Windows permettant de streamer le son de votre ordinateur Windows vers un périphérique compatible DLNA comme une TV, un ampli, et bien d’autre (voir l’article de présentation de SWYH et du protocole DLNA) !
Initialement j’ai développé ce logiciel pour mes besoins personnels en Juin/Juillet 2012 n’ayant pas trouvé d’alternative simple et gratuite sur Internet ! Le mois dernier j’ai décidé de mettre ce logiciel à la disposition de tous sur mon site Internet histoire d’en faire profiter le plus grand nombre !
En trois semaines déjà plusieurs centaines de téléchargements et beaucoup de feedbacks ! J’ai donc pris quelques heures (merci WordPress) pour monter un site dédié à SWYH que vous retrouverez à l’adresse : http://www.StreamWhatYouHear.com/ !
Et parce qu’une bonne nouvelle n’arrive jamais seule J’en ai profité pour mettre à jour SWYH en version 1.1 qui corrige plusieurs bugs et ajoute quelques nouvelles fonctionnalités !
Stream What You Hear (SWYH) est une application Windows permettant de diffuser le son de votre ordinateur sur un équipement UPnP/DLNA comme une TV ou un ampli. SWYH en version 1.0 est en libre téléchargement à l’adresse : http://www.StreamWhatYouHear.com
Stream What You Hear (SWYH) is a Windows application to stream the sound of your computer “what you hear” on an UPnP/DLNA device such as a TV or an amplifier. SWYH 1.0 is free : http://www.StreamWhatYouHear.com
Comme beaucoup d’entre vous (je pense), j’écoute de la musique sur mon ordinateur ! Cette musique provient de différentes sources :
Bref, ce n’est pas le nombre de sources ou d’applications qui manque pour écouter de la musique sur son PC !
Lorsqu’il y a du monde à côté de moi (au travail, dans les transports, etc…) le casque audio est de vigueur mais à la maison que faire ? J’ai chez moi, dans mon salon, un jeu d’enceintes 5.1 connecté sur un amplificateur Home-Cinéma !
L’idéal serait de pouvoir écouter tout cela sur mon installation, mais comment faire ?
Solution n° 1 : les câbles !
La solution la plus simple est de connecter un câble Jack/RCA (ou S/PDIF) de mon PC à mon ampli ! Super, mais personnellement je n’ai pas envie de passer un long câble dans mon salon ! Sur un PC portable on aime la batterie et le Wifi pour pouvoir se déplacer n’importe où sans avoir de câble derrière nous !
Solution n° 2 : solution sans-fil !
L’idée serait de diffuser (streamer) le son de son PC directement sur l’ampli par Wifi par exemple !
Il existe différentes technologies propriétaires comme AirPlay d’Apple nécessitant du matériel compatible (voir exemples ici) ou encore des émetteurs/récepteurs sans fils (comme la Squeezebox Receiver chez Logitech, le W1 chez Audioengine ou encore le WTX-500 d’Advance Acoustic). A ce sujet, je vous invite à lire cet article sur qobuz !
Personnellement je n’ai pas envie de racheter du matériel supplémentaire, et cela pour deux raisons : le prix et l’encombrement ! Je voudrais une solution “software” sans ajout de matériel !
Au sujet d’AirPlay, il existe une solution logicielle pour Windows nommé AirFoil (à 25$) permettant de streamer le son d’une seule application vers un périphérique AirPlay. J’ai bien une Freebox Player comme récepteur AirPlay, mais pour l’avoir testé, AirFoil n’est pas tellement pratique (il faut sélectionner une seule application à la fois et la redémarrer pour que le logiciel puisse “s’attacher” au processus, pas pratique sur un navigateur avec déjà quelques onglets ouverts). De plus la qualité sonore est très médiocre et quelques crashs du programme laissent un gout amer, surtout pour un logiciel payant !
Comme je n’ai pas trouvé de solution fiable, simple et à bas cout (pour ne pas dire “gratuit”), il a fallu ouvrir son Visual Studio pour écrire une petite application Windows que j’ai nommé “Stream What Your Hear”
THE solution : Stream What You Hear
L’idée serait donc de capturer le son “qui sort” du PC (peu importe la source) pour l’exposer comme un flux audio depuis un service Web qui respecterait les spécifications “UPnP MediaServer”. Ainsi tout équipement certifié DLNA pourrait “écouter ce que j’écoute” sur mon PC Windows ! Ça tombe bien, mon amplificateur Pioneer est lui aussi certifié DLNA (c’est un MediaRenderer dans la terminologie UPnP/DLNA) !
Stream What You Hear est donc une simple application Windows compatible Windows Vista, Windows Seven et Windows 8 (en mode Desktop). Cependant Windows XP n’est pas supporté !
SWYH se range dans votre barre des notifications :
D’un simple clic droit, vous pouvez accéder au menu permettant l’envoi du flux sonore de votre ordinateur vers un équipement DLNA (MediaRenderer) ! Dans mon cas, “VSX-922” est le nom de mon amplificateur Home Cinéma.
En un clic (enfin deux pour être exact), le son de votre ordinateur (peu importe la source) est envoyé sur votre équipement DLNA comme votre TV ou ampli !
Il ne reste plus qu’à lancer YouTube, Deezer, Spotify ou un Media Player pour profiter de sa musique sur son installation audio en gardant la possibilité d’emporter le PC partout et sans aucun câble (si toute fois vous êtes connecté en Wifi ) !
Une petite vidéo pour tenter de résumer tout çà :
Pour ceux qui utilisent la fonctionnalité “Play To” de Windows Media Player peuvent se demander quelle est la différence avec SWYH ? La réponse est simple SWYH capture le son qui sort de votre PC pour l’envoyer sur un périphérique DLNA, peu importe la source (Youtube, Deezer, Spotify, etc…) alors que WMP envoie le son du fichier que vous avez ouvert avec WMP ! En d’autre terme WMP ne vous permettra pas d’envoyer le son de Youtube, Spotify ou autre sur un équipement DLNA !
DLNA vous avez dit ?
Depuis quelques années les différents équipements multimédias (téléviseurs, amplificateurs, lecteurs multimédia ou boxs internet) proposent une connectivité réseau (par Ethernet ou Wifi) et implémentent le protocole UPnP/DLNA.
L’UPnP est un protocole réseau qui permet la découverte de périphériques sur un réseau (basée sur SSDP), la description des équipements (car des contrats XML/WSDL) et l’exposition de services HTTP/SOAP pour le contrôle de l’équipement. Sans aucune configuration, il est possible piloter et d’interagir avec équipements de son réseau de manière transparente à travers un protocole ouvert et standard. L’UPnP propose aussi un système de notification pour s’attacher à des évènements des périphériques (par exemple être notifié quand une porte s’ouvre ou que le volume de la TV est changé).
On retrouve l’UPnP dans les box internet, les TV connectées, les amplis Home Cinéma, les consoles de jeu, les ordinateurs & tablettes, les systèmes domotiques ou encore les imprimantes.
Au-dessus de l’UPnP, on y trouve l’”UPnP AV” (pour UPnP Audio and Video) que l’appelle généralement DLNA du nom du consortium regroupant 250 constructeurs tel que Phillips, Samsung, Sony, Panasonic, Intel, Microsoft, Nokia, etc.. qui travaillent sur les spécifications de ce protocole.
UPnP AV est une spécification de services SOAP que doivent implémenter les équipements “DLNA CERTIFIED™” comme les TV, Amplis & etc…
Dans l’univers DLNA (pour sa version 1), on trouve 4 principales classes d’équipements :
UPnP MediaServer : équipement qui propose du contenu multimédia (image, son ou vidéo). La Freebox Server est un MediaServer DLNA par exemple. Vous pouvez aussi utiliser Serviio ou Windows Media Player pour exposer vos contenus multimédia de votre ordinateur en DLNA.
UPnP MediaRenderer : équipement permettant de jouer du contenu multimédia comme une TV, un ampli HC ou un PC !
UPnP RenderingControl : en général les MediaRenderer sont aussi RenderingControl, ils permettent le control du rendu, entendez par là la possibilité de contrôler le volume, la luminosité, etc…
UPnP ControlPoint : équipements permettant de découvrir les équipements UPnP, de parcourir les contenus des MediaServer et de les lancer en local ou sur des MediaRenderers ! Il existe un grand nombre d’application pour PC, console de Web, smartphone ou tablette (Android, iOS ou Windows Phone) !
Un MediaServer expose donc un service Web HTTP/SOAP avec des méthodes pour parcourir le contenu du serveur et récupérer toutes les méta-informations de chaque média (comme la durée, les codecs, le bitrage, etc.. dans le cas d’un fichier son et surtout son URI). Car chaque média (image, son ou vidéo) a sa propre URI HTTP pour la récupération du contenu !
Un MediaRenderer/RenderingControl comme une TV, expose un service Web HTTP/SOAP avec des méthodes pour définir l’URI du média à lire et d’autres méthodes pour le contrôle de la lecture (Play/Stop/Pause/Next, etc…).
Ainsi lorsque je prends un client DLNA sur une tablette Android par exemple, je peux sans aucune configuration, détecter mon serveur Windows comme MediaServer, parcourir mes photos, musiques ou vidéos, et “l’envoyer” à lire sur ma TV ! Le client DLNA à détecter mes équipements par SSDP pour la découverte, identifier mes équipements par les services qu’ils exposent, et contrôler le tout par de simple appel HTTP/SOAP !
Le DLNA n’est ni plus ni moins que la spécification des services SOAP de façon à assurer l’interopérabilité entre les équipements AV en se servant de l’UPnP comme socle lui aussi basé sur des standards (UDP/SSDP et HTTP/SOAP).
Détails techniques de SWYH
Concrètement, SWYH est écrit en C#/WPF. Il se charge de capturer le son “qui sort de votre PC” (what you hear) par l’utilisation du composant WASAPI (Windows Audio Session API) et de la librairie NAudio pour la manipulation des flux audio en .NET. Ce flux est ensuite compressé en temps réel au format MP3 sur 32 bits et 2 canaux (stéréo) à 44100Hz par l’utilisation de la librairie “LAME MP3”.
Une fois le flux audio du PC capturé et compressé en MP3, il ne reste plus qu’à l’exposer sur un service Web qui respecte les spécifications d’un MediaServer. Pour cela il existe l’excellente librairie .NET d’OpenTools : Developer Tools for UPnP Technologies d’ Ylian-Saint-Hilaire chez Intel !
Comme SWYH est un device DLNA, il peut être visible depuis l’explorateur Windows :
Le MediaServer “SWYH” n’expose qu’un seul média de type “object.item.audioItem.audioBroadcast” dans la terminologie UPnP AV. Il s’agit du flux MP3 que nous avons compressé précédemment !
Maintenant votre flux MP3 du flux audio du PC exposé sur un MediaServer, il est possible de le lire depuis un autre équipement DLNA.
Pour faciliter l’expérience, SWYH découvre les équipements MediaRenderer de votre réseau pour les afficher dans le menu. Lorsque vous sélectionnerez un équipement, SWYH invoquera le service SOAP pour définir l’URI du média à jouer avec l’URI du flux audio que nous exposons et déclencher la méthode “Play” !
Limitations de SWYH
Latence entre ce qu’il se joue sur le PC et ce que j’entends : en effet, ce n’est pas SWYH qui stream le flux audio sur l’ampli ou la TV, mais plutôt la TV/Ampli qui lit en streaming le flux audio exposé par le PC ! Les MediaRenderer chargent en mémoire tampon le flux ce qui crée un décalage entre ce qui est joué sur le PC et ce que l’on entend sur le MediaRenderer !
Certains équipements DLNA ne voient pas le MediaServer SWYH : personnellement SWYH marche très bien avec mon ampli Pioneer et avec des logiciels pour Android. Mais sans que je ne puisse encore l’expliquer, pas depuis ma TV Samsung. N’hésitez pas à laisser des commentaires sur les équipements DLNA qui ne fonctionnent pas !
Je ne vois pas mon équipement dans le menu “Stream To” : votre équipement cible ne doit pas être exposé comme un “Media Renderer” ! Par exemple, une Freebox Player n’est pas un “Media Renderer” ! Il est donc impossible de démarrer directement la lecture du flux audio de votre PC sur votre Freebox par SWYH ! Cependant vous pouvez sur une Freebox parcourir les “Media Server” afin de retrouver le serveur “Stream What You Hear” et lancer le flux MP3 (on appelle cela un « Media Player ») !
En attendant l’arrivée prochaine d’Angie sur différente plateforme autre que Windows Phone 7 (rejoignez-nous sur Facebook pour les beta-versions), vous retrouverez un petit avant gout de ses futures possibilités avec un dossier consacré à la domotique, paru dans le magazine Programmez !
Le numéro spécial été (n°154), disponible dans vos kiosque en France (Juillet/Aout) propose la première partie du dossier ! Au programme :
Introduction aux technologies domotique (par moi-même)
Mise en pratique et développement avec le protocole X10 (par Salah Amer)
La 2ème partie de mon article paraitra au numéro 155 (mois de Septembre) pour entrer dans le vif du sujet : “Mise en pratique et développement avec le protocole Z-Wave”.
C’est demain qu’Angie sera officiellement lancée ! En attendant cette date, l’application disponible sur le marketplace Windows Phone 7 est accessible en “beta-privé” grâce à un code d’activation.