Ce que fait Linus Torvalds quand il en a marre du noyau Linux
Imaginez le créateur de Linux et de Git décider pendant son temps libre de se plonger dans la conception de circuits analogiques et le traitement audio numérique. Le résultat est le projet GuitarPedal sur GitHub. C'est une pédale multi-effets pour guitare complète, où Linus lui-même a conçu les circuits imprimés en KiCad et écrit le firmware en C.
Le projet est né d'un ancien prototype abandonné. Auparavant, il possédait des potentiomètres analogiques, un cauchemar à configurer. Maintenant, la pédale dispose d'un écran OLED, de deux encodeurs et d'un microcontrôleur récent.
Matériel modulaire et minuscules connecteurs
Le matériel repose sur une conception modulaire et démontable. Au lieu de router l'ensemble du circuit sur une seule grande carte, Linus a divisé l'appareil en quatre modules distincts.
La première carte intègre le microcontrôleur RP23 de la famille Raspberry Pi Pico 2. La deuxième carte accueille le codec audio TI TAC51, qui numérise le signal de la guitare. Le troisième module contient les connecteurs d'alimentation 9V et les prises audio, et le quatrième gère l'interface avec l'écran 128x128, les commutateurs au pied et les encodeurs.

Les modules se connectent entre eux via un câble plat FFC à 12 broches. Le transfert de données s'effectue via I2C pour la commande et I2S pour l'audio. Les cartes utilisent des connecteurs HiRose BM28 avec un pas de seulement 0,35 mm. Torvalds indique ouvertement dans le README que travailler avec de si microscopiques composants lors de l'assemblage manuel est difficile. Mais cela permet de tout intégrer dans un boîtier compact.
L'auteur souligne : la modularité était nécessaire pour expérimenter avec l'agencement. Si vous décidez de reproduire le design, il serait plus judicieux de placer le codec directement sur la carte de connecteur et le microcontrôleur sur la carte de contrôle. Cela élimine l'assemblage double face et les câbles rubans complexes.

Commande et compilation du firmware
Sur le dessus du boîtier se trouve un écran monochrome. En dessous se trouvent deux encodeurs rotatifs avec boutons intégrés et deux commutateurs au pied.
L'encodeur supérieur modifie la valeur du paramètre actuel, et une pression dessus passe au paramètre suivant dans la liste. L'encodeur inférieur fait défiler les effets eux-mêmes. Le commutateur au pied gauche active ou désactive l'effet sélectionné d'un coup de pied, et celui de droite passe la pédale en mode bypass du signal.
La compilation du firmware est simple sans complications inutiles. Le code source est écrit en C pur avec des liaisons vers pico-sdk et tinyusb. Sous Linux, le processus ressemble à ceci :
git clone https://github.com/torvalds/GuitarPedal.git
cd GuitarPedal/Software
make prep
make
Dans le répertoire build/, le fichier blink.uf2 prêt apparaît. Pour flasher l'appareil, vous devez maintenir les deux encodeurs lors de la connexion via USB et simplement copier le fichier sur le lecteur virtuel qui apparaît.
Ce qu'il y a à l'intérieur du DSP
La partie la plus intéressante du dépôt se trouve dans le dossier de traitement logiciel. Torvalds a écrit son propre ensemble d'algorithmes DSP. Les calculs s'exécutent au format virgule flottante 32 bits.
Voici ce que la pédale peut déjà faire :
- Noise Gate. Le niveau de seuil descend jusqu'à -85 dBV. Le code calcule les paramètres d'attaque et de décroissance pour supprimer le ronflement du micro sans couper rapidement les queues de cordes. La LED d'état change de luminosité lorsque le gate se déclenche.
- Compresseur. Fonctionne avec un temps d'attaque, une décroissance et un niveau de gain de makeup ajustables.
- Boost avec limitation du signal. Au lieu du clipping d'onde standard, Linus a utilisé le pliage de signal. Lorsque l'amplitude dépasse le seuil, l'onde n'est pas coupée — elle revient en arrière. Cela crée un spectre harmonique riche.
- Echo et délais. L'effet Echo King a été porté du projet Hothouse et émule le délai sur bande Maestro Echoplex. Un phaser et un flanger basiques sont également présents à proximité.
- Pitch shifter. Fonctionne sans transformée de Fourier rapide lourde. L'algorithme utilise un buffer de délai circulaire avec deux phases et un lissage sinusoïdal aux jointures. Ajouter de la rétroaction produit un effet d'écho avec une dérive progressive de la hauteur.
- Égaliseur dix bandes. Chaque bande est ajustable de -20 dB à +20 dB, et la réponse en fréquence actuelle est tracée en graphique sur l'écran.
Le code contient également un stub pour envoyer l'audio via USB vers un ordinateur, bien que Linus lui-même mette en garde contre l'instabilité de cette partie.
Pourquoi regarder ce projet
Le dépôt GuitarPedal est intéressant non pas tant comme instrument de musique fini, mais comme exemple clair de développement embarqué full-cycle par une seule personne.
Vous pouvez y trouver :
- Schémas et layout prêts dans KiCad avec des exemples de travail dans un boîtier compact
- Code C natif pour travailler avec un codec audio via I2S sur les puces RP2040 et RP2350
- Algorithmes mathématiques clairs pour les effets de guitare sans bibliothèques externes lourdes
- Interface utilisateur simple pour écrans OLED basée sur des encodeurs
Si vous voulez comprendre le DSP sur les microcontrôleurs ou voir comment Torvalds écrit du code en dehors du noyau Linux, étudier ce dépôt en vaut certainement la peine.
Projets similaires