﻿﻿{"id":2209,"date":"2026-01-29T10:21:00","date_gmt":"2026-01-29T09:21:00","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/footywhoops-un-synthe-code-en-go-qui-genere-des-patterns-musicaux-a-la-volee\/"},"modified":"2026-01-29T10:21:00","modified_gmt":"2026-01-29T09:21:00","slug":"footywhoops-un-synthe-code-en-go-qui-genere-des-patterns-musicaux-a-la-volee","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/footywhoops-un-synthe-code-en-go-qui-genere-des-patterns-musicaux-a-la-volee\/","title":{"rendered":"Footywhoops \u2013 Un synth\u00e9 cod\u00e9 en Go qui g\u00e9n\u00e8re des patterns musicaux \u00e0 la vol\u00e9e"},"content":{"rendered":"<p>Faire du bruit avec du code, c&#8217;est un peu le graal pour tout dev qui aime la musique. On conna\u00eet tous les gros trucs en C++ ou les frameworks sp\u00e9cialis\u00e9s, mais voir d\u00e9barquer un synth\u00e9 complet cod\u00e9 en <strong>Go<\/strong>, c&#8217;est toujours une petite surprise qui se d\u00e9guste sans mod\u00e9ration.<\/p>\n<p>Son nom : <strong><br \/>\n<a href=\"https:\/\/github.com\/system32-ai\/footywhoops?tab=readme-ov-file\">Footywhoops<\/a><br \/>\n<\/strong>.<\/p>\n<p>C&#8217;est un couteau suisse sonore que vous pilotez directement depuis votre terminal et qui permet de g\u00e9n\u00e9rer des s\u00e9quences de batterie, des lignes de basse (un mode &#8220;Acid Bass&#8221; bien gras avec sub-oscillateur et enveloppes ADSR est de la partie), des arp\u00e8ges et des m\u00e9lodies. Le tout peut \u00eatre cal\u00e9 sur diff\u00e9rentes gammes musicales (majeure, mineure, dorienne, blues, etc.) pour \u00e9viter de finir avec une cacophonie insupportable. On est un peu dans l&#8217;esprit du live coding musical comme ce que propose<br \/>\n<a href=\"https:\/\/korben.info\/strudel-live-coding-music-browser.html\">Strudel<\/a><br \/>\nou<br \/>\n<a href=\"https:\/\/korben.info\/dittytoy-live-coding-musique-navigateur.html\">Dittytoy<\/a><br \/>\n, mais version ligne de commande.<\/p>\n<div class=\"audio-container\">\n<audio controls preload=\"none\"><\/p>\n<p>Votre navigateur ne supporte pas l&#8217;\u00e9l\u00e9ment audio.<br \/>\n<\/audio><\/p>\n<p>Sous le capot, c&#8217;est du s\u00e9rieux niveau DSP (<em>Digital Signal Processing<\/em>) puisqu&#8217;on y trouve une r\u00e9verb\u00e9ration de type <strong>Schroeder<\/strong> pour donner de l&#8217;espace, plusieurs algorithmes de distorsion (Tanh, Atan, hard clipping) pour salir le signal, et un filtre passe-bas pour sculpter la tonalit\u00e9. Et pour ceux qui se demanderaient quel est le meilleur langage pour la programmation audio, le C++ reste le roi pour la performance pure, mais Go s&#8217;en sort \u00e9tonnamment bien ici gr\u00e2ce \u00e0 sa gestion efficace de la concurrence (coucou les goroutines) et l&#8217;utilisation de <strong>PortAudio<\/strong> pour l&#8217;I\/O audio. On a d&#8217;ailleurs vu d&#8217;autres outils sympas en Go r\u00e9cemment, comme<br \/>\n<a href=\"https:\/\/korben.info\/sshm-manager-ssh-tui-go-bubble-tea.html\">SSHM<\/a><br \/>\nqui utilise le framework Bubble Tea pour son interface terminal.<\/p>\n<p>Le truc est super l\u00e9ger et s&#8217;installe en deux minutes si vous avez l&#8217;environnement Go pr\u00eat sur votre machine. Vous pouvez m\u00eame enregistrer vos exp\u00e9rimentations directement en WAV (dry ou wet) sans avoir besoin de passer par une DAW (<em>Digital Audio Workstation<\/em>). D&#8217;ailleurs, si vous cherchez des ressources pour faire de la musique sous pingouin, n&#8217;h\u00e9sitez pas \u00e0 consulter ce<br \/>\n<a href=\"https:\/\/korben.info\/linuxdaw-catalogue-audio-linux.html\">catalogue audio pour Linux<\/a><br \/>\n.<\/p>\n<p>Et si vous avez envie de tester ce petit monstre, voici comment vous lancer.<\/p>\n<p>Pour commencer, vous aurez besoin de <strong>Go 1.19<\/strong> ou plus et des biblioth\u00e8ques de d\u00e9veloppement de <strong>PortAudio<\/strong> sur votre syst\u00e8me.<\/p>\n<p><strong>1. Installation des d\u00e9pendances<\/strong><\/p>\n<p>Sur <strong>macOS<\/strong> :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">brew install portaudio\n<\/span><\/span><\/code><\/pre>\n<p>Sur <strong>Ubuntu\/Debian<\/strong> :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">sudo apt-get install portaudio19-dev\n<\/span><\/span><\/code><\/pre>\n<p><strong>2. Compilation du projet<\/strong><\/p>\n<p>R\u00e9cup\u00e9rez le code et compilez l&#8217;ex\u00e9cutable :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">git clone https:\/\/github.com\/system32-ai\/footywhoops\n<\/span><\/span><span class=\"line\"><span class=\"cl\">cd footywhoops\n<\/span><\/span><span class=\"line\"><span class=\"cl\">go build\n<\/span><\/span><\/code><\/pre>\n<p><strong>3. Exemples d&#8217;utilisation<\/strong><\/p>\n<p>Pour lancer une g\u00e9n\u00e9ration automatique de m\u00e9lodie et de batterie (le mode &#8220;standalone&#8221;) :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">.\/footywhoops -mode synth\n<\/span><\/span><\/code><\/pre>\n<p>Si vous voulez utiliser Footywhoops comme un processeur d&#8217;effets (par exemple pour traiter le son de votre micro ou d&#8217;une guitare branch\u00e9e sur votre interface) :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">.\/footywhoops -mode fx -dist 0.8 -reverb 0.5\n<\/span><\/span><\/code><\/pre>\n<p>Vous pouvez \u00e9videmment jouer avec plein de param\u00e8tres en CLI pour ajuster le son (fr\u00e9quence du filtre, type de distorsion, taille de la r\u00e9verb, etc.). Pour voir toutes les options disponibles, un petit <code>.\/footywhoops -help<\/code> et voil\u00e0, vous avez la liste compl\u00e8te.<\/p>\n<p>Je pense que j&#8217;ai fait le tour&#8230; si vous aimez le m\u00e9lange entre code et synth\u00e8se sonore, Footywhoops est un super terrain de jeu. C&#8217;est brut, c&#8217;est sale, et c&#8217;est exp\u00e9rimental mais \u00e7a permet de s&#8217;amuser un peu !<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Faire du bruit avec du code, c&#8217;est un peu le graal pour tout dev qui aime la musique. On conna\u00eet tous les gros trucs en C++ ou les frameworks sp\u00e9cialis\u00e9s, mais voir d\u00e9barquer un synth\u00e9 complet cod\u00e9 en Go, c&#8217;est toujours une petite surprise qui se d\u00e9guste sans mod\u00e9ration. Son nom : Footywhoops . C&#8217;est un couteau suisse sonore que vous pilotez directement depuis votre terminal et qui permet de g\u00e9n\u00e9rer des s\u00e9quences de batterie, des lignes de basse (un mode &#8220;Acid Bass&#8221; bien gras avec sub-oscillateur et enveloppes ADSR est de la partie), des arp\u00e8ges et des m\u00e9lodies. Le tout peut \u00eatre cal\u00e9 sur diff\u00e9rentes gammes musicales (majeure, mineure, dorienne, blues, etc.) pour \u00e9viter de finir avec une cacophonie insupportable. On est un peu dans l&#8217;esprit du live coding musical comme ce que propose Strudel ou Dittytoy , mais version ligne de commande. Votre navigateur ne supporte pas l&#8217;\u00e9l\u00e9ment audio. Sous le capot, c&#8217;est du s\u00e9rieux niveau DSP (Digital Signal Processing) puisqu&#8217;on y trouve une r\u00e9verb\u00e9ration de type Schroeder pour donner de l&#8217;espace, plusieurs algorithmes de distorsion (Tanh, Atan, hard clipping) pour salir le signal, et un filtre passe-bas pour sculpter la tonalit\u00e9. Et pour ceux qui se demanderaient quel est le meilleur langage pour la programmation audio, le C++ reste le roi pour la performance pure, mais Go s&#8217;en sort \u00e9tonnamment bien ici gr\u00e2ce \u00e0 sa gestion efficace de la concurrence (coucou les goroutines) et l&#8217;utilisation de PortAudio pour l&#8217;I\/O audio. On a d&#8217;ailleurs vu d&#8217;autres outils sympas en Go r\u00e9cemment, comme SSHM qui utilise le framework Bubble Tea pour son interface terminal. Le truc est super l\u00e9ger et s&#8217;installe en deux minutes si vous avez l&#8217;environnement Go pr\u00eat sur votre machine. Vous pouvez m\u00eame enregistrer vos exp\u00e9rimentations directement en WAV (dry ou wet) sans avoir besoin de passer par une DAW (Digital Audio Workstation). D&#8217;ailleurs, si vous cherchez des ressources pour faire de la musique sous pingouin, n&#8217;h\u00e9sitez pas \u00e0 consulter ce catalogue audio pour Linux . Et si vous avez envie de tester ce petit monstre, voici comment vous lancer. Pour commencer, vous aurez besoin de Go 1.19 ou plus et des biblioth\u00e8ques de d\u00e9veloppement de PortAudio sur votre syst\u00e8me. 1. Installation des d\u00e9pendances Sur macOS : brew install portaudio Sur Ubuntu\/Debian : sudo apt-get install portaudio19-dev 2. Compilation du projet R\u00e9cup\u00e9rez le code et compilez l&#8217;ex\u00e9cutable : git clone https:\/\/github.com\/system32-ai\/footywhoops cd footywhoops go build 3. Exemples d&#8217;utilisation Pour lancer une g\u00e9n\u00e9ration automatique de m\u00e9lodie et de batterie (le mode &#8220;standalone&#8221;) : .\/footywhoops -mode synth Si vous voulez utiliser Footywhoops comme un processeur d&#8217;effets (par exemple pour traiter le son de votre micro ou d&#8217;une guitare branch\u00e9e sur votre interface) : .\/footywhoops -mode fx -dist 0.8 -reverb 0.5 Vous pouvez \u00e9videmment jouer avec plein de param\u00e8tres en CLI pour ajuster le son (fr\u00e9quence du filtre, type de distorsion, taille de la r\u00e9verb, etc.). Pour voir toutes les options disponibles, un petit .\/footywhoops -help et voil\u00e0, vous avez la liste compl\u00e8te. Je pense que j&#8217;ai fait le tour&#8230; si vous aimez le m\u00e9lange entre code et synth\u00e8se sonore, Footywhoops est un super terrain de jeu. C&#8217;est brut, c&#8217;est sale, et c&#8217;est exp\u00e9rimental mais \u00e7a permet de s&#8217;amuser un peu !<\/p>\n","protected":false},"author":1,"featured_media":2210,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2209","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2209"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2210"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}