Update: English translation avalaible at http://jzu.blog.free.fr/index.php?pages/Le-Phaseur

L'airFX prenant trop de place sur le pédalier, il avait giclé au profit d'une wah de base, mais j'avais toujours besoin de cet effet de flange malade qu'on peut entendre par exemple sur Youpi Youpi Yeah (la chanson) - enfin, moins maintenant, mais bon - et, après tout, pourquoi ne pas bricoler un effet numérique ? Il existe déjà une pédale se voulant open source dont le manque de succès est peut-être dû à son prix élevé, dans les $300. On peut baisser les coûts en utilisant un Arduino, par exemple, si on n'a pas besoin de trop de mémoire ni de définition, et puis ça peut être cool d'architecturer soi-même tout le système. Il faut quand même faire un peu d'électronique, et savoir optimiser son code car on ne dispose là que d'un pauvre micro-contrôleur ATmega168 à 16 MHz avec quelques kilo-octets pour le programme et 1 kilo-octet pour les données, y compris la stack. Juste de quoi piloter un lave-vaisselle. Ou fabriquer un effet de déphasage lo-fi.

Arduino

Le déclic est venu d'un article d'Instructables où, même si les effets n'avaient pas trop d'intérêt et s'il s'y glissait deux ou trois erreurs, son auteur, kylemcdonald, posait toutes les bases nécessaires que ce soit au niveau matériel ou logiciel. Ma solution est maintenant un peu différente sous ces deux aspects mais n'aurait jamais vu le jour sans cet article.

En attendant le circuit commandé aux USA, j'ai commencé par tester mes idées de « flange variable » avec Audacity pour valider l'algorithme à employer en décalant un signal de quelques millièmes de seconde et en faisant varier ce décalage. Le colis reçu, on commence le boulot d'intégration avec l'adaptation des entrées-sorties audio. En entrée, il faut 5 volts alors que le signal d'une guitare est de l'ordre de quelques centaines de millivolts. En sortie, c'est l'inverse. Il faut donc un étage d'amplification comme un ampli op (le LT1006 convient pour 5 volts) en entrée et un diviseur de tension en sortie. L'entrée analogique autorise 10 bits mais, pour obtenir une sortie d'une résolution au moins aussi correcte, il faut combiner deux sorties numériques 8 bits en PWM en ajustant les résistances de sortie pour que l'une soit d'une valeur 256 fois supérieure à l'autre. Enfin, on peut obtenir 5 volts à partir de 9 volts avec un régulateur de tension sur un radiateur. Quelque chose comme ça, les parties en pointillés étant optionnelles :

Schema adapatation Phaseur

A posteriori, je vois bien que le circuit d'entrée est buggé et que les filtres passe-bas ne sont pas nécessaires. Mais il a suffit à obtenir du son au bout de quelques essais difficiles, avec le proto du circuit d'adaptation sur un breadboard.

phaseur1.jpg

Les premiers essais avec le prototype complet - dont une vieille pédale italienne nullissime recyclée pour l'occasion - donnent ce sample. Attention aux oreilles sensibles.

Phaseur complet 1

Et finalement, on peut embarquer une version définitive dans la vieille wah. La correction du circuit électronique donne un meilleur résultat du point de vue de la saturation mais le son devient bien moins intéressant malgré le sample and hold involontaire (interférences au niveau du multiplexeur d'entrées analogiques audio et potentiomètre ?)

phaseur8.jpg

Le code du Phaseur, sous licence Artistic 2.0, est rébarbatif et simple en même temps. Rébarbatif en raison de la proximité du matériel qu'aucune librairie n'isole du programmeur (« Cachez ces registres que je ne saurais voir »). Simple car l'algorithme consiste à mélanger l'échantillon courant avec ce qu'on a écrit dans le buffer circulaire juste un peu plus tôt, selon la position de la pédale. Tout se passe dans loop().

À suivre. Car, même si un autre effet est prévu sous Linux avec des possibilités de traitement de qualité CD et de la mémoire a gogo, l'Arduino reste une solution efficace - car sans système d'exploitation - si on se contente de 8 ou 10 bits de résolution. Une fois que l'électronique d'adaptation sera au point et que le son obtenu sera correct, il suffira de décaler l'offset de la polarisation et de monter le gain pour obtenir l'effet cradingue du premier sample qui plaît tant à certains (et terrorise les autres).