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.