Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

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 !

Anna's Archive vient de sauvegarder la totalité de Spotify

Vous connaissez Anna's Archive , cette bibliothèque pirate qui sauvegarde tous les livres et articles scientifiques de l'humanité ? Hé bien ils viennent de s'attaquer à un nouveau chantier : sauvegarder Spotify (en tout cas le plus possible), c'est à dire des millions de morceaux + de la métadonnées, soit ~300 téraoctets de données !!

Anna's Archive se focalise normalement sur le texte (livres, et documents de recherche) parce que c'est ce qui a la plus haute densité d'information mais leur mission, c'est de préserver le savoir et la culture de l'humanité, et ça inclut donc aussi la musique. Et comme ils ont trouvé un moyen de scraper Spotify à grande échelle, ils se sont dit "Hey pourquoi pas ? On est des oufs".

Et ça donne la plus grande base de données de métadonnées musicales jamais rendue publique, avec 186 millions d'ISRCs uniques (ces codes qui identifient chaque enregistrement). Pour vous donner un ordre de grandeur, MusicBrainz n'en a que 5 millions. Niveau fichiers audio, ils ont aussi archivé environ 86 millions de morceaux, ce qui représente 99,6% des écoutes sur la plateforme (même si ça ne fait "que" 37% du catalogue total). Donc si vous écoutez un morceau au hasard sur Spotify, y'a 99,6% de chances qu'il soit dans l'archive.

Pour trier tout ça, ils ont utilisé la métrique "popularité" de Spotify qui va de 0 à 100. Ainsi, pour les morceaux avec une popularité supérieure à 0, ils ont récupéré quasiment tout en qualité originale (OGG Vorbis 160kbit/s) et pour les morceaux à popularité 0 (soit ~70% du catalogue, des trucs que personne n'écoute), ils ont réencodé en OGG Opus 75kbit/s pour gagner de la place… mais ils ne sont pas allés au bout de la longue traîne (trop de stockage pour trop peu de gain, et pas mal de contenu “bof” à popularité 0). Pour 99% des gens ça sonne pareil, même si je sais que les audiophiles vont me tuer dans les commentaires ^^.

En regardant les stats qu'ils ont produit à partir de ce qui a été scrappé, les 3 morceaux les plus populaires (Die With A Smile de Lady Gaga et Bruno Mars, BIRDS OF A FEATHER de Billie Eilish, et DtMF de Bad Bunny) ont été streamés plus de fois que les 20 à 100 millions de morceaux les moins populaires combinés. Bon, ils précisent aussi que la popularité est très dépendante du moment, donc ce top est un peu arbitraire mais ça montre à quel point la longue traîne est looooongue sur les plateformes de streaming...

Après le problème avec la préservation musicale actuelle (ce qu'on retrouve sur les sites de Torrent par exemple), c'est qu'elle se concentre uniquement sur les artistes populaires et la qualité maximale (FLAC lossless). Du coup, y'a plein de musique obscure qui ne survit que si une seule personne décide de la partager. Et ces fichiers sont souvent mal seedés. Et c'est pour ça que je trouve l'approche d'Anna's Archive plutôt pas mal car elle consiste à archiver tout ce qui existe (ou presque), même en qualité "suffisante", plutôt que de se concentrer sur un sous-ensemble en qualité parfaite.

Et comme vous vous en doutez, tout est distribué via des torrents, avec les métadonnées déjà disponibles (moins de 200 Go compressés) et les fichiers audio qui arrivent progressivement par ordre de popularité. Note la base s'arrête à juillet 2025, donc tout ce qui est sorti après peut ne pas être là (même s'il y a quelques exceptions).

Bref, c'est la première archive de préservation musicale vraiment ouverte, que n'importe qui peut mirrorer s'il a assez de stockage et voilà comment grâce à l'aide de tout le monde, le patrimoine musical de l'humanité sera protégé pour toujours des catastrophes naturelles, des guerres, des coupes budgétaires et autres désastres... Par contre, pas sûr que ça la protège de la boulimie des IA génératives.

Merci à Lilian pour l'info !

Source

❌