jzu

Aller au contenu | Aller au menu | Aller à la recherche

Junk Guitar

En guise de suite au post sur le Diddley Bow, et parce qu'après tout on peut avoir besoin de six cordes sur une guitare...

J'ai trouvé sur eBay un manche d'électrique à 40 euros, il y a quelques mois de cela, du pur made in China avec un diapason Fender, un radius assez standard, un profil plutôt agréable, un bois ok, pas totalement brut mais vernis d'une seule couche fine (un chiffonnage), seul le métal des frettes étant d'une qualité discutable d'après Greg de DNG. Je le destinais à un projet de rénovation par ailleurs mais l'occasion fait le larron : je l'embarque en vacances pour une semaine, le temps de construire un instrument autour. La caisse ? Le cordier ? Le chevalet ? On verra sur place.

Il faut aussi des mécaniques. Un jeu de récupération fera l'affaire, en fait un assemblage hétéroclite de trois paires de vieilles mécas en ligne.

Les deux photos suivantes ont été prises avec un phone pas smart, d'où l'intéressant effet de floutage presque digne de Hamilton. L'aspect documentaire ne saurait éclipser une âme d'artiste qui... non, rien.

Pose des mécaniques

En attendant de trouver la caisse, on place les mécaniques et, petit souci, les trous des vis au dos de la tête ne correspondent pas. Le décalage fait parfois plus d'un millimètre. Il faut boucher ceux qui se trouvent presque à cheval sur les trous des mécanigues avec des petits éclats de bois pour que les vis entrent droit.

Par ailleurs, je cherche toujours une caisse... N'importe quoi, un bidon en métal, un jerrycan en plastique, une caisse en bois... Chou blanc. Les seuls bidons trouvés sont beaucoup trop souples même si la caisse doit être renforcée de toute manière. Je finis par dénicher une de ces valises d'électricien en alu sur bois de cagette. Ça ira, en passant un temps pas possible à gratter la mousse de l'intérieur qui assourdirait toute velléité de résonance.

Une petite boîte à thé (Hédiard, mazette) traîne par terre dans un coin. Je la déplie en séparant le fond, avec des pinces, puis je replie le bord sur 1mm pour qu'il ne tranche pas. Six petits trous au milieu, là où la feuille de métal sera pliée en deux, et voilà pour le cordier.

Quant au chevalet, j'ai déjà repéré une lame de couteau cassée. Il suffit de frotter le bord du haut contre une pierre pour en arrondir les arêtes, le côté de la lame allant se ficher dans un support. Tiens, justement, un bout de vieille rampe d'escalier en acajou, scié aux bonnes dimensions, par exemple, ça peut le faire.

Il faut renforcer la caisse et fournir un support un peu solide au manche. Un pied de lit d'enfant a presque la bonne taille, une traverse un peu bricolée complète le renfort. C'est donc là-dedans qu'on visse le cordier et le manche, le plus droit possible.

Valise et armature

Le montage des cordes est fastidieux parce qu'il faut les enfiler par le côté du cordier pour viser les petits trous. Elles sont passées dans les mécaniques et tendues au minimum pour poser le chevalet. Qui s'avère trop haut (scié à la bonne taille, tu parles) et qu'il faut reprendre. Une heure plus tard, tout est assemblé, cordes tendues, chevalet ajusté puisqu'il est flottant ; premiers essais.

Le manche se retrouve en fait un poil de travers, quasiment rien, mais quand même, ce qui fait que les cordes se retrouvent un peu décalées sur le manche. Le chevalet reste un peu trop haut et l'action, l'éloignement des cordes par rapport à la touche, est trop importante. Enfin, les trous du cordier sont trop rapprochés les uns des autres. Ce n'est pas tant dû au fait qu'ils ont été percés au pif (mais alors, complètement) qu'à la largeur insuffisante du bout de tôle utilisé.

Guitare complète

Rien de tout cela n'est grave parce qu'il suffit de desserrer les vis qui tiennent le manche, d'ajouter une petite cale pour ajuster le renversement, la jonction entre la caisse et le manche. Ce faisant, je peux régler finement l'inclinaison latérale. Et pour l'écartement des cordes entre elles, bah, il n'y a qu'à s'y faire.

Admirons l'accastillage.

Accastillage

Shake some action. Ça sonne ? Très mince, mais pas trop désagréable. Assez métallique tant que les cordes sont neuves. Il faudrait idéalement une scie cloche pour percer deux ouies rondes dans le couvercle de la valise et donner ainsi un peu d'ampleur au son.

Démonstration en 13 secondes.

Le principal inconvénient de ce montage est que le manche se retrouve à peu près à deux kilomètres vers l'avant. C'est assez fatigant et condamne finalement l'instrument qui ne survit pas à la fin des vacances. Le manche retrouvera sa destination initiale, dans un avenir imprécis mais radieux. Les autres éléments attendront de prochaines vacances avec un manche de récupération voire, pourquoi pas, fait main avec des frettes en gros fil de fer, totalement à l'africaine. Oui, c'est du vice mais, justement, c'est meilleur.

En guise de conclusion, il n'y en aura pas... mais, à la place, vous aurez droit au cor corse dont rêvait Monique : une embouchure en plastique, un tuyau d'arrosage et un entonnoir.

Corsican Horn

Slampler Reboot

Le Slampler a fait des siennes. En fait, le NSLU2 n'a pas aimé les arrêt-marche à répétition. Ça a été l'occasion d'une réinstallation complète en se servant toujours de ce document. Après plusieurs heures d'installation à cause des lenteurs d'écriture sur la clef USB, le système était de nouveau opérationnel. Il a suffit d'installer quelques packages supplémentaires pour retrouver une machine totalement fonctionnelle :

# apt-get install gcc make libasound2-dev libasound2

C'est plus propre, du coup. L'installation antérieure comprenait un maximum de packages inutiles car ils servaient aux tests et au développement, de jackd à emacs. Tout compris, le système prend maintenant 360 Mo d'espace disque. Une clef de 512 Mo peut donc suffire en laissant plus de 100 Mo de libre pour les samples par défaut, ceux qui seront joués si aucune autre clef USB n'est insérée dans le port libre.

Un nouveau programme gère le montage de ce volume supplémentaire car un automounter standard comme autofs ne permet de monter un disque à la volée que quand un accès se produit, sans intervenir sur les processus. datamount, lui, scrute régulièrement /proc pour y regarder si /dev/sdb1 existe et s'il est monté. Il monte ou démonte la clef si besoin est en tuant au passage le processus slampler, qui est immédiatement réanimé par init.

Les systèmes de fichiers sont montés en lecture seule pour pouvoir couper le jus sans avoir peur de tout borker - ce qui m'est arrivé plus d'une fois. Les répertoires /tmp et /var/run sont des montages en ramfs puisque leur contenu est par nature volatile et que le système ne serait pas content s'il ne pouvait pas y écrire. Sauf que le réseau ne monte pas pour une raison inconnue (ah, les joies des machines headless) et qu'il faut une bidouille horrible dans le /etc/rc.local pour configurer correctement eth0 :

mount /dev/sda2 / -o rw,remount
ifconfig eth0 192.168.0.106
sleep 1
mount /dev/sda2 / -o ro,remount

Le dongle C-Sound (ou 3D Sound) est abandonné pour cause de bruit de fond vraiment trop épouvantable. C'est aujourd'hui un boîtier ART qui pilote le son en attendant peut-être un UCA 202.

L'absence du joystick est gérée à peu près correctement et on peut le brancher alors que le programme est en train de tourner. Surtout, un thread supplémentaire permet de contrôler le slampler par STDIN. Pratique pour les tests. Un autre est en préparation pour contrôler un clavier USB par l'interface HID, ce qui permettra d'utiliser ces pédales-ci ou celles-là.

Les samples sont maintenant lus à la volée au lieu d'être stockés en RAM, ce qui était l'erreur principale de la version antérieure : le processus se mettait à swapper en saturant le bus USB. Les 44 octets d'en-tête de chaque fichier WAV sont quand même lus au démarrage pour connaître la taille et les caractéristiques des samples.

Tout le code a été placé sur Github for your lurking pleasure (et plus si affinités).

Au fait, en me baladant parmi les divers projets audio de Github, entre un gazillion de mixers, de streamers et de wrappers Javascript pour HTML5, je suis tombé sur convolute, un programme combinant plusieurs sons par convolution. On prend un son, on le transforme par un autre et on en obtient un troisième qui n'a qu'un lointain rapport avec les deux premiers. Le dénommé encryptio a même fixé un bug d'utilisation de la librairie kissfft qui se produisait sur mes machines, qu'il en soit remercié. La moitié des samples joués aujourd'hui par le Slampler proviennent de ce programme.

Diddley Bow

Le mieux est l'ennemi du bien. Pourquoi s'embêter avec 6 cordes sur une guitare quand on peut jouer avec une seule ? Pourquoi devrait-on l'accorder ? Pourquoi, finalement, jouer de la guitare quand on peut jouer du diddley bow ?

Il y a eu ce passage phénoménal de Seasick Steve chez Jools Holland. Tiens, qu'est que c'est que ce truc ?

Puis, à l'occasion du décès récent de Captain Beefheart, j'ai redécouvert ses 10 commandements du guitariste. Le septième, notamment, vaut son pesant de cacahuètes.


 
7 - Always carry a church key
 
That's your key-man clause. Like One String Sam. He's one. He was a Detroit street musician who played in the fifties on a homemade instrument. His song "I Need a Hundred Dollars" is warm pie. Another key to the church is Hubert Sumlin, Howlin' Wolf's guitar player. He just stands there like the Statue of Liberty — making you want to look up her dress the whole time to see how he's doing it.

 
 

Texte abscons et rigoureusement intraduisible puisque « clef d'église » n'est pas la seule signification de church key. Mais on comprend bien qu'un décapsuleur puisse servir de bottleneck, même si One-String Sam se servait, lui, d'une bouteille.

Ok, il m'en faut un. Une planche de bois provenant d'un encadrement de fenêtre, une corde de guitare rouillée, 6 clous, 2 vis, un micro extrait d'une pelle asiatique d'il y a 25 ans (Cyclone by EKS Technologies) sur lequel on soude une embase jack mono, une bouteille vide en guise de chevalet, un bout de tige d'acier pour le sillet et roulez jeunesse.

En cherchant des renseignements sur la fabrication, je suis tombé sur cet extrait de It Might Get Loud, film commémoratif sur la guitare électrique que j'avais soigneusement évité avec Jimmy Page, The Edge et Jack White, où ce dernier construit un diddley bow dans un décor champêtre.

Première étape : Faire un noeud à l'extrémité « libre » de la corde.

Noeud plat à l'extrémité de la corde

Deuxième étape : Fixer la corde à un bout, déterminer l'emplacement de la vis à l'autre bout de manière que la corde soit tendue, une fois la bouteille en place, visser, clouer.

Composants (la bouteille est encore pleine)

Troisième étape : Positionner le micro sous la corde, enfoncer les clous qui le maintiendront, insérer une cale pour qu'il tienne en hauteur.

Diddley Bow terminé

Quatrième étape (en option) : Marquer les emplacement des notes comme s'il s'agissait des frettes d'une guitare. À l'usage, on s'aperçoit que les points (en 3, 5, 7, 9 et 12) sont plus importants que les traits des demi-tons, surtout qu'une pression minime sur la corde a naturellement tendance à fausser l'accord. Comme les points se trouvent au milieu des cases, il deviennent les nouveaux repères des notes.

Marquages des notes

Fin des opérations : Placer la bouteille, brancher sur l'entrée de n'importe quel ampli ou assimilé (dans mon cas, celle d'un vieux portable IBM). Prendre un bottleneck, un tournevis ou, mieux, un décapsuleur : church key power! L'entrée micro sature si on pousse le gain, ce qui ne peut qu'améliorer le son quand on ne sait pas vraiment jouer en slide. Comme moi. Et dans ce cas, ça donne un petit côté Metal dont il faut bien se contenter à défaut de l'évocation habituelle du Delta du Mississipi.

Slampler, suite

Suite, mais pas fin, des aventures du Slampler !

Slampler monté - cc by-nc-sa

L'intégration du joystick au pédalier est terminée. L'ajout des pièces de tuyauterie en PVC, pour loger les interfaces, lui donne un petit air d'arme secrète soviétique. Déco à prévoir en conséquence.

Slampler monté - cc by-nc-sa

Le circuit imprimé du joystick n'était pas totalement détruit après ies premiers tests. Il restait 6 contacts opérationnels... juste assez pour y brancher tous les switchs. La leçon en est qu'il ne faut pas souder sur les pistes, qui se décollent, mais sur les points de soudure existants.

Composants du slampler - cc by-nc-sa

L'ensemble des composants a un peu de mal à rentrer, surtout à cause du long câble USB du joypad. Avantage, rien ne bouge à l'intérieur. Inconvénient, la place est maintenant terriblement comptée alors que j'envisage de remplacer l'atroce dongle C-sound par une interface Behringer UCA-202. Il faudra probablement déplier et insérer le câble à l'intérieur du tuyau des switchs pour gagner de la place.

Slampler assemblé - cc by-nc-sa

Le NSLU2 ne dispose que de 28 MiB de RAM. Combien de samples, de quelle longueur, peut-on loger ? En y stockant des samples mono sur deux octets à 44100 Hz, cela donne 88200 octets par seconde et 10 MiB permettent de loger 113 secondes, soit, pour 15 samples, 7 secondes en moyenne par sample.

Je dois largement dépasser cette taille car il y a parfois des trous dans la reproduction audio, probablement parce que le programme swappe un peu (4 MiB en swap après exécution) et que l'écriture est coûteuse sur une clef USB. Et puis il n'y a pas de secret, il faut réduire la taille des samples. La durée totale de mes samples actuels étant de 141 secondes, cela représente dans les 12 MiB en interne; il faudrait donc descendre à 8 MiB soit dans les 90 secondes. FAUX ! CF. infra. J'aurais aussi pu conserver les samples sur disque et les lire à la volée, ce qui serait concevable en n'en lisant qu'un seul à la fois, mais je voulais pouvoir en lire plusieurs en même temps.

Code du slampler en mode debug - cc by-nc-sa

Cela signifie aussi qu'il faut vraiment tuer les démons comme hald et udevd pour gagner quelques MiB en mémoire. Il ne sera alors plus possible de monter automatiquement une clef USB supplémentaire contenant les répertoires 0/, 1/ et 2/ allant se mettre par dessus ceux d'origine de /data, mais qu'elle ne peut être prise en compte qu'au boot.

Pour l'instant, on reste sur un déclenchement simple où le sample ne s'arrête pas avant la fin. Le choix se fera à la prochaine répétition... en janvier. Si cela change, l'architecture devrait aussi changer pour lire les samples directement depuis le disque puisqu'il sera alors assez difficile d'en déclencher plusieurs en gardant le pied appuyé...

Edit La situation est plus grave que ça. J'ai été intrigué par un core dump de 30 MiB. En me connectant en ssh au Slug pendant que ./slampler tournait, la commande top donne cette taille dans la colonne VIRT (mémoire virtuelle). Bref, le programme swappe à mort. Solutions :

  • Réduire encore plus drastiquement la taille des samples (mais c'est pas drôle) ;
  • Réduire l'empreinte noyau (mais ça m'amuse moins que dans mon jeune temps, surtout les tests sur une machine headless) ;
  • S'arranger pour que les samples courants sortent de la swap quand on sélectionne une banque de sons (là, j'ai une idée).

Slampler

Le Slampler, Slug Sample Player, est né avec la formation d'un nouveau groupe, sur les cendres des Knou. À la première répétition, on aurait voulu envoyer des samples comme ceux que Paul avait insérés sur ses maquettes enregistrées avec Ableton Live. En général, cela signifie acheter un pédalier sampler/looper comme un Boss RC-50 ou un Boomerang, mais on ne trouve pas grand-chose en dessous de 400 € si on veut plusieurs déclencheurs, et les fonctionnalités de boucle et d'enregistrement en direct ne sont pas nécessaires. Non, il fallait simplement quelques switches au pied, chacun lançant son échantillon, éventuellement répartis en banques à travers lesquelles on peut cycler grâce à un dernier poussoir.

Son of Slab

Rien de plus simple en partant du Slab puisqu'il suffit d'en prendre les parties qui assurent la sortie audio, la gestion du joystick, et d'y ajouter une gestion simplissime des fichiers d'échantillons. On a donc N fichiers de nom quelconque par répertoire nommé numériquement (0, 1, 2...) pour chaque banque de son, et hop. Il suffit de presser un bouton de joystick pour que le son correspondant soit reproduit.

La carte-son est toujours l'horrible petit dongle C-sound à quelques euros pièce. Elle semble suffire à la tâche, surtout dans un contexte de répétition ou de petit concert... mais on en reparlera plus loin.

Slampler en studio - © 2010 Delphine 13

Prototype avec la pédale contenant l'interface audio, le Slug et le joypad


Le code

Le code est sur Github et rien de vraiment notable n'a changé depuis le Slab hormis l'initialisation de la carte-son. Elle passe maintenant par la fonction snd_pcm_set_params() qui simplifie tout. À l'époque, j'avais dû lire une doc obsolète où cette fonction ne figurait pas encore. Le point notable est qu'elle accepte de plus un paramètre latency. Je ne le retrouve pas dans les primitives ALSA alors que ce paramètre est décisif pour le temps se réponse. Dans l'exemple pcm_min.c, il est fixé à 500000 en millonnièmes de secondes, et le sample met effectivement une demi-seconde à se déclencher. 500 et 5000 donnent une sorte de grésillement au playback et 50000 (50 millièmes de seconde) envoie un son correct quasiment instantanément. Il faudra donc revoir l'initialisation du Slab puisque ce paramètre additionnel pourrait corriger les divers problèmes de latence observés.

Là où le Slab utilise un buffer circulaire pour gérer l'audio, le Slampler emploie autant de pointeurs qu'il existe de switchs déclarés. Dès qu'une variable d'état change depuis le thread du joystick suite à l'activation du sample, un de ces pointeurs est affecté au short * du sample, puis un certain nombre de trames sont copiées vers *playbuf par addition et le pointeur est incrémenté à chaque itération. À la fin du sample, le pointeur est remis à NULL.

Le code est directement portable d'une Debian à une Ubuntu et de ARM à Intel. Pas essayé sur une Fedora ou une OpenSuSE (sur un IBM zSeries non plus, d'ailleurs).

Les données audio

Le répertoire des données est indiqué par un #define dans le source et peut être monté sur un système de fichiers à part comme celui d'une clef USB ou d'une carte SD. Dans ce cas, il faut bien entendu bricoler le fichier /etc/fstab pour y insérer une ligne comme

/dev/sdb1 /data vfat default 0 0

si le source contient

#define DATADIR /data

Les fichiers échantillons seront donc dans les répertoires /data/0, /data/1, etc.

Leur format est obligatoirement s16le à 44100, mono ou stéréo. La fréquence est fixée car on ne peut pas s'amuser à convertir les flux audio à la volée avec un processeur à 266 MHz. La commande qui suit convertit tout fichier audio non compressé au bon format :

# sox src.wav -c 1 -b 16 dst.wav rate -h 44100 dither -s

Pour convertir un fichier MP3 ou OGG en WAV, il suffit de lancer

# mpg123 -w fichier.wav fichier.mp3

À noter, un petit quirk des systèmes de fichiers évolués comme les ext*fs : l'ordre d'insertion dans un répertoire n'est pas celui dans lequel les entrées de fichier seront ensuite lues par readdir(). Ce n'est pas le cas des FAT des clefs USB où le premier fichier copié dans un répertoire vide sera le premier à apparaître dans la liste. Celui-ci sera alors affecté au switch de gauche, le deuxième au suivant, etc.

Chaque échantillon est stocké en RAM en mono quel que soit son format d'origine pour optimiser la place. Il est converti en 2 canaux au moment du playback car certaines cartes son n'acceptent pas de signal mono, et son amplitude est divisée par deux pour pouvoir mixer les signaux de samples différents sans trop de saturation. Un mécanisme transforme le dépassement de capacité en simple écrêtage.

Le système

Comme pour le Slab, le socle est une Debian ARM pour pouvoir éditer/compiler/tester sur le NSLU2 lui-même. Les démons inutiles comme hald sont coupés.

Il faut insérer une ligne dans le fichier /etc/inittab comme par exemple chez moi :

sl:23:respawn:/home/slug/slampler/slampler

Elle démarre un processus slampler et le relance chaque fois ou'il s'arrête. telinit q force le processus init à relire ce fichier si on (dé)commente cette ligne pour passer d'une configuration de production à une configuration de développement et vice-versa.

Le programme tourne en tant que root ce qui lui donne les bons droits pour allumer et éteindre les LED du NSLU2 selon la banque de sons sélectionnée.

Pied au plancher

Les joysticks et les joypads que je connais peuvent comporter jusqu'à 10 boutons. Il suffira donc de souder aux contacts de ces boutons des fils allant à des poussoirs fugitifs pour les commandes au pied, le tout intégré dans un boîtier plat, un demi-tuyau en PVC ou une gouttière en alu, pour obtenir l'interface de conmande.

Jusqu'à 8 sons peuvent être activés simultanément puisque 8 switchs sont définis dans le code plus celui de banque. Cela donnerait un pédalier à 9 poussoirs, donc d'au moins 80 cm de long si on les espace de 10 cm. Un peu long pour mon goût : je me contente de 5 poussoirs de samples plus un de banque, espacés de 8 cm, ce qui donnera un peu plus de 50 cm avec les marges sur les côtés.

Pédalier du Slampler - cc by-nc-sa

Le pédalier en construction


Pour le prototype, les contacts d'un Logitech Precision seront soudés à 7 fils (1 pour le commun) courant vers un tuyau en PVC de 40 mm de diamètre, calé par deux quarts de tuyau dans le sens de la longueur pour le stabiliser, dans lequel sont percés les trous recevant les poussoirs. Ceux-ci porteront les fils électriques soudés à des fils de faible section, eux-mêmes soudés aux contacteurs du joypad. La fiabilité est le point faible du proto. Il faudra probablement un tuyau de plus grand diamètre pour héberger tout le foutoir branché au Slug : intérieur du joypad, carte-son, clef USB et hub passif.

Tout cela sera possible une fois que je serai arrivé à souder correctement les fils sur le circuit du joypad. Pour l'instant, j'ai surtout réussi à griller deux contacteurs...

Résultat

En répétition, avec un joypad actionné à la main puisque le pédalier n'était pas encore soudé, l'ensemble s'avère utilisable à un détail près. La très mauvaise qualité de l'interface provoque un hiss assez perceptible à volume de groupe. Il faut changer de carte son mais je ne connais pas les interfaces pas chères actuelles (comme la Behringer UCA 202), ou insérer une noise gate bas de gamme en sortie comme la Harley Benton de chez Thomann à 25 euros (ne pas prendre la Behringer, qui ne marche pas de l'avis général).

Slampler en action - © 2010 Delphine 13

Portrait de l'artiste en jeune geek


D'autre part, un bug dans le code actuel provoque parfois le défilement de plusieurs samples à la suite quand on change de banque pendant qu'un échantillon tourne encore. C'est facilement corrigeable, soit en coupant les samples en train de tourner quand on passe à la banque suivante, soit en gérant les structures de donnéss un peu différemment.

Enfin, faut-il simplement lancer un sample et attendre qu'il se termine, ou bien ne le jouer que le temps que le switch correspondant reste enfoncé ? C'est actuellement la première solution qui est mise en œuvre mais il serait facile de tenir compte de l'état courant des switchs. Comme d'habitude, à suivre.

SLAB - Slug Audio Blaster

Après le Phaseur Arduino, l'étape suivante était logiquement un système embarqué sous Linux afin de pouvoir gérer assez de RAM pour des effets comme l'echo et, peut-être, la reverb, en plus du flanger. Enfin, un vrai système d'exploitation avec un compilateur et un serveur SSH ! Ça change de l'IDE limité et des transmissions série de l'Arduino. Parfois, j'aime mes aises. Et une vraie carte-son permet de s'affranchir des bricolages d'I/O analogiques et d'obtenir un rapport signal-bruit correct.

Parmi tous les matériels compacts pouvant tourner sous GNU/Linux, le Linksys NSLU2, alias Slug, est un choix logique parce qu'il est très largement supporté et qu'il comprend 2 ports USB. Plusieurs distros pour processeur ARM sont disponibles dont SlugOS/LE, qui ne m'a pas convaincu (trop compliqué à customiser, surtout alors que je pensais encore utiliser jack) et Debian. Le seul vrai inconvénient de Debian est l'ajout obligatoire d'espace disque supplémentaire, ce qui implique d'utiliser un des ports USB pour une clef de 2Go. La carte-son choisie est un dongle USB appelé C-sound, compatible usb-audio, trouvé sur eBay pour 4 €.

Le contrôleur ? Une wah chinoise à 16 € (+fdp) dépouillée de son électronique et un peu bricolée pour pouvoir se servir réellement du switch. N'importe quelle wah mécanique fera l'affaire, en évitant de préférence les wah chinoises comme la mienne qui ne sert qu'à prototyper. Les Morley, Behringer et autres pédales à commande optique sont donc à oublier pour l'instant. Le potentiomètre de 100 kΩ est connecté à un convertisseur 15 broches analogigue -> USB. Sa résolution de 7 bits n'est ni plus ni moins pathétique que les joysticks USB habituels mais les potards de ceux-ci ne sont pas compatibles. Il faudrait aussi que je retrouve ce fabricant anglais de convertisseurs analogique-numérique pas trop chers, qui ont une bien meilleure résolution.

Ok, il faut trois ports USB au total, donc ajouter un hub. Pas grave car il peut être passif, mais le joystick doit être connecté en direct sinon il marche très mal (un hub actif n'y change rien). Deux câbles USB vont donc de la pédale au Slug.

Ensuite, quelle couche logicielle attaquer ? Jack est tentant sur le papier mais, sérieusement, il n'y a ici rien à multiplexer et ses capacités « temps réel » dépendent avant tout de la couche ALSA sous-jacente. Malgré l'étrange avis du tutoriel de l'API ALSA concernant le full-duplex (In a word: JACK), on peut parfaitement lire et écrire sur la même carte-son.

Le code, sous GPL, est structuré en gros en :

  • Thread séparé du joystick ;
  • Initialisation de la carte-son en full-duplex ;
  • Boucle de traitement avec l'enchaînement d'effets ;
  • Diverses fonctions de gestion des indicateurs lumineux, d'affichage de debug, gestion des signaux, etc.

Dans les données, on notera surtout

  • procbuf, le buffer circulaire où le signal est traité ;
  • joyval, indiquant la position du potard de la pédale, dont il faut intégrer les variations pour éliminer les fluctuations engendrant des distorsions ;
  • sinus, un tableau de valeurs pre-calculées pour pallier l'absence de FPU sur cet ARM.

On compile le source unique par :

$ gcc -g -Wall -lasound -lthread -o slab slab.c

et c'est tout. Si l'exécutable résultant est lancé par root, il permet en plus de commander les petites lumières du Slug qui indiquent quels effets sont enclenchés. Le flag -d fait afficher des messages de debug.

ALSA ne se laisse pas programmer facilement. Comme le rappelait déjà Alan's clob en parlant de ses efforts sur Gnuitar, il faut en passer par une palanquée de fonctions de bas niveau quand, la plupart du temps, on voudrait simplement ouvrir une carte-son avec des paramètres par défaut. Heureusement, ALSA fournit des variantes suffixées par _near pour ajuster les paramètres en interne si ceux qui ont été passés ne correspondent pas exactement à ce qu'accepte la carte.

L'echo et le flanger fonctionnent plutôt bien. Il faut intégrer la valeur du joystick de manière différente dans les deux effets pour ne pas voir apparaître d'altération. Pourquoi ? Parce que je ne sais pas m'y prendre, probablement.

La distorsion modélise plus ou moins un étage de sortie en push-pull d'ampli à lampes. Plutôt moins que plus, hein. Disons qu'il génère un bon paquet d'harmoniques tierces grâce à une fonction de transfert en quart d'onde sinusoidale, qu'on applique récursivement pour accentuer l'effet.

Le gros problème est la latence, dans les 22 ms, en partie due au bus USB auquel est raccordé la carte-son. Ce délai est perceptible (il gêne le jeu) sur les effets non temporels comme la distorsion ; beaucoup moins sur les effets d'ambiance où la précision est moins cruciale. L'USB n'est pas le seul coupable car j'observe aussi des latences avec la carte-son d'un vieux portable IBM 240 sur lequel tourne le programme.

En conditions réelles, on doit pouvoir sélectionner deux effets par les poussoirs rouges situés devant la pédale. Un troisième, plus petit, situé juste au-dessous d'eux, permet de réinitialjser le programme - en fait de l'interrompre, le système le relançant par une boucle dans /etc/rc.local - au cas où une série de write_underrun engendre un délai énorme (une seconde) que l'on ne peut plus faire disparaître : il faut resetter toute la stack ALSA. Je ne maîtrise pas encore tout de l'API, d'où peut-être ce délai étonnant qui apparaît au playback quand, lors des tests, le traitement s'effectue aux dépens des I/O.

La latence de base et l'absence de FPU limitent sérieusement les possibilités. Il faudrait tester avec un système du type PC embarquant une carte-son intégrée mais cela reviendrait beaucoup plus cher que les 140 € de l'ensemble. Un vieux portable comme l'IBM dont il est question plus haut pose des problèmes potentiels de fiabilité (disque dur, à remplacer par de la SSD ?) et de solidité mécanique (boîtier plastique) qui interdisent son utilisation sur scène. Et la latence n'y disparaît pas totalement, loin de là (qu'en dit le projet Gnuitar ?). Je recherche surtout une manière de lire les trames USB au plus bas niveau pour démiauler les données brutes et les réinjecter directement après traitement. Sans trop d'espoir, mais à vrai dire sans trop de motivation non plus : quand le système sera complètement intégré, d'ici quelques soudures, il fera malgré tout exactement ce qui lui était demandé au départ, et je pourrait l'intégrer à mon pedalboard pour remplacer la Cry Baby qui remplace l'airFX.

Les photos !

Le Slug et la carcasse de wah : SLAB - premier essai

Les éléments, de haut en bas - NSLU2, hub sur lequel est monté clef USB et carte-son, convertisseur joystick, carcasse (sans les boutons) : SLAB 2

L'intégration dans le boîtier : Slab complet

Les samples !

Premier essai. Clairement, cette pédale souffre, il faut faire quelque chose.

Ça marche ! Son clean, en direct sur une console de mixage.

Avec une fuzz devant, on peut jouer avec la résonance pour obtenir une mélodie par-dessus les accords. La résolution imparfaite du convertisseur USB donne des notes discrètes au lieu d'un portamento continu.

Les liens !

LoV Space Charger

C'est bien joli, le bricolage d'amplis guitare à lampes, mais c'est dangereux aussi. Et les amplis eux-mêmes crachent fort : le moindre petit 5W est trop puissant en appartement quand on le pousse un peu. On se fait engueuler, et moi je suis pour la paix des ménages, surtout du mien. Heureusement, certaines lampes américaines "low-voltage" d'autoradio des années 60, dites à espace de charge, fournissent 40mW sous 12V (pour 10% de THD). Le principe de l'espace de charge consiste à polariser la première grille d'une tétrode ou d'une pentode pour accélérer les électrons de manière à compenser la faible tension de fonctionnement, comme une sorte d'accélérateur de particules de poche.

La 12K5 est la plus connue des lampes de puissance à espace de charge, mais la 12AL8 est un « compactron » intégrant une triode et une tétrode de puissance. On doit bien atteindre le quart de watt à fond avec une saturation maximale. D'autres peuvent tout aussi bien faire l'affaire, comme :

  • 12EC8 - triode + pentode
  • 12DY8 - triode + tétrode
  • 12FR8 - diode + triode + pentode

Quant aux lampes européennes, les EF98, EBF83, etc. étaient elles aussi conçues pour fonctionner sous 12V mais leur conception restait classique, et je ne connais pas de combo préampli/puissance dans la même enveloppe. Les autoradios n'étaient peut-être pas aussi fréquents à l'époque en Europe qu'aux USA, où les investisements industriels nécessaires à une nouvelle conception pouvaient paraître rentable.

La 12AL8, donc. Les specs incluant un schéma d'exemple, pas besoin de calculer les valeurs des composants (ce qui n'exclut pas de vérifier tout ça à titre d'exercice). Les schémas trouvés chez Sophtamp font intervenir une double triode en préampli ; pourquoi pas, mais je voulais encore plus simple, alors que les forums américains et allemands restent sur la même architecture. Et puis je ne suis pas très d'accord avec cette polarisation, je préfère en rester à celle des spécifications. Les premiers essais permettent de vérifier que le gain de la triode est trop faible et qu'il faut un premier étage de préampli. J'ai choisi un montage maintenant classique à la très bonne réputation, avec un FET au milieu de 3 ou 4 composants. Bref, l'architecture est hybride, ce qui permet de limiter la consommation électrique des filaments de chauffage. Le transistor est ici un BF245 (sur les conseils de l'excellent Kleuck, le Gecko Électrique) car il existe en 3 grades selon la polarisation désirée. Cela évite de les trier.

La question du transformateur de sortie pose plusieurs problèmes : il faut en trouver un avec le bon rapport d'impédances (de l'ordre de 100X), qui ne soit pas trop surdimensionné, pour un étage de sortie single-ended. Pas facile. Un transfo d'alimentation, peut-être ? Mais ce genre de bestiau est optimisé pour le 50/60 Hz, pas forcément pour le reste du spectre audio. La réponse est encore venue des forums américains et allemands où on préconisait l'utilisation d'un transfo ligne pour sono. Ceux-ci sont effectivement assez petits avec des rapports d'impédances corrects mais ils sont conçus pour une sortie en push-pull : il n'y a pas de vide au niveau de l'entrefer qui empêche la saturation du noyau par la composante continue due à la polarisation de l'unique lampe de sortie. Ce n'est peut-être pas grave car je pense qu'en fait la très faible tension ne suffit pas à saturer le noyau - on parle de 12V ici, pas de plusieurs centaines comme sur les amplis classiques. Il y a sur la baie des Monacor TR 1010 LC qui conviennent parfaitement.

LoV1.jpg

Étant donné le peu de composants mis en œuvre, autant faire le plus petit ampli possible, quitte à l'intégrer ensuite dans une caisse contenant un haut-parleur pour obtenir le micro-combo ultime. On trouve des petits coffrets alu pour 5€ sur lesquels le transfo de sortie se greffe tout juste.

LoV Space Charger

Résultat ? Surprise, il est assez puissant pour couvrir une conversation si on le branche dans un bon baffle. Une alimentation de 12V/1A lui suffit largement, donc aucun buzz et aucun danger d'électrocution. Et il est moche, mais les gens l'adorent : une synthèse parfaite de gomi et de kawaï, en quelque sorte.

Il sonne !

Il sonne un peu comme un Fender Champ à fond, bien cradingue mais suffisamment chaud pour ne pas lasser. On entend ici une Rickenbacker 620 à simples bobinages, volumes à moitié, en direct dans l'ampli, volume au quart. Le grain des micros est parfaitement respecté ; ce qui n'est pas le cas des TV Jones Power'tron de ma Gretsch, qui envoient trop de bois et rendent le son boueux, un peu comme sur le FR107.

Ensuite ? Peut-être un push-pull de tétrodes ou pentodes classiques montées en espace de charge, la première grille étant donc connectée au B+ sous 12V. On peut même prendre des lampes quelconques de récupération et les tester tout simplement après avoir consulté les specs - elles sont sensées fonctionner d'autant mieux que le circuit de chauffage consomme plus et que la tension d'anode nominale est plus faible. L'étage de préampli peut être assuré par une 12AU7 classique dans ces confiqurations ou par le même FET que ci-dessus, éventuellement doublé en série. Et en remplaçant la résistance et le condo de la cathode par une LED rouge. On peut aussi envisager deux compactrons... etc.

Le Phaseur

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).

FR107

Trouvé dans la rue, une épaisse couche de crasse recouvrant sa peinture au four gris métallisé, il avait une jolie gueule d'appareil de laboratoire.

Love at first sight.

Il s'agit d'un ampli sono ou hi-fi mono datant du milieu des années 50 à vue de nez, avant l'apparition des EL84. Il contient un push-pull de 2 EL41 en polarisation auto, 2 ECC40, 1 EF86 et 1 EZ40A en redresseuse. L'intérieur est assez propre, tous les composants étant montés en l'air sur des barrettes. La plaque arrière indique « Film & Radio », modèle FR107, Paris 15e. Cette marque était celle d'un gros distributeur de matériel audio-visuel disparu dans les années 70, qui faisait également construire des amplis et des baffles.

FR107

FR107 innards

Hop, c'est parti pour une rénovation (et non une restauration, le but étant de s'en servir). Opérations de base :

  • Pose d'un câble secteur avec mise à la terre ;
  • Changement de tous les condensateurs électrolytiques, et aussi de ceux qui n'inspirent pas confiance ;
  • Remplacement des borniers d'entrée et des jacks bizarres de sortie, car les jacks téléphone 6.35 américains n'étaient pas encore standard en Europe à cette époque.

Après avoir tracé le circuit de sortie et en imaginant que les inscriptions .3 et .15 représentaient des valeurs en Ω, ça marche ! La bête revit à travers un HP Marshall de récup recollé au vernis à ongles. Et le voisin vient voir ce qui se passe. Mais ça buzze, ça craque et le son manque terriblement d'aigus.

À partir de ce moment, il faut faire très attention à décharger les condensateurs d'alimentation avec une résistance si on tient à la vie, et à travailler avec une main dans le dos quand le courant est branché. Un des condensateurs dont l'original avait l'air plus récent que les autres, et placé à un endroit suspect, est « relocalisé » et deux potards vraiment trop vieux partent à la poubelle. Toutes les lampes sont remplacées, ainsi que les résistances de cathode. Les craquements sont traqués avec un oscilloscope, un vieux Hameg trouvé sur eBay pour 40 euros ; ils provenaient d'une résistance. Finalement le rapport d'impédance du transfo de sortie est vérifié en injectant un signal sur le secondaire et en mesurant le primaire à l'oscillo (le rapport des impédances est égal au carré du rapport de tensions).

On branche une Rick à single coils sur l'entrée Ligne... Wham, bam, thank you mam, 9 watts de bonheur crunchesque attaquent sauvagement un Jensen P12Q hébergé dans un open back de 50x50x33 en MDF construit entre-temps. Le son reste un petit peu sombre mais rien de rédhibitoire, et il vaut mieux éviter les humbuckers à la TV Jones P'Tron pour ne pas s'embourber. Sur l'entrée Phono, le gain devient massif et la distortion harmonique aussi. Rugissements d'aise.

Il ne reste plus qu'à terminer la finition du caisson dans un tolex crème, corriger la bande passante dans le préampli et peut-être changer le potard de volume, pas assez progressif - ou baisser le gain en entrée.

Alesis airFX

Il y a quelgues années, Warren m'avait parlé de son airSynth qu'il avait acheté pour des queues de cerises car personne n'en voulait. Il m'a donné envie de tester l'airFX, qui est la version effet pour DJ. Mais avec une guitare.

alesis_airFX_main.jpg

C'est un de ces engins bizarres qu'Alesis sort régulièrement pour les poubelliser trois ans plus tard. Ici, nous avons un gros socle plat surmonté d'un dôme contenant des capteurs infrarouges permettant de moduler trois paramètres de l'effet sélectionné, selon la position de la main dans l'espace. Il comprend 49 présélections accessibles par l'espèce de grosse molette, non modifiables mais les réglages en 3D compensent un peu cette limitation.

Oooh, on dirait qu'il y a de quoi s'amuser, j'en veux un, j'en veux un... Facile, il n'intéresse personne. J'ai donc eu un des derniers exemplaires chez Thomann, au tarif de déstockage. On en trouve encore aujourd'hui pour moins de 100 € sur la baie et ailleurs.

Il a fallu réaliser l'adaptation à la guitare, d'abord par un petit boîtier contenant 3 jacks (1 in, 2 out) et 2 interrupteurs (mono/stéréo, on/bypass). Au lieu de la main, j'agitais le pied au dessus du dôme - pas pratique - jusqu'à l'arrivée d'un socle en bois. Même après, il fallait toujours se baisser pour actionner l'interrupteur. Solution : un switch fugitif monté sur un pied de meuble, lequel intègre aussi les jacks et des potentiomètres d'adaptation du niveau.

pedalboard2.jpg

En groupe, je ne me servais plus que d'un seul patch, une sorte de flanger où le LFO est remplacé par le positionnement du pied au-dessus du dôme.

L'airFX a maintenant disparu de mon pedalboard de scène pour cause de place manquante, remplacé temporairement par une Cry Baby en attendant une pédale numérioue home-made en cours de réalisation qui reproduirait ce fameux flanger. On en reparle bientôt.