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.