{"id":1002,"date":"2016-01-31T23:49:53","date_gmt":"2016-01-31T21:49:53","guid":{"rendered":"http:\/\/pila.fr\/wordpress\/?p=1002"},"modified":"2016-05-17T12:29:59","modified_gmt":"2016-05-17T10:29:59","slug":"jouer-de-la-musique-avec-un-steam-controller","status":"publish","type":"post","link":"https:\/\/pila.fr\/wordpress\/archives\/1002","title":{"rendered":"Jouer de la musique avec un Steam Controller"},"content":{"rendered":"<p style=\"text-align: justify;\">\u00c9tant l&rsquo;heureux propri\u00e9taire d&rsquo;une manette Steam Controller, produite par VALVE, j&rsquo;ai entrepris de d\u00e9coder le protocole de communication utilis\u00e9 par celui-ci, en particulier la partie concernant le contr\u00f4le des actuateurs lin\u00e9aires assurant le retour haptique. Celui-ci s&rsquo;est av\u00e9r\u00e9 assez simple \u00e0 mettre en \u0153uvre, ce qui m&rsquo;a pouss\u00e9 \u00e0 d\u00e9velopper \u00e0 outil permettant de contr\u00f4ler les vibrations des touchpads, directement \u00e0 partir d&rsquo;un fichier MIDI, et de faire jouer la m\u00e9lodie par le Steam Controller :<\/p>\n<p style=\"text-align: center;\"><iframe loading=\"lazy\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/Bwq2btaPio0?rel=0\" width=\"500\" height=\"281\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Bas\u00e9 sur la librairie LibUSB, mon logiciel se contente de lire le fichier MIDI, et de jouer les notes du canal 0 sur le touchpad droit, et celles du canal 1 sur le touchpad gauche.<\/p>\n<p>Pour cela, il envoie les s\u00e9quences d&rsquo;octets commandant le retour haptic des touchpads. Ces s\u00e9quences sont d\u00e9crites dans le code source.<\/p>\n<p>Il supporte une connexion directe au Steam Controller, ou en sans-fil \u00e0 travers le dongle.<\/p>\n<p>Plus d&rsquo;infos sur le <a href=\"http:\/\/steamcommunity.com\/app\/353370\/discussions\/0\/494632506573267894\/\" target=\"_blank\">thread du projet sur le forum Steam<\/a>.<\/p>\n<p>Une archive contenant l&rsquo;ex\u00e9cutable pour Windows est h\u00e9berg\u00e9e chez <a href=\"https:\/\/sourceforge.net\/projects\/steam-controller-singer\/\" target=\"_blank\">SourceForge<\/a><\/p>\n<p>Le code complet, abondamment comment\u00e9, est disponible sur la <a href=\"https:\/\/gitlab.com\/Pilatomic\/SteamControllerSinger\" target=\"_blank\">page Gitlab du projet <\/a><\/p>\n<p>Enjoy !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c9tant l&rsquo;heureux propri\u00e9taire d&rsquo;une manette Steam Controller, produite par VALVE, j&rsquo;ai entrepris de d\u00e9coder le protocole de communication utilis\u00e9 par celui-ci, en particulier la partie concernant le contr\u00f4le des actuateurs lin\u00e9aires assurant le retour haptique. Celui-ci s&rsquo;est av\u00e9r\u00e9 assez simple \u00e0 mettre en \u0153uvre, ce qui m&rsquo;a pouss\u00e9 \u00e0 d\u00e9velopper \u00e0 outil permettant de contr\u00f4ler &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/pila.fr\/wordpress\/archives\/1002\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[114,112,113,111],"class_list":["post-1002","post","type-post","status-publish","format-standard","hentry","category-prog","tag-hack","tag-midi","tag-music","tag-steam-controller","item-wrap"],"_links":{"self":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=1002"}],"version-history":[{"count":6,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1002\/revisions"}],"predecessor-version":[{"id":1037,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1002\/revisions\/1037"}],"wp:attachment":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=1002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=1002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=1002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}