Ecoute binaurale : bs2b, ladspa et alsa

Salut à tou-tes !

Si on écoute de la musique en avec un casque, le coté droit et le coté gauche ont chacun un canal bien distinct: ce qu’on entend à gauche, on ne l’entend pas forcément à droite (c’est la stéréo). Un peu comme si nous entendions un bruit à droite et un bruit complètement différent à gauche. C’est plutôt fatiguant et notre cerveau n’aime pas ça. Au bout d’un moment ça fait mal à la tête et c’est normal : la stéréo n’est pas faite pour être écoutée sur un casque mais sur des enceintes.

Quand on écoute un son sans casque, nos deux oreilles entendront ce son de manières différentes : il sera atténué par la distance entre nos deux oreilles. On appelle ça l’écoute binaurale.

Et justement, on peut en profiter avec notre système d’exploitation chéri ! Pour cela on va utiliser un plugin dit de crossfeed, c’est à dire qu’il passe sur la droite le canal droit plus le canal gauche modifié, comme si on entendait le son en vrai.

Ce plugin, c’est bs2b : Bauer Stereophonic-to-Binaural. Un des tap-plugin pour ladspa qui n’est pas présent dans la version des dépôts debian. On va donc le compiler à partir du cvs.

On installe cvs et build-essential

# apt-get install cvs build-essential

puis on se connecte au cvs des tap-plugins (pas besoin de mot de passe, juste taper sur entrée)

$ cvs -d:pserver:anonymous@tap-plugins.cvs.sourceforge.net:/cvsroot/tap-plugins login $ cvs -z3 -d:pserver:anonymous@tap-plugins.cvs.sourceforge.net:/cvsroot/tap-plugins co -P tap-plugins

on compile

$ cd tap-plugins $ make

on crée les dossiers nécessaires et on copie les fichiers :

[code]# mkdir -p /usr/share/ladspa/rdf

mv *.rdf /usr/share/ladspa/rdf

mkdir -p /usr/lib/ladspa

mv *.so /usr/lib/ladspa[/code]

Maintenant il nous reste à configurer ALSA pour qu’il utilise le plugin quand on écoute de la musique. Pour cela il faut éditer /etc/asound.conf si on veut appliquer l’effet à tous les utilisateurs ou ~/.asoundrc si on préfère qu’un seul utilisateur en bénéficie. Si le fichier n’existe pas, il faut le créer. On y place alors ceci :

[code]pcm.ladspa { #crée le périphérique virtuel ladspa
type ladspa
slave.pcm “plug:dmix” #renvoie ce qui transite par ladspa à dmix (mixer logiciel) : permet à plusieurs programmes
#d’accéder en même temps à la carte son
path "/usr/lib/ladspa"
plugins [
{
label tap_bs2b #ce qui transite par le périphérique ladspa va être modifié par le plugin bs2b
input {
controls [ 3 1 ] #3 met le niveau du crossfeed au max, 1 active le highboost (booste les aigus)
}
}
]
}

pcm.headphones { #crée le périphérique virtuel headphones
type plug
slave {
pcm “ladspa” #tout ce qui entre par headphones est renvoyé au périphérique ladspa
}
}

pcm.dsp0 { #permet aux applications OSS d’utiliser bs2b en les renvoyant au périphérique ladspa
type plug
slave.pcm “ladspa”
}
[/code]

On enregistre le fichier dans son home, puis on configure ses logiciels pour utiliser le périphérique headphones :

Pour audacious :
Préférences -> Audio -> module de sortie actuel ALSA Output plugin
puis Préférences du module -> Device Settings -> Audio Device : headphones

Pour gstreamer (cela appliquera à totem, rhythmbox et toutes les applications utilisant gstreamer) :
Menu Applications -> outils système -> Editeur de configuration
puis / -> system -> gstreamer -> 0.10 -> default
On change alors les clés de audiosink et musicaudiosink en alsasink device=headphones

Pour gmplayer :
Préférences -> Audio
on sélectionne alsa puis configure driver -> device : headphones

Pour gxine :
Fichier -> Configuration -> Préférences -> Audio
driver : alsa
Puis dans l’onglet device :
alsa_default_device : headphones
alsa_front_device : headphones

Pour finir, on redémarre alsa :# alsa force-reload

NB : il est possible de ne pas créer le périphérique headphones, qui nous oblige à configurer toutes les applications musicales et vidéos afin de l’utiliser, en dirigeant le périphérique par défaut de ALSA vers le périphérique ladspa.
il suffit d’ajouter pcm.!default { type plug slave.pcm "ladspa" } au .asoundrc ou asound.conf, et d’effacer pcm.headphones { type plug slave { pcm "ladspa" } }
Par contre, cela enlève le son des videos flash sur le net. Donc il faut enlever le fichier de configuration le temps de regarder la vidéo et le remettre ensuite.

Inspiré de :
rpgameplace.de/blog/index.ph … ug-in.html
fluoblog.wordpress.com/2007/09/2 … -binaural/
et du wiki d’ALSA sur le .asoundrc

Enjoy ! Partagez vos améliorations, et vos problèmes !