Footywhoops – Un synthé codé en Go qui génère des patterns musicaux à la volée
Faire du bruit avec du code, c'est un peu le graal pour tout dev qui aime la musique. On connaît tous les gros trucs en C++ ou les frameworks spécialisés, mais voir débarquer un synthé complet codé en Go, c'est toujours une petite surprise qui se déguste sans modération.
Son nom : Footywhoops .
C'est un couteau suisse sonore que vous pilotez directement depuis votre terminal et qui permet de générer des séquences de batterie, des lignes de basse (un mode "Acid Bass" bien gras avec sub-oscillateur et enveloppes ADSR est de la partie), des arpèges et des mélodies. Le tout peut être calé sur différentes gammes musicales (majeure, mineure, dorienne, blues, etc.) pour éviter de finir avec une cacophonie insupportable. On est un peu dans l'esprit du live coding musical comme ce que propose Strudel ou Dittytoy , mais version ligne de commande.
Sous le capot, c'est du sérieux niveau DSP (Digital Signal Processing) puisqu'on y trouve une réverbération de type Schroeder pour donner de l'espace, plusieurs algorithmes de distorsion (Tanh, Atan, hard clipping) pour salir le signal, et un filtre passe-bas pour sculpter la tonalité. 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'en sort étonnamment bien ici grâce à sa gestion efficace de la concurrence (coucou les goroutines) et l'utilisation de PortAudio pour l'I/O audio. On a d'ailleurs vu d'autres outils sympas en Go récemment, comme SSHM qui utilise le framework Bubble Tea pour son interface terminal.
Le truc est super léger et s'installe en deux minutes si vous avez l'environnement Go prêt sur votre machine. Vous pouvez même enregistrer vos expérimentations directement en WAV (dry ou wet) sans avoir besoin de passer par une DAW (Digital Audio Workstation). D'ailleurs, si vous cherchez des ressources pour faire de la musique sous pingouin, n'hésitez pas à 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èques de développement de PortAudio sur votre système.
1. Installation des dépendances
Sur macOS :
brew install portaudio
Sur Ubuntu/Debian :
sudo apt-get install portaudio19-dev
2. Compilation du projet
Récupérez le code et compilez l'exécutable :
git clone https://github.com/system32-ai/footywhoops
cd footywhoops
go build
3. Exemples d'utilisation
Pour lancer une génération automatique de mélodie et de batterie (le mode "standalone") :
./footywhoops -mode synth
Si vous voulez utiliser Footywhoops comme un processeur d'effets (par exemple pour traiter le son de votre micro ou d'une guitare branchée sur votre interface) :
./footywhoops -mode fx -dist 0.8 -reverb 0.5
Vous pouvez évidemment jouer avec plein de paramètres en CLI pour ajuster le son (fréquence du filtre, type de distorsion, taille de la réverb, etc.). Pour voir toutes les options disponibles, un petit ./footywhoops -help et voilà, vous avez la liste complète.
Je pense que j'ai fait le tour... si vous aimez le mélange entre code et synthèse sonore, Footywhoops est un super terrain de jeu. C'est brut, c'est sale, et c'est expérimental mais ça permet de s'amuser un peu !























