Remplacer le bip/beep (bell) système

Bip, bip, bip… «C’était mon PC ?», «Non, c’est moi» , «Ah zut !». Un grand classique du bureau où plusieurs machines fonctionnent et signalent toutes sortes de choses avec le ridicule haut-parleur connecté à la carte mère. Comment intercepter ce signal et jouer un son sur le périphérique audio en lieu et place quand le pilote ALSA ne supporte PC Speaker ? La réponse c’est xbelld !

Xbelld est un sympathique petit démon qu’il suffit de lancer via
% xbelld -c -f ~/son/ni.wav
-f permettant de spécifier le fichier à jouer et -c de le mettre en cache mémoire pour éviter les lags en cas de charge disque. Voilà… le reste est dans la manpage du programme.
«Ni !»

Multiples sources d'enregistrement audio sous GNU/Linux avec ALSA

Configurer une petit solution de streaming audio lorsqu’on dispose d’un serveur dédié est l’affaire de peu de temps. L’installation d’Icecast2 est aisée, tout comme celle du streamer Darkice. Ensuite… on passe du temps à comprendre pourquoi le son du tuner ou du lecteur CD connecté à l’entrée Ligne de la carte son ne peut être enregistré alors qu’on l’entend bien dans les haut-parleurs du PC.

Pire encore que le fait d’enregistrer du silence, l’utilisation d’un bitrate variable pour l’encodage du stream par Darkice ou Ices2 donne des résultats très étranges. Le bitrate variable, comme son nom l’indique n’est pas fixe. Or lorsque le signal à encoder est plat, le calcul du bitrate semble devenir impossible et le lecteur (XMMS par exemple) ne fait que bufferiser sans jamais lire le flux.

Mais le problème n’est pas là. Pourquoi ne puis-je pas enregistrer ce que j’entends dans mes beau haut-parleurs Altec Lansing ? La réponse est simple : ALSA est en mesure de prendre en charge un grand nombre d’entrées et de sorties pour une carte son classique (Ensoniq 5880 AudioPCI). Cependant, encore faut-il préciser quelle entrée doit servir de source d’enregistrement.

Pour cela deux solutions :

alsamixer, le mixeur graphique en mode console
amixer, le mixeur en ligne de commandes (mieux)

Sur ma configuration, le mixer control concerné est Line :
% amixer sget Line,0
Simple mixer control ‘Line’,0
Capabilities: pvolume pswitch pswitch-joined cswitch cswitch-exclusive
Capture exclusive group: 0
Playback channels: Front Left – Front Right
Capture channels: Front Left – Front Right
Limits: Playback 0 – 31
Front Left: Playback 0 [0%] [off] Capture [off]
Front Right: Playback 0 [0%] [off] Capture [off]
% amixer sset Line,0 0%,0% cap
Ici, c’est l’argument cap (comme capture) qui sélectionne ce contrôle comme source d’enregistrement. Dès lors, plus de problème avec Darkice qu’il suffit de configurer pour une source ALSA :
[input]
device = hwplug:0,0
sampleRate = 11025
bitsPerSample = 16
channel = 2
J’en profite ici pour préciser une petite astuce. Plutôt que de spécifier, comme ici, le périphérique ALSA source, utilisez plutôt plug:dsnoop (plugin dsnoop). Celui-ci permet de partager une source d’enregistrement. Autrement dit, vous pouvez non seulement utiliser Darkice pour streamer le son mais utiliser, en plus, un autre outil comme arecord pour enregistrer cette source. Le tout sans utiliser des choses lourdes comme Jackit. Que du bonheur…